最新記事一覧

未経験者向け)ネットワークエンジニアとは? 仕事内容と将来性

ネットワークエンジニアとは

ネットワークエンジニアとは、どのような仕事をしているかご存じだろうか?

IT業界では日々新しい「○○エンジニア」が作られては消えているが、この「ネットワークエンジニア」は相当古くからある職種だ。

ネットワークは目に見えない。そのため、現代社会で重要な仕事ではあるのだが、実際どのようなことをしているか具体的に想像するのは難しいのではないだろうか?

しかし疑いなくネットワークエンジニアは今の情報社会においてなくてはならない存在だ。

このページではネットワークエンジニアの仕事内容とその将来性についてお伝えする。読み終わった頃には、ネットワークエンジニアについて大枠のイメージがついているはずだ。

将来どんなエンジニアになろうかまだ決めかねている人やIT業界を目指す人は、ぜひ参考にしてほしい。

続きを読む

【新旧対応】Linuxでの自動起動の設定方法を解説

linux 自動起動スクリプト

Linuxの起動時にコマンドやプログラムを自動で実行したい場合どうするか? Windowsだとスタートアップに入れて終了だが、Linuxでは方法が違う。

このページでは、Linuxの起動時にプログラムを自動実行させる方法についてお伝えする。細かいところまで解説を行ったので、自動起動に関してはここのページで必要知識を網羅できるだろう。

続きを読む

非公開になっているLPIC合格率を推測してみた

LPIC合格率

LPICはLinuxの人気資格だ。Linuxのスキル証明に受ける人が多い。

そんなLPICだが、はじめて受ける方が気になるのがLPICの合格率だろう。

残念ながら、LPICの合格率は公表されていない。そこで、このページではLPICの合格率を推測して、難易度を確かめてみた。LPICを受けようと思っている方は参考にしてほしい。

続きを読む

3分間で人に説明できるようになるUnixとLinuxの違い

UnixとLinuxの違い

UnixもLinuxもどちらもコンピュータの土台となっているOSだ。両方のイメージが重なっている人も多いのではないだろうか? 

どちらか一方使ったことがあればともかく、普通はどちらも「よくわからないけどエンジニアが使っていそうな何か」くらいのイメージになってしまっていると思う。

Linuxがこれだけ普及している現在、ITに関わっているのであればこれくらいの知識は持っておくと便利だろう。きっと知識として使える機会もある。

UnixとLinuxは親戚と言っていい。ただし、血のつながりはない。このページではUnixとLinuxの違いについて「初心者の方でもなんとなくわかるように細かいところは抜きにして」解説する。短い時間でわかるように、なるべく簡単に説明した。参考にしてほしい。

続きを読む

【目的別】初心者におすすめのLinuxディストリビューション7選

linux distribution

Linux初心者が、「概要はなんとなくわかった。では、早速Linuxを使ってみよう!」そう思ったとき、はじめに当たる難問は「どのディストリビューションを使えばいいのか?」だろう。

ディストリビューションとはLinuxの種類のことだ。Linuxはオープンソースということもあり、色々な種類のLinuxに分岐していった経緯がある。

このページでは初心者におすすめのLinuxディストリビューションを7つまとめている。2種類の目的に分けたので、どちらを優先させるかをまずは考えてほしい。

ディストリビューションを選ぶ際の参考にして頂ければ幸いだ。

続きを読む

プログラミングがわからない人の10個の理由とその対処法

worry

「プログラミングを勉強し始めたが、よくわからない・・・」

「理数系じゃないからプログラミングはわからない」

このようなことで悩んでいる人は多い。

勉強を始めたばかりの頃、たしかにプログラミングはわかりにくい。そして、一度苦手意識がついてしまうと、そこから抜け出すのはなかなか大変だ。

このページでは、プログラミングがわからないと感じる理由を10個あげ、その対処法を紹介する。

ご存知の通り、「なんとなくわからない」が一番どうしようもない状態で、「何がわからないかわかった!」となったら案外物事はスムーズに行くものだ。

あなたが、プログラミングに苦手意識を持ってしまっているなら、参考にしてほしい。

続きを読む

文字列を扱う際の注意点

前回、
「文字列の比較」をテーマに
お話をしました。

Javaプログラミングにおいて、

文字列が同じかどうかを比較するには、
「==」演算子ではなく、
「equals」メソッドを使用する

という内容でした。

では、なぜ
整数(int型)は「==」演算子で
比較できるのに、
文字列(String型)は「==」演算子で
比較できないのでしょうか。

今回は、この疑問を解き明かしながら、
Javaプログラミングにおいて文字列を扱う際の
注意点をお話していきます。

