wiki:pne-openpne3
 ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Version 80 (modified by tejimaa, 12 years ago) (diff)

--

TOC

OpenPNE3仕様

本WikiにはOpenPNE3仕様に関する、概要説明や仕様などの確定した情報を記載 しています。本Wikiについての草稿や議論は、ノートページに記載してください。

OpenPNE3の制約事項

  • PHP5以降限定になります。
  • mod_rewrite必須になります。
  • DB構造が大幅に変更になります。
  • 使われていない機能の統廃合が行われます。

PHPフレームワークの選定

PHPフレームワークを導入します。

pne-openpne3-note

参考情報

Googleトレンド調べ

http://sc.pne.jp/200712231511.png

http://www.google.com/trends/viz

http://www.google.com/trends/viz

上記のフレームワーク中から選びます。

フレームワーク選定の要件

評価マトリックス

ZendFrameworkCakePHPsymfonyCodeIgniter?
Googleトレンドの人気3位1位2位4位
ドキュメント量1位
ユーザー構築情報
[DB]PostgreSQL MySQL SQLiteを抽象化
DBのMasterSlave読み分け
部分SSL対応
Sessionストレージ変更(File DB Memcache)
[SlavePNE]POP3 DB HTTP LDAP対応できるか?
携帯UAの機種振り分け
携帯認証カバー(個体識別 キャリアUA)
携帯絵文字
日本語メール送信出来るか?
日本語メール受信して処理出来るか?(絵文字含む)
SQLインジェクションカバー
CSRFカバー
XSSカバー
テンプレートエンジンに選択自由度があるか?
[ktai URL]/.ZsrMKtQAyh9GHdXP./member/1
国際化対応レベル
パフォーマンス(FWでの劣化)
パフォーマンス(FW機能による高速化)
[DB]members id member_id
[URL]/member/1 /community/1
サポートの継続
OpenID Consumer対応ライブラリ有り
OpenID Provider対応ライブラリ有り
OpenSocial Container
小窓OKOKOKOK
PHP小窓
ページキャッシュ
ページコンポーネントごとキャッシュ
クエリキャッシュ
OpenPNEサンプルコーディングの結果
テストフレームワークの有無
サポートするPHPバージョン54 554 5
-ZendFrameworkCakePHPsymfonyethnamapleCodeIgniter??コメント
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の機種振り分け---標準では△
→を使えば実装可能
-pearUsegAgentMobile
携帯認証カバー(個体識別 キャリアUA)--×-標準では△
→を使えば実装可能
-UsegAgentMobile
携帯絵文字--×標準では無
→を使えば実装可能
-MobilePictgram
日本語メール送信出来るか?----
日本語メール受信して処理出来るか?(絵文字含む)--
絵文字は非対応

絵文字は非対応
--
SQLインジェクションカバー
プレースフォルダを使えるか?
----
CSRFカバー
doアクションでワンタイムトークン的なものがつかえるか
--
pluginで対応可能
---
XSSカバー
OpenPNEはsmartyの出力時にチェックしてる
------
テンプレートエンジンに選択自由度があるか?
OpenPNEはsmartyのみ。
-smarty使えないsmartyは、
pluginを使えば使える
SmartySmarty
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-------
小窓OKOKOKOKOKOK-
PHP小窓

smartyのplugin的なことができるか?
--
デフォルトでそんな機能があるそうです

filterを自作する必要があります
--
ページキャッシュ

smartyのキャッシュ的なものがあるか?
------
ページコンポーネントごとキャッシュ

smartyのキャッシュ的なものがあるか?
Templateインクルードとかで。
------
クエリキャッシュ

