アットウィキロゴ
Javaプログラミング入門
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

Javaプログラミング入門

2. Hello World!

最終更新:

javatutorial

- view
管理者のみ編集可

Eclipseは、プログラムの作成から実行までをスムーズに行える便利な開発環境です。
初めてプログラミングをする方でも、基本的な操作を覚えれば簡単にプログラムを書いて実行できます。
ここでは、Eclipseを使ってプログラムを作成し、実行するまでの流れを説明します。

これから私たちがやろうとしているのは、コンピュータに「Hello World!」という文字を画面に表示してもらうことです。
では、具体的にどのようにお願いすればよいのでしょうか?
① 人間の言葉で表現すると?
私たちが普段使う言葉で説明すると、次のようになります。
➡ 「コンピュータの画面に『Hello World!』と表示してください。」

② プログラムとは何か?
私たちはこのお願いをコンピュータに伝えたいのですが、コンピュータは人間の言葉をそのまま理解することができません。
そこで、コンピュータが理解できる言葉で指示を出す必要があります。
さらに、コンピュータへの指示は、細かく正確に伝えなければいけません。
例えば、
  • どこに表示するのか?
  • 何を表示するのか?
  • どのように実行するのか?
といったことを、コンピュータが理解できる形で書く必要があります。
このように、コンピュータが理解できる形で書かれた指示の集合をプログラムと呼びます。

実際にコードを動かす手順までを順番に見ていきましょう。

新規プロジェクトの作成

まずは、新しいプロジェクトを作成し、プログラミングの学習を始める準備を整えましょう。
メニューバーから「ファイル」→「新規」→「Javaプロジェクト」を選択します。

「新規Javaプロジェクト」ウィンドウが開いたら、プロジェクト名を「JavaLesson」と入力し「完了」ボタンをクリックします。

JavaLessonというプロジェクトが作成されます。

プロジェクトのアイコンの左にある三角を押すと二つの項目がでます。

プログラムファイルの作成

作成したプロジェクトを右クリックし、「新規」→「クラス」を選択します。

「新規Javaクラス」ウィンドウが表示されるので、名前(M)のテキストを入力するところに「HelloWorld」と入力します。
また、下にある「public static void main(String[] args)」にチェックを入れて、「完了」をクリックします。

プログラムの入力

作成した"HelloWorld.java」ファイルがエディタ画面に表示されます。

以下のプログラムを入力してください
サンプル:HelloWorld.java
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. System.out.println("Hello World!");
  4. }
  5. }
  6.  
System.out.println()という長い単語は「syso」と入力した後に
コントロールキーを押しながらスペースキーを押すことで入力を補完することができます。




コードを入力したら、コントロールキーを押しながらSキーを押してファイルを保存します。

プログラムの実行

ファイルの保存が完了したら、エディタ画面で右クリックをして「実行」→「Javaアプリケーション」を選択します。

実行結果は下部の「コンソール」タブに表示され、このタブに「Hello World!」と表示されれば成功です。

これからの学習について

以降のサンプルプログラムに関してもプログラムファイルを作成する手順と同じ通り作成してもらえば問題ありません。
入力する名前に関しては、サンプル:の横に指定してありますので、その名前通りに入力してください。



実行する際も手順は同じになります。

プログラムの開始地点であるメインメソッド

public static void main(String[] args)という記載に関して簡単に説明をしたいと思います。
Javaのプログラムは、必ず特定の場所から実行が始まります。
そのスタート地点となるのがmainメソッドです。
mainメソッドはプログラムの出発地点です。
もし mainメソッドがなければ、Javaのプログラムはどこから実行すればいいのかわからず、Eclipseで実行することができません。

画面に値を表示する

画面に文字を表示するときに使うのがSystem.out.println()という命令になります。
System.out.println()の() の中には、表示したい値を指定します。
今回はHello Worldという文字列を表示させたいので、ダブルクォーテーションで囲った中にHello Worldと指定しています。
他の文字を出力したければダブルクォーテーションで囲まれた中身を変更すれば良いです。
System.out.println("Javaの世界へようこそ!");
文字列だけでなく、数値も出力することができます。
その場合は()の中に直接数値を指定すれば良いです。
System.out.println(100);

💡注意
命令の最後には ;を必ずつける必要があります。
この;を付け忘れるとエラーになり、プログラムの実行ができなくなります。

わかりやすいプログラムを書くためには

プログラムを書くときは、他の人が読んでもわかりやすいように工夫することが大切です。
そのために特に重要なのが、コメントインデントです。

コメントとは?

コメントは、プログラムの中に書く説明文のことです。
実行するプログラムには影響を与えず、人間がプログラムの意図や動作を理解するために役立ちます。

Javaでは、コメントは次のように書きます。
サンプル:HelloWorld.java
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. // これは1行コメントです
  4. System.out.println("Hello World!"); // 画面に「Hello World!」を表示する
  5. }
  6. }
  7.  
サンプル:HelloWorld.java
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. /*
  4.   * これは複数行コメントです。
  5.   * /* */で囲まれている限り何行でも続けて書けます。
  6. */
  7. System.out.println("Hello World!");
  8. }
  9. }
  10.  

インデントとは?

ブロックについて
プログラムでは、中括弧 {} の間にある部分をブロックと呼びます。
中括弧を開いたら、必ず閉じる必要があります。

初心者によくあるミスは、閉じ中括弧を忘れてしまうことです。
これをしっかりと行わないと、プログラムがコンパイルできなくなります。
そのため、中括弧を開いたらすぐに閉じる中括弧を書く癖をつけるようにしましょう。

Javaのようなプログラミング言語では、中括弧{ が出ると一段字下げをして、コードの開始位置をずらすという習慣があり
逆に、中括弧 }が出ると、元の位置に戻すという習慣があります

これにより、今どの階層にいるのかがわかりやすくなります。
インデントをしなくてもプログラムは動作しますが、階層構造が分かりにくくなるため、必ずインデントを行うようにしてください。

コラム

mainメソッドの修飾子の意味

1.なぜpublicが必要なのか?
publicは「誰がこのメソッドを使えるか」を決めるアクセス修飾子です。
Javaのプログラムは、JVM(Java仮想マシン)によって実行されます。
JVMがmainメソッドを見つけて実行するためには、このメソッドがどこからでもアクセスできるようにしておく必要があります。
もしprivateやprotectedにしてしまうと、JVMがmainメソッドを見つけられず、プログラムが動かなくなります。
そのため、publicにする必要があります。

2.なぜstaticが必要なのか?
staticは「このメソッドはクラスに属する」ことを意味します。
Javaのプログラムを実行するとき、まだ何のオブジェクト(インスタンス)も作られていません。
そのため、最初に呼び出されるmainメソッドは、オブジェクトを作らなくても使えるようにしておく必要があります。
staticを付けることで、オブジェクトを作らずに直接クラス名だけで実行できるようになります。
もしstaticを付けなかった場合、プログラムを実行する前にオブジェクトを作る必要があります。
しかし、クラスのコンストラクターが引数を必要とする場合、どの引数を渡せばいいのか分からなくなり、プログラムの実行が難しくなります。
また、抽象クラスやインターフェースにもmainメソッドを書くことはできますが、それらは直接インスタンス化できません。
そのため、mainメソッドを実行できなくなってしまいます。
こういった問題を少しでも緩和するために、Javaではmainメソッドがstaticになっています。

3.なぜvoidが必要なのか?
voidは「このメソッドは何も値を返さない」ことを意味します。
mainメソッドは、プログラムの開始地点としてのみ呼び出されることを目的としています。
したがってmainメソッドから値を返すことは無意味であり、不要になります。

4.なぜmainという名前でなければいけないのか?
JavaのプログラムはJVMが決めたルールによって実行されます。
そのルールの中で、プログラムの開始地点となるメソッドは必ずmainであると決められています。
もしmain以外の名前にしてしまうと、JVMは最初に実行する場所を見つけられず、エラーになってしまいます。
そのため、メソッド名は必ずmainにする必要があります。

mainメソッドの仮引数は可変長引数でも大丈夫です

public static void main(String... args) { 
} 
 

Java 21から main メソッドがシンプルになりました

従来のmainメソッド(Java20以前)
  1. class Main {
  2. public static void main(String[] args) {
  3. // プログラムの処理
  4. }
  5. }
  6.  
Java 21以降の main メソッド
  1. void main(String[] args) {
  2. // プログラムの処理
  3. }
  4.  
驚いた方もいるかもしれませんが、クラスの記述がなくなっています。
クラスがないけど大丈夫なの?と思うかもしれませんが、実際にはコンパイル時に自動でクラスが追加されます。
例えば、javapコマンドを使って逆アセンブルすると、コンパイル後には次のようなコードになっているのが確認できます。
  1. final class ファイル名 {
  2. void main(String[] args) {
  3. // プログラムの処理
  4. }
  5. }
  6.  
つまり、見た目はシンプルになっただけで、内部ではちゃんとクラスが作られているということです。

Java21でのmainメソッドの新ルール

Java21では、これまで厳格に決められていたmainメソッドのルールが、以下のようにより柔軟になりました。

①mainメソッドのアクセス修飾子が自由になりました。
public, protected, defaultの修飾子が使えるようになりました。(privateはNG)

②static main(String[] args) がない場合の処理が変わります。
static main(String[] args) がない場合、 static main()(引数なしの main)があれば、そちらを実行します。
もちろん、static main(String[] args) があれば、そちらが優先されます。

