Railsのchankoが欲しい。或いはCakePHPプロトタイプ開発プラグイン "Ya"について

PHPカンファレンス福岡2015で、「CakePHPを業務で使ってみた(7年ほど)」というタイトルで発表させてもらいました。

結局、

となったわけですが。

受託開発がWebサービス開発に近づいている予感

最近は「作って納品。あとは運用」というプロジェクトが少なくなってきたような感覚があります。

契約として「納品」はあるのですが、開発側は「納品して一区切り」というような感覚はなく、ずっとリリースをしている感じです。

それが新機能だったり、仕様変更だったり、バグ修正だったり、いろいろです。エンジニアからの提案の結果追加される機能もあります。

なので、Gitのブランチが大活躍です。[WIP] が入り乱れつつ、デプロイもある程度の頻度で発生します。

そしてそのうち、 機能の確認も実際のデータでできる必要がでてきたりするかもしれませんし、その機能をある特定のステークホルダーの人だけが確認できる必要が生まれるかもしれません。

...

どこかで聞いたことのある機能です。

chankoが欲しい

chankoは言わずと知れたRailsのプロトタイプ開発用のプラグインです。 個人的に「いいなあ」と思う特徴として、

  1. プロダクションコードにさわらずに機能追加ができる。ON/OFFもできる。
  2. 追加した機能で問題が発生したら、元の機能で表示するセーフティーネットがある。

があります。

ついついプロダクションコードにif文追加して実装してしまうところを、いい感じに解決します。

素晴らしい。

羨ましい。

欲しい。

いつも隣の芝は青いものです。

プロトタイプ開発プラグイン "Ya"

github.com

YaはCakePHP用のプロトタイプ開発プラグインです。

RailsのRailtieのような機構はないので、Dispacherを拡張することで(YaDispacher)、以下を実現しています。

  1. リクエストに対するControllerのすげかえをすることで、プロダクションコードにさわらずに機能追加が可能
  2. YaDispacherで例外を捕捉して再invokeしまうことで、元の機能で表示するセーフティーネットを実現

"Ya"の動きのイメージ

指定のプレフィックスで新機能Controllerを(YAPostsController.php)、指定のディレクトリ(app/Ya/)に設置しておくことで、YaDispacherが新機能Controllerのactionを優先的にinvokeします。

https://raw.githubusercontent.com/k1LoW/Ya/master/default.png

もし、新機能Controllerで例外が発生した場合はYaDispacherが例外を捕捉して、元のController(PostsController) のactionを再invokeします。

https://raw.githubusercontent.com/k1LoW/Ya/master/safety.png

まだ、アイデア実装です

作っては見たものの、まだ個人のWebサービスにすら適用していません。使えそうな気はしているのですが。

はやいところ、どこかで使ってみたいとは思っています。

で、運用してみて「便利ー」となったらいいなあと。

ただ、CakePHP2。。。