#4 恋に落ちるスイッチ -Do you love me, or not?-

「絵子、やる気スイッチを心ゆくまで押させてくれないか」

「何でだろう。セクハラにしか聞こえないのは何でだろう」


 放課後、情報処理部の部室。

 瀬尾絵子せのおえこ篠宮樹里しのみやじゅりの二人は相変わらず部活動に励んでいる。


「さて、今日はJavaScriptにおけるもう一つの条件分岐、switch文の話だ」

「あー、言ってたね、前回」

「switch文もif文と同様、条件式の評価に応じて処理を分岐したい時に使用する。ただし、分岐が多岐にわたる時にこそ、switch文はその真価を発揮する」

「まあ、二択だったらif文使え、っつー話だよね」

「switch文の動きは非常に単純だ。一つ目、上から順にcaseラベルに式が合致するかを評価し、trueなら続く文を実行する。二つ目、break文に到達した時点で、switchブロックを抜ける。それだけだ」

「まあ、言っちゃうと確かにそれだけよねえ」

「では、よく使われる構文の例を提示してみよう」


----

var menu;

switch (menu) {

 case "ソースカツ丼":

  console.log("言わずと知れた福井のソウルフード。");

  break;

 case "玉子カツ丼":

  console.log("福井でカツ丼といえばソースカツ丼を指すため、玉子カツ丼と明確に注文する必要がある。");

  break;

 case "上カツ丼":

  console.log("福井では玉子カツ丼を上カツ丼と呼ぶこともある。上下関係を暗に認めている。");

  break;

 case "海鮮丼":

  console.log("越前がにや若狭ふぐの乗った贅沢な丼が食欲をそそる。");

  break;

 default:

  console.log("とりあえず腹に入れば何でもいい。");

}

----


「……お腹減ってるの?樹里。パンかなんか買ってこようか?」

「いや、我慢する。この例の場合は、変数menuの値が、caseラベルの文字列と完全に一致した場合に直後の文を実行し、break文でswitchブロックを抜けるというパターンだ。非常によく使われる書き方だ」

「よく見るよねー」

「この例で特殊なのが最後のdefaultラベルだ。つまり、caseラベルのどれにも一致しなかった場合でも、この文は必ず実行される。もちろん、省略することも可能だ」

「絶対的守護神、って感じね」


「また、これはややトリッキーな記述法で賛否両論あるのだが……あえてbreak文を書かないことで、いくつかの条件に対して同じ文を実行する、という書き方もある。処理の流れが、すり抜けて落ちていくような様子からフォールスルー(fall through)と呼ばれる」

「フォールスルーって、落とされたりスルーされたり、なんかシンパシーを感じるわ。完全に字面のイメージだけで言ってるけど」

「ちなみにfall throughとは『失敗に終わる』という意味もあるそうだ」

「うん。なんかますます悲しくなってきた」

「とりあえず実例を挙げよう」


----

var menu = "ソースカツ丼";

switch (menu) {

 case "ソースカツ丼":

 case "玉子カツ丼":

 case "醤油カツ丼":

  console.log("とにかく今日は肉の気分。");

 case "海鮮丼":

  console.log("やっぱり魚もいいかも。");

}

----


「わかった。今日はもう切り上げようよ。ヨーロッパ軒行こ、ヨーロッパ軒」


 ヨーロッパ軒とは、福井県内に展開する洋食店。日本で初めてソースカツ丼を提供した老舗として知られる。JavaScriptにはあまり関係がない。


「いや、もう少しなら我慢できる……で、この例は、3つの条件に対して同じ動作をさせるパターン。そして、break文を書き忘れたパターンだ」

「あ、これ確かに、カツ丼頼んだのに魚の気分にもなってるね」

「今だったら両方食べられるけどな。それはさておき、この場合は海鮮丼の前にbreak文を書かないと、意図通り動作しない」

「うん」

「break文をあえて書かない記述法がいまいち歓迎されないのは、要はバグの温床となる、というデメリットが大きいからだ。意図があるのか単に書き忘れなのか、瞬時に判断しにくいのだ。現に、フォールスルー自体を認めていない言語もある」

「用途に応じてうまく使えばいいと思うんだけどねー」

「そう。ただし、なぜこう言う書き方にしたのか、他人にも容易に理解してもらえるよう、明確なポリシーを持って書くことが大事だ。それができないのなら、素直な書き方をした方がいい」

「んー、その通りだわ。肝に銘じます」


🎬


「さて、講義も終わったことだし、行こっか」

「ん?」

 陽はだいぶ傾いてきた。部室の外からは、野球部の活気に満ちた声が聞こえてくる。

「だから、お腹減ってるんでしょ?カツ丼、食べに行こうよ」

「ああ、しかしだな」

 樹里の返事には力強さがない。心なしか困ったような表情にも見える。

「どうしたの、いつものキレがないよ?」

「実を言うとだな、絵子よ」

 樹里は目を伏せたまま、バツが悪そうに呟く。

「そういう、寄り道とか買い食いなどと言うことをしたことがなくてだな。どうしていいか、わからないのだ」

「えええっ!」

 思わず身を乗り出す絵子。鞄からぶら下がったキーホルダーが大きく左右に揺れる。

「そんな女子高生、まだ居たんだ。その存在自体がシンタックスエラー吐くわよ」

「面目ない。そのカツ丼屋と言うのは、一見いちげんさんが入っても大丈夫なのか? 一万円もあれば足りるのか?」

「どんだけ心配してんのよ……大丈夫、私がいるから。さ、樹里も早く帰り支度」

 と絵子はMacBookの蓋を閉じる。

「青春はコードの中になかりけり、ってね。ほら、行くよ?」

 と、樹里の手を引っ張る絵子。樹里は、やや照れ臭そうに頷いた。


🎬


「……で、何で最後は青春モノみたいに締めようとしたの?『数学ガール』とか目指してるのか?まるで煎じきれてないけど」

「いーじゃんよぉー、たまにはこういうのやってみたかったのよぉ、恥ずかしいからツッ込まないで」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援した人

ビューワー設定

文字サイズ

背景色

フォント

一部のAndroid端末では
フォント設定が反映されません。

応援の気持ちを届けよう

カクヨムに登録すると作者に思いを届けられます。ぜひ応援してください。

アカウントをお持ちの方はログイン

フォロー機能を活用しよう

カクヨムに登録して、気になる小説の更新を逃さずチェック!

アカウントをお持ちの方はログイン

フォロー機能を活用しよう

カクヨムに登録して、お気に入り作者の活動を追いかけよう!