あれから何ヶ月か経っていますが皆様お元気でしょうか。
もう何度目かの設計の見直しをしています、いい加減コード書けやゴルァと言われそうですが( ̄△ ̄;。
何度か練習問題(なんだそりゃ)を解きながら、少し形が見えてきた。要件だかポリシーだか何だかわからんメモを書き綴る。
- ターゲットは個人用。ただし、複数ユーザ登録してAdmin/Manager/Autherぐらいの階差によるワークフローが組めるようにしたい。
- 開発環境はMac OS X 10.4 + Apache 1.2 + PHP4。PHP5やApache 2.xも考慮する。テスト環境はCentOSの4(PHP4)と5(PHP5)、Mac OS X 10.3(Apache1.2)にする予定。
- 開発環境がMacなのは、夜中にデスクトップPCに電源を入れたくないため。Macは15インチのノートなのであまりうるさくない。PC(というかLinux)の出番が来たら、休日の昼に作業するしかないね。
- 言語はPHPをちょびっとかじったくらいの経験しかないからPHP。
- その15インチのノート(4年くらい前のモデル)でEclipse+PDTを使うので、iTunesを動かしながらだと辛いかも。やっぱ音楽聴くならiPodですな。
- バージョン管理システムはいずれ入れたい。(もっぱらチェックアウト専門だが)Subversionは少し使ったことがあるので、それにするかも。ただ、管理方法を覚えるのは面倒だなぁ。
- ストレージは基本的にXMLデータベース。MySQLやSQLiteも検討したけど、PHP4でSQLite非サポートなんてイカした環境(ここがソウ)でも使えるよう、データはXMLに保存。XMLの管理もXMLで行う。ただ、あとからMySQLやSQLiteにも対応できるようにラッパーライブラリを整備する。
- XSS、SQLインジェクション、ディレクトリトラバーサル、クロスサイト・リクエスト・フォージェリ、コマンドインジェクション辺りは注意して設計する。もちろんInternal Server Errorなども。。。
- できれば、1コンテンツ内に複数言語版を混在させられるようにしたい(1画面内に、ではなく。。。)。切り替えはAcceptLanguageを使う。
- 設計はできるだけMVCモデルに基づく。併せてクラスベースのコーディングにする。MVCベースだけど、既存のフレームワークは使わない。勉強のため、自作していく。
- PHPのエラーログはまめに確認するべし(warning以上のログはきちんと対策する)。
- URLはPathinfo前提だが、Apache2系でMultiviewsが無効で.htaccessが使えない環境(どんなんだ?)も考慮して、getのクエリからリクエストを拾えるよう切り替えが効くようにしておく
- ここは共用サーバなので、実装が終わって、セキュリティをクリアするまでは自サイトにも適用しない。上に想定されるユーザ層を書いておきながら、基本的に自分用。
さあ、大風呂敷を広げてしまった。2年かかるか3年かかるかわからないが、取りあえず勉強なり。オブジェクト指向ってなんだ?( ̄△ ̄;