Symfonyの歴史を振り返ってみる

こんにちは。Symfony Advent Calender 2019 の 7日目です。

(すでに8日目になってしまいましたが気にせず書いていきます。)

 

昨日は 【初心者向け】よく使うSymfonyコマンド集でした。自分がよく使うコマンドは debug:router かな。コマンド多くて便利なところは Symfony の特徴ですよね。

 

自分がSymfonyと関わりはじめてから約12年ぐらいたちました。
今日は Symfony の懐かしい思い出話をしてみたいと思います。

 

connect.symfony.com

Symfonysymfony だった

 2007年1月。symfony1がリリースされました。

 2系からは大文字になりましたが、1系のころはsymfonyと小文字でしたね。そんなsymfonyを初めてしった理由はその当時の所属していた会社で使っていた共通のフレームワークMojavi だったのですが、もっと使いやすものを探しているときでした。まだ0.8ぐらいのバージョンだったと思います。

 結果としてPHP5が必須だったsymfonyは多くの種類のクライアントを抱えている職場には厳しくCakePHPに決めたのですが、symfonyのドキュメントの多さ、充実性に惹かれて「これはみんなに知ってほしい」と勝手にドキュメントを翻訳し公開してました。

 その当時は「おやぢ組」という名前のwikiに書いてましたね。。

 (ぐぐってみると自分が書いていたものと同じっぽいミラーサイトが出てきますが、自分が書いたものかどうかわからないのでリンク貼るのは控えておきます)

  バグを見つけたりするとsymfonytracに投げてたりしてましたね。。 (なので12年の繋がりなのですが)

 海外のOSSということもあり、JISでメールするのも大変だったりするのでプラグインを書いたりもしてました。

 そうしていると、周りからは symfony の人として知られるようになっていきました。そして出版社から「symfonyの本を書いてみないか?」と提案を頂き本を書いてみることにしました。たしか書き終わるぐらいの直前に1.0がリリースされて、すべてのキャプチャを動作確認をやり直した記憶があります。。。アシアルさんから本が出たのと大体同じだった記憶です。

 

 

www.amazon.co.jp

 この当時は国内では CakePHP, symfony, Ethna, Maple, Mojavi, ZendFramework あたりがメジャーどころだった気がします。

 

 ちなみにsymfonyはPHP5用MojaviであるMojavi3のforkとしてスタートしたことを知ってる人は少ないですよね。

 

第一回symfony勉強会開催

2008年にやってました。懐かしい...

events.php.gr.jp

ファビアン来日

 そんな2009年のPHPカンファレンスで開発者であるファビアンが来日することになり、その当時にsymfonyを使っていた人たちが集まってファビアンと東京観光しました

 

innx-hidenori.hatenadiary.org

 地下鉄で電車待ってるときにファビアンに「なんでPHPフレームワーク書いたの?」って聞いたら「本当はPythonが好きなんだけどね」とか当時5.3がリリースされたぐらいの時期で「名前空間のセパレータがバックスラッシュなの嫌だ」とか言ってた記憶。

 その人の夜のごはんを中華料理屋で食べているときに、とつぜんファビアンが当時開発してた Syfmony2 のコンセプトをプレゼンしてくれて、「DIだ」と熱く語っていたのを思い出します。

 

日本 Symfony ユーザー会の設立

そして、このときにファビアンさんから、「今年の年末のアドベントカレンダーの内容をいろんな言語で同時に出したい。日本語をやってみないか」と声をかけられ、東京観光していたメンバーでやってみよう!ということで集まったのがユーザー会の最初でした。

 

 それが2009年に発表された 「More with Symfony」でした

symfony.com

brtriver.hatenadiary.org

 ファビアン自身も書いてますが、PHPカンファレンスに来日したことがきっかけなのでほんと凄い話ですよね。

I started to talk about the idea during the PHP conference in Japan, and in a matter of hours the Japanese translation team was ready to work. That was amazing! The response from the authors and translators was equally encouraging and, in a short time, "More with symfony" was born.

 MLでやりとりしながら、本家の記事がなかなか上がってこなくて翻訳間に合わないんじゃないかとか、本家の記事の方に間違いがあるのを指摘したり... と大変だったなぁと。

 

symfony1.2で Propel から Doctrineに

 当初のsymfonyのORMはPropelでした。しかし使いやすさという点で Doctrineを利用する人が増えてきたこともあり、symfonyの標準ORMがDoctrineに変わりました。このころは、どちらのORMを使うか指定できた記憶。ちなみに今あるPropelはその当時のPropelとは別物ぐらいに進化してしまっています。

propelorm.org

symfony1.4 で一区切り

ユーザー会ではドキュメントの翻訳したり勉強会をしたりしていましたが、1系の最後のバージョンは長く使われることも考えられたので、ユーザー会のメンバーで自分たちが一番欲しい本を書こう!ということで2011年3月に出版しました。

 

https://www.amazon.co.jp/dp/4798029343

 

Symfony2 はエコシステム志向

 2011年7月についにSymfony2がリリースされます。

 Symfony2 は symfonyと何が違うのか?でいくと本当に違うフレームワークになっていました。バンドルによるフレームワークそのものもバンドルの1部であるという考え方。リクエストを受けレスポンスを返す。という点に注力だけするフレームワークであること。DIの導入。

 

symfonyでダメだったところを完全にゼロから設計しなおすところはファビアンらしいなぁと思いました。その一方で既存のアプリケーションのフレームワークのバージョンアップがほぼ書き換えになってしまうという点は他方から辛いという声が上がってました。それでも過去を引きづらずに書き直せたことが今につながっているんだと思います。

 

Silex

 Symfony2ではコンポーネントによる組み合わせだという点を利用して、マイクロフレームワークであるSilexが作られたのもこのころでした。決して軽量ではないけどシンプルに書ける設計に感動し、これはみんなに知ってほしいとまたドキュメントを翻訳したりWEB DB PRESSに書いたりしていたのを思い出します

 

brtriver.hatenadiary.org

Symfony2系から3系に

1系の頃に比べると緩やかにでも確実に進化していきました。バージョンアップも多少の辛さはあっても絶対無理とまではいかないレベルで進化していきます。

 

とくにコンポーネントがより洗練されて機能が増えたり使いやすくなっていきます。そして疎結合すぎてひたすら当たり前のこともyamlに書かなくてはならなかったDIがautowiringの登場で革命的に楽になったり、ParamConverterで便利になったりと...

 

そしてLaravelの人気が国内で広がっていったのもここ数年のことですよね。Symfonyコンポーネントを利用した別の表現のフレームワークという意味ではSilexと兄弟かもしれませんね。

 

Symfony Flex

Symfony4ではさらにSymfony Flexが用意されました。いわゆるインストーラーの機能であり使いたい機能を追加したり、satandardエディションを利用する。みたいなことが簡単にできるようになりました。

 

フレームワークそのものというよりは環境面のサポートが充実してきたイメージですね。

 

Symfony5

大きく変わったというところはまだわかりませんが、ファビアンのことなのできっと色々考えているでしょう。Symfony5の本はチュートリアルじゃなくて実践的な内容になると言っているので今後もゆっくりと追っていきたいと思います。

 

www.kickstarter.com

 

次の記事もぜひ読んでね!

qiita.com