PCで苔を育てる人

自作シミュレーションゲームPraparatを作っています。 人工生命をシミュレーションするゲームです。https://www.nicovideo.jp/watch/sm41192001

本当の初心者が「Scalaわいわい勉強会」に参加するまで

大学でC言語の授業を終えた私の耳に、どこからともなく聞こえてくる。

「どうやら、関数型言語というのがすごいらしい」

同様の現象は世界各地で確認されている。

オブジェクト指向の次は関数型だ」

「なんでも、デバッグと並列化がしやすいらしい」

そんな又聞きに又聞きを重ねた霞の正体を確かめるべく、人々はその魅惑のパラダイムシフトの門を叩いた。

かく言う私もその1人であり、大学の図書館にある関数型言語のエリアを目指して階段を上がった。

当時の私は自信に満ちていた。授業でC言語を学んだ後は、C++はもちろん、C#JavaScriptPythonなどのプログラミング言語を試し、時にはFortranなどという古代語にも手を染めた。「完全に理解した」などと思い上がることはなかったが、どの言語も触り始めてからまとまったプログラムを作成するまでにそれほど時間はかからなかった。結局のところ、それらは最初に学んだC言語に良く似ていた。新しく学ぶ言語でも「つまり、これはC言語で言うところのあれだな」と読み替えることで簡単に対応できた。文法の同じ外国語を学んでいるような感覚だ。ほとんど方言のように見えるものもある。

図書館の本棚に並べられた関数型言語の本をてきとうに手に取りパラパラとめくる。

なんだこれは。

明らかに異質だった。見たこともない不思議な表記が並んでいた。既知の言語での置き換えができない。これはC言語で言うところの何なのだ?

気がつくと私は図書館を飛び出し、帰宅すると同時にGoogleを開いた。誰か分かりやすく解説をしている人はいないのか。

しかし、手当たり次第にサイトを見てみたがどれも難解であった。

プログラマー向けと思われるページを見てみると、突然モナドという謎の概念の説明が始まり、どうやらそれは圏論という数学の分野から来ているらしいが、私には何の話かまるで分からなかった。

より素人向けのサイトを見てみると「私も初めは添字を使わずにプログラムが書けるなんて思っていませんでした。しかし───」といった具合で嬉々としてその素晴らしさが綴られているのだが、やはり私には分からない。今思い返せば、深夜の通販よろしく、右下に小さく「個人の感想です」と書いてあったかもしれない。

色々な解説を見てみたが、最終的に私よりも賢いサルがいるらしいことが分かったあたりで、私は完全に挫折していた。

これはあれだ。数学者が使う何か特殊で崇高な言語なのだ。私のような人間が使うものではないのだろう。俗世からは完全に切り離されたものに違いない。

そういうふうに納得し、私はその憧れを心の奥底にしまいこんだ。

 

今回「Scalaわいわい勉強会」へ参加したのは、そんな私のささやかなリベンジであった。

初めてその名を𝕏(旧:Twitter)で見つけたとき、私は目を疑った。

私の記憶が正しければ、Scalaは格式高き関数型言語であり*1、「わいわい」などという副詞が添えられるものではなかったはずだった。

調べると、これは「Scalaを楽しく学んでほしい」という理念から生まれたものであるという。

そんなことが本当に可能なのだろうか。

 

当日会場に着いた私は、受付で作成した即席の名札を付けて席に着いた。

見渡すと、ノートパソコンを開いて会の始まりを待っている人も多かった。私も負けじとMacを開いたが、画面上のターミナルには勉強中のScalaによるHello Worldが表示されており、慌てて閉じた。勉強会に参加することを決意してから、流石に丸腰で行くわけにはいくまいと、日頃スキマ時間を見つけては、ドワンゴ社の公開しているScala研修のテキスト*2を進めており、ちょうどクラスのあたりまで終わったところだった。誰かに見られはしなかっただろうか?

不安でいっぱいだった私だったが、会が始まると次第に気持ちは落ち着いてきた。いや、内容は1割も分からなかったのだが、発表者が自分の好きなものの話をしているのを見るのは気持ちが良いものだったし、何よりコミュニティの雰囲気を感じ取ることができた。冗談でも何でもなく、会に参加するまでは「あー、ほんとに素人が来ちゃったんだ笑」みたいになるのではと恐れていたのだ。

しかし実際に始まってみれば、Scalaを知らない人でも興味を持てそうなテーマの発表もあったりして、自分みたいな人間が参加しても良い会だったんだと安心できた。それに加えて、「この話は言語に依らず大事なテーマだな」と勉強になる発表や、「どこも似たようなことで苦労しているんだな」と共感できる話も多く、分からないなりに楽しむことができた。

「型、最高〜!!」の乾杯で始まった懇親会でも、私の他に初心者を名乗る2名の方とお会いすることができて、この会に参加した理由や、Scalaに対する思いなどについて楽しくお話をすることができた。

 

人並な感想かもしれないが、実際にScalaを使う人、Scalaを好きな人達とお会いできたのは本当に貴重な経験だった。例え意味は分からなくとも、楽しそうに話をする人を見ると、自分もそれで何かを作ってみたくなる。少なくともかつて図書館で受けたあの冷たく突き放すような印象とは程遠いものがそこにはあった。

 

最後に、このような会を企画・運営してくださった関係者の皆様に感謝しつつ、筆を置くことにする。

 

*1:Scalaオブジェクト指向言語関数型言語の特徴を合わせ持つため、正確にはマルチパラダイムの言語になる。

*2:Introduction · Scala研修テキスト