保守性と依存の考え方

依存を増やしすぎない理由と、小さく始める考え方。

Composerを必須にしない

Naifyはpure PHPで書かれており、フレームワーク本体を動かすためにComposerを必須にしません。プロジェクト側でComposerを使うこともできますが、FW自体がComposerに縛られないことを重視しています。

Composerを否定したいのではなく、FW自体の前提にしすぎません。
  • 依存パッケージの破壊的変更に振り回されにくい
  • namespaceとディレクトリの対応を追いやすい
  • 配布やデプロイの前提を単純に保ちやすい
  • コードを読み始める入口がぶれにくい

TwigやNaifyDbなど、プロジェクト側で外部ライブラリを使うことは自然な選択肢として残しています。重要なのは、Naifyのコアがその選択を強制しないことです。

AIネイティブ時代の自前実装

Naifyは「何でも自前で作るべき」と考えているわけではありません。仕様が公開されていて必要機能が限定されているなら、外部依存を足す前に「本当に自前で持てないか」を一度考えます。

判断基準は便利さだけではありません。長期でどちらのコストを持つか、依存ツリーをどこまで引き受けるかまで含めて決めます。

外部依存を選ぶ理由
実装量が大きい
仕様追従が重い
周辺機能もまとめて必要
自前実装を選ぶ理由
必要な範囲が明確
依存ツリーを浅くしたい
コード全体を自分で把握したい

AIにより自前実装のハードルは下がっています。だからこそ、依存を足す前に「本当に必要か」を一度考える余地を残しています。

小さく始める

Naifyは「小さな構成を正しく保つ」ことに向いています。最初から巨大なアーキテクチャを置くのではなく、必要になった層をあとから足していきます。

不要な層は最初から置きません。構造はあとから育てればよく、最初に抱え込むことを前提にしません。

規模構成の目安
小規模Controller + echo
中規模Controller + Service + View
大規模Controller + Service + Repository + Entity + View
最初から抱え込みすぎる構成
使わない層まで先に用意する
覚えることが増える
変更のたびに全体が重くなる
必要に応じて足す構成
今必要なものだけ置く
読む範囲を小さく保つ
成長に合わせて自然に拡張する

知識を持ち出しやすい

Naifyが強く依存するのは、PHP、MVC、PSRといった長く共有されている概念です。フレームワーク固有の作法に寄りすぎないことで、コードも知識も別の環境へ持ち出しやすくなります。

寄せたいもの理由
PHP言語仕様として広く共有されている
MVC責務分離の考え方として説明しやすい
PSRHTTPやインターフェースの共通前提として扱いやすい
互換性管理やIDEとの相性は 品質管理 で扱っています。ここでは「なぜ依存を増やしすぎないか」という判断理由に絞っています。