「光遅い」と言い放ったエンジニアさんの影を未だに追いかけている

いや、タイトル「何が何だか」って感じですが・・・

#phpcon2020にて喋ります〜

明日、どころか・・もう日付変わって本日行われるPHP Conference Japan 2020にてお喋りしてきます 🎉

fortee.jp

自分は「Composer2.0」の話をしますよ〜とプロポーザルを提出し、採択して頂きました。
実は「Composerの新バージョン」については、昨年のphpconでも取り扱おうとしていた話題ではありました。単純に発表時間が足りなかったのと、また開発状況としてもまだまだ途上だったので見送っています。

それが、1年越しに開催される同イベントで、CfPオープン期間には「v2リリースの目処が立ち」本番を迎えるまでに「安定版がリリースされ」・・・と、着実に続く時代の流れを感じながらも「もしかしたらずいぶん遠くに来ちまった」とも思ったりしちゃっています。

さて、そんな訳で今回お話する内容は自分の中では「前回の内容に引き続き」という面もあります。
(ただ、結局のところ実際にスライドに落としてみたら独立した内容になりましたがw)

その内容を知らなくても理解できる・・というか「読んでいたところで直接の役には立たん」かも知れませんが、
このセッションタイトルやプロポーザルに反応してくれた方であれば「Composerの話」は面白がってくれるんじゃないかな?ということで、紹介しておきます。

Composer 2のコードを追いながら

Composer2の話で、まずは公式のブログにあるリリース時の情報を特に参考にしています。 主な改善点・変更点はこの内容を見れば掴めるものです。

blog.packagist.com

明日の発表では、特に話題となっている&多くの人が直接的なメリットを享受しやすい「v1と比べてパフォーマンスが上がったよ」という内容について、その内の1つである「パッケージリスト・メタ情報の取得時の処理効率が爆上がり!!!」という話を中心的に取り上げる予定です。

「Composerのパフォーマンス」といえば、まず真っ先に思い浮かぶのは hirak/prestissimoプラグインではないでしょうか。
This package is abandoned がエモい。

packagist.org

(大変お疲れさまでした・・・!)

で。
改めて「v2のパフォーマンス改善に連なる文脈において、これまでどんな取り組み・やり取りがなされていたのか」を調べていった訳です。
そこで気付かされたのですが、「hirakさんすごい」「prestissimo偉大」だなと・・

そもそも、v2リリース後のサポート用の口で公式に言及されていたりなど。

f:id:o0h:20201212021147p:plain
https://github.com/composer/composer/issues/9329

このIssueは今回最もよく見た情報リソースの1つなのですが、何となく「タイミングさえ良ければもっと早くprestissimoのアプローチが本体に取り込まれていた可能性もあるのかな?」という気もします。

Parallel downloads for packages · Issue #3930 · composer/composer · GitHub

或いは、直接PRを送って議論を進めていたり。

Parallel downloader by hirak · Pull Request #5293 · composer/composer · GitHub

その他、「そもそもComposerが遅いのって何でだっけ?原因を正しく知る必要があるな」などと思ってググったら、内容的にドンピシャっぽいStackoverflowのQAがでてきたのですが・・

stackoverflow.com

ここで

I created a Composer plugin to download packages in parallel: https://packagist.org/packages/hirak/prestissimo

という発言をしている回答者が現れているんですよね。”I created”て。
で、回答者名を見たらご本人。なるほど・・・

きっと世界中に喜ばれている改修にも、少なからず影響を与えている(ような気がする)

自分としては、Composer2が出たよ〜というタイミングで、「さて今までの何が問題だったのかを紐解いておこう」と思い至ったわけです。
そしたら、結局2016年の「光の遅さに文句が言えるエンジニアになろう」で締めくくられるあの名スライドに語られている内容に戻ってきた、と・・・。

当然ながら、今回のv2による「改善」のアプローチや実施内容というのは、「プラグインで出来る範囲」にとどまりません。
というかPackagist.orgの改修との合わせ技にもなっているので。

それでも「もう何年も前に取り組んでいた人が存在するんだな、その成果を”何となく”で使っていつづけた面はあるな」と自らを反省すると同時に、「あぁ、凄い!」と素直に感心した次第です。

prestissimoの仕組みやcomposer/composerレポジトリ上での意見交換の様子を明日の発表に取り込む・・・というのは、残念ながら発表時間的にも論旨の選定や話の構成的にも難しそうなのですが、
いちユーザーとして感謝を表明したいと思ってこんな記事をこんな時間に書いてみました。

はぁ〜〜光の遅さに文句を言えるようになっていきたい!!

さてさて、明日の発表がんばるぞ💪💪💪