③クラスのインスタンスが自動生成される場合があります。
staticなmainメソッドがない場合、コンストラクタでインスタンスを生成し、インスタンスメソッドとしてmain()を実行します。
main(String[]args)とmain()が両方ある場合は、引数ありのmain(String[]args)が優先されます。

この機能はあくまで「初心者向けの書きやすさ向上」が目的です!
実際の、現場ではJava21未満の環境を使っているプロジェクトも多いため
public static void main(String[] args)で書くのが一般的です。
そのため、新しい書き方に慣れるのは良いですが、基本は従来の書き方をおすすめします!

Javaドキュメンテーションコメント

Javaにおけるドキュメンテーションコメントは、/** ... */ という形式の「Javadocフォーマット」で記述します。
一言で言えば、Javaのソースコードから「プログラムの説明書」を自動的に作成する仕組みです。
C#の /// やPythonの """ など、プログラミング言語によってコメントの書き方は異なりますが、「何を書くべきか」という基本的な考え方はどの言語でも共通しています。

Javadocフォーマットでコメントを書いておくと、javadocコマンドやEclipseなどの開発ツールを使って、Webブラウザで読みやすいHTML形式のドキュメントを簡単に生成できます。
なお、標準の設定では、外部からアクセスされるpublicやprotectedのメソッドのみがドキュメント化の対象となります。

ドキュメントが持つ「真の重要性」
ドキュメントの質は、エンジニアとしての評価に直結することもあります。

プログラミングの腕を磨くために、良いコードを読み、たくさんコードを書く練習が必要なように、ドキュメント作成も同じです。
日頃から「相手に伝わる分かりやすい文章」を書く練習を重ねることで、初めて質の高い設計ドキュメントを書くスキルが身につきます。

例えば、あるフロントエンドフレームワークの開発企業では、オープンソースプロジェクトへの継続的な貢献を高く評価し、一人の技術者をフルタイムのエンジニアとして採用した事例があります。
この技術者は、単なるコードの改善にとどまらず、チュートリアルやガイドといったドキュメントの整備にも積極的に取り組んでいました。
その活動を通して、「高い設計力や実装力」に加えて、自分の知識を分かりやすく整理し、他者に伝えるスキルを持っていることを証明したのです。
企業の採用担当者や中核メンバーは、長期にわたる彼のアウトプットを観察した結果、この技術者なら、自社のプロダクトの成長にも大きく貢献してくれると確信し、正式な採用に至りました。

目指すべき「良いドキュメント」の基準

ドキュメンテーションコメントは単なるメモではなくAPIの仕様書であり、主にそのプログラムを利用する他の開発者に向けて書かれます。
そのため、外部から利用されるpublicやprotectedなメソッド・フィールドが主な対象となります。

ここで最も重要なのは、ドキュメントを読んだだけで、そのAPIを正しく使える状態にすることです。

もし、他の開発者がこの機能はどう使うんだろう?とソースコードの中身(実装)まで確認しなければならないようであれば、それは正しく説明できているとは言えません。
常に「使う人の視点」に立ち、明確で分かりやすい仕様を記述することが大切です。

サンプル:Calculator.java
  1. /**
  2.  * Calculatorクラスは、基本的な計算機能を提供します。
  3.  * 加算、減算、乗算、除算を行うメソッドが含まれています。
  4.  */
  5. public class Calculator {
  6.  
  7. /**
  8.   * 2つの整数の合計を返します。
  9.   *
  10.   * @param a 加算する最初の整数
  11.   * @param b 加算する2番目の整数
  12.   * @return aとbの合計
  13.   */
  14. public int add(int a, int b) {
  15. return a + b;
  16. }
  17.  
  18. /**
  19.   * 2つの整数の差を返します。
  20.   *
  21.   * @param a 減算される整数
  22.   * @param b 減算する整数
  23.   * @return aからbを引いた結果
  24.   */
  25. public int subtract(int a, int b) {
  26. return a - b;
  27. }
  28.  
  29. /**
  30.   * 2つの整数の積を返します。
  31.   *
  32.   * @param a 乗算する最初の整数
  33.   * @param b 乗算する2番目の整数
  34.   * @return aとbの積
  35.   */
  36. public int multiply(int a, int b) {
  37. return a * b;
  38. }
  39.  
  40. /**
  41.   * 2つの整数の商を返します。
  42.   *
  43.   * @param a 割られる整数
  44.   * @param b 割る整数
  45.   * @return aをbで割った結果
  46.   * @throws IllegalArgumentException bが0のとき
  47.   */
  48. public double divide(int a, int b) {
  49. if (b == 0) {
  50. throw new IllegalArgumentException("割る数は0であってはいけません。");
  51. }
  52. return (double) a / b;
  53. }
  54. }
  55.  

最近更新されたスレッド
人気記事ランキング
ウィキ募集バナー