フリーになるとオープンソースをちょっとカスタマイズとか出来ると楽できていいですよね。
そうなるとPHPは外せないわけで、ちょこちょこPHPで出来たオープンソースソフトウェアを弄るわけですが、大規模開発とかSIer向けとかとは違った、OSSのWebアプリに向いた設計があることに気が付きました。
具体的にはWordPressの作者の人(?)がもっと設計を洗練させて作ったというbbPressというフォーラムのソフトがあるんですが、これのソースを見たとき、
「うは、なるほど。やられた。この人はわかっちょる。」
とちょっとショックを受けました。
とりあえずタイトルに対する結論から列挙しますと、(bbPressですが)
- 言語はPHPしかありえない
- インストールに黒い画面(ターミナル)を使う必要があってはいけない
- FrontControllerを使わない。(URL見たまんまのファイルがあること)
- クラスを使わない。functions.phpとかにbb_xxxxとかいう関数を列挙する。
- テンプレート言語はPHP。theme/default/以下とかに置いて、前述のURL見たまんまファイルと同名にする。(register.phpとか)
- ディレクトリ構造はフラットに近くする
- gettextを使っておくと自然と翻訳してくれる人が現れる
作者はとにかく「サードパーティー開発者」と「ユーザー」に奉仕して、DRYに反していても誰にでもわかりやすいまま頑張ってスパゲッティにならないようにします。
より多くの「サードパーティー開発者」に気に入ってもらえるようにすることがひいてはプラグインの増加、ソフト自身の価値向上につながるんですね。
この構造の明快さだけでこのアプリのファンになってしまいました。
ただ、裾野が広すぎると、実際に何度も起こっているようにプラグインでSQL Injectionを作りこんでしまう可能性が高いのは何とかしないとまずいですね。プラグインの中でプレースフォルダ使ってない部分があったら警告表示するとか、できないかな?