Yuta Saito (kateinoigakukun) インタビュー

進行:まつもとゆきひろ委員長

まつもとゆきひろ委員長

齋藤優太さん。ルビープライズ2022、受賞おめでとうございます。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

ありがとうございます。

まつもとゆきひろ委員長

すごいね、もらったね。では、いくつかお伺いしたいと思います。まず最初に簡単にご自身の自己紹介していただけますか。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

はい。齋藤といいます。本業としては、早稲田大学で、データサイエンス情報理工学部で学部4年生で勉強しております。興味の範囲として、プログラミング言語だったり言語処理系だったりで。いろんな言語にたいして、それこそRubyやSwift、LVMで、OSSのコントリビューターとして活動しております。

ここ1年くらいは、Rubyのアセンブリー対応を主に取り組んでいて、今回それがプライズのきっかけになったんじゃないかなと思います。

まつもとゆきひろ委員長

受賞理由ですね。間違いないと思います!

プログラミング好きだがら、ここにいらっしゃるわけですけども、そのプログラム始められたきっかけはありますか。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。かなり若いころから、若いころというとあれですけど(笑)周りにコンピューターとかがある環境で過ごすことができたので、親からタブレットを貸し出されるですね。

で、その頃中学生だったんですが、親から貸し出されるタブレットって、制限がついていて、もちろんゲームをやりたいんですが、アプリは入れられない。。。そうすると、一番面白いのはインターネットブラウザになるんですね。

ウェブブラウザでいろいろ探していると、どうやらここに、このブラウザのURLバーには、プログラムを書けると気づいたんです。JavaScriptで何かスクリプトが書けるっていうのをたまたま見つけて、それで、そこで遊び始めたっていうのが最初のきっかけですね。

まつもとゆきひろ委員長

え、じゃあブラウザバーにべた書きするっていうこと?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。

まつもとゆきひろ委員長

えーそう!(驚)いやまあそれはできると思ってるけど、それでどんなプログラムを書くんですか?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

例えば僕は、いろんなインターネットのサイト見てたので、その2チャンネルとか、そういうところを見ていって、入るところって、HTTPってわけじゃないですか。その一番最初のHを抜いて、リンクにならない。そういうのが、不便だったので、書き換えて、クリックできるようにしようっていうのが、一番最初のプログラミングでしたね。

まつもとゆきひろ委員長

ブックマークレットってみたいなこと?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうです、そうです。まさにブックマークレットです。

まつもとゆきひろ委員長

そう。それがきっかけ。なるほどね!

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

やっぱりこう、ゲームから入るとかそういう方が多いと思うんですけども。なかなか変な入り方ですけど。。。

まつもとゆきひろ委員長

それだったら例えばブラウザゲームとかもあるわけじゃないですか。

そっちの方で、ゲーマーとして進まずにJavaScriptでブックマークレットとかそういう方向に(興味が)行ったってこと?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。たまたまそっちに興味が向いたっていうのが大きいんですけど。

やっぱりその当時のゲームって割とフラッシュが多かったんですが、iPadはフラッシュが動かないんですよ。

まつもとゆきひろ委員長

あ~なるほど。そっか。

だから、フラッシュを使ったゲームはブラウザでは遊べないから。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

で、やることが少なくなるんですよ。

まつもとゆきひろ委員長

なるほどね。そういう時代がもうちょっと後でHTML5とかがもっと普及してる時代だったら、、、(笑)

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

(笑)別の方向に行ってたかもしれないです。

まつもとゆきひろ委員長

なるほどね。わかりました。ありがとうございます。

その後、プログラミングに興味があって、大学もそっちに方向に行こうと思ったということ?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。中学生の頃に、ブックマークレットで、プログラミングを学んで、これ面白いなと思って。

でも、ブラウザの中だとできることも少ないので、ネイティブなアプリを書きたいと思い始めて、そこでアプリの作り方を高校生のころから学び始めたところ、これは自分に向いているなと、これでお仕事したいなと思ったので、進むことにしたという感じですね。

