羽角 均(Hitoshi Hasumi) インタビュー
進行:まつもとゆきひろ委員長
英語吹替
- RubyKaigi Takeout 2021のリンク(日本語)
- https://rubykaigi.org/2021-takeout/presentations/hasumikin.html
- タイトル:PRK Firmware: Keyboard is Essentially Ruby
- RubyConf 2021のリンク(英語)
- https://www.youtube.com/watch?v=SLSwn41iJX4
- タイトル:On a Keyboard Ruby on Board: PicoRuby and PRK Firmware
※インタビューの内容を一部編集・補足しています。
Ruby Prize最終ノミニーということで、羽角さん、おめでとうございます。
このインタビューを見られる方、あるいは文字起こしを見られる方の多くは、羽角さんと羽角さんの業績についてご存知ない方も多いと思うので、簡単に自己紹介していただけませんでしょうか。
はい。羽角といいまして、松江市に住んでおります。今回最終ノミネートしていただいたのは、PicoRubyという処理系を作ったのと、それを使ってキーボードファームウェア(PRKファームウェア)を作ったっていうことに対して評価いただいた、と思っています。
PicoRubyっていうのはmruby互換の、ワンチップマイコンで動くようなメモリ消費の少ないものです。
僕が作ったのは主にコンパイラ側なんですが、mruby/cのバーチャルマシンと組み合わせて使えるようにmruby/cにもちょっと手を入れつつ、統合してPicoRubyって名前にしました。
あとは、自作キーボード向けのファームウェアフレームワークですね。キーマップとかをRubyで書けるようにした、そういうものを作ってます。
ありがとうございます。
羽角さんはプログラマーとして業績を上げておられるわけなんですけれども、最初にコンピューターに触れてプログラミングを始められたのは、いつごろどんな感じで始められたんですか?
最初は多分、中学生ぐらいのころにMSX2か何かを持っていて、それでBASICとか。あと、ほとんど実際には使ったことないんですけどZ80のマシン語とかの本だけ、読んではいました。
実際にそれで何かを作ったっていう記憶はないんですけど、若いころからずっと何となく興味はあったって感じです。
中学生ぐらいのころの興味が続いて、本業というかキャリアになったっていう感じですかね?
(興味が続いてすぐキャリアには)なっていなくて。大学入るときに、工学部の情報系か建築系かって考えて、建築系に行ったんですね。大学院まで出て、それから10年間は情報の仕事でもないんですけど建築系の出版の仕事をしていて、ちょっと社内データベースみたいなもののお守りをするっていうことがあったんで、それをやっていたらプログラムを書くってのが楽しいなと思って、転職したのが30何歳の頃です。
本を作ったり新聞も出す会社だったので、新聞制作もちょっとやったりとか色々やっていたんですけど、仕事の一部として社内の記事データベースのお守りをしていました。
ある意味方向転換して情報系の方にこられたっていうことなんですけども、本業の方でもやっぱりソフトウェアを開発してらっしゃいますよね。
モンスターラボっていう会社で、いわゆる受託やる部門とそうじゃない部門があるんですが、私は受託の部門でWebシステムとかスマホアプリなんかを作ります。
お金を稼ぐ仕事としてはそちらの方をされて、日々の方でRubyというかPicoRubyを作っておられると。趣味の割合はそっちが多いんですかね。
そうですね。趣味はもっぱらPicoRuby、というか最近はキーボードばっかりやってますね(笑)
キーボードの話は後でゆっくり聞きたいんですけど(笑)、じゃあRubyとの出会いっていうのは、本業の中で、っていう感じなんですか?
出版とか新聞の仕事をしていた時に、『データベースがあるから、ウェブで公開して検索できるようにしてお金をとろう』みたいなことを考えて、最初PHPでそんなものを作ったんですね。
それとMySQLの2とか3とか、多分そのぐらいのころにそういうものを作っていたんですけど、フレームワークみたいなものは当時何も知らなくて。
本屋に行ったら、Ruby on Railsっていうのがあるのを見て、ぱらぱらっと読んで、重厚長大だけど凄そうだと思って本を買って。
RubyだかRailsだか何かよく分かんないけど、ちょっと面白そうだからいずれやってみたいな、というのはずっと思っていました。
本業を転職されたってことなんですけども、本業の方でも今はRubyを使うことはありますか?
あります。多いです。このモンスターラボが島根・松江にオフィス作ったのも、主にRailsで仕事をやる人間を集めようという思いでオフィスが立ち上がったので、Railsの案件は島根拠点に来るという感じです。必ずではないんですけど。
本業でも趣味でもRuby関連のことをしておられる羽角さんですが、ちょっと自作キーボードの話を聞かせていただこうかなと思うんですけども。
そもそも『キーボードを自作するってどういうこと?』って思う人が多いと思うんで、そこから話していただいてもいいですかね?
あります。多いです。このモンスターラボが島根・松江にオフィス作ったのも、主にRailsで仕事をやる人間を集めようという思いでオフィスが立ち上がったので、Railsの案件は島根拠点に来るという感じです。必ずではないんですけど。
本業でも趣味でもRuby関連のことをしておられる羽角さんですが、ちょっと自作キーボードの話を聞かせていただこうかなと思うんですけども。
そもそも『キーボードを自作するってどういうこと?』って思う人が多いと思うんで、そこから話していただいてもいいですかね?
キーボードを自作するっていうのは…難しいな(笑)基本的には、パーツをそろえてハンダづけすることで出来上がるんですけど。
基盤を買ってきて、キースイッチやキーキャップというものを買い集めて、「見た目も好きに作る」っていうのが一つ。もう一つ大きいのが、「好きなキーマップにできる」っていうことだと思います。
例えばこの辺りにリターンキーが欲しいとか、この辺にリターンキーやバックスペースが欲しいっていうようなことを考えたときに、そういうことを自分で決められる。
…というのが自作キーボードを始める理由として一番大きいところかなと思います。
私も実は自作系キーボードをたくさん持ってたりするので、よくわかるんですけれども、知らんぷりしてインタビューしました(笑)
実際はそのキーボードにもCPUが乗っていて、いわゆるちっちゃいコンピューターですよね。キーボードが入力された信号を文字情報に変換して送るっていう、キーボードの中でプログラムが動いていると。
そこで、Rubyの出番っていうのはどういうところなんですか?
Rubyの出番…難しいですね。
僕が作っているファームウェアで言うと、Rubyでキーマップを書けるっていうのが特徴でしょうか。
例えば複数のキーを組み合わせたりとか、特定の文字列を出したりとか、何らかの計算結果を人間の代わりにタイプさせたいみたいなこともRubyで書けるっていうことです。
それと、開発している僕とかあとコミットしてくれている何人かの人にとっては、内部のロジックやテストがRubyで書けること。
全部C言語でやるよりも長期的にメンテナンスしやすい仕組みになっているっていうのが、価値の一つだと思います。
RubyKaigi Takeout 2021やRubyConf 2021のそれぞれで発表していただきましたので、そちらのリンクを載せさせていただきます。
発表している本人はそう思わないかもしれないですけど、見てる方としては、キーボードの中でエディターが動くとかが割と衝撃的だったので(笑)
もしこのインタビューに興味を持たれた方は、ぜひそっちの方を見ていただければと思います。
キーボードをコントロールするプログラムっていうのはCで書いてあったりすることが多いんですけれども、Rubyにすることにおけるメリットというのは、何かあるんですかね?
さっきも言った通り、テストがしやすくなる・書きやすい・書いてる本人の僕が楽しいっていうのがあります。
僕としては、PicoRubyとかmrubyのエコシステムを広げていくのに、PicoRubyコンパイラを作っただけじゃ面白くなくて、使われないと楽しくないわけですよね。
なので、自分でそのアプリケーションも作って、そうすると実際にこのキーボードを使うことで、mrubyユーザーが増えているっていうことになると思うんですけど。
そうすれば、やってるうちにバグも見つかって、言語処理系側も良くなるっていうこともあるでしょうし、言語処理系事態を作るのも楽しいから、その応用と一緒にやっていくっていうのが、趣味としてとても楽しいなというところです。
ありがとうございます。
キーボードのファームウェアと、それからPicoRubyとRuby全般で、今後の計画とか抱負とかありますか?
これもまつもとさんはとぼけて聞いてる感じがするんですけど(笑)
今はPicoRubyコンパイラがmruby/cと統合されてますけれど、それをmrubyとも統合できるように、っていう活動を今まさにしていて、mrb gemの形で作っています。
最終的にどうなるかちょっとわからないんですが、Rakeコマンド叩くだけでBuildConfigをそれ用に変えてあげると。
PicoRubyコンパイラと統合されたmrubyを、仮にmicrorubyって呼んでるんですけど、それが出来上がると。
そうするとmrubyも、例えばRaspberry Pi Picoのようなワンチップマイコンとかで、コンパイラ込みで動くかもしれないですよね。
もっとちっちゃい64キロバイト以下ぐらいだったら、PicoRubyみたいな使い分けとかもできてくるんじゃないかなと思って、それをやろうと今頑張っているところです。
Raspberry Pi Picoはどのぐらいメモリ積んでたんでしたっけ?
RAMが256KBですかね。管理用に16KBぐらい積んでますけど実質256KBですね。
そっか、256KBあったらmryubyのVMだけなら動くのか。
“Hello World”だけだったら100KBぐらいで動くじゃないですか。ちょっとアプリケーションが大きくても200KBぐらい。
後はペリフェラル周りのC言語が使うスタックが幾らかあるとしても、コンパイラを積んでも小さめのアプリケーションなら動きそうな気がしますね。
そうですね。
今はコンパイラが全然メモリ消費考えてないんで馬鹿でかいんですけど、それがPicoRubyになったら上手くいきそうですね。楽しみですね。mruby/cよりもVMの制限は少ないので。
割と何でもできるようになります。
あと、Raspberry Pi Picoですけど、8MBぐらいROMがあるので、コードサイズはあまり気にしないでいいです。
PicoRubyコンパイラ自体は、今はまだmrubyのコンパイラーよりもカバーするシンタックスが小さめですけど、これを大きくしていっても溢れることはないので、そういう意味でもまだまだやれることがあるなと思います。
そうですね。
ぜひmruby作者としてはコントリビューションをお待ちしております(笑)
はい、がんばります(笑)
羽角さんからこのインタビューを聞かれる方とか読んだりしている人に対して何かメッセージがあれば。
そうですね。
(開発しているキーボードファームウェアは)PRKファームウェアっていうんですけど、多分、自作キーボードやっている人はQMKっていうやつを使っている方がほとんどだと思います。
私もこれ使っていますね。
そうだと思います。
QMKを使っている人をPRKに呼ぶっていうのと、自作キーボードやってないけどRubyは好きっていう人にいきなりPRKから入ってもらうっていう、両方が可能だと思っています。
例えば「使い方がわからない」「PRKファームウェアのここがわかんない」ってTwitterに書いていただくと、勝手に押しかけてサポートするっていう活動を今していて。
うん、そうですね。ソフトウェアプロジェクトの初期は大体そういうことがありますよね(笑)
はい。
アクティブサポートを今頑張ってるところです(笑)
(笑)
そうすると、ユーザーがちょっとずつ増えていって、ユーザーが増えるとやる気に繋がるので。
TwitterでPRKって検索すると、すでに使ってる人の話も出てくると思うし、書いていただければ、押しかけていきます。
PicoRubyとかPRKとかを呟くと、羽角さんがエゴサーチしてるので、見つけるということですね。
わかりました。ありがとうございます。
Rubyを作ってる方としては、こちらから応援できることがあれば何でも言ってください。
ビルドシステムのことをちょっと詳しく聞きたいなと思っていて、どこかで時間をください。
ここでやると聞いてる人は混乱するので、また別の機会で。どうせ同じ町にいますので(笑)
はい(笑)
本当におめでとうございます。今日はどうもありがとうございました。
どうもありがとうございました。