福岡Rubyist会議03に参加した

福岡Rubyist会議03

regional.rubykaigi.org

キーノートスピーカーの2名が公開されたときに、これは絶対に行きたい!!と思って参加を決めた。参加してとても良かった。

sorahさんの発表はRubyKaigiがどんなものを使って、どんなスケジュール感で作られているのかが分かり面白かった。自宅ISPとは…? コンパネがRails consoleだったとか生々しい裏話が聞けて面白かった。あと話の節々からsorahさんのカバー範囲の広さが伺えて刺激を受けた。

YouTube眺めてるときにRubyistの話がもっと聞ければいいのにな〜と以前から思っておりこれを機に配信するRubyistが増えてくれないだろうかと思った。ピンマイク欲しくなった。普段の打ち合わせとか、オンラインの登壇で音質よくしたい気持ちが高まった。

iPadのカメラを使って配信できるとは思ってもいなかったので新しい視点だった。iPadだと気軽だし対応アプリも多そうだし良さそう。

Rubyのリリース大変そうというのが分かって良かった。デプロイボタンを押せばポンとリリースされるものではなく、何人かが数時間かけて対応していく大変な作業だった...いつもありがとうございます。

私がESP32にmruby/cを入れようとしてハマったところがなぜハマったのか分かって勉強になった。project.mkがないと言われていたがESP32側がmake非対応になっていたらしい。

発表後にyuuuさんに「私はマイコンに興味があるが、何から勉強したらいいか分からない。どんなレイヤに何があるのかがちんぷんかんぷんで、基礎知識を知りたい。組み込みの基礎知識を得るにはどうすればいいと思うか?」と聞いたところ「エンベデッドシステムスペシャリスト試験の教科書がよくまとまってる」と教えてもらい、とても参考になった。ネットで検索しても電子工作の基礎情報は出てくるもののマイコンの世界についてはなかなか見つけられなかったので聞けて良かった。

るびまはznzさんの発表をきっかけに本当にみんなが動き出している。すごいことだと思う。みんな実は内なる思いがあって、それがznzさんの話が起爆剤になって動き出したように見える。動き出したものはじゃんじゃん前に進んでいて、みんなすごいなーと思う。

るびまに必要だったのは「るびまがまた発行されてほしい」という気持ちを持っている人がたくさんいることをお互いが気づくことだったのかもしれない

Ruby M17N の設計と実装」はRubyの多言語対応がどのようになされたか、概念からAPIまで一気通貫できる最高のドキュメントなのでおすすめです。

tompngさんの発表はとにかく楽しいし理解が及ばないしで、とても楽しかった。トークの構成でも技術的な内容でも素晴らしいキーノートだったと思う。これを現地で聞けて良かった。

話の内容は高度で角谷さんがツイートしていたとおり「ふくろうの描き方」のように感じた。しかし描いたふくろうを手直しできるようにするための工夫を行っているとか、描く本人も完成するか分からないと思いながら気合で作り上げるとかそんな泥臭い話を聞けて、あまりに摩訶不思議で魔法のように見えていたTRICKコードが同じ人間の手によるものなのだと感じた。職人技だ〜

クロージング

恩送りをしよう、アウトプットを世界に届けよう。

登壇者のみなさん、スタッフのみなさん、最高の会を開いてくださりありがとうございました!

福岡観光とか

  • 鯖のさしみが美味しかった
  • 資さんうどん、めちゃめちゃ良かった。たっぷりのごぼ天に甘く味付けされた牛肉…甘い味付けよ…!!地元の味を思い出すかのような少し甘めの味がしんみり来たし美味しくて、地下鉄+歩きで行くにはちょっと遠かったけど食べられて良かった。また福岡に行ったらうどん食べたいなぁ。
  • 会場の八女茶がホットもアイスもとても美味しかった。茶葉買って帰れば良かった。
  • 翌日に行った大濠公園がとても心落ち着く場所だった。地下鉄からもアクセスがよかった。凪いだ池と飛び交う鳥たち、散歩する犬に心が和んだ。
  • 茶店にあまり行けなかったので、今度福岡に行くことがあればいろいろな喫茶店に行きたい。

IRB会議

緊急IRB会議がお昼の寿司の部・夜のうどんの部の2回開催された。今のIRB/Relineをとりまく状況とか、困っていること、今後の方針など話せてとても良かった。やはりリアルタイムで話すのは早くて帯域が広くていいな。自分じゃ権限がなくてできなかったことがその場でシュッと依頼できていろいろ前に進んだりもした。物理的な距離があり、なかなか集まれないメンバーなのでいい機会だった。

寿司の部ではチームとか方針の話を主にして、うどんの部ではコードに踏み込んだ話をがっつりできた。PRの解説を本人に図付きで解説してもらうのとても分かりやすくてありがたい。

その他 \1\2 の謎とか、メソッドチェーンの補完が重すぎるとか、Reline::Terminfoの話とか、JRuby分からないとか、readlineどうしようねみたいな話とかいろいろ。 Relineコードリーディング部やりたい。

あと、うどんの部でmrubyのコードの読み方がわからなかったところを聞けて詰まっていたところの解消ができてよかった。

分からなかったのはここ。

extern const char mrb_utf8len_table[];
const char mrb_utf8len_table[] = {
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 4, 0
};

mrb_int
mrb_utf8len(const char* p, const char* e)
{
  mrb_int len = mrb_utf8len_table[(unsigned char)p[0] >> 3];

github.com

UTF-8の1文字のバイト長を取得する部分で、mrb_utf8len_table がバイト長を返していそうなのは分かるがなんでこれでいいのか分からず詰まっていた。そのことを質問したところ、UTF-8の文字の1バイト目を3つ右シフトして5ビットにして、5ビットの値をindexにして mrb_utf8len_table に渡しているんじゃないかと教えてもらった。

AND演算すればいいのでは?とも聞いたところ、このほうが命令数が少なくなるからこうしているのではと教えてもらって自分にはない観点が得られた。CPUにやさしいコードだった。

コード見て話しながら、これは3つ右シフトしたら5ビットだから0~31でテーブルに32個あるんじゃないですかねえとかここでマッチングかけてるというのがシュッとでてくる人たち、ビット演算や2進数の扱いに慣れてて自分も精進せねばと思った。私は空中で計算ができないのでiPadに書いて認識があってるか他の人たちに確認した。