「貢献」ではなく「自分が楽をしたいから」。Laravelスペシャリストが語る、肩の力を抜いたOSS活動のススメ

OSS活動を「技術的なスキルを活かしてコミュニティに貢献するもの」だと捉えている人は多いかもしれません。そのため、「自分のような未熟なエンジニアがOSSに関わっていいのだろうか」「他の人の役に立てる自信がない」と悩み、なかなか一歩を踏み出せない方もいるのではないでしょうか。

Laravelのスペシャリストであり、OSSへのコントリビューションも行う武田憲太郎さんは、「OSS活動を崇高なものだと考えなくていい」と語ります。そんな武田さん自身の活動は、「楽をしたい」という理由からスタートしたのです。

コントリビューションの始まりはTypeScriptから

――今回のインタビューでは、武田さんのこれまでのOSS活動の歩みについてお話を伺います。最初にコントリビューションしたOSSのプロジェクトは何でしたか?

DefinitelyTypedという、TypeScriptの型定義ファイルを提供するリポジトリでした。コントリビューションを始めた理由は特別なものではなく、単に仕事で楽をしたかったからです。

私はTypeScriptをバージョン0.9の頃から使っていました。今から10年以上前のことで、当時はTypeScriptで書かれたライブラリがほとんど存在しませんでした。そのため、外部のJavaScriptライブラリを使うには、型定義ファイルを自分で書く必要があったんです。パソコン内に「自分用の型定義フォルダ」を作り、必要に応じてそこからコピーして使っていました。

しかし、ライブラリの種類が増えるにつれ、型定義の管理が次第に大変になっていきました。「誰か管理してくれないだろうか。せめて、バックアップとインストールだけでも自動化したい」と思っていたんです。

何か解決策はないかと模索していたところ、ある勉強会でDefinitelyTypedの存在を知りました。「自分の手元で型定義を管理するのではなく、DefinitelyTypedに反映させればいい。他の人も管理してくれるから、そのほうが楽だ」と考えました。それから、しばらくはDefinitelyTypedへのコントリビューションばかりやっていました。

DefinitelyTypedは、コミッターやコントリビューターの数がとにかく膨大です。そのため、Pull Requestのレビュアーの割り振りや、ApproveされたPull Requestのマージなどは、すべてBotによって自動化されています。だからこそ、コントリビューションのハードルが低く、スピード感があって面白かったため、数年ほど続けていました。この経験を通じて、OSSで改善したいことがあれば、Pull Requestを送るのが当たり前になっていったんです。

その後、初めてLaravelにPull Requestを送ったのは、あるバグに遭遇したことがきっかけでした。システムの挙動がどうもおかしいと感じ、Laravel本体のコードを読んでみたところ、フレームワーク自体にバグがあると気づいたんです。それを機に、LaravelやPHPにもコントリビューションするようになりました。

真逆の文化を持つ、Laravel・PHPのOSSコミュニティ

――Laravel・PHPのOSSコミュニティにはどのような特徴がありますか?

面白いことに、LaravelとPHPのコミュニティは文化が真逆です。まずLaravelについて話すと、良くも悪くも作者であるTaylor Otwellさんの個性が色濃く出ています。彼にはシステムの設計・開発についての明確な美学や基準があり、それに沿わない修正は絶対に取り入れません。Otwellさんは自身の経営するLaravel LLCで事業としてLaravelの開発をしているので、判断がドライだというのもあります。

例を挙げると、「テンプレクローズ」とでも呼ぶべき習慣があります。誰かが発行したPull Requestの内容がいまひとつだった場合、Otwellさんが定型文でお礼を述べたうえでクローズする、というものです。

「テンプレクローズ」の一例。

もちろん、この対応に悔しい思いをすることもありますし、彼の行動を否定的に捉える人もいます。しかし、個人的には嫌いではありません。話が手っ取り早いからです。

それに、Otwellさんは優れたスキルを持つ努力家であり、「彼がそう判断したなら、きっと正しい」と思わせるだけの説得力があります。私がLaravelを好きな理由として、彼の才能に魅力を感じていることも大きいです。

――Otwellさんの努力や美学がわかるような例はありますか?

Laravel LLCは、2024年9月に5,700万ドルのシリーズA資金調達に成功しました。これほど経済的に成功したCEOでありながら、現在もLaravel関連のほぼすべてのPull Requestを自らレビューしているといいます。こうした要因もあり、Laravelのリリースサイクルはとにかく早いです。

また、プロダクト全体の思想が一貫しています。具体的には、ユーザーの間口を広げるのを最優先にすることや、技術的な正しさよりも実利を優先すること。この方針は批判の対象となることもありますが、Laravelの利用者の多さはこれらの要素に起因している部分が確実にあるはずです。

命名へのこだわりも強く、たとえば特定のPull Requestに複数の人がApproveをしており、「あとはマージボタンを押すだけ」という状況の際、最後にOtwellさんがメソッド名だけを修正してマージすることがあります。Laravelのメソッドチェーンは英語の文章のように自然で直感的に記述できるよう設計されており、その方針を徹底しているんですね。

ライブラリの命名もユニークで、新機能が発表されるたびに「また変わった名前を付けているな(笑)」と感じます。おそらく、マーケティング効果も考えているはずです。優れた技術は「人の目に触れ、使われてなんぼ」なので、話題になるように工夫するのは重要です。

