YAPC::Hakodate 2024 参加ブログ
みなさんこんにちは。ユオレイです。 YAPC::Hakodate 2024に学生支援もあり、この度参加することができました。 YAPCはYet Another Perl Conferenceの略で、Perlを軸としたITに関わる全ての人のためのカンファレンスです。 Perlだけにとどまらない技術者たちが、好きな技術の話をし交流するカンファレンスで、技術者であれば誰でも楽しめるお祭りです!
なのでPerlをほとんど触ったことはありませんが参加してきました。 そしていくつのLTを聞いてきました。
Perlで始めるeBPF: 自作Loaderの作り方
まずeBPFの説明をしていただきました。Linuxカーネルに対する拡張を楽にかいて動的ロードさせる仕組みです。セキリュティ、オブザーバビリティー、ネットワークなどで活用されているそうです。手軽にカーネルの拡張を作成できたり、カーネル内部で実行された結果をほぼなんでも取得できるそうです。自分はこれについてあまり知見がなかったため大まかな理解をすることができました。そしてeBPFはさCやRustで書かれているらしいのですが、今回はeBPFのLoaderをPerlで書くということで、PerlでeBPFを書く方法を教えていただきました。ELFというLinuxなどの実行ファイルフォーマットをパースするものを作ればよいそうです。その部分をPerlで実装されていました。Perlでポインタをどう扱うかなどの工夫もされていたりしました。また実際に完成したものをデモして見せていただきました。eBPFが実際に動いていている様子を見ることができました。Perlで低レイヤーを観れるのはなかなか貴重だとも思いました。
Perlで始めるeBPF: 自作Loaderの作り方 / Getting started with eBPF in Perl_How to create your own Loader
プロファイラ開発者と見る「推測するな、計測せよ」
こちらは今回のベストスピーカー賞を取っていたLTです。最初にLTが始まったら出席票を回していたのが面白かったです。出席チェックの内容は 「計測」から連想するものといえば? という内容でした。私はEXPLAINと書いておきました。
「ソフトウェアはハードウェアの進歩に打ち消すこと」という言葉が印象に残っています。ハードウェアはどんどん進歩していくがソフトウェアの無駄な実行部分がハードウェアの進歩に打ち消すといい、改めて計測してボトルネックを解消しなければならないと思わされました。
まずはプロファイラーを使って計測の紹介でした。たとえば私がよく使用するGoならpprofがあります。プロファイラーはビジュアライズできます。 どれくらい時間がかかったのかを確認することができるからボトルネックを発見することができます。
感だけで計測はしてはいけない。なんか遅いから多分DBのインデックス不足しているんでしょ?ここキャッシュすればいいのでは?それで、計測すればいいのでは? 答えは否
何となくプロファイルしてとかは当てずっぽは意味がない 計測を使って仮説検証が理想。計測してか仮説を立てて対応。→検証→計測をするべきだということでした。
サービスが遅い原因も可能性はいっぱいあるからどこから手をつけるかというお話をされていました。メモリとか、レスポンスタイム、関数の呼び出し時間... いっぱいあります。DBサーバーがCPU100%→EXPALIN 問題なし。→カーネルがCPUをつかてページを探す→メモリ→dead tuple →原因→updateが多すぎる設計だったというように原因を見つけるためにレイヤーをさげて見つけていくことが必要だということでした。
そして存在すら知らないことは調べられないということを聞き本当にその通りと思いました。ハードウェアまでのレイヤーのことを知らないと調べることさえできないということでした。それを知るには広く浅くでもまずは本などで勉強して頭の中にindexを貼ることが良いともおしゃっていました。答えはいつも予想外のところにあるというのは本当にその通りだと思いました。
また時間計測についても触れていました。時間を測るのは難しいたとえばCPU時間はカーネルのみが知り得るから。計測するにはレイヤーを下げていく必要があることもあるそうです。
アプリ→ライブラリ、VM(言語処理)→OS/カーネル→ハードウェア
また評価するにはいつ計測するかも重要いつを主観に依存させない。基準がズレるからとおっしゃっていました。
パフォーマンス改善は正しい視点をさがすこと、一つのことではわからないので全てを知っていくことが重要だということでした。わたしももっと計測を意識していきたいと思いました。
LT その2(本編?)
プロファイラー作成というLTパート2が始まりました。
プロファイラーの結果を正しくテストするのは難しく、他のプロファイラーとの比較が必要です。プロファイラーを作成することで、普段使うプログラミング言語やシステムに対する理解が深まりますが、プロファイラーの作成には広範なコンピュータサイエンスの知識が求められるということでした。
作ってみる価値はかなりありそうでした。
ランチ

IMG_0227
学生支援を出していただいた協賛起業のLTを聞きながら美味しいお弁当をいただきました。
また、YAPCの参加者にはカレーやたこ焼き、スイーツをいただけるチケットをいただけるのでたこ焼きや10円パンをいただきました。
企業ブース
さまざまな協賛企業のブースに回りました。ノベルティをいただいたり、クイズに参加したりして楽しみました。スタンプラリーもあったためコンプしました。

IMG_0226
クレジットカードを製造する技術
普段利用しているクレジットカードがどのように作られているかを説明していただきました。カード番号やセキリュティ番号の作られ方の説明や鍵の管理についても学べました。
チップや磁気カードの違いや認証もお話されていました。
ライトニングトーク
さまざまなLTが短時間で行われました。カンファレンスに行く意義や、正規表現、perlとrubyの違い、クリエイティブコーディングなどさまざまありました。
keynote
moznionさんがDevelop to Survive - YAPC::Hakodate 2024 Keynoteというタイトルで発表されていました。プログラミングとの出会いや開発者にとってのとてもいい言葉が多くありました。とてもよいLTでした。
懇親会

懇親会
おいしいごはんを食べて、さまざまな方とお話をしました。頑張っていろんな人と話すことでいろいろなお話を聞くことができました。新しい人との出会い、知っていた方とも話すことができました。
まとめ
YAPCに参加できて大変よかったです。技術者に取って楽しめるお祭りした。多くの知らない技術をしることもでき、新しい学びとなりました。次こそ自分も登壇できるように努力していきたいと思いました。 運営の皆様もありがとうございました。 大変よい経験であり、楽しむことができました。ありがとうございました。
函館山