第2話 メタメタなメタプログラミング
始業初日の放課後から、俺は図書準備室へ向かう。
特殊文芸部の活動日は特に決まっていない。
けれど、基本、十十子さんは授業のある日は毎日部室に入り浸っているらしい。
だから、いつでも来たいときに来ればいい、ということだった。
ならば、毎日行きたいので毎日が活動日だ。
「こんにちは」
挨拶は基本だ。言葉に出して図書準備室の扉を開けるが、
「あれ?」
あの特徴的な十十子さんの姿はなかった。
代わりに、
「な、何奴!」
作業机の向こうから声がして。
ひょこっ、と。
正面のディスプレイの後ろから、女の子の顔が半分ほど出てきた。
白い光沢のあるセルフレームの奥の瞳が、警戒するように俺を見詰めている。
が、視線を向けた俺と目が合いそうになると、再び、ひょこっ、と引っ込んでしまう。
「も、ももしかして、き、貴様が、じゅ、十十子姉様の行っていた新入部員! あ、あたしと、じゅ、十十子姉様の愛の巣である特殊文芸部に割り込んできた、
ディスプレイの向こうから、やたら攻撃的な言葉がどもりながら聞こえてくる。
口ぶりから、同じ特殊文芸部員だと思われる。
また、二年生の十十子さんを『姉様』と呼んでいることから、同級生だろう。
つまり、部活の同期になるわけか。
愛の巣は意味不明ながら、それを除いても歓迎されていないのは、哀しい。
同級生ということは、これから共に特殊文芸の技を磨く同士になるのだから。
「俺は、確かに矢國行人だが、君は?」
少しでもコミュニケーションを取って関係を改善したいところなのだが、
「う、す、少し待つです!」
そんな制止の言葉だけで返事はない。
代わりに、勢いよくキーボードを打つ音が聞こえてきた。
「え、エラトステネスの篩で、じゅ、十億までの素数を数えて、落ち着く、ですから」
独り言のように漏れてきた言葉。
『エラトステネスの篩』ってなんだ?
それ以前になぜ落ち着くために素数を数えるんだ?
解らないことだらけだが、言葉として語られたからには何かしら謂われはあるのだろう。
大人しく、ディスプレイの向こうの同級生らしき少女の動向を見守ることにする。
しばらくキーボードを叩く音が続いていたのだが、
「えい!」
妙に可愛らしい声で気合を入れて何かのキーを叩いたところで打鍵音が消える。
沈黙の降りた図書準備室。
俺と、妙に敵対的な同級生の女の子と二人っきり。
正直、居心地が余りよろしくないのだが、どうしようもない。
ここに十十子さんが来てくれればいいんだけれど、来る気配はなし。
俺は、入り口に立ち尽くしたまま、じっと、女の子の出方を待つほかなかった。
そのまま、十分弱は経過しただろうか、
「50,847,534 個です!」
唐突に女の子は声をあげると、元気よく席を立ち。
机を回り込むようにしてこっちへ歩いてくる。
おかっぱ頭で小学生と見まごうほど小柄な女の子だった。
さっきの話を聞いていなければ同級生とは思わなかった。
といいたいところだが、それはない。
何せ、俺の目の前までやってきて、
「あたしは、
腰に手を当て胸を反らして名乗ると、とんでもない巨峰がふるると揺れていたのだから。
さすがに、これで小学生はないだろう。
ともあれ、やたらと誇らしげに告げられた彼女の名は、とても印象的だった。
「ぱある……もしかして、真珠と書いて『ぱある』か?」
「う、そ、そうなのですけど、何か文句、ある、ですか!」
カラ元気というか、言葉の威勢の割りに微妙に怖じ気付いているような態度になり、
「ど、どうせ、DQNネームとか……」
段々と萎んで弱々しく何かを言おうとしたところで、
「いや、日本語と英語が複合した中々興味深い名前だと思ったんだ。いい名前だと思うぞ」
正直な感想を答えると、不思議そうに白いフレーム越しの瞳で見上げてくる。
「ん? どうした?」
「ど、どうしたって……え? DQNネームって馬鹿にしないですか?」
どうやら、今までその名を馬鹿にされることもあったようだ。
だが、俺はそんなことは決してしない。
「なぜ馬鹿にする必要がある? 真珠は英語で『 Pearl 』。カタカナ表記の『パール』は外来語として日本ではすっかり定着した言葉だ。ラテン語で真珠を意味する『 margaritum 』を語源とする洋名の『マルガリータ』と読ませるよりは、ずっと日本的で自然だと思う」
それに、
「何より、自分自身気に入ってるんだろう、その名前?」
でなければ、あんなに胸を揺らし……もとい、胸を反らして名乗れないはずだ。
レンズの奥の目をパチクリさせながら、市来さんは何度も頷いて俺の言葉を肯定する。
「だったら、それでいいんじゃないか? 変わった名を見るやDQNネームとレッテル貼って、やれ子供の名前で遊ぶなとか将来いじめられるとかこれ見よがしに攻撃する奴らもいるけれど、それって裏返せば『変な名前の奴なら虐めてもいい』って言ってるのとほぼ同義だ。だからまぁ、馬鹿にする奴もいたかもしれないが、少なくとも俺はそんな心の貧しい奴らとは違う。そもそも、当の子供が気に入ってるなら、他人が口を出したり、ましてや馬鹿にしていいようなことじゃないしな」
言語を愛する俺としては、それをネタに虐めるのは論外として、ちょっとでも変わった名前を十把一絡げにDQNネームとしてしまうレッテル貼り自体がいけないと思うのだ。
行き過ぎたものもあるかもしれないが、親が託す想いをどう表現するか? その無限の可能性を奪ってしまっては宜しくない。今は、日本語の命名に関する新たなパラダイムが生まれようとする過渡期なのだと俺は思っている。
DQNネームと呼ばれたものの中の一部は、いずれ太郎や花子のように定番の名前となっている可能性だってあるというか、きっとそうなっているだろう。
「う、ど、同年代の男子と、うまくやってけるか、自信なかったですから、素数を数えて、落ち着こうと、してた、ですが……」
何度も頷いた勢いで俯いたままだった市来さんは、小さく、そう呟いて、
「き、貴様とは、うまく、やってけそうな、気がしない、でも、ない、ことも、ない」
ぶっきらぼうに、手を出してくる。
なんだか素直じゃないが、ようやく険が取れた顔は結構可愛らしい。
というか。
身長と胸のサイズが極端に違うが、どことなく十十子さんに似た顔立ちに思えてくる。
俺は、これから特殊文芸家への研鑽を共に積んでいく仲間の小さな手を取った。
特殊文芸部に入ってよかったな、と改めて思う。
それは決して、十十子さんが好みの顔でこの子もそれに似ていて好みだからということじゃなくて、興味深い名前の同級生と険悪になりそうな状況を乗り越え、一緒に学んでいけそうだと思ったからだ。あと、胸の大きさも関係ない。
「おやおや、どんな修羅場が展開するかと思っていたら、どうしてどうして、上手くいきそうじゃない! お姉さんには嬉しいサプライズだよ!」
唐突に楽しげな声がして、背後から両肩を揉むようにして掴まれる。
「ほぅわっ!」
まったく気配がなかったので、変な声を出してビクッとしてしまう。
スキンシップへの照れもあり、一歩を踏み出して肩に掛かった手を振り解く。
そうして背後を振り返れば、予想通りで期待通りの姿。
俺とそんなに背丈の違わない、長身の先輩。
アシンメトリな金縁C型眼鏡と太い三つ編みには+型の金の髪飾りが特徴的な出で立ち。
制服の上に白衣を羽織った上級生。
十十子さんがニヤニヤしながら立っていた。
「この登場は、どちらかと言えば、俺達に対するサプライズですよ!」
醜態を誤魔化すように、俺は十十子さんに言い返す。
と、
「じゅ、十十子姉様! こ、こっちも揉んでください!」
頓狂な声を上げた市来さんが、俺と十十子さんの間に割って入ってきた。
身長差で必然的に見上げての言葉は、自然にその立派な胸を張る姿勢で発せられる。
誤解を招きそうだが、揉んで欲しいのは肩以外にありえない。
「あ、それなら遠慮なく」
気安く応じる十十子さん。
少し屈んで両手ををひょい、と伸ばすと。
十十子さんは市来さんの立派な胸に触れる。
あれ? 誤解を招くと思った俺の考えが間違っていたのか?
などと思っていると、ゆっくりとたわわな果実を揉み始める。
「ふ、ふにゃ! そ、そこじゃないです! 今、揉んで欲しいと言ったのは、肩のこと、なのです! べ、別に、十十子姉様になら、幾ら揉まれても、いい、ですが…ふにゃん」
肩を揉んで欲しいのだと思ったのは、やはり間違っていなかったのだ。
市来さんの言葉から冷静に判断しつつ、少々扇情的な光景から意識を逸らす。
「また育ってるね……本当、どうして、血縁なのに、こうも、違うの、かし、ら……」
胸を揉む動作が開いて閉じてと段々と機械的になり。
つれて十十子さんが凹んでいく。
やがて、市来さんの胸から手を離し、己の平らな胸元をひと撫でし。
がっくりと項垂れてしまった。
なぜその様子が解るかと言えば、意識は逸らしても視線は逸らしていなかったからだ。
十十子さんの姿に、自爆、という言葉が頭に浮かんだ。
だけど、それを口に出すと今度は俺が自爆することになるので自重する。
それよりも、だ。
「そういえば、市来さんの顔立ちがどことなく十十子さんに似てると思ってたんですけど、血縁だったんですね」
「は、はい、十十子姉様は、小さな頃からお世話になって押し倒したい、じゃなくて、お慕いしている従姉妹のお姉さんなのです!」
未だ項垂れ凹んだままの十十子さんに代わり、市来さんが答えてくれる。
変な言い間違いがあった気がするが、今はスルーして。
やっぱりな、と思う。
名字が違うから、恐らくそうだろうと思っていたのだ。
幼馴染みの従姉妹なら、気安い態度も、納得がいく。
「小学生のとき、何かと馬鹿にされてたあたしの名前を『いい名前だ』って家族以外で初めて褒めてくれたのが、十十子姉様だったのです!」
それが、慕っている理由か。
「そんなことも、あったねぇ……」
まだ立ち直っていないのか、力なく応じる十十子さん。
「はい! 十十子姉様に、『〈ぱある〉って素敵な名前なんだよ! 綺麗な宝石の真珠を意味するだけじゃなくって、凄く便利なプログラミング言語〈ぱある〉とも綴りは違っても同じ発音なんだよ。これからは、ぱあるによる特殊文芸の技を磨いて、ぱあるって凄いんだって周りに思い知らせてあげればいいんじゃないかな?』って励まされて、あたしは初めて自分の名前に自信が持てて好きになれたですよ!」
あれ? これ、途中から特殊文芸に話がすり替わってるんじゃ?
と思ったけれど、これも当人が納得しているなら口出しする話じゃないので黙っておく。
「それ以来、あたしは、『ぱある』でエレガントな特殊文芸を綴って、誰にも馬鹿にされない特殊文芸家になるべく研鑽を積んでいるですよ!」
胸を弾ませ(物理)て、自慢げに言葉を締める市来さん。
一方、凹んでいた十十子さんが特殊文芸の辺りから立ち直ってきて、今はなんだか「計画通り」とでもいいたげな悪い笑顔を浮かべている。
『洗脳』、という言葉が一瞬浮かんだけれど、言わぬが花だろう。
理由はどうあれ、それで胸を揺……張って名乗れるようになったのなら重畳だ。
十十子さんを慕うのも、当然の帰結であろう。
「さて、いい感じに特殊文芸の話になったところで、部活始めよっか! まずは、
部長の十十子さんは、変なテンションで部活の開始を告げる。
「はいです! 勿論、ぱあるで書いてるですよ!」
「あの、俺はその Pearl じゃない綴りの『ぱある』が何か全く知らないんで教えて貰いたいんですが……」
二人の会話に置いてけぼりを喰らっているのが悔しくて、素直に教えを請う。
十十子さんと市来さんにとっては綴りが明確なのだろうが、駆け出しの特殊文芸家というか、まだまだスタート地点に立てたか怪しい俺は、『ぱある』の綴りからして解らないのだから。
「あ、綴りは真珠の Pearl から、 a がなくなって『 Perl 』ね。どんな言語かについては、百聞は一見にしかずよ」
「 Perl の素晴らしさ、見るがいいのです!」
なんだか勿体付けられている気もするが、綴りだけは解ったのでよしとしよう。
十十子さんと市来さんに付き従い、俺は部屋の奥へと向かう。
さっき市来さんが向かっていたパソコンの前まで来ると、
「これが、『エラトステネスの篩』のアルゴリズムを用いて十億までの素数を数えるプログラムですよ!」
誇らしげに、画面に表示されたテキストエディタの内容を示して胸を揺らす。
そこには、20行と少しのプログラム。
#!/bin/perl -w
use strict;
use warnings;
my $max = 1000 * 1000 * 1000;
my @prime_numbers = ( 2 );
my $odd_number_count = ( $max - 3 ) / 2;
my @odd_numbers = ();
foreach ( 0..$odd_number_count ) {
$odd_numbers[$_] = 1;
}
for ( my $i = 0 ; $i <= $odd_number_count ; $i++ ) {
if ( $odd_numbers[$i] == 1 ) {
my $odd_number = ( $i << 1 ) + 3;
push ( @prime_numbers , $odd_number );
for ( my $j = $i + $odd_number ;
$j < $odd_number_count ;
$j = $j + $odd_number )
{
$odd_numbers[$j] = 0;
}
}
}
print @prime_numbers . "個の素数があります。\n";
これが、 Perl だろう。
十十子さんが物した C++ とは趣を異にする言語だった。
記号がやたら多く、『特殊文芸』という言葉が C++ よりもしっくり来る気がした。
ところどころに書かれた語り口調通りのは、なんだろう?
これもまた文芸の一部だろうか?
それでも、やはり英単語は、なんとなく解る。
『 prime number 』は素数。
『 odd number 』は奇数。
素数を求めるのだから、奇数だけを対象に、ということだろうか?
でも、それ以上はお手上げだった。
『エラトステネスの篩』もさっぱり解らない。
「そうか、市来さんは小さい頃からやってるから、俺なんかよりずっと先に言ってるんだな……」
見せつけられた特殊文芸家としての同輩との差に、一抹の悔しさを込めて。
そんな言葉が俺の口から漏れる。
と、
「う、あ、あたしのこと、『市来さん』とか呼ぶなんて……や、やっぱり、貴様は内心では
なぜか、市来さんの機嫌が悪くなった。
「いや、そんなことはない。むしろ、その名前と同じ発音の言語で、素数の数を求める特殊文芸を物せることに感心しているぐらいだ」
「だったら、
「じゃ、じゃあ、
「望むところですよ!」
なんだか、喧嘩を売られているような応対ながら、赤面して照れているような。
いや、俺も人のことは言えない。
同年代の女の子を名前で呼び捨てにすることなんてなかったから、頬が熱い。
「うんうん、新入生二人が仲良くて嬉しいよ! 色々計算通りで!」
腕を組んでわざとらしく大きく頷きつつ、十十子さんはアシンメトリな眼鏡の下から指を入れて涙を拭うフリ。
最後の一言は余計だけれど、なんとも先輩風を吹かせたようなあざとい仕草だ。
でも、十十子さんの掌の上かどうかはともかくとして。
同級生の女の子とこんな風に仲良くなれたのは素直に嬉しい。
できれば十十子さんとももっと絆を深めて、特殊文芸家への道を邁進せねば。
「さて、それじゃあ、今度は……」
十十子さんは、くるくると左手の指先を回して、
「矢國君の番ね!」
言うと同時に、ぴたっと俺に指先を向ける。
C型金フレーム奥の瞳を閉じてウィンク一つのおまけつき。
あざとくも愛らしい仕草で示された、始まりのとき。
そう、いよいよ俺が特殊文芸を物すときが来たのだ。
「やっぱり、 Hello World. かな?」
首を傾げつつ、十十子さん。
「『 Hello World. 』……やぁ、世界?」
なぜ、いきなり挨拶を?
「一般的に『こんにちは、世界』と訳されるから、『やぁ、世界』っていうのは、同じ意味でもちょっと斬新ね」
楽しそうに笑いながら、
「ええっと、『 Hello World. 』っていうのは、慣例的に特殊文芸の世界に足を踏み入れた人が、最初に書くプログラムよ」
「これからお世話になる、特殊文芸の世界への挨拶なのですよ!」
十十子さんと
英語を学習する際の、『 This is a pen. 』みたいなものだろう。
とはいえ。
「そうは言われても、俺は何をどう書いていいかさっぱりなんですが? そもそも、プログラミング言語自体、まだ全然知らないですし」
十十子さんに見せて貰った C++ も、
他の言語は、そもそも知らない。。
「そりゃそうでしょ。最初っから知ってたら学ぶ必要なんてないもの」
安心させるように微笑みながら、俺の頭にポンと手を置いて、
「それでも、色々な言語を知りたいのよね?」
俺の目を覗き込んでくる。
奇矯な眼鏡がアクセントとなった端正で愛らしい顔が近い。
「も、勿論です」
ちょっと緊張しながら、答える。
そうだ、俺は、言語の可能性を、自然言語だけでなく、人工言語たるプログラミング言語にも見出したのだ。決して、十十子さんの色香に惑わされ……あいた!
「鼻の下が、伸びてるですよ?」
見下ろせば、俺の臑を蹴っ飛ばした
「い、いや、そんなことは、ない」
そうこうしている内に、十十子さんは俺から離れて思案顔。
「う~ん、この流れなら C++ か Perl でってなるけど……それもちょっと面白くないわね。どうせならそれ以外で無難な学習向けの言語だと、 Java かなぁ?」
十十子さんはおとがいに指を当てた絵になるポーズで考え込む。
仕草にあざとさをにじませるのはポリシーなのだろうか?
「あ、そうだ! それなら、こういうのはどうかしら?」
閃いた、とばかりに両の手を薄い胸の前でパンと合わせ、
「 Perl の Hello World. を出力するプログラムを出力する C++ のプログラムを出力する Java のプログラム! うん、これなら、一度に沢山の言語に触れることができて、言語マニアの矢國君にぴったりね!」
「?」
一体何を言われたのかよく解らなかったので、頭の中で咀嚼しつつ言葉にして整理してみる。
「要するに、プログラムを出力するプログラム。物語で言えば作中作? ミステリだとメタ構造を持つことで己を虚構と否定する構造を持つ『アンチミステリ』? いや、それはちょっと特殊すぎるか。記号論で言語に言及する言語を『メタ言語』と言ったりするから……これだと『メタプログラミング言語』?」
特に意味もなく零した言葉に、
「本当、勘がいいね。まぁ、『メタプログラミング言語』とは余り言わない気もするけど『メタプログラミング』って呼ばれる技法は存在するわよ。でも、通常『メタプログラミング』っていうと別の意味合いが強いかな? でもまぁ、そこは、今は知らなくていいよ。 YAGNI っていう奴だよ、矢國君」
などと得意げな表情で十十子さんが応じてくれる。
YAGNI って言いたかっただけかもしれないが、そう言って貰えれば、やる気は出る。
「でも、どういう特殊文芸を物せばいいかは理解できましたけど、 C++ も Perl も知らないところに Java という初出の言語まであっては、どうしていいかさっぱりですよ?」
だが、やる気があっても無知はどうしようもないので、素直にぶっちゃける。
「大丈夫。お膳立てはしてあげるから。まずは、 C++ の Hello World. はこれを参考にして」
言いながら、
エディタの中に、十十子さんの素早い打鍵で産みだされたのは、
#include <iostream>
int main() {
std::cout << "Welcome YAGNI!" << std::endl;
return 0;
}
俺が特殊文芸部に入って最初に書いてくれた特殊文芸だった。
「『 Hello World. 』っていうのは、要するに『 Hello World. 』っていう文字列を出力してください、ってコンピュータにお願いする特殊文芸なの。なら、どうすればいいか、聡い矢國君ならこれを見れば解るんじゃないかしら?」
「ああ、なるほど」
流石に、ここまでお膳立てされれば解る。
"Welcome YAGNI!" の部分を "Hello World." にすればいいのだろう。
他の意味は全然解らないが。
「それで、 Perl については
「はいです」
次に、
print 'Hello World.';
「え? 一行だけ?」
「他にももっと色んな書き方ができる言語なのですけど、初心者の貴様に合わせて一番簡単な書き方にしてやったですよ!」
言葉は乱暴だが親切心からというのが伝わる口ぶりだった。
「で、これが Java の『 Hello World. 』」
目にも止まらぬ早業で、新しいエディタに十十子さんは特殊文芸を刻む。
public class HelloWorld {
public static void main( String[] args ) {
System.out.prinln( "Hello World." );
}
}
初めて見る Java 言語だが、どことなく C++ と似たものを感じる。
「並べると似たようなもんでしょ? プログラミング言語って」
俺の心を読んだように、十十子さん。
C++ と Java は、 main とか {} とかが似ている。
Java と Perl は print と println の違いはあるが、画面表示をお願いするための作法は似たようなものだった。
「なるほど、ラテン語を知ってるとドイツ語とかイタリア語に取っつき易いみたいなものですね」
「わたしはそれが実感できないけど、矢國君がそう思うなら、そうなんじゃないかな」
投げやりな感じながら、それでも十十子さんに認めて貰えると、そうなんだろう、と思える。
「じゃあ、細かい実行方法とかは今はいいから、書くだけ書いてみよっか、矢國君の初めての特殊文芸!」
「さっさと書くですよ!」
二人に激励(?)されて、俺はテキストエディタに向かう。
正直、ここまでお膳立てされてしまえば、書くだけなら何とかなる。
と思ったのだが。
「あれ? 複数行の表示はどうやるんだろう」
手本は、全て一行を表示して貰うだけだ。
複数行を表示して貰う方法はどこにも書かれていない。
「あ、それはですね」
俺の言葉に、
「ダーメ。考えさせなきゃ」
「う、ですね」
十十子さんに制されて、引っ込んでしまった。
自分で考えないといけないという十十子さんの意見には同意するところなので、俺は有り難くその気遣いを受け、頭を使うことにする。
とはいえ、こうなったら「一行を何度も表示すれば複数行」という単純な発想でいこう。
でも、
「あれ? この『"』の記号が入れ子になってるんですけど、これだと区切りがおかしくなりませんか?」
「本当、聡いねぇ。そこは、流石にわたしのミステイク! だから教えてあげるわ」
ミステイク、でコツンと自分の頭を拳で軽く叩く安定のわざとらしさはさておき。
「そういうときはこれはまだ終わりの " じゃないですよ! ってコンピュータに教えてあげるために、前に『\』を付けるの」
なるほど。ちょっと違うかもしれないが、文章で会話文の「」の中にまた「」が書きたくなったら、内側のは『』にしてみたりするようなものか。
でも、そこさえ解れば後は何とかなる。
「それじゃぁ、こんな感じ、ですか?」
俺は、恐る恐るテキストエディタに書いたプログラムを二人に示した。
自信は、余りない。
public class HelloWorld {
public static void main( String args[] ) {
System.out.println("#include <iostream>");
System.out.println("int main() {");
System.out.println(" std::cout << \"print 'Hello World.';\" << std::endl;");
System.out.println(" return 0;");
System.out.println("}");
}
}
「ふむふむ。それじゃぁ、実行して正解か確認してみましょう!」
十十子さんは俺の書いた特殊文芸を HelloWorld.java という名前で保存する。
続いて、コマンドプロンプトを開いて、なにやらまた呪文めいたものを打ち始める。
javac HelloWorld.java
「お! 一発でコンパイル通った! 」
「コンパイル?」
「ああ、そっか、そこも説明してなかったか……でも、ここで説明するのは話の流れが悪いから、次回のお楽しみね!」
最後の「ね!」を妙に可愛らしくいう十十子さん。
媚び媚びだった。俺ではないどこかで聴いている誰かに向けて。
「それじゃぁ、実行結果を確認っと……ああ、解らなくても今は放置しておいてね。今は矢國君の初めての特殊文芸が果たして正しい結果を出すか? それが主眼だから」
実際、俺もそこが一番気になるので、今は解らないところは解らないままスルーすることにする。
java HelloWorld > HelloWorld.cpp
type HelloWorld.cpp
#include <iostream>
int main() {
std::cout << "print 'Hello World.'" << std::endl;
return 0;
}
「 C++ のプログラムは……うん、一行を繰り返せば、複数行出てくる、これで正解よ!」
言いながら、俺の頭を撫でてくれる十十子さん。
恥ずかしいけれど、先達に己の正しさを肯定されるのは心地よい。
少し顔が熱くなってきたところで、
「……」
見上げてくる白く縁取られた冷ややかな視線を感じた。
振り上げられた
「えっと、それで、ちゃんと動くんでしょうか?」
名残惜しいが十十子さんの手から逃れるようにして居住まいを正し、先を促す。
「おお、そうねそうね」
cl /EHsc HelloWorld.cpp
「おお、今度も一発でコンパイルが通った! 筋がいいわよ」
「十十子姉様のを写しただけですから、調子に乗らないことですよ!」
先輩の言葉に舞い上がりそうなところに釘を刺してくれる同級生。
なんとも対照的で、バランスが取れた先輩同輩だった。
HelloWorld.exe > hello_world.pl
type hello_world.pl
print 'HelloWorld.';
「 Perl のプログラムも大丈夫そうね……じゃぁ、最後は Perl の実行」
「あれ? Perl はコンパイルしないんですか?」
そこで俺は気になったことを訪ねる。
Java も、 C++ も何だか呪文めいた文字列によってコンパイルなる作業をしてから実行していた。
Perl もてっきり同じ手順を踏むと思っていたのだ。
「うんうん、いいところに気付いたわね。 Perl はコンパイルが必要ないの。インタプリタって呼ばれるんだけど……これも次回のお楽しみね!」
また、最後を媚び媚びにして言う十十子さん。
まぁ、ここでまた新しいことをあれこれ言われても整理が追いつかないので、素直に次回の楽しみにして、今はおいておこう。
「それじゃぁ、改めて、実行!」
perl hello_world.pl
途中の手順はさっぱり解らないが、最後の最後。
十十子さんの「実行!」の掛け声の後。
Hello World.
画面には『 Hello World. 』と表示されていた。
俺の、コンピュータへのお願いは、届いたのだ。
ほとんどお膳立てされての結果だったえ。
それでも、何だかとても、嬉しかった。
「正解よ! さっすが矢國君!」
十十子さんは、俺に向かって左手の親指を立てていい笑顔を見せる。
褒められるのは嬉しいが、そうわざとらしく称えられると素直に喜べなくなってくる。
何せ、
「十十子さんと
「ううん。それでも『複数行になったらどうするか?』は自分で考えて正解を導き出したじゃない。筋がいいのは確かよ、自信を持って特殊文芸家を目指しなさい」
俺の肩に気安く手をかけ、逆の手を伸ばして斜め上に掲げて未来を示すように。
安定のあざといというか、わざとらしい仕草で言う十十子さんだった。
でも、確かに自分の力で成し遂げたことには違いない。
なら、自信を持っていい、のか?
未だ半信半疑ながら、
「十十子姉様に鼻の下を伸ばす不埒なゆ、行人には」
「行人?」
急に名前で呼ばれて、思わず聞き返してしまう。
「あ、あたしも名前を呼んで貰ってるんだから、こっちも貴様を名前で呼ぶのが筋なのですよ!」
そういう理屈らしい。
変わらずキツイ言葉ながら赤面しながらなのが微笑ましい。
俺も照れ臭すぎて顔が熱いので、おあいこだが。
ともあれ、同級生と名前で呼び合うのは、仲間っぽくていい。
「そ、それで、行人にはあたしの Perl による Hello World. を見せてやるです!」
#!/bin/perl -w
use strict;
use warnings;
&main;
sub main() {
print 'Hello World.';
}
エディタには、そんな内容が表示されていた。
「あれ? なんだか、ちょっと違ってる……」
さっき感じた C++ と Java の類似性。
同様のものを、
「 C++ と Java に合わせて、 main ルーチンを呼んでみたですよ! Perl は色んな書き方ができるのですよ!」
「ああ、そういえばさっき言ってたっけ……でも、結果はどうなるんだ?」
「勿論、こうですよ!」
十十子さんと同じ順を踏み、最後に表示されたのは、
Hello World.
同じ結果だった。
「 Perl は変幻自在な言語なのです!」
そうして、また、新たな Perl のプログラムを物す。
#!/bin/perl -w
use strict;
use warnings;
package HelloWorld;
sub say_hello() {
my $class = shift;
print "Hello World.";
}
&main();
sub main() {
HelloWorld->say_hello();
}
「これは、また、毛色が違うな」
なんだか package だのがあったりして、明らかにさっきまでとは違う。
それでいて HelloWorld 周りを見れば、どことなく Java に似ている気もする。
実行結果は、
Hello World.
当然のように同じだった。
「これが、TMTOWTDI《ティムトゥディ》なのですよ!」
「てぃむとぅでぃ? 何かの頭文字の略か?」
YAGNI のような。
「ですよ! There's More Than One Way To Do It. Perl のモットーなのです!」
また、
目のやり場に困らないので気を付けて欲しいが、だからこそ注意はしない。
「それをやるには一つ以上の方法がある……」
「即答とか、生意気なのです! 貴様の癖に見込みがあるのです!」
貶しているのか褒めているのかよく解らないが、これまでの短い経験上の判断から、褒められていると考えることにする。
「ああ、矢國君は言語マニアで英語とかの語学が得意なのよ」
「そ、そんなのチートなのです! 英語苦手だから教えて欲しいのですよ!」
「それは別に構わないが、代わりに俺には特殊文芸のなんたるかを教えて貰いたい」
話があっちへいったりこっちへ言ったりしている気もする。
でも、これはこれで部活でワイワイやってる感じで心地いい。
これなら、上手くやっていけそうだ。
「さて、矢國君が特殊文芸にいい一歩を踏み出せたわね! 今日のところは、その辺にして、次は……」
十十子さんが俺の初めての特殊文芸を総括しようとしたところで、
「なってない。なってないわよ、十十子!」
いつの間にそこにいたのだろうか?
作業机の対面、入り口を入ってすぐのところに、一人の女生徒が立っていた。
長いストレートヘアは艶やかで一点の曇りもなく。
銀縁の角張った眼鏡は、いかにも生真面目という空気を演出する。
「彼がプログラミング未経験の新入生、矢國行人君でしょ? なら、もっとちゃんと基礎を、ベーシックな部分を教えてあげないといけないわ」
堅苦しい口調で、『ベーシック』を特に強調して十十子さんに物申す。
「もう、
十十子さんは、プンプンという擬音がつきそうな感じで頬を膨らませて、不満を漏らす。
「駄目よ。何事も基礎が、ベーシックな部分が大事なのよ」
何か拘りがあるのか、また『ベーシック』を強調して、基子さん(?)。
「はいはい、それなら、ベーシックな部分の説明は基子にお願いするけど……」
そこで、なぜか虚空に向かって、
「長くなりそうだからちょっと休憩してからね!」
C型フレームの奥の瞳でウィンク一つ。
最後の「ね!」は媚び媚びで言う十十子さんは、どこまでもあざと可愛かった。
という訳で、俺の特殊文芸デビューは終わったけれど、今日の部活はまだ少し続くようだった。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます