見出し画像

phpcon2023に行ってきた話

TL;DR

  • 10/8に開催されたPHPカンファレンス 2023に行ってきた

  • PHP-srcの深淵を覗いた

  • PHPがインタープリタ言語であることを再認識した

  • PHPの配列について学んだ

  • 良いテストを書いていこう!

  • スケーラブルサービスの設計はなかなか難易度高めだったがめちゃくちゃささった(言語の選定が悩みそう。。え、PHPは?)

  • C言語、アセンブリから始まりテストについて触れ、設計に触れ、コンピューターアーキテクチャで終わる

  • 結果、PHPでファミコンエミュレータ制作熱が沸き起こった!

僕が聴講したセッション(聴講順)

前置き

10/8に開催されたPHPカンファレンス 2023に参加してきました。
僕は前回の2022が初めてなので、今回で2回めの参加になります。



場所は、おなじみの大田区産業プラザ。

大田区産業プラザ

前回は4Fでの受付でしたが、今回は1F。
当日スタッフを受け持っていた同僚とエスカレーターに乗り込む直前で会えたんですが、「受付1階ですよー」って教えてくれなかったら、思い込みで4階まで行くところでした。

受付は1階って書いてありましたね。。

知らない人のために少し説明すると、PHPカンファレンスとは、日本PHPユーザ会が主催するPHPに関するイベントで、国内の業界トップランナーによるPHP最新動向や、コアテクノロジーからPHP初心者向けの様々なセッションを楽しめるイベントです。これからPHPをはじめる方から、さらにPHPを極めていきたい方まで幅広く楽しめるようにという思いが込められたイベントです。無料で参加することができます。老若男女、キッズも訪れることができるのが良いですね。(小学生以下は保護者同伴のようです)


開始30分前についたのですが、ブースでは各スポンサー企業様がせかせかと準備をしている様子。
とくに待ち合わせもしていなかったのですが、前日行くと言ってた同僚とも無事会うことができました。(1階受付っていいですね。)

前回はまだコロナ禍であり、オンラインとのハイブリット開催ともあってそんなに人もいなかったのですが、今回はなかなかの盛況ぶり。
お祭り感あって、ワクワクしますね。

基調講演が始まる前に、軽くブースめぐり。
今年はスタンプラーがあるとのことで、これはコンプリート目指さないと。
(と、結果的時間切れですべてを回ることは出来ず、4回引けたくじ引きもすべてハズレ。ステッカーのみゲットでした)
(TODO:ここに絵を挿入)

基調公演では、「PHPの今とこれから2023」と題して廣川類さんが今とこれからの未来を語ってくれました。7系のバージョンを使っている人が6割ほどらしく、会場にいる方もだいたいそんな感じでしたかね。
8系ではJITも導入されたので、ますますパフォーマンスは上がるのかなぁと思いきや、ベンチマークによればたしかに言語の性能としては上がっているけど、アプリとして性能があがるかどうかは環境などケースバイケースのようですね。
それにしてもPHPって1994年にRasmus Lerdorf氏が生み出したわけですけど、30年経った現在に至るまでさまざまな人達の支えがあって今日があるんですねぇ。すごい。
(phpの歴史について興味ある人はこちらこちらをどうぞ)

Rasmus氏曰く、PHPは歯ブラシみたいなものとのこと。歯ブラシに気を止める人はいないけど、進化し続けていることに価値があるとのこと
なるほど、これを聞いて、僕は、日常で歯ブラシを気に留める人はいないけど、歯ブラシがないと歯を磨くことは出来ないわけだしなぁ。

なので、今後のPHPの動向も大いに期待し、応援したいと思います。
(ここでいったん終わっても良い気がするな)

ここからは各セッションについて簡単に感想を述べていきます。

各セッションを聴講した感想

聴講セッションその1「嗚呼我が愛しきインタープリタ」

1つ目は、簡単に言えば、PHPはどのように動作しているのかという話。

最近8系よりJITが導入されたりしてコンパイルが走ったりするもんだから、ついつい勘違いというか忘れがちなんですが、PHPってインタープリタ言語なんですよね。

で、PHPって内部はC言語で記述されているんですね。
C言語は、僕が学生時代の頃(はるか昔のそれこそPHPが誕生したくらいの頃)プログラミングを学んだ言語の一つになるのですが、懐かしいなぁと思いながら聞いておりました。


で、C言語はマシン語(数字の羅列)に翻訳されて初めてコンピューターが理解できるものになる。ただ、数字の羅列では人間が読むにはつらすぎるので、ある命令をプログラミングするのに人間がわかりやすく記号化するんですが、これをニーモニックと呼ぶらしいですね。
あ、アセンブリのことかな?って思いながら(正確にはアセンブリはプログラミング言語のことではないと思うけど)、昔聞きかじったことを思い出しながら聞いておりました。

これをこの方、学生時代にやっていたのを社会人1年目で発表しちゃうなんて、強い、強すぎる。

ちなみに、phpのソースコードは公開されています。
興味のある方は、php-srcを参照してみてくださいね。

聴講セッションその2「PHP8.2から見る、2つの配列」

お次は配列の内部構造がどうなっているかというお話。
またしてもphp-srcでC言語のおさらい
8.2からは2つの配列があるんですね。
通常のHashTableを用いる方法とPacked Arrayといっていってキーがそのまま添字になるもの。
中身を知ると、なるほど~って思うと思いますが、そのときはなんかわかった気になっていたことが今気がついたので、おさらいしたいと思います。
(結局用途というか使い分けがイメージできてないので)

ランチタイム

朝あんまりたべていなかったので、同僚とランチタイム
大庄水産で日替わり焼き魚定食をオーダー。
頼んでから5分くらいでやってきたので、びっくり。
鮭の西京焼きに小鉢にマグロのぶつ切りが付いているという太っ腹。
これで980円。

日替り焼魚定食

お刺し身も食べたかったので、大満足。

聴講セッションその3「良いテストとは何か:持続可能で保守性の高いテストを書く」

午後から聴講再開。
良いテストとはなにか?
当田さんは、「価値の高いテスト」と定義しておりました。
では、価値の高いテストとはどういうことか。
方程式はこうです。
価値=機能÷コスト
つまり、価値の高いテストとは、テストの機能とテストのコストに観点をおいて、2軸の4象限で各々のバランスを考えることなんですね。
機能がめちゃくちゃ良くても、コストがめっちゃかかるようでは、価値は低くなりがちだし、コストが低くても機能が悪ければ本末転倒ですしね。
以下は僕の勝手な解釈です。
高機能x低コスト(理想)
高機能x高コスト(コスト面をなんとかしたい)
低機能x低コスト(機能面をなんとかしたい)
低機能x高コスト(論外)

さらに、機能とコストを分解して、解説してくれておりました。
個人的には、良いテストの指標を定義しているところが参考になりました。
(指標がないと定量的に価値を見いだせませんからね)

聴講セッションその4「ユニットテスト環境整備~みんながテストを書ける環境へ」

またまたテストに関するお話。
登壇者当田さんの会社では、Codeception(リンクが合っているかはちょっと自身ない。)というのを活用していたけど、なかなかみんなテストを書けるような環境にならないので、PHPUnitに切り替えたら、書けるようになったよとのこと。切り替えた理由は、参考できる豊富なドキュメント量とサンプル量とのこと。もちろん他の施策も解説してくれていましたけど、印象に残ったのは、諦めないという姿勢。貴社は15年経ったプロダクトにも導入できると語っておりました。既存コードにテストコードを入れていくのってなかなか大変だと思うけど、最近ではChatGPTやGitHub Copilotも出てきて、手助けしてくれるツールが増えてきているので、環境整備はいくらかやりやすくはなってきているかもしれませんね。

聴講セッションその5「スケーラブルサービス――疎結合に成長するシステムに不可欠な要素」

成瀬さんのセッション。
PHPというよりは設計寄りのお話。
でもスケールを変えるということを、わかりやすく図解しながら解説を進めていくので、難易度は高めでしたが、やりたいことは理解したつもりです。
昨今、処理を切り離す場合に、マイクロサービスにして、今までのサービスと組み合わせるという手法がもてはやされているみたいですけど、そうしなくてもなんとかする方法があるよということ。
では、PHPはどこで書くのが良いだろうか?というところも触れているので、よかったら以下で確認してみてくださいね。


聴講セッションその6「PHPからはじめるコンピュータアーキテクチャ」

PHPerKaigiで主催もやっている長谷川さんのセッション

開始前に、アイスブレークしてくれるあたりが流石だなぁという印象。
(カンファレンスによっては開始前にマイク触っちゃだめなところもあるようですが、phpconは大丈夫な模様)

コンピューターアーキテクチャの話なんですが、
プログラムの実行に関することと、ハードウェアからプログラムの動作までの間、多くのレイアーに分かれている話をPHPを入り口にとてもわかり易く解説してくれました。
で、目からウロコというか、あーそうなのか!って今更思ったのが、実行する人って自分より下のレイヤーを気にすることなく実行できるってこと。
だから、その部分を理解しなくてもたいていプログラマはプログラムを書けるのだけど、逆にその部分を理解しておくと、別のレイヤー上で動作させることもできるというわけです。

ここで僕が一番唸ったのが、PHPで動くファミコンエミュレータを作っちゃったということ。

そうなんです。実行してくれる下位のレイヤーを気にすることなく動作するのあら、下位のレイヤーがファミコンである必要はないのです。

いままでならば、へぇ~すごいなぁで満足しちゃうのですが、最近技術熱があがったのか、これ自分でもやってみたくなっちゃいました。

ということで、ちょっと水面下でバタバタとエミュレーターを作る旅に出ようと思います。

他色々聴きたいセッションはあったけれども

まぁ、かぶっていたり、ブース巡りもしたいとあって、セッションはここまで。あとは、後日アップされるであろうアーカイブの動画やスライドを確認したいと思います。
(トークスピーカーについては、connpassのphpcon2023のトーク・スピーカーに一覧が載っています。)

出店ブースめぐり

今回ブースに関する催しでは、スタンプラリーがありました。
これはコンプリートしなくてはとおもったんですが、出典してくれた各企業さまのブースの方々と雑談するのが楽しすぎて時間配分間違えました。
同僚から「くじ引きしました?もう景品のこりわずかですよー」ということで、途中で引きにいったら、なんとラスト(時間的にこの後は片付けに入るということで)
4回引いたけど、すべてハズレ。
まぁ、こういうのはさっさとやるべきですねぇ。

今回新たに知る企業もあったのですが、やはり認知してもらえるというのが良いようで、はじめの一歩はそこからなんですよね。


39でコンプリート。行きたかったブースにいけずじまい。とほほ


LT大会

結構歩き疲れていたので、ぼーっと聞いていたのですが、ざっと2,3百人を目の前にして、5分間というなかで、面白おかしく、ときに冷静に、発表する登壇者にただただすごいなぁという感想でした。
この前で登壇したら度胸付きそうだ。

懇親会

当初、参加しないつもりだったけど、なんだかみんなの熱に感化されたのか、急遽参加することに。

同僚がスタッフしていたので、全く一人ではないのしても、ほぼ知らない人ばかりの(登壇している人など有名な人は一方的に知っているのだけど)中で、大丈夫かなぁ、輪に入っていけるかなぁなんてドキドキしてしてましたが、勇気を出して、話しかけたら、みんな気さくに答えていただけてホッとしました。

4分間LT大会も繰り広げられていたのだけど、みんなすごいな。
一つやってみようと思ったのは、「NFCタグを作って繋がりやすくしよう」という発表を聞いて、早速アマゾンでカードをポチりました。

やり方はど忘れしているので、自分でも調べてみたいと思います。

総括

一言で言えば、楽しかったです。

PHPにはまだ2年くらいしか経っておらず、僕がプログラミングに触れた頃にできたものがこれだけ長いこと様々なサービスやシステムを支えているということに改めて感じ、技術ってやっぱすげーって思うとともに、僕自身もなにかちょっとでも貢献できたらいいなぁと、今度はスタッフをやってみようと思いました。

おまけ~ノベリティや収穫品

phpconはエコバック。余ったものもいくつかもらってきました。

エコバック


収穫品



最後までお読みいただきありがとうございます。 いかがでしたか。 あなたの心に良いなにかが残るきっかけになれば幸いです。 感想いただけたらとても嬉しいです! サポートしていただいたお金は、私が応援したい人をサポートする際、使わせていただこうと思っています。