Version 42 (modified by 15 years ago) (diff) | ,
---|
OpenPNE3ノート
PHPフレームワークの選定
二つを目的とするプロジェクトです。 OpenPNE本体の挙動や設計面についての仕様です。
Googleトレンド調べ
上記のフレームワーク中から選びます。
フレームワーク選定の要件
評価マトリックス
ZendFramework | CakePHP | symfony | CodeIgniter? | |
Googleトレンドの人気 | 3位 | 1位 | 2位 | 4位 |
テストフレームワークの有無 | ||||
国際化対応レベル | ||||
ドキュメント量 | ||||
サポートの継続 | ||||
[DB]PostgreSQL MySQL SQLiteを抽象化 | ||||
携帯UAの機種振り分け | ||||
携帯認証カバー(個体識別 キャリアUA) | ||||
[ktai URL]/.ZsrMKtQAyh9GHdXP./member/1 | ||||
パフォーマンス(FWでの劣化) | ||||
パフォーマンス(FW機能による高速化) | ||||
[SlavePNE]PearAuthサポート | ||||
[DB]members id member_id | ||||
[URL]/member/1 /community/1 | ||||
サポートするPHPバージョン | PHP5 | PHP4 PHP5 | PHP5 | PHP4 PHP5 |
OpenPNEサンプルコーディングの結果 | 未 | 未 | 未 | 未 |
その他条件
- DB抽象化されていて、PostgreSQL MySQL SQLiteがシームレスに利用できる?
- チューニング目的以外では、セットアップ、DB操作のSQLは1パターンのみで運用可能
- 携帯の特殊な挙動に対して、フレームワークでカバーできるか?
- Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なテンプレートエンジンを使えるか?)
- パフォーマンスが劣化しないか?
- ドキュメントが充実しているか?
- 今後サポートが継続されそうか?
- テスト関連のフレームワークが備わっているか?
- 国際化対応の機構が組み込まれているか?
- トレンドなのでRailsをある程度意識していて欲しい
考慮しなくても良い要件
- OpenPNE2系からの移行に伴う作業負荷は考えない
- PHP5限定のフレームワークでも良い
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
- 携帯は挙動が特殊なので、フレームワークでカバーできるか?
- 拡張すれば ok
- Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なエンジンか?
- 可能
- パフォーマンスが劣化しないか?
- たぶん yes
- ドキュメントが充実しているか?
- yes
- 今後サポートが継続されそうか?
- yes(企業が開発している)
- 国際化対応の機構が組み込まれているか?
- yes(まだ詳しく見てませんが)
- OpenPNE2系からの移行に大きな負荷がかからないか?
- 書き直しなので負荷はかかるんじゃないかと
- トレンドなのでRailsをある程度意識していて欲しい
- Active Record など意識されてます
- PHP5限定のフレームワークでOK
- 4/5とも ok
開発スケジュール
- 【現在】仕様策定、アイデア
- 【2008/02/29】仕様決定
- 【未定】開発XX
- 【未定】ベータ
- 【未定】リリース
URLスタイル
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単独で特別扱いすることはやめる。
仕様
データ構造
- メンバー
- 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を意識した作りがいいな。
http://www.railsenvy.com/2007/8/8/activerecord-tutorial
ActiveRecord説明
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に