Skip to main content

Javaとプログラミングの基礎

この章で得られるスキル:

  • ✅ 自分で「Hello World」プログラムを書いて実行できる
  • ✅ プログラムがどのように動くかをイメージできる
  • ✅ Javaがどんな場面で使われているかを説明できる
  • ✅ プログラムコードを読みやすく整理できる

1. プログラミング言語とは

プログラミング言語の役割

コンピュータは、人間の言葉をそのまま理解することができない。
そのため、コンピュータが理解できる特別な言葉(プログラミング言語) を使って指示を出す必要がある。

例:人間の言葉とプログラミング言語の違い

人間の言葉: 「画面に『こんにちは』と表示して」
↓ コンピュータは理解できない
↓ プログラミング言語で書く必要がある
Java: System.out.println("こんにちは");

プログラミング言語を使うことで、コンピュータに正確な指示を出すことができる。

プログラミング言語にはバージョンがある

プログラミング言語は、時間とともに進化している。
そのため、同じ言語でもバージョンによって書き方や機能が変わる ことがある。

例:Javaのバージョン

  • Java 8(2014年リリース)
  • Java 11(2018年リリース)
  • Java 17(2021年リリース)
  • Java 21(2023年リリース)

例:他の言語のバージョン

  • Python 2 と Python 3(書き方が大きく変わった)
  • JavaScript ES5 と ES6(新しい機能が追加された)

本教材では、Java 17以降を前提として学習を進める。


2. Javaとは

Javaの特徴

Javaは、1995年にSun Microsystems(現在はOracle)が開発したプログラミング言語である。
以下のような特徴がある:

特徴説明
どこでも動くWindows、Mac、Linuxなど、異なるOS上で同じプログラムが動く
安全型チェックやメモリ管理が厳格で、エラーを防ぎやすい
高速実行速度が速く、大量のデータを扱うシステムに向いている
「どこでも動く」について

現代では、Python、JavaScript、Goなど、メジャーな言語の大半はどこでも動く。
Javaが登場した1995年当時は、OSごとに異なるコンパイルが必要な言語が多く、「どこでも動く(Write Once, Run Anywhere)」は革新的な宣伝文句だった。
現在でもJavaの「どこでも動く」特性は重要だが、かつてほど独自の強みではなくなっている。

Javaを学ぶメリット

Javaを学ぶことには、以下のようなメリットがある:

  1. 求人が多い
    企業の業務システムで広く使われているため、Javaエンジニアの求人が多い。

  2. Androidアプリ開発ができる
    Androidアプリの開発にJavaが使われている(KotlinもあるがJavaの知識があると理解しやすい)。

  3. 大規模な開発に向いている
    銀行システムや企業の基幹システムなど、大規模で安全性が求められるシステムに使われている。

Javaが使われている場面

Javaは、以下のような場面で使われている:

  • Webアプリケーション(ECサイト、業務システムなど)
  • Androidアプリ(スマートフォンアプリ)
  • 業務システム(銀行、証券、保険など)
  • 組み込みシステム(家電製品、自動車など)
Javaが適さない場面

Javaは汎用性が高い言語だが、以下のような場面では他の言語が選ばれることが多い:

  • 機械学習・データ分析:PythonやRが主流
  • スマートフォンアプリ:iOS開発ではSwift、Android開発ではKotlinが主流(Javaも使えるが、新規開発ではKotlinが推奨される)
  • 軽量なスクリプト:ShellやPythonが適している
  • リアルタイム処理:CやC++が適している

ただし、これらの場面でもJavaが使われないわけではない。
プロジェクトの要件やチームのスキルセットによって、適切な言語が選ばれる。


3. Eclipseとは

Eclipseの役割

Eclipse(エクリプス) は、Javaプログラムを書くための統合開発環境(IDE: Integrated Development Environment) である。

メモ帳でもJavaプログラムを書くことはできるが、Eclipseを使うと以下のようなことができる:

機能説明
コードの補完入力中にコードの候補を表示してくれる
エラーチェック書いたコードにエラーがあると、その場で教えてくれる
実行ボタン一つでプログラムを実行できる
デバッグプログラムの動きを一行ずつ確認できる

本教材では、Eclipseがインストール済みであることを前提として進める。


4. 最初のJavaプログラム:Hello World

それでは、実際にJavaプログラムを書いて実行してみよう。
細かいことは後で説明するので、まずは動かしてみることが大切である。

Hello Worldプログラム

以下は、Hello World という文字を画面に表示する、最も基本的なJavaプログラムである。

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }

実行してみよう: 上のコードを実行すると、画面に Hello World と表示される。

Eclipseでの実行手順