「==」演算子で
文字列が比較できない理由

文字列を比較するときに
「==」演算子が使用できない理由は
下記の2つを確認すれば分かります。

・「==」演算子の挙動
・文字列の生成方法

「==」演算子の挙動

変数同士を「==」演算子で比較する場合、
変数に格納されている値同士を比較します。

例えば、

int a = 3;
int b = 3;

if (a == b) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

上記の結果は、"同じ"と表示されました。

変数aには3が格納されます。

また、変数bにも3が格納されます。

そのため、
変数aと変数bは同じものであると評価され
"同じ"と表示されました。

では、文字列の場合は
どうでしょうか。

String str1 = new String("あ");
String str2 = new String("あ");

if (str1 == str2) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

上記の結果は、"違う"と表示されました。

つまり、変数str1と変数str2には
"あ"という文字列ではなく、
それぞれ違うものが格納されている、
ということになります。

では一体、
変数str1と変数str2には
何が格納されているのでしょうか。

理由2 文字列の生成方法

文字列を生成するときに、
「new」という演算子を使用しました。

String str1 = new String("あ");
String str2 = new String("あ");

実は、この「new」演算子は、
文字列を生成した後、

その文字列が
どこにあるかという情報(場所)を
値として返します。

そのため、変数str1には、
最初に生成された"あ"という
文字列の場所が格納され、

変数str2には、
次に生成された"あ"という
文字列の場所が格納されます。

2つの"あ"という文字列は
別々の場所に生成されるため、
結果的として変数str1と変数str2には
違う値が格納されることになります。

そのため、文字列の比較には、
「==」演算子が使用できない、
ということになります。

文字列の不思議

ここまでのお話で、
なぜ文字列の比較には、
「==」演算子が使用できないか、
分かって頂けたかと思います。

では最後に、
以下の例を考えてみましょう:

String str1 = "あ";
String str2 = "あ";

if (str1 == str2) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

Javaでは、
文字列を生成する際に、
上記のようなコードを
記述することもできます。

上記の結果は、
どうなるでしょうか。

結果は...

"同じ"

と表示されます。

なぜ??

これは、

String str1 = new String("あ");
String str2 = new String("あ");

String str1 = "あ";
String str2 = "あ";

とでは、
文字列の生成方法に違いがあるためです。

「new」演算子を使用した場合は、
2つの"あ"が別々の場所に生成されます。

しかし、「new」演算子を
使用しない場合は、
メモリの無駄を無くすため、

コンパイルの際、自動的に
下記のようなコードに変換されます。

String str1 = new String("あ");
String str2 = str1;

上記の場合、
"あ"という文字列は
1つだけ生成され、
変数str1と変数str2には
同じ"あ"の場所が格納されます。

kohsaka

これにより、
「==」演算子で比較したときに

"同じ"

と表示されるわけです。

このように、
文字列の生成方法の違いにより、
比較の結果が変わることもあるため
注意してください。

-------------------------------------------------------
■□お知らせ□■ 新しいLAブログができました。
lsコマンドで覚えたい15のオプション【Linuxコマンド集】
他にも学習に役立つ情報が盛りだくさんです。是非ご覧ください。
------------------------------------------------------

lsコマンドの使い方と覚えたい15のオプション【Linuxコマンド集】

lsコマンドはファイルやディレクトリの情報を表示するコマンドで、lsコマンドなしにLinuxを使うことはできない。1日に100回以上叩く人もいるコマンドだ。

しかし、オプションは「-a」や「-l」しか使っていないという人が多い。そこで、本日はlsコマンドの15個の便利オプションについてご紹介しよう。

よくLinuxを使うという方は参考にして頂ければ幸いだ。

続きを読む

【初心者向け】これもJava? Javaで作れるものまとめてみた

java

「Javaの勉強をしているが、何が作れるようになるかイメージがつかない・・・」

「プログラミングを本気で勉強するならJavaがいいという話を聞いたけど、何を作り始めたらいいのか?」

勉強し始めたばかりの方であれば、このようなことで悩むのではないだろうか?

Javaはとても優秀なプログラミング言語で、様々なものが作れる。基礎を学べることから、仕事に直結する新入社員の研修などではJavaが用いられることが多い。

しかし、いきなりプログラミングを打つ練習から入ってしまうため、何が作れるのか想像がしにくくなってしまう。

このページではこれからJavaを勉強しようとしている方、Javaを勉強し始めたがイメージがつかない方向けに、Javaを勉強することで何が作れるようになるかを解説した。

Javaに興味があれば、参考にしてほしい。

