【Java-A080-010】Javaにおける「分岐」の美学――もしも、という贅沢を飼いならす

日々の喧騒を離れ、静かにキーボードと向き合う。
何気ない作業のようでいて、実はマインクラフトという箱庭世界の「運命」を自らの手で書き換えている……。
これは、大人の嗜みとして、なかなかに贅沢な時間だと言えるのではないでしょうか。

今回は、プログラミングの根幹とも言える「条件分岐」について学んだ内容を、自分なりの備忘録としてまとめておきます。


1. 「If文」という名の羅針盤

プログラミングにおける最も基本的な分岐、それが if です。「もし~だったら、こうする」という、極めてシンプルかつ強力な論理。

if (number >= 10) {
    // 10以上の時の処理
} else {
    // それ以外の時の処理
}

ここで重要なのは、「かつ(&&)」「または(||)」といった複合条件。
人生と同じで、条件は一つとは限りません。それらをどう組み合わせるか。そこに、プログラマとしての「戦略」が表れます。

……だが、ここで気をつけたいのが「ネスト(入れ子)」の罠です。
if文の中にif文を重ねすぎるのは、美しくない。読み手(未来の自分を含む)を迷わせ、バグという名の不運を招く。
「ネストが深い……。これは、不味いな。非常に不味い……っ!」
そう直感した時は、処理を整理し、なるべく平坦なコードを目指す。この「引き算の美学」こそが、健全な開発のコツと言えそうです。

2. 「Switch文」に見る、大人の選択

値によって多くの選択肢がある場合、if文をダラダラと書き連ねるのは野暮というものです。
そんな時に登場するのが switch 文。

Java 14あたりから導入された新しい書き方は、実にスマート。
以前の冗長な書き方に比べ、書き心地は驚くほど軽やかになっています。

switch (number) {
    case 1 -> "A";
    case 2 -> "B";
    default -> "その他";
};

……これだ。これでいい。
特定の「値」に応じてスッ、スッ、と処理が切り替わる。この明快さ。
複雑な条件式をこねくり回すのではなく、あらかじめ決まった選択肢から最適解を選ぶ。この「整理された心地よさ」もまた、プログラミングの醍醐味でしょう。

3. 実践:二回に一回の「打ち上げ花火」

学んだ知識を、さっそくマインクラフト上の処理に落とし込んでみます。
今回試したのは、「スニーク(かがむ動作)をした時に花火を上げる」という処理。
しかし、毎回上がるのは少し騒がしい。そこで「2回に1回だけ」という条件を加えます。

ここで重要になるのが、クラス内に保持する「カウント(変数)」の扱いです。

  1. かがむたびにカウントを +1 する。
  2. カウントを 2 で割った余りが 0 の時だけ、花火を打ち上げる。

この、「あまり(%)」を使ってリズムを作るという発想。
「なるほど……。一見ランダムに見えて、実は裏で整然と管理されている……っ。この仕組みが、世界に心地よい変化を生むわけだ……」

ただし、ここには一つ戦略的な注意点があります。
サーバー全体でカウントを共有してしまうと、AさんとBさんの動きが混ざってしまう。
「自分がかがんだのに上がらない。隣の誰かがかがんだせいで、自分のカウントが消費される……」
そんな不条理を避けるには、プレイヤーごとに個別の管理が必要になりますが、それはまた別の機会に。

考察:分岐を制する者は、日常を制する

今回の学習を通して感じたのは、条件分岐とは単なる文法ではなく、「物事をどう整理し、どう優先順位をつけるか」という思考そのものだということです。

「もし時間が空いたら、このコードをリファクタリングしよう」
「もしエラーが出たら、一旦コーヒーを飲んで落ち着こう」

私たちの日常もまた、無数の if で構成されています。
それを場当たり的に処理するのではなく、Switch文のように美しく、あるいはネストを避けてシンプルに組み立てる。
……そう考えるだけで、少しだけ、人生というプログラムもスムーズに動くような気がしてきませんか。

結び

マインクラフト上で自分の書いたコードが動き、思い通りのタイミングで花火が上がる。
その達成感は、たとえ動作が重いPCの前であっても、何物にも代えがたい「悦楽」です。

参考までに、私が実際に実行したときの画面キャプチャをまとめたpdfをアップしておこう。

Java-A080-010

さて、次は「繰り返し(ループ)」の領域。
同じことを何度も繰り返す中に、どんな美学を見出せるか。
今夜は、この満足感に浸りながら、静かに眠りにつくことにしましょう。

明日もまた、良いコードが書けそうです。