Yuta Saito (kateinoigakukun) インタビュー
進行:まつもとゆきひろ委員長
齋藤優太さん。ルビープライズ2022、受賞おめでとうございます。
ありがとうございます。
すごいね、もらったね。では、いくつかお伺いしたいと思います。まず最初に簡単にご自身の自己紹介していただけますか。
はい。齋藤といいます。本業としては、早稲田大学で、データサイエンス情報理工学部で学部4年生で勉強しております。興味の範囲として、プログラミング言語だったり言語処理系だったりで。いろんな言語にたいして、それこそRubyやSwift、LVMで、OSSのコントリビューターとして活動しております。
ここ1年くらいは、Rubyのアセンブリー対応を主に取り組んでいて、今回それがプライズのきっかけになったんじゃないかなと思います。
受賞理由ですね。間違いないと思います!
プログラミング好きだがら、ここにいらっしゃるわけですけども、そのプログラム始められたきっかけはありますか。
そうですね。かなり若いころから、若いころというとあれですけど(笑)周りにコンピューターとかがある環境で過ごすことができたので、親からタブレットを貸し出されるですね。
で、その頃中学生だったんですが、親から貸し出されるタブレットって、制限がついていて、もちろんゲームをやりたいんですが、アプリは入れられない。。。そうすると、一番面白いのはインターネットブラウザになるんですね。
ウェブブラウザでいろいろ探していると、どうやらここに、このブラウザのURLバーには、プログラムを書けると気づいたんです。JavaScriptで何かスクリプトが書けるっていうのをたまたま見つけて、それで、そこで遊び始めたっていうのが最初のきっかけですね。
え、じゃあブラウザバーにべた書きするっていうこと?
そうですね。
えーそう!(驚)いやまあそれはできると思ってるけど、それでどんなプログラムを書くんですか?
例えば僕は、いろんなインターネットのサイト見てたので、その2チャンネルとか、そういうところを見ていって、入るところって、HTTPってわけじゃないですか。その一番最初のHを抜いて、リンクにならない。そういうのが、不便だったので、書き換えて、クリックできるようにしようっていうのが、一番最初のプログラミングでしたね。
ブックマークレットってみたいなこと?
そうです、そうです。まさにブックマークレットです。
そう。それがきっかけ。なるほどね!
やっぱりこう、ゲームから入るとかそういう方が多いと思うんですけども。なかなか変な入り方ですけど。。。
それだったら例えばブラウザゲームとかもあるわけじゃないですか。
そっちの方で、ゲーマーとして進まずにJavaScriptでブックマークレットとかそういう方向に(興味が)行ったってこと?
そうですね。たまたまそっちに興味が向いたっていうのが大きいんですけど。
やっぱりその当時のゲームって割とフラッシュが多かったんですが、iPadはフラッシュが動かないんですよ。
あ~なるほど。そっか。
だから、フラッシュを使ったゲームはブラウザでは遊べないから。
で、やることが少なくなるんですよ。
なるほどね。そういう時代がもうちょっと後でHTML5とかがもっと普及してる時代だったら、、、(笑)
(笑)別の方向に行ってたかもしれないです。
なるほどね。わかりました。ありがとうございます。
その後、プログラミングに興味があって、大学もそっちに方向に行こうと思ったということ?
そうですね。中学生の頃に、ブックマークレットで、プログラミングを学んで、これ面白いなと思って。
でも、ブラウザの中だとできることも少ないので、ネイティブなアプリを書きたいと思い始めて、そこでアプリの作り方を高校生のころから学び始めたところ、これは自分に向いているなと、これでお仕事したいなと思ったので、進むことにしたという感じですね。
なるほど。
高校生の時に、コンピューターサイエンスとか、情報系に進むと、楽しそうだから、未来がありそうだなと思ったということですね。でも、実際に例えば、そこから4年生の今までの間に、例えばRubyにもSwiftにもLLVMにもコントリビュートされると聞きましたけど、幅広いコンピューターサイエンスのジャンルの中で、そっちの方に興味が出てきたっていうことですか?
そうですね。その高校生ぐらいの頃にiOSアプリを書き始めたんです。iOSソフトってSwiftの言語で書くと思うんですけど、ツールチェインの品質がこういってはなんですが、残念だったんですね。そうすると、コンパイラーがクラッシュします。コンパイラーすると、スタックトレースがいっぱい出て、なんかちょっとだけ中身が見えてくるんですよ。そうすると、これは何なんだろうっていうふうにちょっと興味が湧いてきて、そこからどんどん、言語処理系とかに踏み込んでいった感じですね。
普通はそうはいかない、大分特殊な感じはありますけど、やっぱりそういうコンパィラーツールチェーンの中身が見えたのが面白かったってことがきっかけなんですね(笑)。
(笑)そうですね。なんか、例えば、街頭のディスプレイとかに、Windowsのアップデートの画面とか見えたら面白いなと思って
ロールスクリーンで中が見えたりしますよね。飛行機でLinuxのブートシークエンス出た時なんか、「そうか、Linuxで動いているのか」って思ったりしますよね。
で、その中でRubyをWeb Assemblyの上で動かす、ポートするっていうふうな活動に踏み込もうと思ったのは、何かきっかけがあるんですか。
そうですね。もともとRubyでWeb Assemblyをやる前に、Swiftの方でWeb Assemblyをやっていたんですね。
うん。
で、それをそもそもやろうと思ったきっかけが、iOSのアプリだけを書いていると、この先、Appleがなくなったときに、食い口がなくなるんじゃないかと思って。でも、このSwiftの言語が好きだから、別のプラットホームでも動かせるようにしたいなという。
特に、ブラウザとかで動くと楽しいかなと思って、ポーティングを始めて。
SwiftのバックエンドとしてWebAssemblyを追加するっていうことですよね。
そうですね。そういうところで進めていったら、WebAssembly自体に興味が出てきちゃって、WebAssemblyを進めるためにも、いろんな言語はサポートされていた方がいいなと思って、今度はRuby側に来たということです。
なるほど。その中にあってもいろいろ大変なこともあったと、キーノートなどで話を聞きました。そういうのことも克服した上で、今回マージされて、3.2が出資されたら、もうオフィシャルに、CRubyはこう動きますよって話になったわけですが、齋藤さん的にはこの完成度はどのぐらいだと自分で思っていますか?
そうですね、なかなか難しいですね。完成度というと、割と、今年(2022年)の初めの方にマージさせていただいて、もうかれこれ半年ぐらい、ちまちまと改善を進めているんですけど、かなり安定してるかなと思っていて、基本的なユースケース、というか、一番面白いと思うのはそのブラウザで動かすっていうところだと思うんですけど、そこに関しては大分安定しているんじゃないかなと思います。
ただ、CRuby自体は安定しているんですけど、ブラウザにつなぎ込む部分のバインディングというかそこのライブラリの充実度がまだいまいちかなと思っていて、そのあたりは今後の課題かなと考えています。
最初にそのRuby on Wasmで考えたときに、今後の計画とか、心づもりみたいのはありますか。
そうですね。今言った、ライブラリ充実だったりもそうなんですけど、CRuby本体の改善の方向性として、現状、エーシンキファイっていう、インストルメンテーションを使っているんですけど、それがかなりワークアラウンドで。
なので、それをなくすために、そのワークアラウンドを入れることによってかなりオーバーヘッド生まれているので、それをWebAssembly自体に入れる方向に進めたいなあというふうに思ったりしています。
ちょっと待ってくださいよ。それっていうのは、Ruby on Wasmの実装のお話ではなくて今度はそのWebAssemblyそのものの仕様に、組み込んでいくということですか?
はい。
それを野望として持ってらっしゃる
そうですね。RubyのためにWasmを変えると。
なるほど。今Rubyの話をしてきましたけれども、それ以外で、齋藤さん自身で、今後の希望・野望みたいなものがありますか。
そうですね。僕個人として色んな変なプログラムが変な環境で動くことがすごく面白いなと思うので、どこでもRubyっていうのが達成できるような方向性に、基本的にはやっていきたいかなと思っていて、そのためにはそのプログラムサイズの改善だったり、ワンバイナリ化だったり、Rubyをいろんなところで動かすための何か施策みたいなものをやっていければなと思っています。
ワンバイナリ化は欲しいと思っている人が結構いるみたいなので。
そうみたいですね
WebAssemblyの中でも外でもいろいろあるんで、その辺はそういう意味では希望がありますね。そういう意味で言うと今回、一緒に作ってもらったVFSの部分のところ、例えば、Gemをこうバインドするときには、必ず必要なところもあって、そういう重い期待される技術なんですけどもその辺も構想の中ではあるというふうに思っていいですかね?
そうですね。現状VFSはそのWebAssemblyに、特化した形になっているんで、そのままその他のプラットフォームに動かすっていうことはできないんですけど、でも、似たような体験ができるような感じになったらいいなという、そういうふわっとしたことですけども思っています。
ありがとうございます。中にはね、Ruby卒業される方もいらっしゃるんですけど、齋藤さんにおかれましてはですね、ぜひご興味の赴くままにですね、Rubyのことも一緒にやっていただけるといいなというふうに思っております。
さらに若い人達はこれから、斎藤さんロールモデルにする人も出てくるかもしれないんで、より若い人たちに対して、何か一言あります。
いやあ、なかなか責任重大ですけど、でもやっぱり、自分の興味のあるところを進めていけば、面白いことをやっている人には、いろんな機会を与えてくれる人っていうのが周りに現れてくれると思うので。僕でいうと、Rubyにであったのはクックパッドでして、もともとiOSのアプリ応援のエンジニアとしてインターンしようかなと思っていて、話を聞きに行ったら、遠藤さんとお話する機会があり、たまたまそっちの方は面白いなと思ってそっちの道に行きました。なので、いろんな機会を与えてくれるところに飛び込んでいければ、楽しい感じになるんじゃないかなと思ってます。
確かに実際の出会いみたいものから新たな方向性が出てくると思うし、確かにiOSのアプリを作るより、Ruby on Wasmを作る方が、というと、アプリ開発の人に失礼かもしれないけど、技術的にわくわくするところありますよね。
そうですね。チャレンジングっていうのはあると思います。
わかりました。出会いを大切にという教訓をいただきました。ありがとうございます。
そうだ!賞金、何に使うか決めました?
そうですね。僕、実家暮らしをしていて、今、海外の会社でも働いているのですが、(その会社が)ヨーロッパなので時差で、夜中働くんですよ。
そうなりますよね。
そうするとちょっと家族から不評なので、家を借りようかなと。
なるほど。敷金になると。
はい。敷金礼金になります。
なんと堅実な、いや、お手伝いできてよかったです。
ありがとうございました。
それではですね、今回のインタビューは以上にします。ご協力感謝します。おめでとうございました。
ありがとうございます。