今までメンターをメインにインタビューを公開してきたTechTrain Media。今回はなんと、Laravelスペシャリスト武田憲太郎さんのインタビューを公開することになりました!
武田さんが取り組むPHP8.4のマニュアル日本語翻訳プロジェクトについてをお題に、PHP8.4を軸にPHPの歴史とこれからについて、そしてプロジェクトに取り組む中での想いについてなど余すことなくお伝えしていきます。
PHP8.4日本語マニュアル翻訳プロジェクト着手のきっかけ
「すごいバージョンがリリースされるのに、このままでは、日本のPHPコミュニティの人たちにこの凄さが伝わらないかもしれない...」
きっかけはこの危機感からでした。
実は、今まで他のメンテナの方がほぼ一人で翻訳を進めてくれていましたが、PHP8.4リリース前の3〜4ヶ月間、そのメンテナの方が多忙となっていたこともあり、翻訳自体の更新がない状態が続いてしまっていました。
今回のバージョンでは、私自身がPHP本体に機能を追加した機能もあります。初めて機能追加した思い入れの深いバージョンということもあり、リリースがされたら、自分の追加した機能の部分だけでも翻訳マニュアルを書かないとな、でも面倒だし、どうしようかな〜と悩んでいました。
そんな矢先に翻訳全体が止まっていることを知ってしまい、「ならば、この素敵な機能たちを広めるため、8.4全ての翻訳を私が進めてリリースに間に合わせなければ!」という使命感に駆られ、本プロジェクトをスタートしました。
▼Issue「PHP 8.4 マニュアル翻訳状況」
▼8.4リリース間近の武田さんのXのポスト
PHP 8.4のリリースまであと5日。
— 武田 憲太郎 (@KentarouTakeda) November 16, 2024
そして、恒例行事(?)ですが、ドキュメントのスケジュールがタイトですwhttps://t.co/6OBCInH9Ar
新機能を先取りしたい方、コントリビューションに興味ある方、各機能のエキスパートの方、是非ともIssueをご覧の上、気になる機能はプルリクご検討ください!
PHP 8.4は“歴史的転換点”になるようなバージョン
先ほどのきっかけでもお話ししたように、「PHP 8.4は歴史的な転換点になるようなすごいバージョンなんじゃないかな」と私含め、色々な方が話しているバージョンです。それがなぜなのかを、PHPのここまでの変遷とともにお話しします。
PHPコミュニティでは長年、JetBrainsに所属していたNikita Popov氏という天才的なプログラマーが中心となり、PHPの進化を牽引してくれていました。Nikita氏が天才的と言われている所以は、当時JetBrains内でのPHPの言語自体へのContributionsが第2位とさらにContributionsをするプログラマーがいる中で、言語の考え方自体を変えてしまうような破壊的な変更を加えていった点です。例を挙げると、7.0で構文解析(PHPスクリプトをコンピュータが実行可能な形式に変換するための解析処理)を書き直し、それを皮切りに続々と、オブジェクト指向原則や型に関する改善を取り入れていきました。また、7.4の継承エラー(リスコフの置換原則違反)の機能などもその代表例といえます。しかし、そんなPopov氏が転職を機にPHPコミュニティから離れてしまい、その後のPHP8.2や8.3のバージョンでは、新機能追加のペースはやや停滞気味となっていきました。私だけではなくPHPを扱うエンジニアの方々は、体感としてこのような印象を抱いているのではないかと思います。
ところが、8.4では、それまでのコミュニティ体制の再構築が実を結び、かつてPopov氏がいた頃の勢いを超えるような大量の機能追加が一気に実装されました。
そうはいっても、すでにここまで大きな変更がなされているため、Popov氏の追加した機能のような今までできなかったことができるようになる機能追加はそう多くありません。ただ、このバージョンリリースを「歴史的な転換点」と言わしめる最大の特徴は、別にあります。それは、すでにある機能がより洗練され、その洗練度合いが凄まじいという点です。かつての転換は「考え方」でしたが、今回は「書き方」です。その中には、言語自体を拡張するような手法で書き方を洗練させるような機能も含まれます。とにかくかなりすごいバージョンになっています。
これからPHPのバージョンはどうなっていく?
ここからは、新機能の議論の方針も踏まえて、私の想像の話になります。
まず、前述した通りPHPはすでに何度も追加機能の実装を経ていて、標準でできることの幅が広い高機能な言語です。そのため、これ以上今ある機能を便利にするネタはそうそうない気がしています。なので、今後の機能追加の方向性で言えば、Popov氏が機能追加を牽引していた時のような、「PHPでできないことをできるようにする」という言語の概念を覆すような大きな機能追加の方向にシフトしていかざるを得ないんじゃないかなと思います。
わかりやすい例を挙げるなら、非同期処理でしょうか。非同期処理は歴史的にPHPが苦手とする処理と言われており、プログラミングの考え方が異なる以上導入しようがないような機能をできるようにする。そんなPHPの概念を大きく変えるような機能追加以外には、変更をするタイミングはもうあまりないのではないかなと想像しています。
余談ですが、もしかしたら、この非同期処理の変更が実現すれば、PHPがISUCONで勝てる日も遠くないかもしれません........
翻訳プロジェクトを通してPHPのコミュニティを支える人を増やしたい
「8.4のマニュアル翻訳をリリースに間に合わせなければ」という思いがきっかけで着手したプロジェクトですが、動き出してからは、PHPコミュニティでのプルリクエスト1個でも経験したことがある人を1人でも多く増やしていくことを大事にしたいと強く感じるようになりました。
OSSの世界ではほとんどがボランティアだからこそ、関わる人を増やすことで、そのコミュニティが盛り上がっていくと思っています。翻訳プロジェクトは、OSSの中でも、はじめの一歩に最適です。今後、この翻訳ドキュメントでのmergeの経験が自信となり、ライブラリ本体にpull requestを送る経験をするというステップアップのきっかけになったら嬉しいなと思っています。
そのため、多くの人に参加してもらえるように、基本的には肯定的なコミュニケーションをとるようにしていますし、さまざまな工夫を凝らしています。

この難易度の絵文字は、リストが増え出した頃からつけるようになりました。どこから取り組んだらいいかが一目でわかり効率的に翻訳が進められるようになりましたし、初心者の方もゲーム感覚でとっつきやすくなったのではないかなと思います。また、視覚的に賑やかになったことでXでも盛り上がってもらえました。
武田さんから、この記事を読んでくださったみなさんへひとこと
ひとことと言わず、15ことくらいになってもいいですか?(笑)
実は、私もTechBowlの掲げるミッション「エンジニアリングで日本の国力を上げる」と似たようなことを考えています。国力まで言うと大袈裟ではありますが、PHPコミュニティに所属する人たちのスキルをボトムアップできたらという想いを持っています。
それを実現するアクションのひとつとして今回お話ししたマニュアル翻訳も関わっています。ある程度エンジニアリングの経験を積めば、たいていのことは一次情報(マニュアル)を読めば解決できるとわかっているため「マニュアルを読めば載ってるよ」とアドバイスしてきました。その一方で、マニュアル自体のハードルが高ければ、その一言を口にすることが憚られるなとも思っています。例えば、マニュアルの情報が古い、間違っているとか、英語しかない、などです。
そのハードルは、翻訳を通して、マニュアルの内容が正確、最新の情報が反映されている、日本語で敷居が低く、初心者の人にも分かりやすい表現になっているなど、ドキュメントを整備していくほど下がり、PHPを使っている人のスキルが底上げに繋がるのではないかなと思っています。
ドキュメントの整備って思っているより気軽に参加できます。例えば、「hogehogeのマニュアルのここがわかりにくいと思っている」そんな声を上げるだけでも構いません。pull requestのハードルが高ければXに呟いてもらえたら届きます。OSSしてる人は大体エゴサしてるので。笑
そういったつぶやきも大事な情報です。ぜひ気軽な気持ちでドキュメント整備に参加してみませんか?その声が誰かを助ける情報になるかもしれません。
インタビューの中では、「PHPのコミュニティに属しながらPHPを落とす発言ばかりしちゃってます」と話していた武田さん。私の印象では、愛あるdisという印象で、「それでもそんなところが愛おしい!」と溢れんばかりの気持ちでたくさんのことをお話ししていただきました。
皆さんもPHP8.4の翻訳にpull requestを送ってみませんか?武田さんをはじめとした、PHPコミュニティの先輩エンジニアの皆さんが優しく歓迎してくれます。その経験がこれからの自信につながっていくと思いますよ。
武田さん、改めて、インタビューにご協力いただきありがとうございました!