Symfony 3.0: ロードマップ

(訳者)この記事は、SymfonyプロジェクトマネージャのFabien Potencierの記事を、訳者が日本語訳したものです。訳間違え、事実誤認などが含まれるかもしれませんがご容赦ください。

          • -


昨年の間、私はSymfony3.0について多くの会議で話してきました。私はSymfony3.0の最適な戦略について長い間考えてきました。今が私の考えを皆様と共有するときです。


メジャーバージョン

開発者の何人かや、多くのプロジェクトマネージャーは、彼らのお気に入りのオープンソースライブラリのメジャーバージョンが発表されることを心配しています。おそらくそれは、メジャーバージョンが後方非互換な変更を想像させるからでしょう。多くの疑問が起こります:変更は重大な価値を私のプロジェクトにもたらすのか? ロードマップがアップグレードを見込むに十分明確だろうか? アップグレードするのは簡単/可能性がある? もし私がアップグレードを望まなかったり不可能だったりしたらどうなるだろうか? などなど。


新しいメジャーバージョンへの恐れというのは過去の悪い経験に基づいているものです:Perl 6やPHP 6を思い出してみてください。Symfonyにおいても、Symfony 2は大きな進化であり、symfony 1との違いはかなり大きなものでした。Symfony 3について話すことは、人々をやきもきさせるということに、私は気が付きましたので、この投稿はSymfony 3の戦略と、みなさんがパニックにならなくてもいい理由について説明します。


第一に、メジャーバージョンが定期的に必要だということを皆さんは知っていると思います。もう使われていない機能を取り除いたり、アーキテクチャ上の間違えを修正したり、PHPの新しい能力や、ベストプラクティスの移り変わり、新しいWebパラダイムといったエコシステムを考慮したりするために、後方互換性を壊す必要があります。インターネットはとても速いペースで発展しており、もしわれわれがSymfonyを早く対応させることができなければ、あなたが想像することができるより早く、Symfonyは意味のない物になってしまいます。


Symfonyのプロジェクトマネージャーとして、私の責任はコードをできるだけ安定に保つことです。しかし安定性は現状維持ということを意味しません。というのも我々は、あなた自身で確かめることができますが、Symfony 2.4や2.5や2.6において、新しい機能を追加したり、アーキテクチャの間違いを修正したりしました。それらすべてのバージョンは新しい機能を搭載していますし、それぞれがフレームワークにとって大きな一歩となっています。しかしながら、後方互換性が保たれたため、アップグレードはかなり簡単です。使われていないもしくは非推奨された機能のための後方互換性レイヤーは挑戦です。(パフォーマンス低下を最小にする必要があるということについては触れていません。)Symfony2は、分離されたコンポーネントによって作られたかなり強固な基盤上に基づいていますからそれはかなり簡単でした。セマンティックバージョニングの定義によって、メジャーバージョンはまさに、事態を収拾したり、粗雑なつくりを取り除くマイルストーンとなります。


Symfony3.0とは何?

いつもマイナーバージョンで新しい機能が追加され、あるいは機能が削除されたりするため、本日、あなたのコードを3.0により準拠するようにことができます。Symfony 3.0アップグレードガイドを読んで、提案された個々の変更を見てください。これにより、あなたのペースで十分な時間をもってマイグレーションの計画を立てることができます。