Eclipseで実際にHello Worldプログラムを実行する手順は以下の通り:

  1. 新規Javaプロジェクトを作成

    • ファイル新規Javaプロジェクト
    • プロジェクト名を入力(例:HelloWorldProject
    • 完了をクリック
  2. 新規クラスを作成

    • プロジェクトを右クリック → 新規クラス
    • クラス名を入力(例:HelloWorld
    • public static void main(String[] args)にチェックを入れる
    • 完了をクリック
  3. コードを書く

    • mainメソッドの中に、System.out.println("Hello World");を書く
  4. 実行する

    • 上部のツールバーにある緑色の実行ボタンをクリック
    • コンソールにHello Worldと表示される

5. プログラムの大原則

先ほど書いたHello Worldプログラムを例に、プログラミングの大原則を学ぼう。

Hello Worldプログラムの再掲

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

このコードを例に、以下の大原則を説明する。


原則1: Javaではmainメソッドを起点に実行が始まる

Javaプログラムは、mainメソッドを起点に実行が始まる。

public static void main(String[] args) {
// ここから実行が始まる
}

どんなに長いプログラムでも、必ずmainメソッドがエントリーポイント(開始地点) になる。
mainメソッドがないと、プログラムは実行できない。

mainメソッドの詳しい意味は後の章で学ぶ。今は「プログラムの開始地点」と覚えておけば良い。


原則2: プログラムは上から下に実行される

mainメソッドの中の処理は、書かれた順番に上から下に実行される

public static void main(String[] args) {
System.out.println("1行目");
System.out.println("2行目");
System.out.println("3行目");
}

実行結果:

1行目
2行目
3行目

これは当たり前のように思えるかもしれないが、プログラミングの最も基本的なルールである。

実行してみよう:

public class Example { public static void main(String[] args) { System.out.println("1行目"); System.out.println("2行目"); System.out.println("3行目"); } }

原則3: {}(波括弧)でブロックを作り、処理をまとめる

{}(波括弧) は、複数の処理をまとめて1つのブロックにするために使う。

Hello Worldプログラムを見てみよう:

public class HelloWorld {  // ← ブロック1の開始
public static void main(String[] args) { // ← ブロック2の開始
System.out.println("Hello World");
} // ← ブロック2の終了
} // ← ブロック1の終了

このプログラムには2つのブロックがある:

  • ブロック1public class HelloWorld { ... }(外側のブロック)
  • ブロック2public static void main(String[] args) { ... }(内側のブロック)

ブロックは入れ子構造(ネスト)になることがある。
今回は、親のブロック(クラス)の中に子のブロック(mainメソッド)があるという構造になっている。

{でブロックが始まり、}でブロックが終わる。 今はHelloWorldプログラムには2つのブロックがあること、入れ子構造になっていることが分かれば十分である。詳しくは後の章で学ぶ。

よくあるエラー:波括弧の対応ミス

波括弧{}の対応が取れていないとエラーになる。

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
// } が足りない!エラー

エラーメッセージ例:

error: reached end of file while parsing

原因: 開き括弧{の数と閉じ括弧}の数が一致していない。

解決策:

  • Eclipseでは、波括弧をクリックすると対応する波括弧が強調表示される
  • 自動整形機能(Ctrl + Shift + F)を使うと、対応が取れていない箇所が分かりやすくなる

予防策: {を書いたら、すぐに対応する}も書いてから、中身を書くと良い。


原則4: セミコロン;で命令の終わりを示す

Javaでは、1つの命令の終わりに必ずセミコロン;を付ける

System.out.println("Hello World");  // セミコロンで終わる

セミコロンを忘れると、エラーになる:

System.out.println("Hello World")  // エラー!セミコロンがない
よくあるエラー:セミコロン忘れ

初学者が 最もよく遭遇するエラー がセミコロン忘れである。

エラーメッセージ例:

error: ';' expected

原因: 命令の最後にセミコロン;を付け忘れている。

解決策: エラーが出ている行の最後にセミコロンを追加する。

ポイント: エラーメッセージは英語だが、「expected」は「期待していた」という意味。 「;が期待されていた」=「セミコロンがあるべきだった」ということ。

Javaでは、セミコロンがあれば改行しなくても良い。 つまり、以下のように1行で書くこともできる:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }

セミコロン;で命令が区切られているので、改行がなくてもJavaは理解できる。

ただし、これでは非常に読みにくい
だから、適切な場所で改行して、読みやすくする必要がある。


原則5: インデント(字下げ)で構造を見やすくする

インデント(字下げ) は、プログラムの構造を見やすくするために使う。

先ほどのHello Worldプログラムを、3つのパターンで比較してみよう:

パターン1: 改行なし(1行で書く)

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }

非常に読みにくい。 どこがブロックの始まりで、どこが終わりか分かりにくい。

パターン2: 改行あり、インデントなし

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

