お腹.ヘッタ。

関数型とかセキュリティとか勉強したい。進捗つらぽよ

YAPC::Hakodate 2024で発表してきました

Why

今後もいろんなところでCFPを出していくぞ!というメモ書きとして書き残すためにこれを書きます。

ちらし寿司が三つ乗っているテーブルの写真
これは懇親会ちらし寿司のご飯の画像

What

YAPC::Hiroshimaを見てて、楽しそうだな〜ぜひ次は参加したい! つぎはYAPC::Hakodate 2024か!どうせ参加するなら発表したいなーと思ってプロポーザルを出したところ、採択していただけたのでスピーカーとして参加しました。

発表内容について

先日開催された YAPC::Hakodate 2024 で、Perlで始めるeBPF: 自作Loaderの作り方 というタイトルで登壇してきました。40分の公募 CFP 枠です。

倍率としては7倍程度、40分のCFPだけに絞るならば8倍程度の高い倍率で、どうやらYAPCの過去最高のCFP倍率だったそうです。選ばれるだけでも難しいところを選んでいただけたのは大変光栄です。

cf. YAPC::Hakodate 2024のタイムテーブルを公開しました - YAPC::Japan 運営ブログ

speakerdeck.com

私、YAPCは実は初参加でした。YAPC自体は学生時代に旅費支援が通っており存じ上げてたのですが、(幻のKyoto回ですね)私コロナ時期に学生をやっていたので行けなかったという悲しい思い出があります。ところでU25若者支援のレギュレーション的にギリギリそれに合致しないというのがあり、たいへん悲しい気持ちでした😇(発表当日の10/5が26歳の誕生日でぎりぎり超えてしまった・・・)

なにはともあれYAPCに初参加・YAPCで初スピーカーという感じでドキドキでした。いやまぁ流石にまた大学生をやってるとは思いませんでしたが・・・

CFPを練るにあたっての所感

YAPCPerlのカンファレンスですが、近年の性質上、Perlの話をしないでCFPに挑んでくる人が多いところに勝機があるかな〜と思ってました。特に今回の既存CFPを見ると割とお気持ちっぽいソフトな面の話をしてきたり、技術は技術でもPerlの話ではなく別言語から見た、別の立場から見た〜みたいな切り口の入りがPerlではないというのもあったと思います。

ということで、方向としてカニバったりもしないし、おそらくPerlが好きな人が選んでくるイベントだと信じた結果、今回はPerlを使ったプログラム実装者としての話で純粋に勝負しようと思って検討していました。

以下はCFPに出そうと思った時に書き出した思考のDumpです。eBPFでなければ、BGPを作るとかを話してもいいかなーと思ったりしてました。ProxmoxがPerlで内部で書かれてたりするところや最近VXLAN機能が入ったけどそのFRRを置き換えを狙っていくみたいな、そういう点にコントリビュートまで目指してみようかな?などそういう点で考えてみたりしてました。が、結局は旬なものが良いだろう(本当に旬か?)と思いeBPFの話で作り込んでいくこととしました。

- [x] YAPC CfPを出す
    - [x] PerlでeBPFをやる
        - [ ] https://fortee.jp/yapc-hakodate-2024/proposal/2c24d2e4-f488-414f-ae3d-1df24180867b
            - [ ] 出しました
        - [ ] 強み: 
            - [ ] eBPFとか旬なモノはウケがいい
            - [ ] コンテナの世界でもperlで遊べる余地が欲しいとか?
        - [ ] 弱み: 
            - [ ] Perlでわざわざやる理由は?があまり答えれてない。ここは議論のポイントにできそうかも?Perlで基本的に書かれてるサービスというのはたくさんあるよね、そこに組み込む際にはPerlの世界とやりとり可能なローダーの実装が必要なんだ!という話で推していくか
                - [ ] 誰が今Perlやりたいんだか謎だが・・・
            - [ ] BCCとかの移植が良さそう?
                - [ ] 普通にBTFのパーサーを書いて systemcallを実行するまでがまず目指すところかな。。。
                - [ ] BCC依存はやりたくない気持ち。Pure-Perlで戦ってみたい。
        - [ ] コレに近そう
            - [ ] https://udzura.hatenablog.jp/entry/2020/03/27/172104
            - [ ] https://udzura.hatenablog.jp/entry/2019/12/10/193302
            - [ ] https://www.perlfoundation.org/grants.html に出してるのをイメージしてみてもいいかも。
            - [ ] https://udzura.hatenablog.jp/entry/2021/12/02/124654

    - [x] 没案
        - [ ] PerlでBGPをやる
            - [ ] 強み:BGPの実装に色々、既存実装はある。
            - [ ] Proxmoxの既存実装のBGPはFRRらしい。そこを超える意味を出せるかどうか。自作BGPdのPR出してみるか?
        - [ ] PerlでQUICを作る
            - [ ] 強み:おもろいし、色々やりようはある。
                - [ ] https://gist.github.com/unasuke/6b1d7cf68059283f1f149f94a327b4b2

発表当日

発表当日までに実装物を作るのは本当に大変でした。 こちらが参考としての実装です。Sys::Ebpfというライブラリになってます。もしよければStarをしてくれると嬉しいです!!!!実装の励みになります! github.com

