Slide 1

Slide 1 text

#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

Slide 2

Slide 2 text

#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 実行委員長

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

#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

Slide 7

Slide 7 text

#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とは?

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

#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

Slide 12

Slide 12 text

#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

Slide 13

Slide 13 text

#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

Slide 14

Slide 14 text

#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をインストールする

Slide 15

Slide 15 text

#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

Slide 16

Slide 16 text

#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に必要な依存関係を追加する

Slide 17

Slide 17 text

#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自体をダウンロードする

Slide 18

Slide 18 text

#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をインストールする

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

#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) バージョニング

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

#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が必要

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

#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 ダウンロード元について

Slide 33

Slide 33 text

#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リポジトリから 直接ダウンロードするようにする

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

#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のインストールをする

Slide 37

Slide 37 text

#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

Slide 38

Slide 38 text

#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に登録する

Slide 39

Slide 39 text

#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に登録する

Slide 40

Slide 40 text

#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

Slide 41

Slide 41 text

#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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

#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とは?(再掲)

Slide 44

Slide 44 text

#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 初期リリースから外したもの

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

#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アプリケーションエンジニア - シニアエンジニア - テックリード - とにかくエンジニア