21
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン×Java】知識編 public static void main() のホントの意味

Last updated at Posted at 2025-07-08

この記事をまだ読んでない方はこちら
👉 【ポケモン×Java】第2章🔥:『ゆけ、ピカチュウ!』~コンストラクタとインスタンス~

🍃 はじめに

「Javaって、ファイルにいろいろ書いてるのに、なんで `BattleStagejava` だけが動くの?」
「ピカチュウのクラス(`Pikachu.java`)もあるんだから、そっちが動いたってよくない?」

そう思ったあなた、大正解。
実はそこに、main()と JVM(Java Virtual Machine)の深い関係があるんだ。

📚 目次

  1. Javaには「実行できるクラス」と「そうでないクラス」がある
  2. main()メソッドってなに?
  3. じゃあ Pikachu.javamain 書いてもいいの?
  4. まとめ:目的に合った設計が正解!

1. Javaには「実行できるクラス」と「そうでないクラス」がある

Javaには、「このファイルから実行できる!」というクラスと、
「そのままでは実行できない」クラスがある。

例:

BattleStage.java
class BattleStage {
    public static void main(String[] args) {
            System.out.println("バトルステージに立った!");
    }
}

これは起動できるクラス。なぜなら...

public static void main(String[] args)

という「おまじない」が書いてあるから!

逆に、次のようなクラスはそのままでは実行できない:

Pikachu.java
public class Pikachu {
    public void cry() {
        System.out.println("ピカ〜〜っ!");
    }
}

これはピカチュウの行動が書かれてるだけなので、
Error: Main method not found(mainがないぞ!)って怒られる!

eclipseでは、そもそも起動できない。
(コマンドプロンプトで実施できるが、それはまた別の機会に、、、)

2. main()メソッドってなに?

Javaでは、プログラムをスタートさせるために特別なメソッドが必要。

それが、これ:

public static void main(String[] args){ ( 処理 ) }

この形が完全一致していないと、JVMは「どこから始めればいいの?」って
迷子になっちゃうんだ。

📒 トレーナーメモ①

  • main:スタート地点の名前(変更できない)
  • static:インスタンスなしで呼べる
  • void:何も返さない
  • String[] args:起動時の引数(命令のオマケ)
    (static , void , String[] args に関しては別の機会に詳しく説明予定)

JVMって何者? JVM(Java Virtual Machine)

  • 簡単に言うと、Javaを実行するための装置(eclipseで実行ボタン押すと動くよ)
  • 起動時に指定されたクラスから main() を探す
  • 見つけたら、そこから実行を始める!

3. じゃあ Pikachu.java に main 書いてもいいの?

うん、書いてもOK!動くよ!

public class Pikachu {
    public static void main(String[] args) {
        System.out.println("ピカチュウが出てきた!");
    }
}

これなら java Pikachu でピカチュウが登場!

でも......

それって、「ピカチュウしか登場しない世界」になっちゃわない?


🎯 プログラムの目的に合ってる?

たとえば、バトルをしたいなら:

public class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
        Hitokage hi = new Hitokage();
        pi.attack(hi);
    }
}

みたいに、「登場させる役割」は BattleStage にまとめた方が
整理しやすいし、再利用もしやすい

📒 トレーナーメモ②
Javaでは「処理を実行する側(バトルステージ)」と
「実行される側(ポケモン)」を分けるのが基本!


4. まとめ:目的に合った設計が正解!

疑問 答え
public static void main()ってなに? Javaプログラムのスタート地点
mainはどこに書く? 実行対象のクラスに書こう
Pikachu.javaに書いてもいい? 動くけど、設計としては非推奨
なんで BattleStage.javaに書いたの? 複数ポケモンを呼び出して戦わせるための舞台だから!

あとがき

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


21
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?