『Go言語でつくるインタプリタ』が出版されます


私が翻訳した”Writing An Interpreter In Go“の訳書『Go言語でつくるインタプリタ』が出版されます。

レビューに参加してくださったみなさま @cafedomancer @ursm @june29 @_ko1 @snoozer05 @kei_s @noplans @hmsk @tmaeda 、書籍として整えてくださった高恵子さま、お力添えくださった全ての皆様に深く感謝いたします。

本書について

本書では、Go言語を使って、C言語風の構文を持つMonkeyプログラミング言語のインタプリタをゼロから作っていきます。字句解析器、構文解析器、評価器を実装し、データ型、組み込み関数を追加します。付録では構文マクロシステムも扱います。実装には、Go言語に標準添付のツールキット以外のサードパーティライブラリは一切使いません。そのため、中で何が起きているのかをつぶさに見ていくことができます。

「蓋を開けて」

「はじめに」から少しだけ引用しましょう:

蓋を開けて中の仕組みを覗くのが大好きな人のための本だ。

原著を読んだとき「あ、これは自分のことだな」と思いました。そして、実際にインタプリタを作りながら、楽しく読み終えることができました。その体験がとても素晴らしいものだったので、多くの人と分かち合いたいと思いました。それで、翻訳してみることにしました。

小さくても「まるごと」

私は「小さくても『まるごと』」のアプローチが好きです。何かをつくるときには、なるべく早い段階で全体を備えるように作り、少しずつ大きくしていくのがお気に入りのやり方です(たのしい開発実況中継、WEB+DB PRESS Vo.73、p.42)。もし細部を作り込みたくなってしまうのであれば、それが許されるようにプロダクトのほうを小さくできないかを考えます。

本書においても、原著者があえて扱わないようにしている部分は色々あります。それでも、そのおかげで、インタプリタ全体の実装を体験できるようになっています。

RubyKaigiと本書と私

実は、ちょうどRubyKaigi 2017のころ、翻訳を進めていました。

本書を読み、翻訳に取り組むまで、私はインタプリタそれ自体についてはそこまで深い興味を持っていませんでした。どちらかといえば、プログラミング言語をどう利用するか、というのが自分の興味の中心でした。

本書のおかげで、これまでであれば選ばなかったかもしれないような、インタプリタそのものに関する発表を多く選んで聴くことにしました。理解できないことも多くありましたが、それでも楽しかったのです。

その意味で、本書は「Rubyそのもの」に関する技術的な発表が数多くされる、RubyKaigiを楽しむための道標にもなりました。

そして、今はRubyKaigi 2018真っ只中、明日が最終日です。RubyKaigiでインタプリタへの興味が高まったところで、みなさんもぜひ、自分でもインタプリタづくりに取り組んでみてください。

願わくは、インタプリタを巡るあなたの冒険も、素敵なものでありますように。