続きを読む

【作業時間を半減!】Linuxのショートカット総まとめ

Linuxはコマンドでの操作が基本だ。だからこそ、ショートカットを使いこなせるかで作業の速度に明確な差が出てくる。

ショートカットを覚えると大袈裟ではなく、作業時間が半分になることもある。Linuxを使うエンジニアなら覚えておくべきだろう。

このページではLinuxショートカットの基本を総まとめしてみた。ショートカットと言っても2種類ある。

このページでは「時短」という意味合いを込めて両方ともまとめた。Linuxを使う方はぜひ参考にしてほしい。

続きを読む

最速理解Linuxの7つの特徴!Windowsとの違いとは?

linux_windows

LinuxとはOS(オペレーティングシステム)の一種だ。ここ15年ほどで急速に広まってきていて、特に企業で使われていることが多い。

Windowsという有名なOSがあるにもかかわらず、これだけ普及しているのは、Linuxに良い特徴がたくさんあるからだ。

このページではLinux初心者の方に、Linuxの特徴やWindowsとの違いをお伝えする。このページを読めば、Linuxの特徴について理解できているはずだ。

Linuxに興味を持っているのであれば、参考にしてほしい。

続きを読む

LPIC level1の勉強時間を減らす!1ヶ月で合格する勉強方法

どのような勉強方法を用いて、どれくらいの勉強時間を使えばLPIC level1を取得できるだろうか?

LPIC level1はLPICの最初の試験だ。最初の試験だからこそ、どれくらいの時間がかかるか心配になるだろう。

また、Linuxの素人からでも受かるのか? どういった勉強方法がいいのか? こういったこともLPICの勉強を始める前に知っておきたい事柄だ。

このページでは、LPICの合格にかかる勉強時間と、それをなるべく減らす勉強方法についてお伝えする。LPIC受験を考えている方は参考にしてほしい。

続きを読む

ざっくりわかる!プログラミングのためのフローチャートの書き方

flowchart

実はプログラムを書く前に考えるべきことがある。

プログラムは料理のレシピを作るようなものだ。しかし、料理のレシピと違って人間が読むわけではない。そのレシピを読むのはコンピュータだ。コンピュータにわかる形で伝えてあげなければいけない。

そのためにはどんな順番で、どのような処理で行っていくか、これをあらかじめ考える必要がある。この順番や処理を考える上で便利なのが、フローチャートだ。

このページでは、フローチャートの書き方や考え方をまとめてざっくりと解説する。

これをしっかりと考えながらプログラミングができるかできないかで将来的に大きな差が出てくる。プログラミングの基本だと思って、この機会に理解してしまおう。

続きを読む

Javaプログラミング  Javaプログラミング ~陥りやすいミス②~

以前、Javaプログラミングにおいて
陥りやすいミスの第1弾として

「インクリメント演算子と
 ディクリメント演算子」のお話をしました。

今回は、陥りやすいミス第2弾。

「文字列の比較」についてお話します。

比較の種類

比較といっても色々な比較があります。

大きい、小さい、同じ、異なる、...

ここでは、

「2つの文字列が
 同じ文字列かどうかを比較する」

ということについて考えます。

ではまず、2つの値の比較方法を
見ていきましょう。

比較演算子"=="

Javaにおいて、
2つの値を比較する演算子として
「比較演算子」があります。

さらに比較演算子の中には、
2つの値が同じかどうかを評価する

"=="

というものがあります。

例えば、2つの整数が同じかどうかを
確認するプログラムは以下のようになります。

int a = 3;
int b = 3;

if (a == b) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

上記の結果は、「同じ」と表示されます。

比較演算子「==」は、
値が同じであればtrueを返し、
値が異なればfalseを返します。

文字列の比較

では、上記の例にならって
文字列の比較をしてみます。

String str1 = new String("あ");
String str2 = new String("あ");

if (str1 == str2) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

上記の結果は、
「違う」と表示されます。

「え?何で?」と思われる方も
いるのではないでしょうか。

実は、文字列の比較には、
比較演算子「==」は使えないのです。

では文字列を比較するには
どうすればよいのでしょうか。

文字列を比較するには、
equalsというStringクラスに
定義されているメソッドを使います。

String str1 = new String("あ");
String str2 = new String("あ");

if (str1.equals(str2)) {
System.out.println("同じ");
} else {
System.out.println("違う");
}

上記の結果は、「同じ」と表示されます。

equalsメソッドは、
2つの文字列が同じ文字列であれば
trueを返し、
異なる文字列であればfalseを返します。

また、上記のif文は、

