見出し画像

PHP カンファレンス 2023 に参加 && 登壇してきました。

はじめに

みなさん,こんにちは!めもりー(@m3m0r7)です。
10 月といえば PHP カンファレンス(東京)ですね。

今回はオフライン開催ということで,今までお世話になった方々とご挨拶できました。
東京に限らず,PHP カンファレンスが素敵なのはエンジニア同士の繋がりが広がっていくところだと思っています。

現職では PHP を使っているわけではないので,以前よりも PHP カンファレンス関連のイベントの参加は控えるようになるので少し寂しい思いがあります。参加できるものはできるだけ参加したいなと思います。

登壇について

本編

さて,登壇した内容は本編と懇親会の 2 つがあります。

本編では「RubyVM を PHP で実装する〜 Hello World を出力するまで〜」というものです。

タイトルは過去に私が Builderscon で登壇した「PHP で JVM を実装して Hello World を出力するまで」のオマージュです。

直近では,執行役員 CTO という立場もあり,技術的な内容よりもビジネス的な内容の発信が多くなってしまいがちでした。
なかなか技術に寄った内容を発信することも叶わず「めもりーさんって人は技術力がない」といったコメントも時折頂いていて胸を痛めていたりしていました。いや本当は技術的な内容も発信したいよ?と思いつつね。

このような最中で,今年の 7 月に株式会社エンペイにエンジニアとして入社(今年の 10 月から EM に就任しています)をしました。一介のエンジニアとしては,今までは PHP を書いている企業を選んでいたのですが,CTO という経験を経てからキャリアの考え方をガラッと変えました。

詳しくは以下の記事で:

で,本題の RubyVM についてです。資料でも触れていますが「普通に」プログラミング言語を学ぶのにそこまでモチベーションが上がらないのです。書いてあるコードを見れば,一般的に広範囲で使われている言語から逸脱しているシンタックスさえなければ,大体やりたいことがわかります。

資料に記載されていない登壇中の発言で「私は魔王城についたらゲームを辞める」という話をしたのですが,それに似ています。魔王城まで遠ければ遠いほど楽しいと感じるのです。ゆえに,ニッチなことをやってなんぼです。

とはいえ,がんばって魔王城以降も苦痛を感じながらも進めますが例えば「装備が弱くて戦えない」とか「レベルが低くて進めない」みたいな状況であれば「いや集めたり,レベリングすれば終わるんでしょ,つまんな」と思ってしまってゲームを放棄してしまいます。

最近出た AC6 も「こうやってロボットとと戦っていくだけでしょ」ってなってしまって実はチュートリアルでリタイアしました(笑)エルデンリングも同じです。

ラスボスの正体が明らかになっていないアクション RPG であったり最後まで伏線が回収できていないものは結構好きなので,ロックマンエグゼとか一部のテイルズオブシリーズ,ベヨネッタなどは結構ラスボスまで倒したりします。
(テイルズオブベルセリアはラスボスが明らかであったので,ラスボス手前でリタイアしちゃいましたが)

RubyVM を始めたのも魔王城まで遠そうだぞ,という思いや背景があったのです。

実はエンペイに入社するよりも前に RubyVM を PHP で書くのを挑戦していた時期があります。いつ頃だっけなぁと X を遡ったところ 2019 年に話題を出しています。

4 年前くらいに始めたのか。たぶんまだ BASE 株式会社に在籍していたころでしょうか。4 年越しの挑戦ということですね。いい話だ〜。

こう見ると当時は分からなかったことが,分かってきている,つまり成長を実感できているワケです。

自作 RubyVM は今では FizzBuzz,フィボナッチ数列,クイックソートが動いたり,割と面倒くさいキーワード引数や splat の実装だったりも終えています。

まぁあとはひたすら命令を実装していくだけです,がちょっと魔王城に到達してきたような感覚がいまあり,続けようか悩むところです。

噂によると Ruby の Lexer/Parser 周りを実装するのが鬼ほど難しいという話を小耳に挟んでいるので,そっちを PHP で実装して YARV にコンパイルするみたいなのをやるかもしれません。面白そうだし。時間の確保がなかなか難しいですが。

先ほど記載した PHP で JVM の実装では,PHP で書かれたコードを JVM 用のファイル (class ファイル) にコンパイルして他の JVM 言語で動かせるようにしたりする遊びとかもやってました。

PHPJava は PHP のシンタックスを用いて PHP を JVM 言語として扱うことが可能です。 この機能は nikic/php-parser を用いて、 PHP を 抽象構文木 (a.k.a Abstract Syntax Tree) に分解し、 PHPJava のアセンブラを用いて JVM の中間コードを構成し、 PHP が JVM 言語として java コマンドで動作するようになります。 これは、他のどの機能よりも試験的な実装で、やらなければいけないことがたくさんあります。

懇親会 LT

久しぶりに懇親会 LT に応募しました。最近は私なんかよりももっと若い方(言うても私もまだ 20 代ですが…)のために枠をあけたほうがいいかなという気持ちもあり,懇親会 LT への応募は他の PHP カンファレンス含め控えていました。

その中で久しぶりに懇親会 LT を申し込み「本当の FizzBuzz」ってやつを見せつけてきました。

PHP らしさを取り入れた PHP 史上最高の FizzBuzz になっています(本当に?)。
LT 開始時は「みんな〜!酒飲んでるか〜い!?」っていう出だしから始めたわけですが,あのときは私はシラフでした。

この言葉を胸に刻んで生きています。

おわりに

長々と思いを馳せてしまいましたが,いつも PHP カンファレンスに参加させていただき,そして楽しませていただきありがとうございます。

このような場があるのも,スタッフの皆さん,他の登壇者の皆様,そしてオーディエンスの皆さまがいらっしゃるからこそだと思います。

本当にありがとうございました。また来年もよろしくお願いいたします。

この記事が参加している募集

夏の思い出

この記事が気に入ったらサポートをしてみませんか?