adodbとかそのレイヤーのこと。
------
OpenPNEサンプルコーディングの結果
---
テストフレームワークの有無
rubyみたいな
--デフォルトで○---
サポートするPHPバージョン54 55.14 54 54 5-
一般のレンタルサーバで使えるか?
php,mod_rewriteなど
----
リクエストパラメーターの変換が容易か?
「全角→半角」変換するようなコード
--filterでできる---
Validationの実装が容易-----
action, filter実行時のログ出力機能が標準で備わっている----
actionの自動生成機能があるか---
viewの自動生成機能があるか---
O/R マッパー
開発者が推奨しない
--
DI機能--×
開発中
--
他プロジェクトとの連携---Seasar
Usagi
--
似ているフレームワークJSFRuby On RailRuby On RailStrutsStruts--
フレームワークでの文字モジコード設定--×---
Ajaxを使うモジュールを作成する機能が標準で入っているか
Ajax用Javascriptを書かなくていい、など
-
多少は書く必要があります
--
設定ファイルの記述キジュツ方式ホウシキ-ini, phpyml,ini-ini--
国内大規模サイトでの開発・運用実績--
link

yahooブックマーク

http://gree.jp/

link
link
--
国内開発用メーリングリスト
国内ML多数

国内ML多数

2007年はほぼ休止していた
--

その他条件

  • DB抽象化されていて、PostgreSQL MySQL SQLiteがシームレスに利用できる?
    • チューニング目的以外では、セットアップ、DB操作のSQLは1パターンのみで運用可能
  • 携帯の特殊な挙動に対して、フレームワークでカバーできるか?
  • Smartyテンプレートを使用できるか?(もしくは置き換えるに値する素敵なテンプレートエンジンを使えるか?)
  • パフォーマンスが劣化しないか?
  • ドキュメントが充実しているか?
  • 今後サポートが継続されそうか?
  • テスト関連のフレームワークが備わっているか?
  • 国際化対応の機構が組み込まれているか?
  • トレンドなのでRailsをある程度意識していて欲しい

考慮しなくても良い要件

  • OpenPNE2系からの移行に伴う作業負荷は考えない
  • PHP5限定のフレームワークでも良い

URLスタイル

/xxx/h_home.phpのように.phpを使わないURLスタイルに変更されます。

上記変更に伴いmod_rewrite環境が必須になります。

※pathinfoで実現する救済措置は検討中です。

OpenPNE3URLマップ

項目名OpenPNE3のURLOpenPNE2でのURL
マイホーム/home/ or / page_h_home
あしあと/ashiato/h_ashiato
カレンダー/calendar/h_calendar
リンク申請f_link_request
リンク申請f_link_request_confirm
フレンド/members/1 page_f_home
メッセージ/messages/1h_message
メッセージ リスト/messages/listh_message_box
コミュニティ/communities/1page_c_home
トピック/topics/1c_topic_detail
トピック リスト/topics/listc_topic_list
トピック 編集/topics/edit/1c_topic_edit
トピック 追加/topics/add/1c_topic_add
トピックc_topic_add_confirm
トピックc_topic_delete_confirm
トピックc_topic_write_confirm
トピックc_topic_write_delete_confirm
イベント/events/1c_event_detail
イベント リスト/events/listc_event_list
イベント 追加/events/addc_event_add
イベントc_event_add_confirm
イベントc_event_delete_confirm
イベント 編集/events/edit/1c_event_edit
イベント/events/invitec_event_invite
イベントc_event_invite_end
イベントc_event_mail
イベントc_event_mail_confirm
イベントc_event_mail_end
イベントc_event_member_list
イベントc_event_write_confirm
イベントc_event_write_delete_confirm
日記/diaries/1fh_diary
日記 リスト/diaries/listfh_diary_list
日記 リスト/diaries/list/1h_diary_list_friend
日記 追加/diaries/addh_diary_add
日記h_diary_add_confirm
日記コメント リスト/diary_comments/listh_diary_comment_list
日記 編集/diaries/edith_diary_edit
日記 編集 確認h_diary_edit_confirm
日記fh_diary_comment_confirm
設定/config/h_config
設定/config/imageh_config_image
設定/config/ktaih_config_ktai
設定h_config_ktai_end
設定h_config_prof
設定h_config_prof_confirm
設定h_confirm_list
↓↓↓↓↓↓↓↓エラーページ系↓↓↓↓↓↓↓↓
エラー※統合したいh_err_c_home
エラー※統合したいh_err_diary_access
エラー※統合したいh_err_f_home
エラー※統合したいh_err_fh_diary
エラー※統合したいh_err_forbidden
エラー※統合したいh_err_free_page
エラー※統合したいh_err_invite
リンク申請f_link_request_err_already
リンク申請f_link_request_err_wait
リンク申請f_link_request_err_yet
外部ページo_err_free_page
↓↓↓↓↓↓↓↓外部ページ系↓↓↓↓↓↓↓↓
外部ページo_free_page
外部ページo_h_config_mail
外部ページo_h_regist_mail
外部ページo_login
外部ページo_login2
外部ページo_password_query
外部ページo_public_invite
外部ページo_public_invite_end
外部ページo_regist_end
外部ページo_regist_intro
外部ページo_regist_ktai_address
外部ページo_regist_ktai_address_confirm
外部ページo_regist_ktai_address_end
外部ページo_regist_mail_confirm
外部ページo_regist_prof
外部ページo_regist_prof_confirm
外部ページo_sns_kiyaku
外部ページo_sns_privacy
外部ページo_tologin
外部ページo_url_changed
↓↓↓↓↓↓↓↓全体系↓↓↓↓↓↓↓↓
ランキングh_ranking
検索c_com_topic_find
日記 検索h_diary_list_all
検索h_com_find_all
検索h_com_topic_find_all
検索/search/h_search
検索h_search_list
検索h_search_result
↓↓↓↓↓↓↓↓命名が重要でない↓↓↓↓↓↓↓↓
メンバー招待h_invite
メンバー招待h_invite_confirm
メンバー招待h_invite_end
ブックマーク※廃止したいf_bookmark_add
ブックマーク※廃止したいh_bookmark_diary_blog_list
ブックマーク※廃止したいh_bookmark_list
スケジュール※廃止したいh_schedule
スケジュール※廃止したいh_schedule_add
スケジュール※廃止したいh_schedule_add_confirm
スケジュール※廃止したいh_schedule_delete
スケジュール※廃止したいh_schedule_delete_end
スケジュール※廃止したいh_schedule_edit
スケジュール※廃止したいh_schedule_edit_confirm
レビュー※廃止予定c_member_review
レビュー※廃止予定c_member_review_add
レビュー※廃止予定c_member_review_add_confirm
レビュー※廃止予定c_member_review_delete_confirm
レビュー※廃止予定h_review_add
レビュー※廃止予定h_review_add_write
レビュー※廃止予定h_review_add_write_confirm
レビュー※廃止予定h_review_clip_add
レビュー※廃止予定h_review_clip_list
レビュー※廃止予定h_review_delete_confirm
レビュー※廃止予定h_review_edit
レビュー※廃止予定h_review_list_product
レビュー※廃止予定h_review_search
レビュー※廃止予定fh_review_list_member

※レビュー機能は、小窓を利用した代替表現手段を確立し、本体機能からは切り離す予定です。

pne-openpne3-note

DBレイアウト

  • RailsスタイルのDB名、カラム名を採用する
  • テーブル名
    • members
    • communities
  • カラム名
    • 主キー => id
    • 外部キー => member_id

HTMLレイアウト

  • FullCSS
  • コンテナ方式
  • 公式レイアウトは固定幅、固定フォント
  • インターフェースと装飾を明確に区別する
    • インターフェースは、ボタン配置など、装飾は配色、スキン等

データ構造

pne-openpne3-note

画面構造

perspective(h_ f_ c_)

  • h_自分系
  • f_フレンド系
  • c_コミュニティ系

管理構造

権限管理

ターゲットがある物

  • FriendLevel?
    • フレンド フレンドじゃない
  • CommunityLevel?
    • コミュニティ外 コミュニティメンバー コミュニティ管理人 コミュニティ副管理人

SNSで一意

国際化

国際化に対応できる機構にします。

pne-i18n

WikiInclude(DIRECTORYNAVI)?