if (str2.equals(str1)) {

と記述しても同じです。

文字列を比較するときの注意点

ここまでの話をまとめると、

・文字列の比較には
 比較演算子「==」は使えない

・文字列の比較にはStringクラスの
equalsメソッドを使う

ということになります。

kohsaka

Javaプログラミングにおいて、
文字列は非常に使用頻度が高く、
文字列の比較は良く行います。

文字列は、
数値の比較と同じ方法では
比較できませんので、
注意してください。

■PS
新しいLAブログができました。
【初心者向け】3分でわかるLinuxでできることまとめ 10選
他にも学習に役立つ情報が盛りだくさんです。是非ご覧ください。

【Windows編】フリーテキストエディタ13選!初心者にもおすすめ

free_texteditor

ベテランエンジニアには「マイ・エディタ」とでも言うべき、愛用しているテキストエディタがあることをご存じだろうか?

システム開発の現場では様々なツールを使って開発が行われるが、テキストエディタを使用するケースもとても多く、エンジニアは自分に合うテキストエディタを選ぶ。

今回はプロのプログラマーやエンジニアが愛用する、初心者でも使いやすいフリーのWindows向けテキストエディタを13個厳選して紹介しよう。 

続きを読む

【Linuxコマンド集】3分でわかるcat コマンドの使い方

linux catコマンド

本日はLinuxのcatコマンドの使い方について解説しよう。

catはLinuxの中でもっとも頻繁に使うコマンドのひとつだ。ファイルをみるときに頻繁に使うが、実はそれ以外にも使い道がある。

オプションも細かく説明するので、この機会にぜひ使い方をマスターしてしまおう。

続きを読む

【初心者向け】Linuxの歴史解説! OS誕生からLINUXへ

現在では当たり前に使われているLinux。

もともと、どのような経緯でできたのかご存じだろうか?

このページではLinuxの歴史について解説する。どのような経緯で、どのような背景でできたかを知っておけば、Linuxを学ぶモチベーションにもなるだろう。

Linuxはエンジニアを目指す上で、またスキルアップをしていく上で重要なキーワードだ。

続きを読む

【初心者向け】3分でわかるLinuxでできることまとめ 10選

「Linuxという言葉を聞いたが結局よくわからない・・・」
「LinuxがOSだということはわかったが、結局何ができるのか・・・」
「Windowsでいいのでは?」

こういった疑問はごもっともだ。Linuxという名前を聞いたばかりの段階で疑問に思うのは、とにかくLinuxが「何の役に立つかわからない」だろう。

そこで本日は、Linuxでできることを10個、3分間でわかるようにまとめてみた。

Linuxをはじめて勉強しようとしている方や、Linuxについて誰かに聞かれて答えに困ったという方にはオススメだ。

続きを読む

1分でわかるLPIC試験会場の調べ方(+詳細情報も)

LPICはCBTのテストだ。CBTとはComputer Based Testの略で、コンピュータを使って実施する試験を指す。

CBTは人の手を使わずに採点ができるため、人件費が削減できる。そのため色々な試験で用いられるようになってきた。

もちろん提供側のメリットだけではない。受験者も好きな時間に試験が受けられ、その場で合否がわかるため、便利な試験形式だ。

ただ、CBTとはいえ、家で受験をすることはできない。LPICの試験ができるLPIC試験会場に行く必要がある。

このページでは、LPIC試験会場の調べ方をご紹介する。LPIC受験を考えている方は参考にしてほしい。

続きを読む

就転職やキャリアアップに役立つサーバー資格 5選

エンジニアというと一般的にはプログラミングを書いている人、いわゆるシステムエンジニアをイメージする人が多いようだ。ご存知の通り、システムエンジニアは人材が常に不足気味で、育成の必要性が国を挙げて叫ばれている。

しかし、システムエンジニア以上に人材が不足しており、必要とされているのがサーバーエンジニアだ。サーバーを管理するという目に見えにくい仕事をしているためか、そもそも「なろう!」と思う機会がないのが大きいだろう。縁の下の力持ち的な存在で、業務自体もシステムエンジニアより安定していると言われている。

今日は未経験からサーバーエンジニアになるために有利な資格や、すでにサーバーエンジニアとして活躍している人に役立つ資格をまとめた。キャリアの設計に役立てて頂ければと思う。

続きを読む

LPIC level1の難易度まとめ。サンプル問題あり

LPICの難易度

LPIC level1はLPICで受ける最初の試験だ。

LPIC level1の難易度はどれくらいだろうか? Linux初心者でも誰でも受かる? いや、Linuxエンジニアであっても落ちるくらい難しい? 色々な話を聞くと思う。気になるLPIC level1の難易度についてまとめてみた。

どのくらいのスキルだったら受かるのか? LPIC level1の対象者や合格率。また合格点や試験時間などの情報をまとめている。

また、サンプル問題もいくつか用意した。LPICを受けようと思っているのであれば、解いて参考にしてみてほしい。

続きを読む

あなたは何点取れる?LPIC level1の典型問題 20選

lpic_問題

LPIC level1はLinuxエンジニアの入り口として適した資格試験だ。

実際LPICは@IT自分戦略研究所の調査で、

「最もキャリアにつながった資格」
「最も実務で活かせた資格」
「取得したい資格」

の3つのランキングで一位を獲得するという快挙を達成している。

Linuxエンジニアが足りていないというのと、LPICがかなり実務に近いというのがその理由だろう。結果として、就職や転職にも役立つ資格になっている。

もちろん資格試験なので、実務的ではない暗記も必要ではあるが、とても有用な資格だというのは間違いないだろう。

このページではLPIC level1にチャレンジしようとしているあなたに20個の典型問題をご紹介しよう。LPICを受けるかどうか悩んでいる人や受けるための準備をしている人は、ぜひ確認してみてほしい。

合格率は65%程度なので、13問正解すれば合格範囲だ。勉強を開始する前のひとつの目安としてトライしよう。

続きを読む

switch文の危険な使い方

以前に
『分岐処理とは?』のところで登場した
「switch文」を覚えているでしょうか。

「switch文」は
多分岐処理を記述する際に、

if文よりも
ソースコードの読みやすさと実行速度に
優れている、

というお話をしました。

しかし、
この「switch文」には
危険な使い方があるのです。

「switch文」の書式

「switch文」の一般的な書式は、
以下のようになります:

switch (条件式) {
case i:
条件式がiのときの処理
 break;
case j:
条件式がjのときの処理
 break;
...
default:
 条件式が上記以外のときの処理
 break;
}

※i, jは異なる整数

具体的には、

int value = x; ...①

switch (value) {
case 0:
System.out.println("0");
break;
case 1:
System.out.println("2");
break;
default:
System.out.println("-1");
break;
}

上記の場合、

①のxが0なら
0
と出力され、

①のxが1なら
1
と出力され、

①のxが0と1以外なら
-1
と出力されます。

「switch文」では、
このような書き方が一般的なのですが、
『フォールスルー』という特殊な書き方も
存在します。

フォールスルー
(fall through)

『フォールスルー』とは、
switch文において、breakを省略した
書き方のことです。

breakを省略とは
どういうことでしょうか。

例えば、

int value = x; ...②

switch (value) {
case 0:
case 1:
System.out.println("0or1");
break;
default:
System.out.println("-1");
break;
}

上記の場合、

②のxが0か1なら
0or1
と出力され、

②のxが0と1以外なら
-1
と出力されます。

このようにswitch文では、
case文にbreakを記述することは
強制ではないのです。

breakは、次のcase文の処理を
実行させたくない場合に記述します。

そのため、
もし次のcase文の処理を
続けて実行したいときには、
breakを省略できるのです。

危険なフォールスルー

さて、先ほどのフォールスルーの例は、
あまり危険ではありません。
(逆に直感的で読みやすい)

しかし、以下のような例では
どうでしょうか。

int value = x; ...③

switch (value) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
System.out.println("-1");
break;
}

