Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新しいPHP拡張モジュールインストール方法「PHP Installer for Extensi...

02
April 12, 2025

新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!

PHPカンファレンス小田原2025で話した「新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!」で使用したスライドです

関連:https://github.com/cocoeyes02/phpconodawara2025-pie

02

April 12, 2025
Tweet

More Decks by 02

Other Decks in Programming

Transcript

  1. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! | BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions (PIE)」を 使ってみよう! 02 @PHPカンファレンス小田原2025 2025.04.12
  2. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! Speaker Profile 2 02 Otsu Kazuki BASE BANK Dept. Engineering Program Manager :@cocoeyes02 PHPカンファレンス2024,2025 実行委員長
  3. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 3 今回話すこと • PIEとは? • PIEを実際に動かしてみる • PIEの仕組みや背景を広く浅く解説する
  4. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 4 今回話さないこと • PIEの最適な運用 ◦ まだ開発初期段階なので、今後のアップデートで最適 な運用も変わりそう • PIEをクラスレベルまでリーディングする ◦ リーディングのヒントになる資料や図は紹介します
  5. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 6 PIEとは? 新しい PECL の要件 このドキュメントでは、PECL の代替として必要な要件について説明します。現在の PECL は以下の要素で構 成されています: • インストーラー兼パッケージャー(pecl コマンドラインツール) • ウェブサイト(pecl.php.net) • パッケージの内容を記述する方法(package.xml) このウェブサイトと pecl ツールはかなり前に作られたもので、保守性の問題やコードの劣化に悩まされてい ます。PECL には、パッケージの署名や、PHP バージョンごとの対応拡張の最新バージョン検索といった、現 代的な機能が欠けています。 このドキュメントは、PHP 拡張エコシステムを最新のプロセスに追いつかせるための代替ツールに必要な要 件をまとめたものです。(後略) https://docs.google.com/document/d/1_N0E9xo3jn9aKrIZHIbTYaY5lXw71BpSO6-it4cRpDo/edit?tab=t.0
  6. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 7 ざっと初期段階の要件をまとめると • PEAR に依存しない、新しいPHP Extension(C言語製のPHP拡張モ ジュール)インストール方法 • PECLの代わりとなることを強く意識して生まれた • 初回リリースするものと将来的にリリースするかもしれないもので スコープを分けてリリースする https://docs.google.com/document/d/1_N0E9xo3jn9aKrIZHIbTYaY5lXw71BpSO6-it4cRpDo/edit?tab=t.0 PIEとは?
  7. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 8 PIEの設計ドキュメントも公開されています https://github.com/ThePHPF/pie-design PIEとは?
  8. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 9 PHP Foundation内でのdisucussionした公開ログも(45分のログ) https://gist.github.com/pronskiy/621bc8f8e901d4cd1f5a630c463be5b2 PIEとは?
  9. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! © 2012-2025 BASE, Inc. 10 PIEをインストールしてみる 10
  10. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 11 PIEをインストールしてみる PIEのインストール手順 https://github.com/php/pie/blob/main/docs/usage.md
  11. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 12 PIEをインストールしてみる せっかくなので、PECLとPIEを使ってインストールしてみましょう 例:Xdebug環境をDockerで用意する 試したい方はURLからどうぞ! https://github.com/cocoeyes02/phpconodawara2025-pie
  12. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 13 PIEをインストールしてみる PECL https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pecl/Dockerfile
  13. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 14 PIEをインストールしてみる PECL https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pecl/Dockerfile PECLでxdebugをインストールする
  14. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 15 PIEをインストールしてみる PIE https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie/Dockerfile
  15. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 16 PIEをインストールしてみる PIE https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie/Dockerfile PIEに必要な依存関係を追加する
  16. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 17 PIEをインストールしてみる PIE https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie/Dockerfile PIE自体をダウンロードする
  17. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 18 PIEをインストールしてみる PIE https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie/Dockerfile PIEでxdebugをインストールする
  18. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 20 PIEをインストールしてみる PECL PIE 単純な比較だが、xdebugなら PIEの方が処理早い? (条件揃えてベンチマークしてみ ても面白いかも)
  19. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! © 2012-2025 BASE, Inc. 21 PECLとPIEの使用感を 比較してみると 21
  20. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 22 PIEはComposerライクな仕様 で柔軟性がある
  21. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 23 PECLとPIEの使用感を比較してみると 一例を紹介します • バージョニング • ダウンロード元について
  22. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 24 PECLとPIEの使用感を比較してみると 一例を紹介します • バージョニング • ダウンロード元について
  23. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 25 バージョニング PECL • 何もバージョン指定がない場合、常に最新バージョンを持ってくる • バージョン指定する場合は、完全固定(xdebug-3.4.1みたいな)
  24. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 26 バージョニング PIE • 何もバージョン指定がない場合、条件に合う中で最新の安定バー ジョンを持ってきてくれる • Composer同様の記法を採用しているので、柔軟なバージョン指定 ができる(~1.0、^2.3@beta)
  25. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 27 バージョニング https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie-versioning/Dockerfile バージョニング
  26. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 28 https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie-versioning/Dockerfile 3.4.1 or 3.4.0がインストールさ れる(この場合は3.4.1) バージョニング
  27. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 29 PECLとPIEの使用感を比較してみると 一例を紹介します • バージョニング • ダウンロード元について
  28. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 30 ダウンロード元について PECL • 基本PECLリポジトリのみダウンロードできるので、時にはローカル で手動ビルドすることも・・・ ◦ 「PECLには古いバージョンしかない」 ◦ 「バグフィックスがGitHubリポジトリにだけある」 • channel.xmlを使ってPECLリポジトリ以外をダウンロード元にする 事もできるが、今だと使いづらい ◦ REST APIである必要がある ◦ .tgz のパッケージや package.xmlが必要
  29. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 31 PIE • 様々な経路でダウンロード、ビルド&インストールが可能 ◦ packagist(基本はここがデフォルト) ◦ private packagist ◦ packagistに登録していないgithubリポジトリ ◦ ローカルファイルで • 経路を変えてあげるだけで、手動でビルドする必要がなくなる ダウンロード元について
  30. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 32 https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie-download-repository/Dockerfile ダウンロード元について
  31. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 33 https://github.com/cocoeyes02/phpconodawara2025-pie/blob/main/pie-download-repository/Dockerfile ダウンロード元について Githubリポジトリから 直接ダウンロードするようにする
  32. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 35 PIE • 様々な経路でダウンロード、ビルド&インストールが可能 ◦ packagist(基本はここがデフォルト) ◦ private packagist ◦ packagistに登録していないgithubリポジトリ ◦ ローカルファイルで • 経路を変えてあげるだけで、手動でビルドする必要がなくなる ダウンロード元について(再掲)
  33. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 36 1. 条件に合う中で最新の安定バージョンを持ってくる a. composerがメタデータを取得しにpackagistへリクエストしている 2. ファイルをビルド or 取得 a. ファイルを解凍してビルド(Windows 以外) b. DLL を取得(Windows) 3. インストール a. Make Install(Windows 以外) b. DLL をコピー(Windows) 4. リリースノートを表示して、ダウンロードとビルドファイルの削除 packagist経由でPIEのインストールをする
  34. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 37 クラス名に違いはありますが、大まかな全体像は初期構想時点の図を 見るとよいです!(コードリーディングにも役立ちます) packagist経由でPIEのインストールをする https://github.com/ThePHPF/pie-design?tab=readme-ov-file#high-level-overview
  35. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 38 現在packagistで対応しているPHP拡張モジュール一覧 https://packagist.org/extensions 新規で登録するには・・・ 1. composer.json に必要な情報を書いてコミットする 2. https://packagist.org/packages/submit にアクセス 3. リポジトリのURLを入力し、手順に従って登録 (Windowsの場合はビルド済みのdllを用意するなど別の手順が必要です が、時間の関係で割愛します🙏) 新規のPHP拡張モジュールをpackagistに登録する
  36. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 39 現在packagistで対応しているPHP拡張モジュール一覧 https://packagist.org/extensions 新規で登録するには・・・ 1. composer.json に必要な情報を書いてコミットする 2. https://packagist.org/packages/submit にアクセス 3. リポジトリのURLを入力し、手順に従って登録 (Windowsの場合はビルド済みのdllを用意するなど別の手順が必要です が、時間の関係で割愛します🙏) 新規のPHP拡張モジュールをpackagistに登録する
  37. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 40 composer.jsonに、”php-ext”に続いて書く 新規のPHP拡張モジュールをpackagistに登録する https://github.com/ThePHPF/pie-design?tab=readme-ov-file#extension-maintainer-register-a-pie-package
  38. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 41 PHPerKaigi 2025にて、きんじょうひできさんがパンフ記事に書いた、 「PIEとPackagist」がpackagistへのリクエストの理解に役立ちます! 新規のPHP拡張モジュールをpackagistに登録する https://fortee.jp/phperkaigi-2025/proposal/729a5966-42ed-4199-abc4-54017d795ace
  39. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! © 2012-2025 BASE, Inc. 42 初期リリースから外したもの 42
  40. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 43 ざっと初期段階の要件をまとめると • PEAR に依存しない、新しいPHP Extension(C言語製のPHP拡張モ ジュール)インストール方法 • PECLの代わりとなることを強く意識して生まれた • 初回リリースするものと将来的にリリースするかもしれないもので スコープを分けてリリースする https://docs.google.com/document/d/1_N0E9xo3jn9aKrIZHIbTYaY5lXw71BpSO6-it4cRpDo/edit?tab=t.0 PIEとは?(再掲)
  41. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 44 • pie self-update • Windows 環境での動的バイナリビルド • Windows 以外のプラットフォーム向けバイナリ配布 • プロジェクト単位での拡張機能インストール • 署名インフラと署名の検証処理 • composer.json 内に Changelog セクションを追加する機能 • PIE ツールに「search」機能を追加すること • composer.json ファイル内でセキュリティ上の問題を一覧表示する https://github.com/ThePHPF/pie-design?tab=readme-ov-file#out-of-initial-scope 初期リリースから外したもの
  42. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! 45 まだ開発初期段階とのことなので、開発環境や試験的なプロジェクト だったら導入してみても良さそうかなと思いました! 本番環境で使用するのは、まだ慎重になった方が良いかも・・・ composerみたいにプロジェクト毎でPHP Extentionがインストール、 管理できるようになったらアツいなあ・・・と個人的には思います! 今後の動向に注目しましょう! 最後に
  43. #phpcon_odawara © 2012-2025 BASE, Inc. 新しいPHP拡張モジュールインストール方法 「PHP Installer for Extensions

    (PIE)」を 使ってみよう! BASE Recruitment Information Our Mission Payment to the People, Power to the People. 自分の好きなことを仕事にしたり経済活動を行っている個人やスモールチームのエンパワーメントを目指しています。 46 BASE BANKで一緒に働くメンバーを大募集中! 絶賛募集中!! - Webアプリケーションエンジニア - シニアエンジニア - テックリード - とにかくエンジニア