- Javaの最重要呪文
public static void main(String[] args)の正体を完璧に理解する - 5つの単語(public / static / void / main / String[] args)がそこに書かれている「本当の目的」を知る
- パソコン(実行エンジン)がプログラムを起動する裏側の仕組みをマスターする
どうも上達の研究家のワタタクです。
avaの勉強を始めると、参考書の1ページ目に必ず出てくるこのお決まりのフレーズ。
public static void main(String[] args) { ... }
これ、誰もが当たり前のようにコピペして使っていますが、よく考えると不思議じゃありませんか? 「これからプログラムを書くぞって時に、なんで何も指示しなくていいはずの最初に、わざわざこんなややこしい単語を並べなきゃいけないの?」
結論から言うと、これは「パソコン(Javaの実行エンジン)が、何万行もあるコードの中から『最初にここから起動するぞ!』と迷わず見つけるための、世界共通のスタートボタン(規格)」として法律のように決まっているからなんです。
今回は、この5つの単語の「目的」を、僕たちが大好きなマトリョーシカとPCの仕様に例えて、1行ずつ綺麗にデバッグ(解体)していきましょう!
この記事を書いた人


上達の研究家 / アーティスト
「才能」ではなく「発見」で描く。文系・36歳からの上達ハック。
- ゼロから独学でクリエイティブコーディングに挑戦し、以下の実績を達成
- 開始1年8ヶ月目までに公募6つに挑戦し、3つ入選(勝率50%)
- KITTE大阪の18メートルあるAxCROSS大型スクリーン
- 虎ノ門ヒルズステーションタワーB2F TOKYO NODE エントランスサイネージで展示
- UN:O(東京大手町)にある会員限定のサテライトオフィスにて2作品常設展示
- 開始1年8ヶ月目までに公募6つに挑戦し、3つ入選(勝率50%)
- 開始1年9ヶ月目に、虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示
- 実際の展示作品と動画、音楽やSEOでの実績はポートフォリオに載せております→https://my-portfolio-blue-three-63.vercel.app/works
1つずつ理解:なんのために書くの?
Javaの実行エンジン(JVM)というパソコンの中のボスは、プログラムが起動した瞬間に、この1行を上から下まで目を皿のようにして探します。それぞれの単語には、ボスを迷わせないための「絶対的な目的」があるんです。
1. public(公開)
- 目的: パソコン(外部のシステム)が、外側からこのスタートボタンを「制限なしで見つけられるようにするため」です。
- マトリョーシカで言うと: もしここが
private(秘密)になっていると、パソコンがプログラムを起動しようとしたときに「一番外側の人形(パッケージ)を開けたのに、次の人形(メソッド)が隠されていてアクセスできない!」となり、起動エラー(バグ)になってしまいます。
2. static(静的・メモリ固定)
- 目的: 「new して実体(インスタンス)の人形を組み立てる前」に、パソコンがこのメソッドをいきなり実行できるようにするためです。
- PCの仕様で言うと: Javaの世界では、通常は
newをして物体をメモリ上に作らないとプログラムは動かせません。しかし、一番最初の起動時だけは、まだ誰もnewを実行していませんよね。だからこそ、「newしていなくても、プログラムを読み込んだ瞬間に、最初から脳内(メモリ)にロードして準備しておいてね!」とパソコンに指示するためにstaticが絶対に必要なのです。
3. void(空っぽ・戻り値なし)
- 目的: このメイン処理(起動処理)が全部終わったあと、「パソコンに対して、何もお返しのデータ(結果の数値など)を返さなくていいよ」という指示です。ただ処理を実行して終了する、という意味を持っています。
4. main(メイン・主役)
- 目的: パソコンが「ここが最初の一歩だ」と認識するための名前です。Javaの実行エンジンは、起動すると真っ先に
mainという名前のメソッドを自動検索する仕様(プログラム)になっています。
5. String[] args(おまけの引数)
- 目的: プログラムを起動するときに、「外の世界から、何か文字データ(設定ファイルなど)を一緒に流し込みたい場合」に使うための受け皿(引数)です。今は使わなくても、仕様上セットしておく決まりになっています。
更にくわしく解説した記事。


結論:PCに対する「最初の一歩はここだよ!」という絶対的な仕様書
もしpublic static void main(String[] args)ではなく、ただの自由な名前(例えば void wataTaku())だったり、static がついていなかったりすると、パソコンはプログラムを読み込んだ瞬間に大パニックを起こします。
「え、何万行もあるコードの、どこから再生(実行)すればいいの? 実体(インスタンス)もないから動かせないよ!」とフリーズしてしまうのです。
だからこそ、何も指示しなくていいように、あらかじめ「外部に公開(public)されていて、最初からメモリにあって(static)、お返しは不要(void)な、最初のスタートボタン(main)」という共通の規格(仕様)が法律として作られたわけです。
日本語の漢字や英語の呪文として丸暗記するのではなく、「PCに最初の一歩を迷わせないための優しさの仕様書」だと分かれば、この1行を見る目がガラッと変わりますよね!
それでは今日もレッツワクワクコーディング。
関連記事


![Javaのmainメソッド「public static void main(String[] args)」をPCの仕様の観点から解説したインフォグラフィック。 上部にはタイトル「Javaの呪文『public static void main(String[] args)』ってなに? 5つの単語の目的をPCの仕様で徹底解体!」と、記事の目的(理解する、目的を知る、仕組みをマスターする)が書かれています。 中央には、Javaのロゴが描かれたCPUのような基盤のイラストがあり、その周囲に各単語の役割がアイコン付きで説明されています。](https://watataku-artist-katsuyaku.com/wp-content/uploads/2026/07/java-main-method-explanation-infographic.jpg)
