長期運用システムの課題
長期運用で見えてきた、フレームワーク依存のリスク。
10年運用で見えやすい差
短期では、全部入りのフルスタックフレームワークはとても強いです。認証、テンプレート、キュー、管理画面、周辺のパッケージまで含めて、すぐ開発を始められるからです。
ただし、5年、10年と運用する業務システムでは、便利さの評価軸だけでは足りなくなります。疎結合なコンポーネント構成と、依存の深いフルスタック構成では、時間が経ったあとの崩れ方が変わってきます。
コンポーネント /疎結合
依存範囲が比較的狭い
個別の差し替えや局所修正がしやすい
フレームワーク終了後も延命しやすい
依存範囲が比較的狭い
個別の差し替えや局所修正がしやすい
フレームワーク終了後も延命しやすい
フルスタックフレームワーク
導入初期は速い
依存と作法が全体へ広がりやすい
破壊的変更の影響が大型化しやすい
導入初期は速い
依存と作法が全体へ広がりやすい
破壊的変更の影響が大型化しやすい
| 短期で見えやすいもの | 長期で効いてくるもの |
|---|---|
| 導入の速さ | 依存先の寿命 |
| 便利な既定値 | 破壊的変更への追従コスト |
| 周辺機能の豊富さ | 設計を誰が説明できるか |
| 学習済みの作法 | 10年後に別の人が読めるか |
長期運用では、「便利だったか」より「局所的に直せるか」と「壊れた理由を説明できるか」の方が重くなります。
依存関係が長期運用に与える影響
長期運用で怖いのは、コードが古くなることだけではありません。フレームワークの寿命や作法の変化が、そのままアプリ全体の更新圧力になることです。依存が深いほど、変更の影響範囲はアプリ全体に広がりやすいです。
これは「既存フレームワークが悪い」という話ではありません。短中期では合理的でも、長期では依存の深さが別のコストになる、という現実の話です。
依存が深い構成で起きやすいこと
周辺パッケージの停止がアプリ全体に波及する
破壊的変更の追従が大型案件になる
フレームワーク固有知識の教育コストが積み上がる
周辺パッケージの停止がアプリ全体に波及する
破壊的変更の追従が大型案件になる
フレームワーク固有知識の教育コストが積み上がる
薄い基盤で抑えやすいこと
影響範囲を局所化しやすい
差し替え判断をアプリ単位で持てる
PHPとMVCの基礎知識で追いやすい
影響範囲を局所化しやすい
差し替え判断をアプリ単位で持てる
PHPとMVCの基礎知識で追いやすい
Naifyが守ろうとしているもの
Naifyが守ろうとしているのは、派手な開発体験ではありません。可読な骨格、依存の主導権、HTTP基準の検証、実装と説明の同期、そして品質を説明できる状態です。
だからNaifyは、最初から全部を持ちません。コードの流れを隠しません。HTTPを検証の基準に置きます。PHPDocとReflectionからAPIリファレンスを起こし、説明のズレを減らします。どれも「長く保守責任を持つなら必要になるもの」から逆算した結果です。
- コード:流れを隠さず、読む順番を固定する
- 依存性:依存を抱え込みすぎず、差し替え余地を残す
- テスト: CLIだけでなくHTTP実挙動を基準にする
- ドキュメント:実装からリファレンスを生成してズレを減らす