上記の場合、

③のxが0なら
0
1
と出力され、

③のxが1なら
1
と出力され、

③のxが0と1以外なら
-1
と出力されます。

このようなフォールスルーは、
処理が複雑になりやすく、

さらに、
ソースコードを見たときに、
意図的にbreakを記述しなかったのか、
単にbreakを記述し忘れたのか、
区別がつきにくくなります。

基本的には意図的ではない
(記述し忘れによる)
『フォールスルー』は
バグとなってしまいます。

kohsaka

このような
危険なフォールスルー対策として、
「C#」というプログラミング言語では、
フォールスルーを記述できないように
なっています。

そのため、switch文を使う際には、
極力フォールスルーは使わないように
心掛けてください。

■PS

こちらでの記事を更新しはじめました。下記の記事は人気です。
フリーテキストエディタ11選

LPIC level1合格におすすめのLPIC問題集ベスト5

LPICの問題集や参考書をお探しだろうか?

LPIC level1を受験することになったとき、多くの人がまずはじめにやることはLPIC問題集を探すことだろう。

その判断は間違っていない。現役のLinuxエンジニアでさえ、勉強しなければ落ちてしまうのがLPICという資格だ。例え、level 1であっても知らないコマンドやディレクトリが出てくる。

まして初心者の方では、Linuxを少しかじったからと言って、無勉強で受かる試験ではない。しっかりと問題集を使って対策をするべきだ。