まつもとゆきひろ委員長

なるほど。

高校生の時に、コンピューターサイエンスとか、情報系に進むと、楽しそうだから、未来がありそうだなと思ったということですね。でも、実際に例えば、そこから4年生の今までの間に、例えばRubyにもSwiftにもLLVMにもコントリビュートされると聞きましたけど、幅広いコンピューターサイエンスのジャンルの中で、そっちの方に興味が出てきたっていうことですか?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。その高校生ぐらいの頃にiOSアプリを書き始めたんです。iOSソフトってSwiftの言語で書くと思うんですけど、ツールチェインの品質がこういってはなんですが、残念だったんですね。そうすると、コンパイラーがクラッシュします。コンパイラーすると、スタックトレースがいっぱい出て、なんかちょっとだけ中身が見えてくるんですよ。そうすると、これは何なんだろうっていうふうにちょっと興味が湧いてきて、そこからどんどん、言語処理系とかに踏み込んでいった感じですね。

まつもとゆきひろ委員長

普通はそうはいかない、大分特殊な感じはありますけど、やっぱりそういうコンパィラーツールチェーンの中身が見えたのが面白かったってことがきっかけなんですね(笑)。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

(笑)そうですね。なんか、例えば、街頭のディスプレイとかに、Windowsのアップデートの画面とか見えたら面白いなと思って

まつもとゆきひろ委員長

ロールスクリーンで中が見えたりしますよね。飛行機でLinuxのブートシークエンス出た時なんか、「そうか、Linuxで動いているのか」って思ったりしますよね。

で、その中でRubyをWeb Assemblyの上で動かす、ポートするっていうふうな活動に踏み込もうと思ったのは、何かきっかけがあるんですか。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。もともとRubyでWeb Assemblyをやる前に、Swiftの方でWeb Assemblyをやっていたんですね。

まつもとゆきひろ委員長

うん。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

で、それをそもそもやろうと思ったきっかけが、iOSのアプリだけを書いていると、この先、Appleがなくなったときに、食い口がなくなるんじゃないかと思って。でも、このSwiftの言語が好きだから、別のプラットホームでも動かせるようにしたいなという。

特に、ブラウザとかで動くと楽しいかなと思って、ポーティングを始めて。

まつもとゆきひろ委員長

SwiftのバックエンドとしてWebAssemblyを追加するっていうことですよね。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。そういうところで進めていったら、WebAssembly自体に興味が出てきちゃって、WebAssemblyを進めるためにも、いろんな言語はサポートされていた方がいいなと思って、今度はRuby側に来たということです。

まつもとゆきひろ委員長

なるほど。その中にあってもいろいろ大変なこともあったと、キーノートなどで話を聞きました。そういうのことも克服した上で、今回マージされて、3.2が出資されたら、もうオフィシャルに、CRubyはこう動きますよって話になったわけですが、齋藤さん的にはこの完成度はどのぐらいだと自分で思っていますか?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね、なかなか難しいですね。完成度というと、割と、今年(2022年)の初めの方にマージさせていただいて、もうかれこれ半年ぐらい、ちまちまと改善を進めているんですけど、かなり安定してるかなと思っていて、基本的なユースケース、というか、一番面白いと思うのはそのブラウザで動かすっていうところだと思うんですけど、そこに関しては大分安定しているんじゃないかなと思います。

ただ、CRuby自体は安定しているんですけど、ブラウザにつなぎ込む部分のバインディングというかそこのライブラリの充実度がまだいまいちかなと思っていて、そのあたりは今後の課題かなと考えています。

まつもとゆきひろ委員長

最初にそのRuby on Wasmで考えたときに、今後の計画とか、心づもりみたいのはありますか。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。今言った、ライブラリ充実だったりもそうなんですけど、CRuby本体の改善の方向性として、現状、エーシンキファイっていう、インストルメンテーションを使っているんですけど、それがかなりワークアラウンドで。

なので、それをなくすために、そのワークアラウンドを入れることによってかなりオーバーヘッド生まれているので、それをWebAssembly自体に入れる方向に進めたいなあというふうに思ったりしています。

