はじめに
普段主にPHPを使ってアプリ開発をしている@HaruKado777といいます。
7/26(水)に【PHP Tech Talk】PHPの今を語る!4社合同勉強会に参加しました。
勉強会で学んだことのアウトプットも兼ねて記事を書きたいと思います。
当日は下記のスケジュールで実施されました。
19:10 PHP の新しいバージョンはどのようにして生まれるか / インフィニットループ
19:25 コロプラはなぜゲームアプリケーションで PHP を使い続けるのか / コロプラ
19:40 サイボウズとGaroonとThe PHP Foundationと私 / サイボウス
19:55 ふつうのpixivの作り方 / ピクシブ
20:10 パネルディスカッション・質疑応答
「PHP の新しいバージョンはどのようにして生まれるか」についてがとても興味深かったので、今回はその記事について書きたいと思います。
PHP の新しいバージョンはどのようにして生まれるか
新しいバージョンはなぜ生まれるのか?
主にバグ修正・セキュリティ修正・環境への追従のために、新しいバージョンが生まれます。
言語も処理系も人が作っているものため、バグは避けることができないものです。
また、依存するライブラリに問題が見つかる場合もありますので、その場合も対応が必要になります。
CPUやOSの新機能を使って高速化するなどポジティブな環境追従などで新しいバージョンが生まれる場合もあります。
言語改訂
普段使っている言語をさらに便利にしたいという要望に応える為、新たな言語機能が導入されます。
また使ってみて問題を起こしやすい言語機能があれば改訂・廃止されます。
言語改訂に対応するのは面倒です。しかし、プログラミング言語は多くあるので、使いづらい言語は徐々に使われなくなってきます。
新しいバージョンはいつ生まれるのか?
リリースの種類は、ポイントリリース、マイナーリリース、メジャーリリースの3つがあります。
3つのリリースをPHPのバージョン8.27を例に分類すると下記になります。
ポイントリリース
- 8.2.7の7の部分
- 原則的に言語改訂を含まない
- バグ修正やセキュリティ修正のみが行われる
- ほぼ毎月のペースでリリースされる
マイナーリリース
- 8.2.7の2
- 機能追加のような言語改訂を含む
- スクリプトについて後方互換性のない修正は基本的に入らない
- 年一回のペースでリリースされる
- サポート期間は大体3年
メジャーリリース
- 8.2.7の8
- 機能追加のような言語改訂を含む
- スクリプトについて後方互換性のない修正も入る
- マイナーリリースで非推奨化されてきた機能が一気になくなったりする
- リリース感覚に決まりはない
新しいバージョンはどこで生まれる?
まず、処理系のソースコードはGitHubのphp/php-srcで管理されています。
不具合があった際は、isuuesで不具合報告をすることができます。
些細な修正に関してはコミット権を持つコア開発者が直接コミットしたりすることもあるそうです。
言語改訂には合意形成が必要になるため、internals MLを通してどのような改訂が必要かを議論します。
議論の参加は自由で、RFCプロセスに従って改訂が提案され、投票が行われます。
MLに参加していない人でもアーカイブサイトで議論の経緯が追えます。
新しいバージョンはどのように作られているのか?
RFCプロセスの概要
RFC(Request For Comments)とは、言語改訂を提案→議論→決議するためのプロセスです。
phpはよく言えば民主的な言語で、全ての方針を決定づけるような個人がいません。
下記RFCプロセスの詳細です。
- php.net のWikiでRFCを書く
- internals MLでアナウンス
- 言語改訂の提案には告知から最低2週間の議論が必要
- MLで投票開始をアナウンス
- 2/3 以上の賛成で承認
- 投票権を持つのは一部の人々
- リポジトリへのコミット権を持つコア開発者
- internalsでの議論意欲参加するコア開発者に認められた人
新しいバージョンは誰が作っているのか?
PHPはOSSプロジェクトのため、多様な人々が開発に参加しています。
PHPの言語処理系の開発に余暇で関わりたい個人や、PHPのの改善から利益を得る会社の従業員、言語処理系の作られ方を学びたい学生などが参加しているようです。
ネブラスカ問題
現代のシステム開発は至る所でOSSを利用しており、OSSはさらに別のOSSに依存しています。重要なシステムが一個人に依存していたりします。
PHP Foundation
PHP Foundationとは、2021年11月に設立した、寄付を集めてphpのコア開発者を雇う団体です。
現在までに100万USDを調達し、現在は6人のフルタイム・パートタイム開発者を雇っているそうです。
感想
普段利用しているPHPが、なぜ、いつ、どこで、どのように、誰が作っているのかざっくりと知ることができました。
普段PHPを利用しているのものあまり、この辺を意識して開発をしたことがなかったので良い機会になったと思います。
せっかくの機会ですので、PHPのRFCの詳細だったり、GitHubのコードを読んでみたりしてみたいと思います。