このページでは、たくさんあるLPICのテキストの中から、「どれを買えばいいの?」という質問にお答えしたい。リスキルテクノロジーが客観的な立場で、オススメの問題集をピックアップした。ベスト5という形でランキングにしている。

参考にしてほしい。

続きを読む

11日間でLPIC102に合格するための対策法

LPIC102

LPIC102の受験をお考えだろうか?

LPIC102はLPICレベル1を取得するために必要な試験だ。また、資格という意味以外でもプロフェッショナルなLinuxエンジニアになるには非常に役立つ知識が詰まった試験で有益である。

しかし、いざ勉強をはじめるとなると何から対策するべきなのか悩むのではないだろうか?

そんな方のために、このページでは11日でLPIC102に受かるための対策方法や勉強方法をお伝えする。受験費用や受験の流れもお話しするので、きっと役に立つはずだ。

続きを読む

10日間でLPIC101に合格するための対策法

lpic101テキスト

もしあなたがLPIC101を受験しようと思っているならこのページは役に立つはずだ。

なぜなら、このページはLPIC101に10日間で受かるための対策方法をまとめているからだ。

LPIC101はLPICの最初の試験に当たるが、想像以上に範囲も広く、内容も濃い。

対策方法や勉強方法だけではなく、そもそもの試験範囲、受験料、当日の対策などもまとめているので、参考にしてぜひLPIC101を取得してほしい。

続きを読む

徹底解説!取得したい資格8年連続第一位のLPICとは?

lpicとは

LPICとは、Linux技術を証明するための資格試験だ。

技術者のスキルを証明するための資格は数多くあるが、LPICほどIT業界で標準的になっている資格は少ない。

世界中で資格を展開し、Linuxの技術者認定試験としては世界最大だ。プロのエンジニアを目指す方にとっては、もってこいの資格だろう。

そこで、このページでは、LPICの詳細について詳しくご紹介する。 どのような試験で、どういった内容で、どのように勉強すればいいかこのページを見ればわかる。

ぜひ、資格の取得やキャリアアップの役に立ててほしい。

続きを読む

Javaプログラミング ~陥りやすいミス①~

今回から数回に渡り、
「Javaプログラミングにおける
 初心者が陥りやすいミス」
についてお話しようと思います。

第一弾は、

「インクリメント演算子と
 ディクリメント演算子」

に関する注意点です。

インクリメント演算子
ディクリメント演算子

この演算子は、
単項演算子にというものに
分類されます。

インクリメント演算子は「++」と記述し、
オペランドに1を加算する演算子です。

ディクリメント演算子は「--」と記述し、
オペランドから1を減算する演算子です。

さらに、この演算子を
オペランドの前に記述した場合、

例えば、

 ++i
 --i

のような場合(iは変数)、

「前置インクリメント演算子」
「前置ディクリメント演算子」

と呼びます。

また、この演算子を
オペランドの後ろに記述した場合、

例えば、

 i++
 i--

のような場合(iは変数)、

「後置インクリメント演算子」
「後置ディクリメント演算子」

と呼びます。

なぜ、同じ演算子で
記述の仕方が2種類あるのでしょうか。

前置と後置の違い

前置と後置の具体的な例を
見ていきましょう。

ここでは、
インクリメント演算子の例を
見ていきます。

例(その1)

 
int i = 0;
int j = 0;

i++;
++j;
System.out.println(i); ...①
System.out.println(j); ...②

上記の例では、
①も②もどちらも1と出力されます。

この結果は
予想通りの結果ではないでしょうか。

では、次の例はどうでしょう。

例(その2)

int i = 0;
int j = 0;
int result = 0;

result = i++;
System.out.println(result); ...①
result = ++j;
System.out.println(result); ...②

上記の例では、

①は0
②は1

と出力されます。

なぜ?と思われた方も
いるのではないでしょうか。

陥りやすいミス

なぜこのような結果に
なるのでしょうか。

実は、インクリメント演算子は、
「例(その1)」のように、

単体で使う場合は、
前置も後置も単にオペランドに
1を加算するだけです。

※ディクリメント演算子も同様

しかし、インクリメント演算子を
他の演算子と共に使う場合は
注意が必要です。

「例(その2)」の場合、

result = i++;

は、

(result = i) + 1;

のように、
代入が行われた後に加算が行われます。