おそらくあなたが今ご想像した通り、Symfony 3.0は大改革とはならない予定で、フレームワークの低レベルアーキテクチャは変更されません。ここに、我々がSymfony3をよりよくするために、Symfony2.xにおいて行った変更を示します。

  • Symfony 3.0はよりスタンダードになります(ロギングにおいてPSR-3の使用、Symfony\Component\HttpKernel\Log\LoggerInterface インターフェースの削除、など)
  • Symfony 3.0はアーキテクチャ上の間違えをいくつか修正します。(ステートフルコンソールヘルパーはよりよい代替えを好んで取り除かれます(ProgressBar 対 ProgressHelper、Table 対 TableHelper、Yaml::parse()はもはやファイル名をサポートしなくなります)
  • Symfony 3.0はこれまでと比べて、より分離され、より再利用可能になります。(HttpKernelはいくつかの小さいクラスに分離される予定です。インスタンスプロファイラーはスタンドアローンとなります。クラスはバンドルからコンポーネントに移動されます。コンポーネントは現在の物から抽出されます。)
Symfony 3.0スケジュール

新しいメジャーバージョンについての劇的な事件を避けることも、早期かつ頻繁なコミュニケーションによって可能になります。だから、Symfonyコミュニティは我々の戦略を資料にする作業に没頭しています。これは後方互換性に関する約束事からバージョンロードマップ、LTSリリースにわたります。


新しいバージョンの衝撃を最小化する一つの方法は、それらを予測可能にすることです。我々のロードマップによれば、Symfony2.7は次の長期サポートリリースとして、2015年5月にリリースされます。そして2.7は2018年5月までバグ修正が行われ、2019年5月までセキュリティ修正が行われます。2.8の予定の代わりとして、2.7の後に一気に3.0までバージョンを上げるよう私は提案します。つまり、Symfony 3.0は2015年11月にリリースされ、3.x系の最初の長期サポートリリースは3.3となり、これは2017年の3月にリリースされます。


相互に作用するSymfonyロードマップはSymfony 3.x ブランチを考慮してアップデートされています。


あなたは何をすればいいか? リリースプロセスドキュメントの章で説明された通り、2つのアップグレード戦略があります。

"二重メンテナンスモードはすべてのSymfonyユーザーを幸せにするために採用されました。最新の最高のバージョンを使いたい、高速移住者はstandardバージョンを使ってください。これは新しいバージョンが6か月ごとに発行され、2か月のアップグレード期間があります。より安定したものを使いたい会社はLTSバージョンを使ってください。これは新しいバージョンが2年ごとに発行され、1年のアップグレード期間があります。"

Symfony 3.0はどこにあるの?

誰でもSymfony 3.0に貢献しやすいようにするため、メインリポジトリは、今現在、Symfony 3.0のコードをホストしています。来るべき2.6と2.7バージョンへのブランチもすでに作成されています。


もしあなたのプロジェクトが最新の2.xの進化を追いかけようとSymfony masterブランチを使っているのであれば、本日、2.7ブランチへの切り替えを考えるべきです。マージ戦略は現在と同じになる予定ですが、非常に小さい変更を伴います。

  • 後方互換性を壊さない、もしくは現状のコードに影響を与えない新しい機能は2.7にマージされます。
  • 2.7ブランチで動かす方法がない新しい機能は3.0にのみマージされます。
  • バグ修正はやはり一番大きいバージョンと、まだメンテナンスされているブランチの両方にマージされ、masterブランチ(すなわち3.0)を含む最新のバージョンへ定期的にマージされます。
Symfony 3.0 最低のPHPバージョン

少なくとも最後ではない、Symfony 3.0用のPHPの最少バージョンは何でしょう? 私が数日前に開始した質問。その結果を以下に挙げます。

Version Votes %
5.3.3 31 2%
5.3.x 56 3%
5.4.x 260 16%
5.5.x 568 35%
5.6.x 495 30%
7.x 225 14%

これらの結果に基づいて、私はSymfony 3.0について必要とするPHPの最低バージョンをPHP 5.5と提案します。来年のいつかにおいて、我々のニーズと、ホスティング会社やLinuxディストリビューションによって使われるもっとも人気のPHPバージョンがなんであるかという理由によって、私はこれをPHP5.6に上げることを保留したいと思います。


どうやってあなたは役立てますか?

今日、Symfony 3.0のために行われるべき、簡単な変更がたくさんあります。第一に、2.7ブランチにおいて、すべての非推奨の機能が非推奨ログを出力することを求めています。(これは我々が2.3リリース時に行ったことと似ています) そして、非推奨のすべてがmasterブランチにおいて取り除かれなければなりません。最後に、アップグレードガイドはテスト済みであり、アップグレードプロセスが誰にとってもできるだけ簡単になるように拡張されるべきです。具体的には、Github上の3.0としてタグ付けされた問題を見てください。



Happy Coding!

          • -

(訳者)訳に間違え等ありましたら、コメントでお知らせください。

この記事は以下のURLの日本語訳です。
http://symfony.com/blog/symfony-3-0-the-roadmap

2014/11/12 1:38