まつもとゆきひろ委員長

ちょっと待ってくださいよ。それっていうのは、Ruby on Wasmの実装のお話ではなくて今度はそのWebAssemblyそのものの仕様に、組み込んでいくということですか?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

はい。

まつもとゆきひろ委員長

それを野望として持ってらっしゃる

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。RubyのためにWasmを変えると。

まつもとゆきひろ委員長

なるほど。今Rubyの話をしてきましたけれども、それ以外で、齋藤さん自身で、今後の希望・野望みたいなものがありますか。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。僕個人として色んな変なプログラムが変な環境で動くことがすごく面白いなと思うので、どこでもRubyっていうのが達成できるような方向性に、基本的にはやっていきたいかなと思っていて、そのためにはそのプログラムサイズの改善だったり、ワンバイナリ化だったり、Rubyをいろんなところで動かすための何か施策みたいなものをやっていければなと思っています。

まつもとゆきひろ委員長

ワンバイナリ化は欲しいと思っている人が結構いるみたいなので。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうみたいですね

まつもとゆきひろ委員長

WebAssemblyの中でも外でもいろいろあるんで、その辺はそういう意味では希望がありますね。そういう意味で言うと今回、一緒に作ってもらったVFSの部分のところ、例えば、Gemをこうバインドするときには、必ず必要なところもあって、そういう重い期待される技術なんですけどもその辺も構想の中ではあるというふうに思っていいですかね?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。現状VFSはそのWebAssemblyに、特化した形になっているんで、そのままその他のプラットフォームに動かすっていうことはできないんですけど、でも、似たような体験ができるような感じになったらいいなという、そういうふわっとしたことですけども思っています。

まつもとゆきひろ委員長

ありがとうございます。中にはね、Ruby卒業される方もいらっしゃるんですけど、齋藤さんにおかれましてはですね、ぜひご興味の赴くままにですね、Rubyのことも一緒にやっていただけるといいなというふうに思っております。

さらに若い人達はこれから、斎藤さんロールモデルにする人も出てくるかもしれないんで、より若い人たちに対して、何か一言あります。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

いやあ、なかなか責任重大ですけど、でもやっぱり、自分の興味のあるところを進めていけば、面白いことをやっている人には、いろんな機会を与えてくれる人っていうのが周りに現れてくれると思うので。僕でいうと、Rubyにであったのはクックパッドでして、もともとiOSのアプリ応援のエンジニアとしてインターンしようかなと思っていて、話を聞きに行ったら、遠藤さんとお話する機会があり、たまたまそっちの方は面白いなと思ってそっちの道に行きました。なので、いろんな機会を与えてくれるところに飛び込んでいければ、楽しい感じになるんじゃないかなと思ってます。

まつもとゆきひろ委員長

確かに実際の出会いみたいものから新たな方向性が出てくると思うし、確かにiOSのアプリを作るより、Ruby on Wasmを作る方が、というと、アプリ開発の人に失礼かもしれないけど、技術的にわくわくするところありますよね。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。チャレンジングっていうのはあると思います。

まつもとゆきひろ委員長

わかりました。出会いを大切にという教訓をいただきました。ありがとうございます。

そうだ!賞金、何に使うか決めました?

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうですね。僕、実家暮らしをしていて、今、海外の会社でも働いているのですが、(その会社が)ヨーロッパなので時差で、夜中働くんですよ。

まつもとゆきひろ委員長

そうなりますよね。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

そうするとちょっと家族から不評なので、家を借りようかなと。

まつもとゆきひろ委員長

なるほど。敷金になると。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

はい。敷金礼金になります。

まつもとゆきひろ委員長

なんと堅実な、いや、お手伝いできてよかったです。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

ありがとうございました。

まつもとゆきひろ委員長

それではですね、今回のインタビューは以上にします。ご協力感謝します。おめでとうございました。

RubyPrize2022 Winner Yuta Saito(kateinoigakukun)

ありがとうございます。