放課後プログラミング2
「放課後プログラミング」の続きです。
6時間目が終わり、下校する時刻になった。
女の子はいつものメンバーに一緒に帰らないかと誘われたが、男の子に会いたかったので断った。今日も男の子は教室に残っているだろうか、そんな不安を抱きながら歩いているとすぐに3年生の教室に着いた。
教室を覗くと昨日の男の子が一人椅子に座っていて、女の子は気分が高揚した。
少し驚かせてみよう、そう思って男の子にバレないように教室の後ろから入り、男の子の肩に手を置いて声をかけた。
「わぁ!」
すると男の子は心底驚いた顔をして振り返ったが、その表情には少し安堵の色も見える。
「なんだ、びっくりしたじゃんか」
「えへへ、ちょっと驚かせてみようと思って」
「ちょっとどころじゃなかったよ」
「大成功だね」
そんな他愛もないやり取りをしているとなんだか可笑しくなって、二人は思わず声を出して笑った。男の子が本当に楽しそうに笑っているのを見て、女の子は笑いつつも胸の奥がきゅっとなった。
ある程度落ち着くと、女の子は男の子の机にあるプリントを眺めた。
そこには例外処理について書かれており、男の子はそれがしっくりきてないようだった。
「どうして例外処理が必要なの?処理が失敗した時はnullを返せば良いと思うんだけど」
「例外処理のメリットは大きく分けて二つあるんだよ。一つは正常系フローと異常系フローを分離出来ること、二つ目は例外が捕捉されるまで呼び出し元に戻ることが出来ることだよ。」
「正常系と異常系?」
「そう、プログラムで表現したいのは正常系フローだよね?でもどうしても異常系のフローというのは記述しなきゃいけないんだ」
男の子はいまいち納得できないような顔をして悩んでいたが、しばらくすると女の子にこう言った。
「どうして例外処理を使うとフローの分離が出来るの?」
「発生させる例外の種類によって処理を分岐出るんだ、これは所謂エラーコードのような物だね」
「ならエラーコードを返せばいいんじゃないの?」
「エラーコードを返すということはint型の値を返すってことだよね、それは難しいよ」
「どうして?」
「メソッドの返り値はint型とは限らないからね、String型やList型の返り値の場合はエラーコードの定義は出来ない。それにエラーコードは人間が理解出来るようにするために定数でラップしてあげないといけないから、余計なコードが増えちゃうね」
男の子は今度こそ納得したようで、少し満足そうな顔をしていた。
「じゃあ二つ目の例外が捕捉されるまで呼び出し元に戻ることが出来るっていうのは?」
「これは例外の捕捉、つまりcatchがされるまで例外は呼び出し元に戻り続けるっていうことだよ」
「なるほど、それでcatchされなかったプログラムがクラッシュするっていうことなんだ。でもこれってどんなメリットがあるの?」
「これはメソッド呼び出しの階層が深くなった時、呼び出しの大元で例外をまとめて処理したい時に役立つんだ。例外が発生する箇所は何も1箇所とは限らないからね」
女の子は男の子がどんどん知識を吸収しているのを見ていると、心が満たされるような感じがした。
例外処理について納得した男の子は早速宿題のプリントに取り掛かった。宿題を解いている男の子の真剣な顔を眺めていると、女の子はすごく温かい気持ちになった。男の子が走らせている鉛筆の音に耳を傾けながら、窓の外に夕日に目を向けて目を瞑った。
――このまま時間が止まればいいのな
そんな女の子の願いは叶わず、最終下校時刻になって大きな音のチャイムが学校中に響き渡った。
「そろそろ帰らないとね」
「……うん」
「どうかしたの?」
「ううん、なんでもない。さぁ、早く帰ろっか!」
女の子は男の子の手を引っ張って、暗くなった教室を後にした。
そのまま二人で分かれ道まで歩いていって、お互いに挨拶をして別れた。
「また明日、教えに行くからね!」
「うん、ばいばい!」
女の子は一人歩きながら、鼓動が早くなっていることに気がついた。
プログラミングで繋がった二人の男女、恋も知らない二人が新しい世界を足並み揃えて歩いて行く。これは、放課後の教室で残って宿題をやっている男の子と、たまたま教室の前を通りかかった女の子との出会いの話。
そして、夕日と共にコンパイルされる、淡いプログラミングの話。




