Lars Kanis インタビュー

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

※インタビューの内容を一部編集・補足しています。

まつもとゆきひろ委員長

インタビューを始めたいと思います。

まず、Ruby Prize最終ノミネートおめでとうございます。

RubyPrize2022 Final Nominees Lars Kanis

ありがとうございます。

まつもとゆきひろ委員長

まず、ご自身や活動についてお聞きします。どのような経緯でプログラミングをなさるようになったんでしょうか。

RubyPrize2022 Final Nominees Lars Kanis

かなり早い時期に始めました。コモドール64だったと思いますベーシックのプログラムを書いていたのですが、すぐにアセンブリに移りました。というのもそのコンピューターでは、できることが少なく、ハードウェアを本当に使うためにはアセンブリの方が必要だったんです。そして、ベーシックと比較してアセンブリを使うと、コンピューターの速さに驚かされました。これが私がプログラミングを始めたきっかけです。確か、1992年、13歳の時です。

まつもとゆきひろ委員長

当時アセンブリで何を書かれたんですか?

RubyPrize2022 Final Nominees Lars Kanis

ゲームです。まあゲームを書こうとはしたんですが、仕上げられなかったんです。当時、ゲームを書くためのフレームワークを書いたので、実際には使えるものでは、ありませんでした。その後、友人がフレームワークを活用して、本物のゲームを作りました。それはなかなか面白いものでした。

まつもとゆきひろ委員長

ご存知のように良いプログラマーは抽象的なものを書きます。フレームワークだったり、言語だったり、OSだったりです。だからあなたはいい面を持ってらっしゃると思いますよ。

まつもとゆきひろ委員長

さて、プログラミングをコモドール64で始められアセンブリを使い、どのようにしてRubyとの関わりができたんですか?

RubyPrize2022 Final Nominees Lars Kanis

それはもう少し後です。もちろん1992年当時Rubyはありませんでした。パソコンをx86に切り替え、C++を学んでました。C++は複雑でしたが、早かったんです。そこから急速に、オブジェクト指向のプログラミングを学びました。そして、2005年、雑誌でRubyのことを読み、「試してみよう!」と思ったんです。実際にウェブアプリケーションで最初のプログラムをいくつか書きました。最初のころのアプリケーションは、Rubyのすべてが標準ライブラリに組み込まれていたものだったと思います。だから、当時はゲームやGemのようなインフラはありませんでした。ですが、CGIモジュールは標準ライブラリに入っていてそこからは始めて半年かかりました。新しい会社に入って気づいたのですが、そこでは、テキスト処理をたくさんしていました。その会社ではPascalを使っていたんですが、それは複雑すぎると思い、Rubyを導入しました。導入したところ「そんな追加言語、私たちが求めているものとは違う」と言われました。Rubyが持つテキスト処理機能、すべて素晴らしい完成度です。なので、私だけでなく、同僚もRubyに惚れこんでしまったのです。そして、それが私の会社でのRubyの導入となりました。そして、今日までメイン言語として、使っています。もともとオープンソースのコントリビューションをやっているのは私一人なんですけどね。

まつもとゆきひろ委員長

感謝しています。RubyInstallerはあなたの傑作だと言っています。このプロジェクトはどのように始まりましたか。

RubyPrize2022 Final Nominees Lars Kanis

私は社内でLinux担当です。なかなか組み合わせとしては難しいんです。Rubyを社内に導入し始めた時に、Windowsで正しく動作する言語を持つことが非常に重要なことでした。それで、まずRubyInstallerを取り出し、社内で使いました。RubyInstallerがなかったら、こんな形でRubyを導入することもなかったと思います。でも、Windowsで使うのは大変だったんです。その時本当に役に立ったのが、PostgreSQLのアダプターでした。しかし、これもインストールするのは大変でした。プロセスは長かったし、新しいWindowsのパソコンが入る度に同じことをしなければならなかったです。それでこれを改善しなければならないと考えました。しかし、当時Rubyやオープンソースの開発に全くかかわっていませんでした。でも、時々、当時GemだったPostgresに高速パッチを当てて、Windowsでの状況を改善することを始めてみました。そして、クロスコンパイルをはじめました。Linuxは私が慣れ親しんだシステムだったので、クロスコンパイラを使ってWindows用にコンパイルしたところ、うまくいきました。

