PHP Sessionless Conference(ピセカ)に参加しつつ「eBPFと周辺技術を利用してPHPアプリケーションコードを変更しない可視化をやってみる」というワークショップをどうにかやってきました

長タイトルまま、主に参加記録です。

PHP Sessionless Conference(ピセカ)という、セッションが一切なく全編ワークショップという若干狂ったカンファレンス(?)に参加して、かつeBPFのワークショップをやるproposalが通ったのでやってきました。

参加は楽しく、概ね目標は達成できたのではないかと思いますが反省もまたあるのでそんなこんなを書いておきます。

参加モチベ

  • ワークショップやる(参加者、ナビゲータとして)
  • eBPFで何ができるのかをPHPerな方々に知ってもらう

前者は今年自身がやる方のカンファレンスでワークショップ(的なもの)をやるぞ!と言いながらワークショップ経験いうてそんなにない、というのがあったのでワークショップもっと経験しないとな・・ワークショップばっかのやつあるじゃん、というモチベ。

後者については、最近意識の変化があり、やはりこれ使う人、関心をもつ人を増やしていかないとのちのち自分が使いたい時に困るんじゃなかろうか、というある種の危機感を背景に、根底としてはもちろん便利なツールとしての可能性を知ってもらいたい、というモチベでした。

当初ワークショップやることまではあまり考えていなかったのだけど、PHPカンファレンス名古屋2025のproposalが通らなかったのもあり、さりとてもろもろのスケジュールの都合で直近のPHPイベは見送り気味、あまり寝かせたくはない、というのもあり、どうせワークショップを学ぶならもう一周回ってもう自分でやればいいんじゃないか?となりこの内容でproposalを投げました。

自分がやったワークショップ

ワークショップ、登壇じゃないので表現が難しい、主催した、とか、なんか大げさでイベント主催感あるし、まあ、やりました(と書いていたらナビゲーターという表現を見かけた、なるほど、ナビゲーターしました)。

proposal

fortee.jp

本編

github.com

内容としてはebpf_exporterで最近遊んでいたPHP関連のトレースポイント(uprobe、USDT)をGrafanaで可視化するとこまでやるもの。

対象は普段PHPでサーバサイドのコードを書いている方なので、要素的にも馴染みのないであろうものも多く、これは準備が大変だなと思いましたが案の定大変でした。 ワークショップレポジトリの前日あたりのコミットログが結構アレなことになってます。

ただまあこの手のハンズオン的な内容でありがちな「上から順番にコマンド叩いたらなんかできたけどよくわからない」は避けたかったのでセットアップスクリプトは用意しつつ、要素技術の説明は入れ、あとで振り返ってやり直せるくらいのものを目指しました、目指したつもり。

内容が内容なので万人受けするとは思っていないが、せっかく手を動かすので少数でも刺さる人がいて、今後深堀りしたいなーと思ってもらえたら嬉しいところですね。

ワークショップに参加された方/レポを使って遊んでみたい方はぜひ、例えば自分の手元のPHPアプリで試したり、bpftraceであれこれフックを試してみたり、みたいなことを試してもらえるとより面白いんでないかと思います。

よかった点

  • 事前登録みて何人参加されるかなーと思ったけど結局11人参加されたはず、よかった
  • サーバ方面のトラシューに割と慣れている方がちょいちょいいて結果的に救われた&いい感じに質問を投げてもらいつつ進められた
  • セットアップスクリプトは頑張って仕込んだのでこれ自体の不具合は起きず思ったよりスムーズに進められた(時間切れはなるべく避けたかった
  • これほかでもできるかもな、という感触が得られた

反省点(たくさんある)

  • BPFプログラムのビルド部分での引っ掛かり、これはある程度時間がかかると認識していたが結構SSHセッションが切れてしまったりして完走できない人が出てしまった(場合によってはスペックアップで切り抜けてもらったり・・)
    • スペックの部分は難しく、本当はMySQLも入れてトレースしたら楽しいだろうなと思ったけど単純にちょっと大変なのと要求スペックが上がるので個人の持ち出し環境ではちょっとな、と思ってやめました
  • 時間配分はまあまあでいけたが進捗がわからないのでコントロールが難しい、めっちゃ進捗確認した、これはまあハンズオン全般的にそうかな・・
  • PHPのサンプルコードがだいぶひどい、個人で遊んでたコードをそのまま持ってきたのだけど、これはまあ時間切れですね
  • ebpf_exporterだけ手動で立ち上げるようにしたけど、今回に限ってはあまり意味なかったのでターミナル空けるためにこれもsystemd管理にしとけばよかったね、などなど
  • ワークショップの参加を見送った方に「BPF is 何」と結構聞かれた、これはタイトルの難しさですね、(懇親会で武田さんともお話したが)キャッチーにしたかったけど、要素としてはちゃんと入れたい、「APM作れますよ」みたいなのも考えたけど、ちょっとタイトル詐欺感があってうーん、となりました、結果これ、次あったらもうちょい考えたい
  • 最後に10分ユースケースのディスカッション時間をとっていて、これはできたのだけど自分が参加した島でトラシューしたり諸々話してたら時間がきてグループの発表時間がとれなかった、個別に聞いてまわったがこれはちょっと惜しかった・・

参加したワークショップ

PIE (PHP Installer for Extensions) をみんなで試そう by 小山哲志(こいほげ)

こちらは純粋に機能面の興味から。

ワークショップ自体はコマンドいれて動かしてみてextension入ったね、であとは細かいところを眺めつつ、ゆるゆると会話する感じでなんというか気楽な回でよかったですね。

PIE自体動かしてみて話を聞いてみると、あーなるほど、当初思ったんと違いますね(composerみたいにvendoringされるのかと思ったら実行中のPHP環境にグローバルにがっつり入りますねとか、iniまわりが空気読んでそれっぽいパスに入るとか)というのが実感できたのでこれはやはりやってみてなんぼというところ。

「こんなテストコードは嫌ぁ〜ダ!ヤダー!」を祓う会

こちらはディスカッションメインのザ・ワークショップとして参加。 実のところPHPでテストコード書いたことはないのですがまあテスト一般の話なのでいけるであろうということで。

Miroを使ってグループ分けからディスカッションを進行していくスタイルでワークショップのやり方として参考になるなーと思いつつ参加してました。

祓えたか?はわからんですがディスカッション通して違う視点が得られるのでこういうのがやはりいいですね。

カンファレンス全体

雑多に色々

  • オープニング、エンディングもワークショップで固めてこれはちひろさんこだわりだなあ、と思った次第、うまいことやってるなあと思いました
  • 会場はあれどスポンサー的なものはなく、ナビゲータをやる側もお金払って来てるので参加者の当事者意識が高い
  • 良くも悪くもコミュニケーション多量なので、人はまあ選ぶかも、そういう前提で来てるから参加者としては違和感なし

写真

全員に事前に許諾とっておくというストロングスタイルのはずなので人いれてもいいんだけどちょっと日和気味にあげておく、足すかも。

同窓会、ではないが

やはりPHPコミュニティなので顔見知りの同窓会っぽい雰囲気は感じつつ、自分はPHPコミュニティに多少顔出してたのは10年以上前であり、当時も特に熱心にコミュニティ活動してたわけではないので参加者はSRE NEXTスタッフでもあるちひろさん除いてほぼ初対面でした。一方的にフォローして知ってるぞーという人が多少いるくらいで。

という状況ではありながら、PHPは自分的にはホームの言語であるという意識はあるのでなんだか懐かしいぞ、と何をしていたのかというと老人会仕草をしてなんやかやとワイワイやらせていただきました、お話いただいた皆様ありがとうございます。またそのうちどこかの勉強会かカンファレンスにも参加したいが、次はちょっと(自分の方のあれこれが)落ち着いてからになるかな・・。

会場のピクシブさんも多分10年前のPHPめちゃ書いていた頃なんらかの勉強会で来たことがあってちょっとそういう懐かしみもありましたね。

おまけ