※ディクリメント演算子も同様

また、

result = ++j;

は、

result = (j + 1);

のように、

加算が行われた後に代入が行われます。
※ディクリメント演算子も同様

インクリメント演算子を
他の演算子と共に使う場合、

前置と後置では、
加算のタイミングが異なる、
ということになります。

インクリメント(ディクリメント)の
使用頻度は高い

プログラミングにおいて、
インクリメントあるいは
ディクリメントは、
使用頻度が非常に高い演算です。

特に、繰り返し処理などでは、
よく使用されます。

kohsaka

そのため、
この演算子を使用する際には、

・単体での使用なのか、
 他の演算子と併用なのか

・他の演算子と併用の場合は、
 加算のタイミングを考慮

上記の点に
注意するようにしてください。
------------------------------------------------
PS.学習&就職サポートが充実!憧れのエンジニアへ!
社会人のためのJavaスクール
------------------------------------------------

演算子の種類

以前に「演算子」についてお話をしました。

ソースコード上で
演算(計算)をするための記号が「演算子」です。

一般的なプログラミング言語では、
約30種類の演算子が定義されています。

これだけある演算子ですが、
大きく3つに分類することができます。

演算子の種類

演算子は、

・単項演算子
・二項演算子
・三項演算子

の3種類に分類することができます。

さて、「項」とは一体何でしょうか。

演算をするためには、
演算の対象となるものが必要になります。

例えば、足し算をする演算子である
「+」の場合、

3 + 5

という使い方をします。

このとき、
「3」や「5」が演算の対象となります。

このような演算の対象となるものを
「項」と言います。

ちなみに「項」のことを
「オペランド」とも言います。

必要とする「項」の数によって
演算子は分類されています。

1つだけ必要とする演算子を
「単項演算子」、

2つ必要とする演算子を
「二項演算子」、

3つ必要とする演算子を
「三項演算子」

と言います。

単項演算子

代表的なものとしては
インクリメント演算子(++)と
呼ばれるものがあります。

インクリメント演算子は、
下記のような形で使います。

i++

上記の例では、
「変数iの値に1を足す」という
演算を行います。

二項演算子

「+」「-」「*」「%」など

四則演算に代表される
数多くの演算子があります。

三項演算子

項が3つ必要な演算子です。

「そんな演算子は知らない」

という方もいるのでは
ないでしょうか。

三項演算子はマイナー?

実は、この三項演算子、
プログラミングの世界では
あまり好んで使われていないようです。

ソースコードが読みにくくなる、
という理由から、

企業によっては、
三項演算子の使用を禁止している
ところもあるようです。

また、
三項演算子が存在しない
プログラミング言語もあります。

例えば、Pythonには、
三項演算子はありません。

このように一見マイナーな
三項演算子ですが、

使い方によっては便利な演算子です。

三項演算子の書式

三項演算子は

「?:」

この1種類しかありません。

書式としては、

 条件式 ? 式1 : 式2

となります。

これは、
条件式を評価して正しければ
(真であれば)式1を返し、
正しくなければ(偽であれば)
式2を返します。

この説明を見て、

「if文と同じでは?」

と思われた方も
いるのではないでしょうか。

しかし、
三項演算子は演算子です。

結果として式を返します。

if文のように
条件に応じた処理を記述するのでは
ない点に注意してください。

例えば、
変数ageが20以上なら"成年"、
変数ageが19以下なら"未成年"
と表示するソースコードを

三項演算子を使って
Java言語風に書くと、
以下のようになります:

String str = null;
str = age >= 20 ? "成年" : "未成年";
System.out.println(str);

※System.out.println()は
 指定したものを画面に
 表示するためのメソッド

上記の場合、
「age >= 20」が条件式となり、
真なら"成年"が返り
変数strに代入され、
偽なら"未成年"が返り
変数strに代入されます。

これは、
三項演算子(?:)のほうが
代入演算子(=)よりも
優先順位が高いため、

先に三項演算子が実行され、
その返り値が代入演算子により
代入されることになります。

上記の例を
if文を使用して書くと、
以下のようになります:

String str = null;
if (age >= 20) {
str = "成年";
} else {
  str = "未成年";
}
System.out.println(str);

見た目には、
三項演算子のほうがif文より
スッキリして見えます。

三項演算子のほうは、
演算子の優先順位を知らないと
読み解くことができません。

このようなことから、
三項演算子を使用すると
ソースコードが読みにくいと言われます。

しかし、個人的には、
好んで良く使用しています。

書き方によっては、
先ほど3行で記述した
三項演算子のソースコードを、
1行で記述することもできます。

