フレームワークが増え、そしてLaravelが受けたわけ

タグ: Laravel   PHP   Framework  

この記事は、Laravelリファレンス発売記念アドベントカレンダーの2015年12月25日公開分として書かれたものです。

Goとフレームワーク

今見ると、もうなくなっているようですが、数週間前に「フレームワークは何がよい?」というお決まりの質問が、FacebookのGo programing Languageグループでされていました。その中でひときわ強い主張をしている人がいて、これを見ろとリンクを示していました。

そのリンクも見つからないのですが、書いてあった内容は「Goは何かをカスタマイズしたり、ツールを作ったりするのに便利な言語だ。だから、フレームワークなんて必要ない」というようなものでした。

多分、これは極端な意見なんでしょう。でもこれはあながち外してはいないと思います。だって誰もシェルスクリプトでWebアプリケーション作ろうとしませんものね。

忘れがちですが、重要なことは「言語には得意分野がある」ということです。これを改めて思った時に、ふとPHPに対する批判と、Laravelのことを思い浮かべたのです。つくり話でなくて、本当にです。

PHP言語

もとはHTMLに埋め込んで便利に使うものであって、今ではプログラミング言語の顔がくっきりと浮かんできたとは言え、PHP言語の魂の部分は「さくっと動的なWebページを作成する」という部分でしょう。数ある言語の中からPHPを選ぶということは、PHPのもつ、この芯の部分に惹かれる何かがあるということです。

正直になりましょう。PHPを選んだ時、心の中では「楽にさくっと作りたい」という願望があったはずです。

件のGoのブログを読んだ時、まず心に浮かんだのは「PHPにはフレームワークが次から次へと出てくる」という批判です。私はそれ自体は事実だと思いますが、それを書く人はたいてい非難するような表現で書くのです。しかし事実は単に事実であるだけで、別に悪いことではありません。

たとえば逆の状況で、「この言語には開発者に支持されるフレームワークはひとつだけで、競争が起きていない」と書けば、非難しているように聞こえます。しかし、「この言語にはデフェクトスタンダードのフレームワークが存在し、多くのユーザーから支持されている」と書けば、同じ状況を褒めています。事実は代わりありません。

注意を向けたのは「なぜ、PHPでは次から次へと新しいフレームワークが出てくるのか」という疑問の部分です。Goの逆がその答えだろうと直感したのです。Goはツールやカスタマイズ向けの言語であり、正反対ではないにしろ、方向性が逆なのがPHPだからだろうと思いました。PHPを言語に選ぶ時、開発者はWebサイトなり、Webアプリケーションを実現したいわけです。特殊化、カスタマイズの逆で、「一般的な」Webアプリ動作を期待しているわけです。

そのために、一般的な線をカバーする、フレームワークが要求されるのでしょう。フレームワークとは知見の集まりです。それは、目新しいというよりも、過去のメインストリームに沿った知識です。そうした事柄に一つ一つかかずらあわなくても、フレームワークがやってくれるのです。

PHPにフレームワークが出てくるのは、PHP開発者が必要としているからです。基本的な同じような部分をさくっと実現したい強い気持ちがあるからでしょう。

「数多く」生まれるのは、求める力が強いことがまずあり、しかしながら完璧なフレームワークは存在しないわけです。すると、「自分なら解決できる」と思う開発者もいるわけで、「自分なり」の解決方法が次から次へと提示されるからでしょう。

Laravelの利便性

では、そうしたフレームワークの中から、どうしてLaravelが頭ひとつ人気という点でぬけ出すことができたのでしょうか。

たくさんフレームワークが生まれるとは言え、糞味噌なわけです。よい物もあれば、さほどでもないフレームワークもあります。当然ながら、ある程度の品質を持っていなければ、利用者は増えず、それゆえ開発側のモチベーションも持続しません。品質が伴わなければ、自然淘汰されていきます。

Laravelの生まれた頃、自然淘汰され、生き残ったフレームワーク達は「既存のフレームワークのここを改造したよ」というのが売り込み文句でした。つまり、「より自分たちのフレームワークは良い、より正しい」という主張です。

Laravelは当初、「簡単である」ことを売りにしていました。しかし、バージョン4から「より便利」な方向へ転換しました。簡単であることに魅力を感じていたユーザーは多かったので、多少の反発はありました。その中でも、「難しくなる」のが「より便利になる」と理解できた人たちがブログ等で、利便性の高さを示していきました。

この方向転換は間違っていなかったようで、人気はどんどん上昇していきました。

こうした認識は、Goのブログを読む前に持っていました。読んだ時にぴーんときたのは、「PHP言語を選択し、利用する開発者は、カスタマイズする方向へ持って行くよりは、一般的な方法をより手軽に行うことを好む」という仮定が当たっているのならば、より「便利」なフレームワークはより人気を得やすく、結果Laravelは人気を得て当然だろうことです。

「自分のものは良い、正しい」というのはアカデミックな言語を選択する開発者にはきっと届くと思います。しかし、よりプロダクティブな言語としてPHPを選ぶ開発者には、「便利である」という特徴が受け入れられやすかったのでしょう。

将来

PHPが人気をこのまま維持できるのであれば、Laravelの将来というよりも、PHPフレームワークとしてはより便利なものが、人気を博するでしょう。この点はPHP言語としても同様で、より便利でプロダクティブであると言う印象をうまく与える言語が他に出てくれば、現在PHPを選んでいる人は未だ見ぬ「より便利な」言語へ流れていくでしょう。

つまるところ、アカデミックに「より便利」であることは証明できないのです。「便利である」というのは感覚です。LaravelのコンテナやORMは目新しい技術では無かったのでしょうが、多少の工夫と、「それが便利である」という開発者への教育、啓蒙にLaravelは成功したのです。