一方、PHPのコミュニティは「お互いをリスペクトしよう」という文化があり、荒らしなどを除けばPull Requestが唐突にクローズされることはまずありません。リスペクトの文化が根付いているため、たとえばあるPull Requestでは激しい議論を交わしていた2人が、別のPull Requestでは協力し合っているという場面が当たり前のようにあります。

私自身、PHPのコミュニティの文化に救われた経験があります。あるPull Requestを送ったのですが、当時の私はC言語に不慣れで実装に自信がありませんでした。そこで「変な点があれば指摘してほしい」と伝えたんです。すると、レビュアーが感謝の言葉を述べたうえで、こんな趣旨のコメントをくれました。

「この機能をぜひ採用したい。確かにコードには改善の余地があるから、あなたの力でぜひできるところまでやってみてほしい。この機能が入るのは、おそらく次のメジャーバージョンになるはず。だから、あなたには十分な時間があるよ」

非常に寛大なコメントで、胸を打たれました。しかも、私が悩んで問題を解決できないときは、レビューで助けてくれたんです。これは典型的な例ですが、PHPのコミュニティが持つ思いやりに、私は何度も救われてきました。

居心地のいい環境は自分で作る

――OSSへのコントリビューションを続けたことで、マインドに変化はありましたか?

冒頭でお話しした通り、コントリビューションのきっかけは「自分が楽をしたいから」でした。それ以来、「自分にとって居心地のいい環境は自分で作ろう」という考えが一貫してあります。もし特定のOSSに足りない機能があって困るなら、追加すればいい。マニュアルが読みにくくて毎回頭を抱えるなら、校正すればいい。「文句を言う暇があるなら、自分で改善しよう」という思いが、より強くなっていきました。

また、OSS活動を続けるうちに、周囲の人々から「すごい人」だと思われることも増えました。実際にはそんなことはないのですが、これに関連して印象的な出来事があります。業務でECサイトの開発プロジェクトに携わった際、EC-CUBEというOSSのCMSを使用しました。チームの構成は、ベテランエンジニアが私1人で、他は全員がエンジニア歴1年ほどのメンバー。ある日、ジュニアエンジニアの一人が「ここが不便だから改善したい」と、自身のローカル環境で行ったコミットについて相談してきました。

そのコミットは、ディレクトリ構成を明確化しわかりやすくする修正でした。些細な変更ではありましたが、私は非常に意義のある改善だと感じました。同時に、「素晴らしい修正なので、EC-CUBE本体にも取り込んでもらうほうがいい」と考えたんです。

そこで彼に、「これは私たちのプロジェクトにマージする。それとは別に、これはEC-CUBE本体にも還元できる改善だから、あなた自身でPull Requestを送ってみませんか。もし不安なら、私が代わりに送りますよ」と伝えました。

結局、彼はPull Requestの発行を遠慮し、私が対応することになりましたが、業務時間後に私がPull Requestを作成しているのを彼は後ろから見てくれていました。そして、そのPull Requestは無事にマージされたんです。

彼はとても喜び、「OSSはすごい人たちがやっているものだと思っていました。でも、自分のアイデアが取り入れられることもあるんですね」と話していました。それに対して、私は「普段あなたがやっているエンジニアリングと、地続きにつながっているものだよ」と伝えました。その経験をきっかけに、彼のエンジニアリングについての考え方が変わり、スキルも急速に成長していきました。

また、コミュニティに向けてアウトプットした成果物は、他者への説明にも活用できて便利です。たとえば、過去に書いたブログの記事や登壇資料などを用いて、「私がやりたいのはこういうこと」とスムーズに説明できます。共通認識を素早く構築できるわけです。

余談ですが、私はPHPerKaigi 2023で「Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか」というセッションを発表しました。このセッションの内容は、そのままLaravelの良さを説明するための資料として活用できます。ありがたいことに、このセッションはかなり人気があったようです。他の方々から「視聴して勉強になりました」と言っていただく機会も多く、とても光栄に思っています。

www.youtube.com

入り口はそこら中に転がっている

――OSSに携わったことで、武田さんのキャリアにはどのような好影響がありましたか?

いい意味で遠慮がなくなり、判断が早くなり、フットワークが軽くなったと思います。今回のインタビューで「居心地のいい環境は自分で作る」という話をしましたが、OSS活動を続けるうちに、その考え方が業務にも自然と浸透しました。

たとえば、プロジェクトで問題が発生したとします。それが自分の担当範囲でなくても、全員が楽になるのであれば積極的に手を出します。そうすれば、最終的に自分自身にもプラスになるわけです。ありがたいことに、私が参画するとプロジェクト全体の開発効率が向上する、という評判をいただくこともあります。これは、OSSから学んだマインドが大きく影響しているでしょうね。

――最後に、エンジニアがOSS活動を行うことについて、武田さんの考えを教えてください。

「貢献」や「コントリビューション」という言葉は、大げさすぎるとよく思います。貢献というと、何か崇高なことのように聞こえますし、コントリビューションも「すごいことをしなければならない」という印象があります。でも、もっと肩の力を抜いてほしいですね。

私の場合、最初の動機は「自分が楽をしたいから」でした。やっているうちに周囲から評価されるようになりましたが、いまでも「楽をしたい」という気持ちは変わっていません。だからこそ、これからOSS活動に取り組む人たちには「難しく考えずに、こっちにおいでよ」と伝えたいです。みんな、OSSをどこか遠い世界のものとして捉えてしまうんですね。でも、入り口は意外とそこら中に転がっていますよ。

取材・執筆:中薗昴
撮影:山辺恵美子