System.out.println(age >= 20 ? "成年" : "未成年");

kohsaka

三項演算子は演算子なので、
メソッドの引数に
記述することも可能です。

このように、
ちょっとマニアックな使い方もできる
三項演算子、

機会があれば、
是非使ってみてはいかがでしょうか。

------------------------------------------------
PS.プログラミングの基礎を学ぶ最善の方法とは?
すでに多くの人が
社会人のためのプログラミングスクール
学習を始めています。
------------------------------------------------

分岐処理のすすめ~用途で使い分ける~

From:リスキルテクノロジー 高坂一城
新宿本校にて

プログラムでは、
ある条件に応じて処理を分けたい、
という場面があります。

年齢が20歳以上ならお酒を販売する、
20歳未満ならお酒を販売しないといったものです。

こういったときのために、
プログラミング言語には、

「条件によって処理を分ける」という

機能が用意されています。

この機能が『分岐処理』です。

分岐処理の種類

一般的なプログラミング言語の場合、

『if文』という書き方と、

『switch文』という書き方があります。

if文とswitch文の違い

なぜ、分岐処理には
2つの書き方があるのでしょうか?

実は、どちらの書き方でも、
同じ分岐処理を記述することができます。

(前回のループ処理もそうでしたね)

違いは、書式の違いによる
ソースコードの読みさすさと実行速度です。

また、分岐処理には、

「二分岐」と呼ばれる、
2つの処理のどちらかを実行するものと、

「多分岐」と呼ばれる、
3つ以上の処理のどれか一つを実行するもの
があります。

二分岐

if文の書式(二分岐)

if文による二分岐の分岐処理は、
以下のような書式になります:

if (条件式) {
 条件式が正しい(true)ときの処理
} else {
 条件式が正しくない(false)ときの処理
}

if文は、
条件式を評価した結果が、
trueかfalseかによって
処理を分岐します。

switch文の書式(二分岐)

switch文による二分岐の分岐処理は、
以下のような書式になります:

switch (条件式) {
case n:
 条件式がnのときの処理
 break;
default:
 条件式がn以外のときの処理
 break;
}
※nは整数

switch文は、条件式を評価した結果が、
特定の整数かどうかによって
処理を分岐します。

二分岐の場合の違い

上記の2つの書式から、
二分岐の場合はif文のほうが
ステップ数が少なく見やすくなります。

また二分岐の場合の実行速度は、
if文もswitch文も
どちらもほとんど変わりません。

多分岐

if文の書式(多分岐)

if文による多分岐の分岐処理は、
以下のような書式になります:

if (条件式1) {
 条件式1が正しい(true)ときの処理
} else if (条件式2) {
 条件式2が正しい(true)ときの処理
} else if (条件式3) {
 条件式3が正しい(true)ときの処理
・・・
} else {
 上記以外のときの処理
}

switch文の書式(多分岐)

switch文による多分岐の分岐処理は、
以下のような書式になります:

switch (条件式) {
case i:
 条件式がiのときの処理
 break;
case j:
 条件式がjのときの処理
 break;
case k:
 条件式がkのときの処理
 break;
・・・
default:
 上記以外のときの処理
 break;
}

※i、j、kは異なる整数

多分岐の場合の違い

上記の2つの書式を見てもわかる通り
多分岐の場合もswitch文のほうが
ステップ数は多いですが
ソースコードは読みやすくなります。

また多分岐の場合の実行速度は、
switch文のほうがif文よりも速いと
されています。

if文は条件式を上から順番に
評価していくのに対し、

switch文は
条件式の評価は1度だけで、
あとは同じ数字を見つけるだけ
という違いによるものです。

(内部的には、「テーブルジャンプ」や
「二分探索」という技術が使われている)

if文とswitch文の使い分け

ソースコードの読みさすさと
実行速度から、

・二分岐の場合は、『if文』が適している

・多分岐の場合は、『switch文』が適している

ということが言えます。

しかし、どのプログラミング言語でも
分岐処理を勉強するときには
「if文」がはじめに登場します。

そのためか、
switch文を敬遠する方を
多く見かけます。

最近のプログラミング言語では、
switch文の条件式の評価結果に、
整数以外の値が使える言語も存在します。

kohsaka

例えばJava言語では、
バージョン7以降において、
条件式の評価結果に「文字列」が
扱えるようになりました。

このように利便性も増しています。

ぜひ、多分岐処理の時には
switch文にも挑戦してみてください。

------------------------------------------------
PS.Javaを基礎からしっかり学びたいなら、
社会人のためのJavaスクールで!!
------------------------------------------------

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する