RubyInstallerの元メンテナーであるルイス・ラビーナがWindowsをもう使わないからとその分野から離れることになりました。そこでしばらくして新しいメンテナーが必要となり、最初、彼が残したコードに目を通しました。しかし、すべて古いMCSをベースにしていたため、MC2をベースにしたRubyインストーラーを一から書き直しました。それは大成功でした。RubyInstallerでWebページを更新しました。デザインは同じですが、エンジンは全く別物。そして、すべて私が引き継ぎました。

まつもとゆきひろ委員長

私はUnix人間です。Rubyのコアの開発者もUnix人間が殆どで、我々は傾向としてWindowsを置き去りにすることがあります。ところが、対照的に多くのRubyユーザー、特に初心者はWindowsを使っています。なので、Windowsのギャップを埋める必要があります。RubyInstallerの存在は、我々Rubyコミュニティにとってとても大きな助けとなります。あなたの仕事に感謝をしています。そして、それがあなたが今回最終ノミネートされた理由です。あなたがおっしゃるように、RubyInstallerの難しさというのがあるんですが。何かRubyツールの実装にあたって困難はありましたか。

RubyPrize2022 Final Nominees Lars Kanis

一般的な視点として、RubyInstallerは極めて良く機能しています。一つ大きなポイントで、当時意見が分かれたのは、Devkitを含めるべきかどうかです。大半の開発者は含めるべきではないと考えていました。インストーラーが肥大化してしまうからです。しかし実際誰もがダウンロードするものの一つです。

Devkitなしと比べて、10倍Devkitありのダウンロードがされています。なので、すべてを一つのパッケージに統合することで、エンドユーザーの努力が減らせると思いました。それには本当に満足しています。

ただ、まだ満足していないのは、Windowsではすべてに時間がかかりすぎることです。

今は、ビジュアルスタジオ使うと、状況は少し良くなり、GWコンパイルの時間に比べると、コンパイルの時間は3分の1ぐらいになってますかね。でも、まだ十分ではありません。Linuxの方がコンパイルが速いんです。だから自宅に速いパソコンを持っているのですが、Windowsで仕事するときも、このパソコンを使えば、ある程度のスピードで開発ができます。Windows側にはまだ多くの課題があります。これまでRubyCoreの内部にはあまり手を付けませんでした。Windowsへの移植はすべてノブマサさんにやってもらいました。私も大変尊敬しています。

まつもとゆきひろ委員長

確かにIOの裏側の仕組みはWindowsとは全く違っていて、それがパフォーマンスを低下させる原因の一つなんです。パフォーマンスを向上させるためにはどんな作業もしなければならないんですが、まだ知識や経験も不十分なんです。

RubyPrize2022 Final Nominees Lars Kanis

しかし、Windowsの実装はすでにかなり良い段階にきています。

私たちはたくさんのデータや知識も思っています。おそらくそれが、良い影響を与えるでしょう。Lib CのファイルディスクリプタをWindows8のネイティブAPIで処理するように切り替えたとしたら、少しは早くなるかもしれません。だから、私はこれに取り組みたいと考えています。でも、インターフェイスが大きく異なるので複雑なんです。

まつもとゆきひろ委員長

そうですね、ちょっと専門的な話になりすぎたかもしれませんね。とにかくありがとうございます。

最後の質問です。RubyInstallerに関する今後の計画をお聞かせください。

RubyPrize2022 Final Nominees Lars Kanis

それに関しては、継続するという以外大きな計画はありません。ただ、続けてはいきます。

今後も続けて、CIが毎日クリーンに走ること。そして、GitHubへの統合を行っていきたいと思っています。そして、誰もがWindowsでRubyを走らせるようにしたいです。Windowsに取り組んでいる「MSPクリック」という方なんですが、彼がすでにかなりいい仕事をしています。仲間がいるということは非常に嬉しいです。彼はWindowsのシステムに深い知識を持っていないですが、質問することができますし、信頼できる人間です。

まつもとゆきひろ委員長

繰り返しになりますけれども、本当にあなたのお仕事に感謝をしています。

私たちは今後もあなたの貢献を期待しております。

最後にもう一度お礼を申し上げます。そして、無事にご帰国くださいますようお祈りしています。

RubyPrize2022 Final Nominees Lars Kanis

ありがとうございます。ドイツまでは少し長旅なので何時間もかかりますが、
いずれはつきますので。