2016年1月7日木曜日

2015年を振り返って(Tuum開発日誌メモ)

2016年になったので、自分用のメモとして去年のTuumPHP開発を振り返ってみます。

Tuum/Webの開発


思えば、Tuum/Webを作り始めたのは2014年の11月頃。一度ぐらい満足できるフレームワークを自作してみたい、と思い立ってしまい、

  • 良いとされる設計を積極的に使う(PSR-7、ミドルウェア、DIコンテナなど)、
  • そのうえで、自分の欲しい機能を実装する、

という方向で作り始めました。

2015年5月頃には、ほぼ完成したのですが、どうも気にかかる点が出来てしまいました。おそらく、次の二点。

1. 思った以上に複雑になった。
2. 欲しいのはフレームワークではなかった。

なので、基本ボツに。

えぇ〜!
せっかく作ったのに。

複雑すぎる


一つ一つの設計は自分なりに納得して作ってるので、妙な動きはしてはいないのですが。思った以上に動きが複雑になってしまいました。原因を考えたのですが、次の2点になると思います。

  • 良いと思える設計から少しずれた、
  • 自分が欲しい機能について、理解してなかった、

一番最初にミドルウェアの引数をどうするか悩んだのですが、できるだけ簡単な形を選んでしまいました。使う分には簡単そうに見えるのですが、フレームワーク側が複雑になってしまいました。

自分が採用した形が、

$response = $middleware($request);

の形。
これだと、帰ってくる$responseに対して処理を行うことが出来ません。そのため、戻りループ用の別インターフェースを作って、としているうちにコードが「ちょっと」複雑に。ちなみに、Symfonyも似たようなことをしてるので、それほど悪い実装ではないはず。

一方、ほぼ標準になりつつある形が

$response = $middleware($request, $response, $next);

$nextとか面倒だなと思ってました。が、フレームワーク作ってみて、このAPIの良さがわかってきました。

もう一点は、次のTuum/Respondの開発をして分かりました。自分の欲しかった機能を十分に理解できてなかったからです。単体のパッケージを作ることで、機能についてじっくりと考えられたわけです。


欲しいのはフレームワークではない


で、この理由。

勉強のために作ったというのもあるので、そこそこ良いフレームワークができたら、もういいかなという気になった。と言うのはあります。

さらに、PSR-7ベースで、素晴らしいマイクロフレームワークがいくつも出てきてます。Slim3とかExpressive。それにRelayもミドルウェアディスパッチャーとしてよく出来てます。

結局、自分が欲しいのは、先に書いた「欲しい機能」の部分であり、フレームワークではありません。すでにあるマイクロフレームワークを利用して、自分の欲しい機能が追加できれば、十分なわけです。

コーディングの勉強には最適


とはいえ、フレームワークを自作するのは、コーディングの練習には最適ですね。やってよかったなと思ってます。

ということで、次の開発話に続きます

0 件のコメント: