Why Naify
Naifyの6つの特徴と、それぞれが実現することを紹介します。各項目から詳しい説明も確認できます。
Naifyとは?
長期運用の経験をもとに、普遍的な設計の骨格をPHPで形にしています。
5年10年経っても変わらない、変える必要のないものを主軸において実装したMVCフレームワークです。
フレームワーク独自の記法・ルールを減らす事で「PHPが使える」人なら、誰でも触れる体験を提供します。
なぜ作ったのか?
- コントローラにDB操作や認証処理が混在する
- 1つのクラスに、役割の異なる処理が増えていく
- ビューに業務ロジックが書かれている
- 同じ処理が複数の場所にあり、修正が一部にしか反映されない
どのフレームワークでも、規約を決めるだけでは実装は揃いません。処理の役割が曖昧になると、不具合や修正漏れにつながります。
大規模なフレームワークで多くの機能や依存関係を利用している場合、こうした問題の影響は広がりやすいです。長期運用で変更が積み重なるほど、調査や修正にかかる保守負担も大きくなります。
参考:長期運用システムの課題
Pure PHP
PHPの知識で読み書きできることを大切にしています。フレームワーク固有の DSL や巨大な設定レイヤを前提にせず、HTTP と MVC の基本の上に立ちます。
設定もPHPで記述し、処理の流れを追いやすくします。IDEの補完やAIによるコード理解も活用しやすいです。
疎結合な設計
Web・DB・テンプレートを分け、必要なパッケージを選んで使えます。Web処理は Naify、DB操作は NaifyDb、テンプレートは NaifyView が担います。
使用するパッケージや実装は、案件ごとに選べます。
Composerすら不要
Naifyは、ファイルを配置し、PHPから初期化して使えます。疎結合な設計で外部依存を抑え、導入時に必要なライブラリ間の依存解決やバージョン調整を少なくしています。
追加のライブラリは案件に応じて選び、必要な範囲だけ組み合わせます。
参考:保守性と依存の考え方
長期運用に備えた設計
コアに入れるのは、案件固有の機能ではなく、長く使う普遍的な部分だけです。何年経っても必要になる骨格だけを残しています。
運用が長くなっても評価軸がぶれにくいです。便利機能の多さではなく、壊れにくさ、説明しやすさ、差し替えやすさをコアで守ります。
この背景は 10年運用で見えやすい差 で整理しています。
Small Core
責務を抱え込みすぎず、役割ごとに小さく分けて保ちます。
巨大な1ファイルや1クラスに崩れにくいです。読む範囲が小さく、レビューしやすく、必要になった層だけをあとから足せます。
- 大きな責務をコアへ抱え込みすぎない
- 役割ごとにクラスや層を分けやすい
- 最初は小さく始めて、必要に応じて育てられる
暗黙の処理を行わない
メソッドを実行すると何が起こるのか、どのような処理が走るのか。
そのような迷いを減らすため、マジックメソッドを必要最低限に留め、コードをシンプルな書き味にし、処理を追いやすいようにしています。