2016年5月28日に東京・秋葉原で「東京Ruby会議11」というイベントが開催された(イベントのWebページ)。ソフトウエアの実装技術について突っ込んだ議論を行うカンファレンスだ。講演者はすべてプログラマ。自身が開発したソフトウエアの実装について興味深い部分を紹介した。
最初に講演したのは、プログラミング言語Rubyの開発者であるまつもとゆきひろ氏。この日の肩書はなぜか「日経Linuxライター」。なぜなら、まつもと氏が同誌の連載で開発している新言語「Streem」がテーマだったからである(当日のプレゼン資料)。
講演でまつもと氏は「言語の実装を解説した本は多いが、題材はC言語のサブセットやRubyのサブセットのようなサンプルレベルの言語ばかり」と指摘。「言語の設計が一番おもしろいのに、そこを解説した本がない」と語った。言語設計のおもしろさを伝えられるのは「私が一番近い」(同氏)。そこで、新しい言語であるStreemを設計してみることにしたという。
ただし、「汎用言語は目指さない」(同氏)。汎用言語を開発すると「Rubyの生みの親がRubyをあきらめた」と邪推を生んでしまうことを懸念したからだ。「Rubyの発展の邪魔はしたくない」(同氏)。そこで、「ストリーミングプログラミング」という特定目的の言語を設計することにした。ループがなく、部品をパイプでつないでいくスタイルでコードを記述する。データは基本的にはイミュータブル(書き換え禁止)だ。ちなみにStreamではなくStreemなのは、Streemというドメインが空いていたからだという。
Streemの設計には「Rubyとは変えられるところがあれば変える」という方針を採用した。Rubyの設計には「どうしてもそうしたいと思ってそうしているところと、それほど理由なくそうしているところがある」という。そこで、StreemでRubyとは別の設計を試してみることで「自分が妥協できない点を明確化できる」という意図がある。「Rubyの文法を勝手に変えたら、100万人レベルで苦情が来る。Streemは文法を変えてもまだ誰も文句を言わない」(まつもと氏)。Streemには、まつもと氏自身の実験や学習のための教材という側面があるのだ。
2015年末には200行ほどのStreemの構文定義をこっそり公開した。ところが、それが見つかって「Rubyの開発者が新言語を開発している」と大騒ぎになってしまった。この構文定義を元に実際の言語実装まで作ってしまう人も現れたという。
まつもと氏は、「言語の設計は『楽しむ』と『学ぶ』の両面ですごくいい教材だ。プログラマの発想を支援するためのユーザーインタフェースをどのようにすればいいか。それを試行錯誤するのが一番楽しい」と語る。「みなさんも言語設計を楽しんでほしい」と会場に呼びかけた。