改行はあるが、どこがどのブロックに属しているかが分かりにくい。

パターン3: 改行あり、インデントあり(推奨)

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

最も読みやすい。 ブロックの構造が一目で分かる。

ルール:

  • ブロック{}の中に入るコードは、1段階インデントする
  • ブロックがネストする(入れ子になる)場合は、さらに1段階インデントする

インデントは、スペース4つまたはタブ1つのいずれかに統一するのが一般的である(チームによって異なるため、所属チームのルールに従う)。
Eclipseでは、自動整形機能でインデントをそろえられる。


補足: どこで改行できるか?

Javaでは、セミコロン;の他にも、.(ドット)など、改行できる箇所がいくつかある。
逆に、改行してはいけない箇所もある。

ただし、今は細かいルールを覚える必要はない。

基本方針:

  • 読みやすいと思う箇所で改行してみる
  • エラーが出たら、改行を元に戻す

こうした 「とりあえずやってみて、何がダメで何がいいのか体験して学ぶ」 ことが、 プログラミング上達の近道である。

Eclipseがエラーを教えてくれるので、安心して試してみよう。


コードの説明(振り返り)

改めて、Hello Worldプログラムの各部分を簡単に説明する。

public class HelloWorld {
  • public class HelloWorld は、HelloWorldという名前のクラスを定義している。
  • クラスとは何かは、後の章で詳しく学ぶ。今は「プログラムの入れ物」と思っておけば良い。
    public static void main(String[] args) {
  • public static void main(String[] args) は、プログラムのエントリーポイント(開始地点) である。
  • Javaプログラムは、必ずこのmainメソッドから実行が始まる。
  • mainメソッドの詳細は、後の章で学ぶ。
        System.out.println("Hello World");
  • System.out.println("Hello World"); は、画面にHello Worldという文字を表示する命令である。
  • printlnは「print line(行を印刷する)」の略で、文字を表示して改行する。
  • "Hello World"のように、"(ダブルクォート)で囲むと、それは文字列として扱われる。

6. Java 21以降の簡潔な書き方(参考)

Java 21以降では、より簡潔な書き方も可能になった:

// Java 21以降の簡潔な書き方(参考)
void main() {
System.out.println("Hello Java!");
}

ただし、本教材では従来の書き方public classpublic static void mainを使う書き方)を使用する。

理由:

  • 従来の書き方は広く使われており、既存のコードや他の教材でもよく見かける
  • 最新の書き方はまだ普及しておらず、ネット上に情報が少ない

将来的に、Java 21以降の書き方が主流になれば、その時に学び直すこともできる。


7. コメント

プログラムの中に、人間が読むためのメモを書くことができる。
これをコメントという。

コメントは、プログラムの実行には影響しない。

1行コメント

//を使うと、その行の//以降がコメントになる。

// これはコメントです
System.out.println("Hello World"); // 画面に表示する

複数行コメント

/* */を使うと、複数行にわたるコメントを書ける。

/*
* これは複数行の
* コメントです
*/
System.out.println("Hello World");

なぜコメントが必要か

コメントは、以下のような場面で役立つ:

  • 後で見返したとき:自分が書いたコードを後で見返すとき、何をしているか忘れていることがある
  • 他の人が読むとき:チーム開発では、他の人が自分のコードを読むことがある
  • 複雑な処理の説明:難しい処理をしている部分に説明を付けると、理解しやすくなる

例:コメントがあると分かりやすい

public class Example { public static void main(String[] args) { // 消費税込みの金額を計算する int price = 1000; double taxRate = 0.1; double total = price * (1 + taxRate); System.out.println("税込価格: " + total); } }

やってみよう:

  • 上のコードを実行してみよう
  • taxRateの値を0.08に変えて、結果がどう変わるか確認してみよう

まとめ

この章では、以下のことを学んだ:

  • プログラミング言語は、コンピュータに指示を出すための特別な言葉である
  • Javaは、世界中で使われている信頼性の高い言語で、求人が多く、様々な場面で活用されている
  • Eclipseは、Javaプログラムを書くための便利なツールである
  • Hello Worldプログラムを書いて実行できた
  • プログラムの大原則
    • (Java特有) Javaではmainメソッドを起点に実行が始まる
    • (共通) プログラムは上から下に実行される
    • (共通) {}でブロックを作り、ブロックは入れ子構造になることがある
    • (Java特有) セミコロン;で命令の終わりを示す
    • (共通) インデントで構造を見やすくする
  • 「とりあえずやってみて、体験して学ぶ」 ことがプログラミング上達の近道である
  • コメントを使って、プログラムにメモを残すことができる

次の章では、変数について学ぶ。
変数は、プログラムの中でデータを保存するための「箱」のようなものである。