Version 59 (modified by 15 years ago) (diff) | ,
---|
OpenPNE3ノート
PHPフレームワークの選定
参考情報
IBM developerWorksの比較記事
http://www.ibm.com/developerworks/opensource/library/os-php-fwk1/ http://www.ibm.com/developerworks/opensource/library/os-php-fwk2/ http://www.ibm.com/developerworks/opensource/library/os-php-fwk3/ http://www.ibm.com/developerworks/opensource/library/os-php-fwk4/ http://www.ibm.com/developerworks/opensource/library/os-php-fwk5/
CakePHP
概要
Ruby on Railsを強く意識
- 活発でフレンドリーなコミュニティ
- 柔軟なライセンス
- PHP4 と PHP5 での互換性
- データベースと連携し、クエリを簡略化するための CRUD が統合済み
- アプリケーションの Scaffolding(足場組み)
- モデル ビュー コントローラ (MVC) アーキテクチャ
- 見栄えのよいカスタム URL を実現するリクエストディスパッチャー
- バリデーションが組み込まれている
- 高速で柔軟なテンプレート機能 (PHP 構文。各種ヘルパーが付属)
- AJAX, Javascript, HTML フォームなどのための各種ビューヘルパー
- セキュリティ、セッション、リクエストなどを処理するコンポーネント
- 柔軟なアクセスコントロールリスト
- データのサニタイズ
- 柔軟なビューのキャッシュ
- Webサイトのサブディレクトリでも動作。Apache はまったくいじらなくてよいか、わずかな設定のみ。
ZendFramework
足場機能(scaffold)
- いまのところ見あたらない
ORマッピング
あまり激しくはやらないみたいだ
http://framework.zend.com/manual/ja/zend.db.select.html
$select = $db->select() ->from( ...テーブルとカラムを指定します... ) ->where( ...検索条件を指定します... ) ->order( ...ソート条件を指定します... );
フィールド名に対して規約での縛りがあまり無い。その代わりリレーションを自動で決定する機構も無い?
この方法は、動的にSELECTを変えたいときに使うそうだ
SQL書かないようにするには下記の方法か?
http://framework.zend.com/manual/ja/zend.db.table.html
symfony
プロジェクト支援
- テーブル作成、プロジェクトビルド、など支援プログラムがある
MVCモデル
DB抽象化概要
- 【symfony】ちょっと設定記述が多いかな、と思った。特に複数テーブルの処理では
DB構築
- 【symfony】YAML形式で記述して、自動テーブル構築、抽象化してそう
リレーションの処理
- 【symfony】$entory->getFeed()->getName()の用にリレーションをたどれる 1:多 ->getFeeds() 多:1 ->getFeed() の用に処理する
キャッシング
CodeIgniter?
- DB抽象化されていて、PostgreSQL MySQL SQLiteがシームレスに利用できる?
- yes
- 携帯は挙動が特殊なので、フレームワークでカバーできるか?
- 拡張すれば可能
- Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なエンジンか?
- 拡張すれば可能(Wikiに非公式ライブラリ有)
- パフォーマンスが劣化しないか?
- たぶん yes。Web上に公開されているベンチマークでは最も高速
- ドキュメントが充実しているか?
- 完全なドキュメント有
- 今後サポートが継続されそうか?
- yes(企業が開発している)
- 国際化対応の機構が組み込まれているか?
- yes(但し、非常に単純。WikiにGettext対応の非公式ライブラリ有)
- OpenPNE2系からの移行に大きな負荷がかからないか?
- 書き直しなのでどんなフレームワークでもある程度負荷はかかると思われます
- トレンドなのでRailsをある程度意識していて欲しい
- Active Record など意識されてます
- PHP5限定のフレームワークでOK
- 4/5とも OK
開発スケジュール
- 【現在】仕様策定、アイデア
- 【2008/02/29】仕様決定
- 【未定】開発XX
- 【未定】ベータ
- 【未定】リリース
OpenPNE3で実現する内容
外部フレームワークを導入
外部フレームワークを導入して、プログラミング全体の構造を規定する。
http://trac.openpne.jp/wiki/pne-framework
ここで検討中。
プロジェクトチケット milestone=OpenPNE3.0
No results
OpenPNE3的なチケット keywords=openpne3
OpenPNE3.0で正式決定したわけでは無い物の、OpenPNE的なチケットを集めます。
※自由にkeywords=openpne3と編集してください。
どのInterSNS機能の実現するか?
最低1つ以上のInterSNS機能を実現する。
テンプレート構造の見直し
フルCSS化をめざしテンプレート構造を再構築する。
どこまで構造を洗練させるか?
- 関数名を何とかしたい
- フレームワーク導入に伴って、 xx4yy => getXXXに変えるかな?
- 命名規則も決めたい
後方互換性の維持レベルをどうするか?
- OpenPNEAPIで提供されているぐらいはほしい
- OP関数は供給したい、関数名は変わっても同等以上の機能は維持したい
PNEBIZを一般モジュールレベルに切り離す
他のモジュールを取り込みやすくするために、PNEBIZ単独で特別扱いすることはやめる。
仕様
なぜか切り捨てられている機能
レビューが 切り捨てられると V2からV3に移行できない すくなくとも 標準のv2に現存する機能は V3で実現すべきだと思う。
URLスタイル
c_admin_request |
c_admin_request_confirm |
c_edit |
c_edit_delete_c_commu_confirm |
c_edit_member |
c_edit_member_delete_c_commu_member |
c_invite |
c_join_commu |
c_join_commu_2 |
c_join_err_already |
c_join_err_wait |
c_join_request |
c_leave_commu |
c_member_list |
c_send_message |
c_sub_admin_delete |
c_sub_admin_request |
c_sub_admin_request_confirm |
c_taikai_err_admin |
c_taikai_err_no_member |
f_com_list_common |
f_intro_delete_confirm |
f_intro_edit |
f_invite |
f_message_send |
f_message_send_confirm |
f_show_image |
fh_com_list |
fh_comment_list |
fh_delete_comment |
fh_friend_list |
fh_friend_list_delete_c_friend_confilm |
fh_intro |
h_access_block |
h_com_add |
h_com_add_confirm |
h_com_comment_list |
h_delete_diary |
h_delete_ktai |
h_free_page |
h_friend_review_list |
h_googlemap |
h_ktai_delete_end |
h_manage_friend |
h_prof |
h_regist_address |
h_regist_prof |
h_regist_prof_confirm |
h_reply_message |
h_set_public_flag_all_confirm |
h_taikai_confirm |
データ構造
- メンバー
- Memberクラス
- membersテーブル
- フレンドリンク(メンバーリンク)
- MemberLinkクラス
- memberlinksテーブル
- コミュニティ
- Communityクラス
- communitiesテーブル
- コミュニティトピック
- CommunityTopicクラス
- community_topics
- message
- event
- event_topic
- diary
- diary_comment
- permission
OpenPNE本体はHTTPリクエストレスポンスに特化
現在RSS デイリーメール mail.php などは単純なリクエストレスポンスモデルでは動いていない。 これをすべてHTTPのリクエストレスポンスモデルに書き換える。
- CRON=>HTTPClient=>httpリクエスト=>OpenPNEモジュール
- mail.php=>HTTPClient=>httpリクエスト=>OpenPNEモジュール
- pop3mail.php=>HTTPClient=>httpリクエスト=>OpenPNEモジュール
メモ
フレームワークメモ
手嶋は WebObjectsが好きだった http://www.apple.com/jp/webobjects/ いずれRuby版OpenPNEも作りたいし、Railsを意識した作りがいいな。
ActiveRecord説明
http://www.railsenvy.com/2007/8/8/activerecord-tutorial
11/3勉強会メモ
OpenPNE3 ■後ろ向き(後方互換性を無視できる) ・フレームワーク ・テンプレートを変える(FULLCSS化) ■前向き(InterSNS) ・人2SNS(複数のSNS) ・MySNS(MyPNE) ・SNS2SNS2アプリ(SNSメンバー限定Twitterみたいな) 認証情報を外部アプリに払い出す(MasterPNE、OpenID、OpenSocial) 貸し会議室、スターバックス(ネーミングライツを取ろう) ・SNS2SNS ・OpenPNE2OpenPNE ・mixi2PNE ・GREE2PNE ・モバゲー2PNE ※具体的に 北海道SNSと千葉SNSを交流 1.各SNSのメンバーのみが参加出来る、特設会場(Twitter)を作成して、そこで限定的に交流できる。(プロジェクト的、制限) 2.どんなSNSに入っていてもいいから、サッカーコミュニティに入っている人たち、横串でコミュニケーションできる。(出会い、発見、つながりを広げる) ・イベントは公開してもいいよね 3.6次の隔たり、LinkedInのOpenPNE版 ※PNEMonsterで出来ないか? 異業種交流会 カルチャークラブ 飲み会 バー、クラブ ■h_homeから始まらない、SNS ---------------------------------------------- 4.PNEMonster ・浮気調査(mixiで、離婚の切り札、作れます) ・SNSの盛り上げに使う(よねすけ、酢鶏) PNEMonsterはOpenPNE3とは切り離して考える ・Appli2SNS(MasterPNE) スタンドアローンSNSが、InterSNSに
1/15 国際化・フレームワーク勉強会メモ
https://trac.openpne.jp/svn/OpenPNE_specification/trunk/3.0/20080115_【3.0】フレームワー・国際化.mm
- | ZendFramework | CakePHP | symfony | ethna | maple | CodeIgniter?? | コメント |
Googleトレンドの人気 | 3位 | 1位 | 2位 | - | - | 4位 | - |
ドキュメント量 | 1位 | - | ◎ | - | 少スク | - | - |
ユーザー構築情報 WEBでの使用シヨウ感カンのレポートの量リョウ | - | - | ○ | - | - | - | - |
[DB]PostgreSQL MySQL SQLiteを抽象化 | - | - | ○ | - | - | - | - |
DBのMasterSlave?読み分け 更新コウシン系ケイと参照サンショウ系ケイを振フり分ワける仕組シクみが入ハイっているか OpenPNEでいうところのmainとmain_reader | - | - | △ pluginで対応タイオウ可能カノウ | - | 無ナ | - | - |
部分SSL対応 | - | - | △ pluginで対応タイオウ可能カノウ | - | 無ム | - | - |
Sessionストレージ変更(File DB Memcache) | - | - | ○ | 無ナ | 無ム | - | - |
[SlavePNE]POP3 DB HTTP LDAP対応できるか? PEAR::Authのcontainer的テキなものがあるか? | - | - | ○ | ○ xmlrpcでのアプリケーション作成サクセイがデフォルトでできる | 無ナ | - | - |
携帯UAの機種振り分け | - | - | △ | - | 標準ヒョウジュンでは△ →を使ツカえば実装ジッソウ可能カノウ | - | pearhttp://pear.php.net/package/Net_UserAgent_Mobile/ |
携帯認証カバー(個体識別 キャリアUA) | - | - | × | - | 標準では△ →を使えば実装可能 | - | http://pear.php.net/package/Net_UserAgent_Mobile/ [[BR]] |
携帯絵文字 | - | - | × | 無ム | 標準では無ナ →を使えば実装可能 | - | http://php-develop.org/MobilePictogramConverter/ [[BR]] |
日本語メール送信出来るか? | - | - | ○ | ○ | ○ | - | - |
日本語メール受信して処理出来るか?(絵文字含む) | - | - | △ | △ 絵文字エモジは非ヒ対応タイオウ | △ 絵文字は非対応 | - | - |
SQLインジェクションカバー プレースフォルダを使ツカえるか? | - | - | ○ | ○ | ○ | - | - |
CSRFカバー doアクションでワンタイムトークン的テキなものがつかえるか | - | - | ○ pluginで対応タイオウ可能カノウ | ○ | - | - | - |
XSSカバー OpenPNEはsmartyの出力シュツリョク時ジにチェックしてる | - | - | ◎ | - | - | - | - |
テンプレートエンジンに選択自由度があるか? OpenPNEはsmartyのみ。 | - | smarty使えない | smartyは、 pluginを使ツカえば使ツカえる | Smarty | Smarty Flexy Simple | - | - |
[ktai URL]/.ZsrMKtQAyh9GHdXP./member/1 携帯ケイタイの認証ニンショウについて | - | - | △ | - | - | - | - |
国際化対応レベル | - | - | ◎ | - | - | - | - |
パフォーマンス(FWでの劣化) | - | - | △ | - | - | - | - |
パフォーマンス(FW機能による高速化) | - | - | ○ | - | - | - | - |
[DB]members id member_id ?手嶋テシマ確認カクニン | - | - | ? | - | - | - | - |
[URL]/member/1 /community/1 mod_rewrite使ツカえるってこと? | - | ○ | ○ | - | - | - | - |
サポートの継続 開発カイハツ体制タイセイ | ◎ | ○ | ○ | ○ | △ 昨年度サクネンド開発カイハツがほぼ停止テイシのため | - | - |
OpenID Consumer対応 | ライブラリ有り | - | pluginで対応タイオウ可能カノウ | - | - | - | - |
OpenID Provider対応 | ライブラリ有り | - | ? | - | - | - | - |
OpenSocial Container | - | - | - | - | - | - | - |
小窓 | OK | OK | OK | OK | OK | OK | - |
PHP小窓 smartyのplugin的テキなことができるか? | - | - | ○ | ○ デフォルトでそんな機能キノウがあるそうです | △ filterを自作ジサクする必要ヒツヨウがあります | - | - |
ページキャッシュ smartyのキャッシュ的テキなものがあるか? | - | - | ◎ | - | - | - | - |
ページコンポーネントごとキャッシュ smartyのキャッシュ的なものがあるか? Templateインクルードとかで。 | - | - | ◎ | - | - | - | - |
クエリキャッシュ adodbとかそのレイヤーのこと。 | - | - | ◎ | - | - | - | - |
OpenPNEサンプルコーディングの結果 | 未 | 未 | 未 | - | - | 未 | - |
テストフレームワークの有無 rubyみたいな | - | - | デフォルトで○ | - | 無ナ | - | - |
サポートするPHPバージョン | 5 | 4 5 | 5.1 | 4 5 | 4 5 | 4 5 | - |
一般イッパンのレンタルサーバで使ツカえるか? php,mod_rewriteなど | - | - | ○ | ○ | ○ | - | - |
リクエストパラメーターの変換ヘンカンが容易ヨウイか? 「全角→半角」変換するようなコード | - | - | filterでできる | - | ○ | - | - |
Validationの実装ジッソウが容易ヨウイ | - | - | ○ | - | ○ | - | - |
action, filter実行ジッコウ時ジのログ出力シュツリョク機能キノウが標準ヒョウジュンで備ソナわっている | - | 無ナ | ○ | - | ○ | - | - |
actionの自動ジドウ生成セイセイ機能キノウがあるか | - | ○ | ○ | ○ | ○ | - | - |
viewの自動ジドウ生成セイセイ機能キノウがあるか | - | ○ | ○ | ○ | ○ | - | - |
O/R マッパー | ○ | ○ | ○ | ○ | △ 開発者カイハツシャが推奨スイショウしない | - | - |
DIコンテナ機能キノウ | - | - | × | △ 開発中カイハツチュウ | ○ | - | - |
他タプロジェクトとの連携レンケイ | - | - | △ | - | Seasar Usagi | - | - |
似ニているフレームワーク | JSF | Ruby On Rail | Ruby On Rail | Struts | Struts | - | - |
フレームワークでの文字モジコード設定セッテイ | - | - | × | - | ○ | - | - |
Ajaxを使ツカうモジュールを作成サクセイする機能キノウが標準ヒョウジュンで入ハイっているか Ajax用ヨウJavascriptを書カかなくていい、など | - | ○ | ○ | △ 多少タショウは書カく必要ヒツヨウがあります | 無ナ | - | - |
設定セッテイファイルの記述キジュツ方式ホウシキ | - | ini, php | yml,ini | - | ini | - | - |
国内コクナイ大規模ダイキボサイトでの開発カイハツ・運用ウンヨウ実績ジッセキ | - | - | △ http://erotube.phalko.com/ yahooブックマーク | ◎ http://gree.jp/ | ○ http://www.webfile.jp/ http://www.keiri-kaikei.com | - | - |
国内コクナイ開発用カイハツヨウメーリングリスト | ◎ 国内ML多数 | ○ | ○ | ◎ 国内コクナイML多数タスウ | ○ 2007年ネンはほぼ休止キュウシしていた | - | - |