体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

Rubyのなかを覗いてみよう!池澤あやかが「Cookpad Ruby Hack Challenge」に参加してみた

Rubyのなかを覗いてみよう!池澤あやかが「Cookpad Ruby Hack Challenge」に参加してみた

みなさんこんにちは、池澤あやかです。

今回はクックパッド社内で開かれたイベント「Cookpad Ruby Hack Challenge」に潜入してきました。果たして、無事に帰ってこれるのでしょうか!


「Cookpad Ruby Hack Challenge」とは

「Cookpad Ruby Hack Challenge」は、Rubyというプログラミング言語がコンピューターの上でどう動いているのかを知り、ハックしてみるイベントです。8月30日から31日にかけて2日間、クックパッドのオフィスにて開催されました。

このイベントは「Rubyのインタプリタをハックする」という超ディープな内容なのですが、なんと10人の募集枠に約100人もの応募があったのだそう。すごい。今回の参加者は、すこし応募枠を拡大して15人ほどでした。

そんなディープな超人気イベントを、Rubyは好きだけど「インタプリタ」の「イ」の字も知らない私池澤がレポートします!

Rubyに日常的に触れている方は、一度は「Rubyってどうやって動いているんだろう」と思ったことがあるのではないでしょうか。

Rubyで書かれたプログラムは、Rubyのインタプリタ「MRI(Matz Ruby Interpreter)」で解釈され、実行されます。

このインタプリタに機能を追加したり、改良したり、性能を向上させるにはどうすればいいのかを学んでいきます。

今回講師をしてくださるのは、Rubyのコアコミッタである笹田耕一さん。笹田さんは、Rubyがより早く動くためのエンジン「YARV」の開発者で、現在はクックパッド社でフルタイムでRubyを開発しています。


インタプリタを知れば、プログラミング言語の仕組みがわかる!

インタプリタとは一体何をしているのでしょうか。インタプリタというと何やら難しいことをやってそうに聞こえますが、つまり「プログラムを読んで実行する」ということをしています。

具体的には、まずプログラムをパースしてツリー構造(抽象構文木、AST)に、そしてさらにそれをいわゆる「コンピューター語」であるバイトコードに変換します。これが「読んで解釈する」部分。

そしてそのバイトコードを、評価器(evaluator)が読み、実行していきます。これが「プログラムを実行する」部分となっています。

これはRubyに限定したことではなく、JavaやPythonなどの言語も、似たような仕組みで動いています。

▲笹田さんのスライド「Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう」より。ちなみに笹田さんは「YARV」を開発し、バイトコードの解釈をいかに高速化するかという課題に取り組まれています。Rubyが高速化したのも笹田さんのおかげ!

ちなみに、Rubyが誕生してから今年で24年になります。「24年間も開発されていれば、あまり変更されるところもないのでは?」と思う方もいらっしゃるかもしれませんが、プログラミング言語をとりまく環境(例えば、Rubyが動いているOSであったり、コンピューターの性能であったり)というのは目まぐるしく変わっていきます。

1 2 3 4次のページ
リクナビNEXTジャーナルの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。