オープンソースCMSに学ぶ、 
前PSR時代のプロジェクトが脱レガシーする5つの方法 
菱川拓郎 コンクリートファイブジャパン株式会社
このひと 
菱川拓郎と申しますGitHub: @hissy / Twitter: @HissyNC
オープンソースCMS「concrete5(コンクリートファイブ)」
開発元はPortlandLabs(オレゴン州ポートランド) 
日本国内でのサポート法人をやっています 
封入チラシも見てね!
PortlandLabs CTO 
Andrew Embler 
PortlandLabs CEP 
Franz Maruna 
concrete5 japan 
Katz Ueno Sakurai
concrete5の生まれ故郷 
デザインの街ポートランドに行ってました! 
レポートはいずれウェブで
ということで、本題
オープンソースCMS「concrete5(コンクリートファイブ)」
2003年に開発がスタートしたプロジェクトです 
(もちろんPHP FIGもありません)
バージョン5.7で大きな進化を遂げました!
編集画面がモダンでより直感的に
Before
AFTER
ディレクトリ構造がなんかすっきり
Before
AFTER
ディスパッチャーの内容もなんかオシャレ!
Before
AFTER 
(laravel / public / index.php に似てる…)
PSR-4対応オートローダー!
Before 
すごい力技感
AFTER 
Yeah! PSR-4になった!
5つのポイント
1:何はなくとも名前空間
~v5.6.x 
• オブジェクト指向設計にはなっていたが、 
名前空間は採用していなかった
v5.7.x~ 
• 元のClassの実装はできるだけそのままで、 
名前空間に対応 
• 命名規則はPSR-0に準拠 
• PSR-0準拠でClass名が変わるが、奥義・エ 
イリアスで力技回避 
• 何とかなる!
2:やっぱり欲しいComposer.json
~v5.6.x 
• もちろん、使ってません
v5.7.x~ 
• Composer.json、始めました 
• GitHubリポジトリから外部ライブラリが消 
えてすっきり! 
• 外部ライブラリのアップデートは、コミュ 
ニティでもあまりやりたがる人がいない面 
倒な作業だった 
• 最新のライブラリを入れてテストすること 
が容易に
3:自動テストが必須!
あって安心自動テストTravis CI が採用されています
アプリケーションの構成を変える時に頼もしい 
• クラスローダーやサービスロケーターのテストがあることで、大きな変更を 
試しやすい 
• ビルドが通るかテストされることで、外部ライブラリの管理も安心 
• イマドキフレームワークっぽい!
4:安定感のあるSymfony2コンポーネントを採用
~v5.6.x 
• ライブラリは主に Zend Framework 1 
• データベース抽象化レイヤーに ADODB 
• ルーティングなど多くの部分が独自実装
v5.7.x~ 
• Symfony2 から ClassLoader, HttpFoundation, Routing, HttpKernel, 
EventDispatcher, Serializer をコンポーネントとして使用 
• 汎用的なコンポーネントに置き換えることで質の向上 
• ZF2 からも Cache や Localization を継続使用 
• データーベース抽象化レイヤーを Doctrine に変更(もともとデータベースに 
アクセスするクラスを独立させておいたおかげで、スムーズに移行)
5:イマドキで便利な Laravel をおおいにパクる参考にする
コミュニティにもいつの間にか Laravel 信者が増加 
• 何かと Laravel から持ってきたがる人が多い 
• Symfony2 コンポーネントの使い方も影響を受けていると思われる 
• 5.7.xから DI に Laravel IoC Container を採用 
• 単体テストが書きやすくなった 
• パッケージ(アドオン)からのコアクラスの置き換え = 自由度の拡張
まとめ 
1. 何はなくとも名前空間 
2. やっぱり欲しいComposer.json 
3. 自動テストが必須! 
4. 安定感のあるSymfony2コンポーネントを採用 
5. イマドキで便利な Laravel をおおいにパクる参考にする
まとめ+1 
6. 最後は力技!モチベーションを保つことができるか? 
(concrete5は2年かかりました)
たいへんだけど、 
モダンになると 
テンション上がりますよ! 
美しすぎるバージョン5.7をちょっとでいいから 
汚くしてというissue 
! 
もちろん Wontfix (^^;
Thank you! 
フォローしてね! GitHub : @hissy / Twitter : @HissyNC 
! 
スターよろしく! GitHub : @concrete5

オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法