hasumikin.com

hasumikin is a programmer.

[PRK Firmware Advent Calendar 2021] ゆく年くる年

おはようございます。hasumikinです。2021年「PRK Firmware アドベントカレンダー」25日目の朝です。最終回です。

バージョン1.0.0公開?

アドカレにはそんな感じのタイトルを書きましたが、こんな年末の慌ただしい時期にメジャーバージョンの更新なんてできるわけありません。
CRuby(MRI)は毎年12月25日にリリースしていますが、そしてきょうがYJITをマージした待望の3.1がリリースされる日ですが、あれは並大抵ではないです。
関係各位の信じられないボランティア活動によってあのような年末進行が成立しているのであって、PRK Firmwareごとき弱小プロジェクトに真似できるようなことではないのです(←偉そう)。

というか、たんに「何ができたらバージョン1か」という基準をまったく考えていなかっただけです。
それが弱小たる所以ですスミマセン。

まあそれにしても、9月のRubyKaigi Takeout 2021でPRKを発表して以来、それなりに世間(?)の話題にしてもらえましたし、ソースやドキュメンテーションに貢献していただける人も現れるようになって嬉しいかぎりです。
今後もコントリビュートしていただける方を増やしたいため、そのガイドラインになるかもしれないポエムを書きます。

PRKにコミットする方法

簡単なことからはじめましょう。

動作報告

動かない、変だよ、という報告はありがたいです。ツイッターに書いておいていただければ、エゴサーチして拾いに行きます。

それから、動いた!という報告も喉から手が出るほど必要としていることを強調しておきます。
PRK作者はあらゆる組み合わせのキーボードを持っている訳ではありませんし、リリースに際して考え得る可能な限りの実機テストをする時間もありません。
したがって、リリースした新バージョンがみなさんのお手元で正しく動いているかどうかが心配で心配で夜も眠れないのです。
ですので、このキーボードで新バージョンが動いたよ、とか、こんな(
どんな?)変なケーブルでも動いたよ、とかの細かな報告でもいちいち飛び上がって喜んでいる次第でございます。
そこんとこよろしくお願いいたします。

ドキュメンテーション

これも本当にありがたいことです。
CRubyもドキュメントを書く人が足りていないようですが、PRKも然りです。
ご興味のあるかたはpicoruby/prk_firmware-wikiまでお運びください。

ソースコード

ソースコードにコントリビュートするのは、急にハードルが高いです(しかしWelcomeです)。
大きな理由のひとつは、上述したように、あらゆる組み合わせのテストはできない、という点です。
筆者はもちろんですが、プルリクを送ってくださる貴殿もまた、あらゆる組み合わせのテストはできないはずです。
というか失礼ながら、むしろ貴殿のハードウェアだけでしかテストしていないだろう、と考えてコードレビューすることになります。
ですから、どういうパッチを書いたかだけでなく、どういうテストをしたか、についてもPRコメントに添えていただけると助かります。

そして、筆者がもっていないハードウェアをターゲットにした新規開発は、なかなかマージできません。
動作確認の方法がないからです。
プルリクを出して(あるいはプルリクではなくイシューを切って)、さらにそれを動かすためのハードウェアも送ってもらえれば、進展しやすいと思います。
そこまでやる人いるの?って思われたかもしれませんが、わりといるんですw

また、お送りいただいたハードウェアは返却しませんのでご了承ください(以後のデグレチェックにも利用させていただきます)。

ちなみに、PRKソースにおけるRubyとC言語の棲み分けは概ねこんな感じです:

  • キーボードのキーボードたる基本ロジックはなるべるRuby
  • 各キーボードのスタイルに関わり、CPU負荷が大きそうなロジックはC言語

各キーボードのスタイルというのは、スプリット型の左右シリアル通信やRGBLEDなどを指しています。
このあたりの指針を知っておいていただくと、コミットしやすいはずです。

それからコード品質について。
じつはPRK Firmwareは、Rubyだからkeymap.rbが簡単に書ける、というものではないのです(え?)。
むしろ、Rubyっぽくきれいにkeymap.rbを書けるようなフレームワークを開発しなければならない、というプレッシャーを開発者に与えるものなのです。
処理系であるPicoRubyそのものも開発途上であるため、もっとRubyっぽくできるはずなのにそれができない、という苦しい場面もあります。
だから、PRK内部のRubyはそう簡単には書けないのです。
筆者もひーひー言いながら書いています。


脅してばっかりに見えるかもしれませんが、そんなことはありません。
OSSの作者は、リポジトリのスターがひとつ増えるだけでニヤニヤし、フォークした人がいるだけでウキウキしています(だからぜひスターを押してください)。
そのうえにコメントを寄せてもらえたりプルリクを出してもらえるなんて、そんなことはGitHubに公開されているリポジトリのうち一握りしか得られない僥倖なのです。
ぜひ、PRKへのコミットに挑戦してみてください。
それは自作キーボード界をまたひとつよくするための一歩です!

というわけで2021年も終わりを迎えます。
みなさまよいお年を、、、

って言うと思いますよね?
まだ終わりませんよ。
今回は2本だてです。
本当の最終回はこちら!