スライドの枚数も80枚を超えており、今回はデモを含んでいたので本当に緊張しました。特に会場のWifiでデモが動いたのは正直奇跡で、というのも、イベント開催後半のWifi環境はちょくちょく死んでいたというのがありました。なので危なかったと胸を撫で下ろしていました。

次回やる時はそういう環境も大丈夫か確認したり録画でのフォールバック手段を持っておこうと思います。

次にこのような発表をする場合は以下のようなことに気をつけようと思います

  • ソースコードを載せているので解像度はどれくらいかを聞いておく(今回はかなりガビガビだった・・・)
  • デモをやるならマイクを持つのは辛いので、ピンマイクがあるかを聞いておく(今回はあった)
  • Wifi環境をあらかじめ聞いておけ、SSHはできるか聞いておこう(なお、一応聞いておきました。ありがとう事務局。)
  • デモの録画をしろ

それはそうと当日にこのような話がTwitterで反応されたため嬉しくなって共有しました。コミュニティに参加して、コミュニティにも貢献できたとしたら幸せだなぁと思っております。嬉しいw

参加してみての感想

多様な発表があってよかったなーと思います。印象に残ってる発表を書き残します。

ADR関連の話

LayerXさんのADRのブースが良かったです。実際のADRのサイクルをどう回してるのか、どういうことを書いてるのかを見せてくれたのが大変勉強になりました。 結構根掘り葉掘り聞かせてもらいましたが、そうえばデザインドキュメントとどう棲み分けてるんだろうか?みたいなところまで色々話してくれたのが良かったです。加えて、今回の発表ではてなの人が話してたこちらが色々と自分の知らない知識を補完してくれたのが良かったです。

fortee.jp

プロファイラ開発者と見る「推測するな、計測せよ」

fortee.jp

整合性テストのためにperfコマンドと比べてるみたいな話がなるほどな〜と思いました。 内部的にはkprobeとかでそういう奴らがいると思うんですが、どうしてるんでしょうね。例えばI ラインキャッシュに乗るか乗らないかで出るのものも違う気がしてて、そういう意味ではオブザーバービリティの内部の作られ方がどのような感じになってるのかに非常に興味が持てたセッションでした。 Pythonとかでは内部に手を加えてTrampoline作ったりしてるし、考えることはやはり多いなーと思いました。

さすがベストスピーカーだけあって、やはり話が面白く色々と発表に関しても学びが多かったです。いつかは取りたいベストスピーカー。。。!

クレジットカードを製造する技術

fortee.jp

こちらの発表を聞いてましたが、ほぼSIMやんって驚きました(どこかで言及されてましたが、SIMに似てるという話をしたのは自分です) 質疑をしてて面白いなーと思った点を挙げます。

  • BINコードを使う回すことがあるという話で16桁に今後なりそうという話
  • フォーキャスト見積りの難しさ
    • 確かにSIMと違って大量にはけていかないし、四年ほどの賞味期限が発生してしまうというのも難しいのか〜とプロダクト性質の点で面白さがある
  • 製造したもののコンパチビリティの問題がある->マクドナルドだけで動かないクレカとかがあったという話。
    • これはフィールドワークして見つかる実機の問題という話は、特定の基地局で動かなくなるSIMの話に似てるなぁと思いました。

他にも面白い話が聞けてよかったです。周りの反応を見ててこの発表みたいなのもウケるなら、そのうちSIMの作り方みたいな話をしても面白そうだなぁと思いました。大変良い発表でした。

立ち話で聞いたあれこれ

いんだくたー氏とちくわ氏とWASMに関して結構雑談してて勉強になりました。WASIに関してGC仕様が生えてきてるとかPosixのようなIfaceを作るのかみたい難しさや、ステークホルダー(ブラウザ、CDNクラウド)の立場で欲しい機能が異なるので大統一は結構大変だよねとか、JVMみたいになりつつあるとか。そういう感じの話です。

なお、ここで根掘り葉掘り聞いてしまったいんだくたー氏はこちらで発表してたようです。素晴らしい。

fortee.jp

この辺、できるなら研究ネタとして良さそうなので掘ってみたいなぁと思いました。

その他雑記

Develop to Survive - YAPC::Hakodate 2024 Keynote - Speaker Deck

moznion san のキーノートが大変良かったです!

最近自分は仕事上でのコンテキストスイッチが重いというのが悩んでいるのですが、それは基礎体力がないのかもなぁと思ったりしました。なのでまずは手を動かしていこうと思います。試行回数を増やせるようにしたい気持ちになりました。。。

今後の話

Sys::Ebpfの話ですが、思いの外割と動く感じになってきたので続けたいなーと思っています。が、一方私の普段の開発はGoやCを書いてるので残りはプライベートでやることになるため、Perl FoundationのGrantに出せないかな〜と有識者に繋いでもらって、TPFの方に相談したりしています。Grant自体は今年度は締め切ってしまったので来年度投稿しようかなとか検討しています。もしよければSys::Ebpfに対してPRやユースケース、フィードバックなどがあったら嬉しいです。Starだけでも嬉しい...🥺

最後ではありますが、イベントを開催した運営に携わった人たちや、資料作成や発表へ理解をしてくれている上司や同僚と会社、レビューをしてくれた同僚たち、一回に最低40分かかる発表練習になんども付き合ってくれてマサカリをくれた妻に感謝しています。

色々やっていきの気持ちになったので今後も対外発表や技術から社会とコミュニティと会社に貢献をして強いエンジニアになるべく頑張っていきます!