12 | | == PHPフレームワークの選定 == |
13 | | PHPフレームワークを導入します。 |
14 | | |
15 | | [wiki:pne-openpne3-note#PHPフレームワークの選定] |
16 | | |
17 | | === 参考情報 === |
18 | | ==== Googleトレンド調べ ==== |
19 | | [[Image(http://sc.pne.jp/200712231511.png)]] |
20 | | |
21 | | [[Image(http://www.google.com/trends/viz?q=cakephp%2Csymfony%2Czend+framework%2Ccodeigniter%2Cmaple+php&date=ytd&geo=all&graph=weekly_img&ctab=0&sa=N, 400,left)]] |
22 | | |
23 | | [[Image(http://www.google.com/trends/viz?q=cakephp%2Csymfony%2Czend+framework%2Ccodeigniter%2Cmaple+php&date=mtd&geo=all&graph=weekly_img&ctab=0&sa=N, 400)]] |
24 | | |
25 | | 上記のフレームワーク中から選びます。 |
26 | | |
27 | | === フレームワーク選定の要件 === |
28 | | ==== 評価マトリックス ==== |
29 | | ||-||ZendFramework||CakePHP||symfony||ethna||maple||CodeIgniter?||コメント|| |
30 | | ||Googleトレンドの人気||3位||1位||2位||-||-||4位||-|| |
31 | | ||ドキュメント量||◎||○||◎||△||△||?||-|| |
32 | | ||ユーザー構築情報[[BR]] WEBでの使用感のレポートの量||-||-||○||-||-||-||-|| |
33 | | ||[DB]PostgreSQL MySQL SQLiteを抽象化||-||-||○||-||-||-||-|| |
34 | | ||DBのMasterSlave?読み分け[[BR]]更新系と参照系を振分ける仕組みが入っているか[[BR]] OpenPNEでいうところのmainとmain_reader||-||-||△[[BR]] pluginで対応可能||-||無||-||-|| |
35 | | ||部分SSL対応||-||-||△[[BR]] pluginで対応可能||-||無||-||-|| |
36 | | ||Sessionストレージ変更(File DB Memcache)||-||-||○||無||無||-||-|| |
37 | | ||[SlavePNE]POP3 DB HTTP LDAP対応できるか?[[BR]] PEAR::Authのcontainer的なものがあるか?||-||-||○||○[[BR]] xmlrpcでのアプリケーション作成がデフォルトでできる||無||-||-|| |
38 | | ||携帯UAの機種振り分け||-||-||△||-||標準では△[[BR]] →を使えば実装可能||-||[http://pear.php.net/package/Net_UserAgent_Mobile/ pear][http://pear.php.net/package/Net_UserAgent_Mobile/ UsegAgentMobile]|| |
39 | | ||携帯認証カバー(個体識別 キャリアUA)||-||-||×||-||標準では△[[BR]] →を使えば実装可能||-||[http://pear.php.net/package/Net_UserAgent_Mobile/ UsegAgentMobile]|| |
40 | | ||携帯絵文字||-||-||×||無||標準では無[[BR]] →を使えば実装可能||-||[http://php-develop.org/MobilePictogramConverter/ MobilePictgram]|| |
41 | | ||日本語メール送信出来るか?||-||-||○||○||○||-||-|| |
42 | | ||日本語メール受信して処理出来るか?(絵文字含む)||-||-||△||△[[BR]]絵文字は非対応||△[[BR]] 絵文字は非対応||-||-|| |
43 | | ||SQLインジェクションカバー[[BR]] プレースフォルダを使えるか?||-||-||○||○||○||-||-|| |
44 | | ||CSRFカバー[[BR]] doアクションでワンタイムトークン的なものがつかえるか||-||-||○[[BR]] pluginで対応可能||○||-||-||-|| |
45 | | ||XSSカバー[[BR]] OpenPNEはsmartyの出力時にチェックしてる||-||-||◎||-||-||-||-|| |
46 | | ||テンプレートエンジンに選択自由度があるか?[[BR]] OpenPNEはsmartyのみ。||-||smarty使えない||smartyは、[[BR]] pluginを使えば使える||Smarty||Smarty[[BR]] Flexy[[BR]] Simple||-||-|| |
47 | | ||[ktai URL]/.ZsrMKtQAyh9GHdXP./member/1[[BR]][[BR]]携帯の認証について||-||-||△||-||-||-||-|| |
48 | | ||国際化対応レベル||-||-||◎||-||-||-||-|| |
49 | | ||パフォーマンス(FWでの劣化)||-||-||△||-||-||-||-|| |
50 | | ||パフォーマンス(FW機能による高速化)||-||-||○||-||-||-||-|| |
51 | | ||[DB]members id member_id[[BR]][[BR]] ?手嶋確認||-||-||?||-||-||-||-|| |
52 | | ||[URL]/member/1 /community/1[[BR]][[BR]] mod_rewrite使えるってこと?||-||○||○||-||-||-||-|| |
53 | | ||サポートの継続[[BR]][[BR]]開発体制||◎||○||○||○||△[[BR]]昨年度開発がほぼ停止のため||-||-|| |
54 | | ||OpenID Consumer対応||ライブラリ有り||-||pluginで対応可能||-||-||-||-|| |
55 | | ||OpenID Provider対応||ライブラリ有り||-||?||-||-||-||-|| |
56 | | ||OpenSocial Container||-||-||-||-||-||-||-|| |
57 | | ||小窓||OK||OK||OK||OK||OK||OK||-|| |
58 | | ||PHP小窓[[BR]][[BR]] smartyのplugin的なことができるか?||-||-||○||○[[BR]] デフォルトでそんな機能があるそうです||△[[BR]] filterを自作する必要があります||-||-|| |
59 | | ||ページキャッシュ[[BR]][[BR]] smartyのキャッシュ的なものがあるか?||-||-||◎||-||-||-||-|| |
60 | | ||ページコンポーネントごとキャッシュ[[BR]][[BR]] smartyのキャッシュ的なものがあるか?[[BR]] Templateインクルードとかで。||-||-||◎||-||-||-||-|| |
61 | | ||クエリキャッシュ[[BR]][[BR]] adodbとかそのレイヤーのこと。||-||-||◎||-||-||-||-|| |
62 | | ||OpenPNEサンプルコーディングの結果||未||未||未||-||-||未||-|| |
63 | | ||テストフレームワークの有無[[BR]] rubyみたいな||-||-||デフォルトで○||-||無||-||-|| |
64 | | ||サポートするPHPバージョン||5||4 5||5.1||4 5||4 5||4 5||-|| |
65 | | ||一般のレンタルサーバで使えるか?[[BR]] php,mod_rewriteなど||-||-||○||○||○||-||-|| |
66 | | ||リクエストパラメーターの変換が容易か?[[BR]] 「全角→半角」変換するようなコード||-||-||filterでできる||-||○||-||-|| |
67 | | ||Validationの実装が容易||-||-||○||-||○||-||-|| |
68 | | ||action, filter実行時のログ出力機能が標準で備わっている||-||無||○||-||○||-||-|| |
69 | | ||actionの自動生成機能があるか||-||○||○||○||○||-||-|| |
70 | | ||viewの自動生成機能があるか||-||○||○||○||○||-||-|| |
71 | | ||O/R マッパー||○||○||○||○||△[[BR]]開発者が推奨しない||-||-|| |
72 | | ||DI機能||-||-||×||△[[BR]]開発中||○||-||-|| |
73 | | ||他プロジェクトとの連携||-||-||△||-||Seasar[[BR]] Usagi||-||-|| |
74 | | ||似ているフレームワーク||JSF||Ruby On Rail||Ruby On Rail||Struts||Struts||-||-|| |
75 | | ||フレームワークでの文字モジコード設定||-||-||×||-||○||-||-|| |
76 | | ||Ajaxを使うモジュールを作成する機能が標準で入っているか[[BR]] Ajax用Javascriptを書かなくていい、など||-||○||○||△[[BR]]多少は書く必要があります||無||-||-|| |
77 | | ||設定ファイルの記述キジュツ方式ホウシキ||-||ini, php||yml,ini||-||ini||-||-|| |
78 | | ||国内大規模サイトでの開発・運用実績||-||-||△[[BR]] [http://erotube.phalko.com/ link] [[BR]][[BR]] yahooブックマーク||◎[[BR]] http://gree.jp/||○[[BR]] [http://www.webfile.jp/ link] [[BR]] [http://www.keiri-kaikei.com link]||-||-|| |
79 | | ||国内開発用メーリングリスト||◎[[BR]] 国内ML多数||○||○||◎[[BR]]国内ML多数||○[[BR]] 2007年はほぼ休止していた||-||-|| |
80 | | |
81 | | ==== その他条件 ==== |
82 | | * DB抽象化されていて、PostgreSQL MySQL SQLiteがシームレスに利用できる? |
83 | | * チューニング目的以外では、セットアップ、DB操作のSQLは1パターンのみで運用可能 |
84 | | * 携帯の特殊な挙動に対して、フレームワークでカバーできるか? |
85 | | * Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なテンプレートエンジンを使えるか?) |
86 | | * パフォーマンスが劣化しないか? |
87 | | * ドキュメントが充実しているか? |
88 | | * 今後サポートが継続されそうか? |
89 | | * テスト関連のフレームワークが備わっているか? |
90 | | * 国際化対応の機構が組み込まれているか? |
91 | | * トレンドなのでRailsをある程度意識していて欲しい |
92 | | |
93 | | ==== 考慮しなくても良い要件 ==== |
94 | | * OpenPNE2系からの移行に伴う作業負荷は考えない |
95 | | * PHP5限定のフレームワークでも良い |
| 12 | == 削減機能のフォローアップ == |
| 13 | |
| 14 | === レビュー === |
| 249 | |
| 250 | |
| 251 | == PHPフレームワークの選定 == |
| 252 | PHPフレームワークを導入します。 |
| 253 | |
| 254 | [wiki:pne-openpne3-note#PHPフレームワークの選定] |
| 255 | |
| 256 | === 参考情報 === |
| 257 | ==== Googleトレンド調べ ==== |
| 258 | [[Image(http://sc.pne.jp/200712231511.png)]] |
| 259 | |
| 260 | [[Image(http://www.google.com/trends/viz?q=cakephp%2Csymfony%2Czend+framework%2Ccodeigniter%2Cmaple+php&date=ytd&geo=all&graph=weekly_img&ctab=0&sa=N, 400,left)]] |
| 261 | |
| 262 | [[Image(http://www.google.com/trends/viz?q=cakephp%2Csymfony%2Czend+framework%2Ccodeigniter%2Cmaple+php&date=mtd&geo=all&graph=weekly_img&ctab=0&sa=N, 400)]] |
| 263 | |
| 264 | 上記のフレームワーク中から選びます。 |
| 265 | |
| 266 | === フレームワーク選定の要件 === |
| 267 | ==== 評価マトリックス ==== |
| 268 | ||-||ZendFramework||CakePHP||symfony||ethna||maple||CodeIgniter?||コメント|| |
| 269 | ||Googleトレンドの人気||3位||1位||2位||-||-||4位||-|| |
| 270 | ||ドキュメント量||◎||○||◎||△||△||?||-|| |
| 271 | ||ユーザー構築情報[[BR]] WEBでの使用感のレポートの量||-||-||○||-||-||-||-|| |
| 272 | ||[DB]PostgreSQL MySQL SQLiteを抽象化||-||-||○||-||-||-||-|| |
| 273 | ||DBのMasterSlave?読み分け[[BR]]更新系と参照系を振分ける仕組みが入っているか[[BR]] OpenPNEでいうところのmainとmain_reader||-||-||△[[BR]] pluginで対応可能||-||無||-||-|| |
| 274 | ||部分SSL対応||-||-||△[[BR]] pluginで対応可能||-||無||-||-|| |
| 275 | ||Sessionストレージ変更(File DB Memcache)||-||-||○||無||無||-||-|| |
| 276 | ||[SlavePNE]POP3 DB HTTP LDAP対応できるか?[[BR]] PEAR::Authのcontainer的なものがあるか?||-||-||○||○[[BR]] xmlrpcでのアプリケーション作成がデフォルトでできる||無||-||-|| |
| 277 | ||携帯UAの機種振り分け||-||-||△||-||標準では△[[BR]] →を使えば実装可能||-||[http://pear.php.net/package/Net_UserAgent_Mobile/ pear][http://pear.php.net/package/Net_UserAgent_Mobile/ UsegAgentMobile]|| |
| 278 | ||携帯認証カバー(個体識別 キャリアUA)||-||-||×||-||標準では△[[BR]] →を使えば実装可能||-||[http://pear.php.net/package/Net_UserAgent_Mobile/ UsegAgentMobile]|| |
| 279 | ||携帯絵文字||-||-||×||無||標準では無[[BR]] →を使えば実装可能||-||[http://php-develop.org/MobilePictogramConverter/ MobilePictgram]|| |
| 280 | ||日本語メール送信出来るか?||-||-||○||○||○||-||-|| |
| 281 | ||日本語メール受信して処理出来るか?(絵文字含む)||-||-||△||△[[BR]]絵文字は非対応||△[[BR]] 絵文字は非対応||-||-|| |
| 282 | ||SQLインジェクションカバー[[BR]] プレースフォルダを使えるか?||-||-||○||○||○||-||-|| |
| 283 | ||CSRFカバー[[BR]] doアクションでワンタイムトークン的なものがつかえるか||-||-||○[[BR]] pluginで対応可能||○||-||-||-|| |
| 284 | ||XSSカバー[[BR]] OpenPNEはsmartyの出力時にチェックしてる||-||-||◎||-||-||-||-|| |
| 285 | ||テンプレートエンジンに選択自由度があるか?[[BR]] OpenPNEはsmartyのみ。||-||smarty使えない||smartyは、[[BR]] pluginを使えば使える||Smarty||Smarty[[BR]] Flexy[[BR]] Simple||-||-|| |
| 286 | ||[ktai URL]/.ZsrMKtQAyh9GHdXP./member/1[[BR]][[BR]]携帯の認証について||-||-||△||-||-||-||-|| |
| 287 | ||国際化対応レベル||-||-||◎||-||-||-||-|| |
| 288 | ||パフォーマンス(FWでの劣化)||-||-||△||-||-||-||-|| |
| 289 | ||パフォーマンス(FW機能による高速化)||-||-||○||-||-||-||-|| |
| 290 | ||[DB]members id member_id[[BR]][[BR]] ?手嶋確認||-||-||?||-||-||-||-|| |
| 291 | ||[URL]/member/1 /community/1[[BR]][[BR]] mod_rewrite使えるってこと?||-||○||○||-||-||-||-|| |
| 292 | ||サポートの継続[[BR]][[BR]]開発体制||◎||○||○||○||△[[BR]]昨年度開発がほぼ停止のため||-||-|| |
| 293 | ||OpenID Consumer対応||ライブラリ有り||-||pluginで対応可能||-||-||-||-|| |
| 294 | ||OpenID Provider対応||ライブラリ有り||-||?||-||-||-||-|| |
| 295 | ||OpenSocial Container||-||-||-||-||-||-||-|| |
| 296 | ||小窓||OK||OK||OK||OK||OK||OK||-|| |
| 297 | ||PHP小窓[[BR]][[BR]] smartyのplugin的なことができるか?||-||-||○||○[[BR]] デフォルトでそんな機能があるそうです||△[[BR]] filterを自作する必要があります||-||-|| |
| 298 | ||ページキャッシュ[[BR]][[BR]] smartyのキャッシュ的なものがあるか?||-||-||◎||-||-||-||-|| |
| 299 | ||ページコンポーネントごとキャッシュ[[BR]][[BR]] smartyのキャッシュ的なものがあるか?[[BR]] Templateインクルードとかで。||-||-||◎||-||-||-||-|| |
| 300 | ||クエリキャッシュ[[BR]][[BR]] adodbとかそのレイヤーのこと。||-||-||◎||-||-||-||-|| |
| 301 | ||OpenPNEサンプルコーディングの結果||未||未||未||-||-||未||-|| |
| 302 | ||テストフレームワークの有無[[BR]] rubyみたいな||-||-||デフォルトで○||-||無||-||-|| |
| 303 | ||サポートするPHPバージョン||5||4 5||5.1||4 5||4 5||4 5||-|| |
| 304 | ||一般のレンタルサーバで使えるか?[[BR]] php,mod_rewriteなど||-||-||○||○||○||-||-|| |
| 305 | ||リクエストパラメーターの変換が容易か?[[BR]] 「全角→半角」変換するようなコード||-||-||filterでできる||-||○||-||-|| |
| 306 | ||Validationの実装が容易||-||-||○||-||○||-||-|| |
| 307 | ||action, filter実行時のログ出力機能が標準で備わっている||-||無||○||-||○||-||-|| |
| 308 | ||actionの自動生成機能があるか||-||○||○||○||○||-||-|| |
| 309 | ||viewの自動生成機能があるか||-||○||○||○||○||-||-|| |
| 310 | ||O/R マッパー||○||○||○||○||△[[BR]]開発者が推奨しない||-||-|| |
| 311 | ||DI機能||-||-||×||△[[BR]]開発中||○||-||-|| |
| 312 | ||他プロジェクトとの連携||-||-||△||-||Seasar[[BR]] Usagi||-||-|| |
| 313 | ||似ているフレームワーク||JSF||Ruby On Rail||Ruby On Rail||Struts||Struts||-||-|| |
| 314 | ||フレームワークでの文字モジコード設定||-||-||×||-||○||-||-|| |
| 315 | ||Ajaxを使うモジュールを作成する機能が標準で入っているか[[BR]] Ajax用Javascriptを書かなくていい、など||-||○||○||△[[BR]]多少は書く必要があります||無||-||-|| |
| 316 | ||設定ファイルの記述キジュツ方式ホウシキ||-||ini, php||yml,ini||-||ini||-||-|| |
| 317 | ||国内大規模サイトでの開発・運用実績||-||-||△[[BR]] [http://erotube.phalko.com/ link] [[BR]][[BR]] yahooブックマーク||◎[[BR]] http://gree.jp/||○[[BR]] [http://www.webfile.jp/ link] [[BR]] [http://www.keiri-kaikei.com link]||-||-|| |
| 318 | ||国内開発用メーリングリスト||◎[[BR]] 国内ML多数||○||○||◎[[BR]]国内ML多数||○[[BR]] 2007年はほぼ休止していた||-||-|| |
| 319 | |
| 320 | ==== その他条件 ==== |
| 321 | * DB抽象化されていて、PostgreSQL MySQL SQLiteがシームレスに利用できる? |
| 322 | * チューニング目的以外では、セットアップ、DB操作のSQLは1パターンのみで運用可能 |
| 323 | * 携帯の特殊な挙動に対して、フレームワークでカバーできるか? |
| 324 | * Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なテンプレートエンジンを使えるか?) |
| 325 | * パフォーマンスが劣化しないか? |
| 326 | * ドキュメントが充実しているか? |
| 327 | * 今後サポートが継続されそうか? |
| 328 | * テスト関連のフレームワークが備わっているか? |
| 329 | * 国際化対応の機構が組み込まれているか? |
| 330 | * トレンドなのでRailsをある程度意識していて欲しい |
| 331 | |
| 332 | ==== 考慮しなくても良い要件 ==== |
| 333 | * OpenPNE2系からの移行に伴う作業負荷は考えない |
| 334 | * PHP5限定のフレームワークでも良い |
| 335 | |
| 336 | |
| 337 | |
| 338 | |