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

TOC

OpenPNE3ノート

【3.0切捨機能フォロー】レビュー機能

3.0では現在のレビュー機能を廃止しようと思います。 日記、小窓などを組み合わせることで、同等以上の機能を実現します。

レビューの新規登録

URL2CMD

レビューは各外部サイトからURL2CMDによって新規登録します。

レビューの閲覧【個別】

日記

プロフィール(メンバー・コミュニティ)

トピック

レビューの閲覧【一覧】

小窓リスト

小窓ランキング

画面構造

perspective(h_ f_ c_)

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

管理構造

権限管理

ターゲットがある物

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

SNSで一意

PHPフレームワークの選定

参考情報

Googleトレンド調べ

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

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

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

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

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

評価マトリックス

-ZendFrameworkCakePHPsymfonyethnamapleCodeIgniter??コメント
Googleトレンドの人気3位1位2位--4位-
ドキュメント量-
ユーザー構築情報
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限定のフレームワークでも良い

参考情報

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と編集してください。

#151
SNS同士のつながりを作る
#1131
バナー、インフォメーション欄、テンプレート挿入、HTML挿入の仕様を一本化する

どの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

メモ

フレームワークメモ

手嶋は 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

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

OpenPNE3サマリ

機能追加

  • 国際化対応を行います
  • 携帯機能を優先させます
  • SNSとソーシャルアプリケーションの分業を意識した開発を行います(小窓/携帯小窓/OpenSocial/Facebook Platform)
  • カスタマイズ開発用のドキュメントが充実します

制限事項

  • PHP5以降限定になります
  • mod_rewriteもしくはpathinfoが必須になります。

仕様変更

  • ベースフレームワークにsymfonyを使用します(ライブラリとしてZendFramework PEARを使用します)
  • DB構造が大幅に変更になります
  • URI構造が変更になります
    • CoolURLスタイル
    • 携帯セッションハンドリングの変更
  • 使われていない/開発がうまく進まない機能の統廃合が行われます(切り離される機能は代替手段でカバーします)
    • レビュー
    • PNEBIZ

PHPフレームワークの選定

symfonyをOpenPNEのベースフレームワークに採用します。

ZendFramework Pearはライブラリとして適宜利用します。

pne-openpne3-note

削減機能のフォローアップ

レビュー

OpenPNE2系にあるレビュー機能(fh_review_list_memberなど)は使用頻度が低いため、機能を見直します。 現在の機能は削除し、小窓を拡張して同様の機能を実現し置き換える予定です。

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 /m1page_f_home
フレンド OpenID/members/1/openid/
メッセージ/messages/1 /s1?? h_message
メッセージ リスト/messages/listh_message_box
コミュニティ/communities/1 /c1page_c_home
コミュニティ編集/communities/edit/1c_edit
コミュニティ参加者リスト/community_members/list/1???c_member_list
管理者要求c_admin_request
c_admin_request_confirm
c_edit_delete_c_commu_confirm
c_edit_member
c_edit_member_delete_c_commu_member
コミュニティに招待/comunities/invite/???c_invite
c_join_commu
c_join_commu_2
c_join_err_already
c_join_err_wait
c_join_request
c_leave_commu
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
トピック/topics/1 /t1c_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/1 /e1c_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/1 /d1fh_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
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_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

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

pne-openpne3-note

DBレイアウト

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

HTMLテンプレートコーディング

pne-xhtmlcss の成果を取り込み、FullCSS化を実現する。

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

データ構造

pne-openpne3-note

国際化

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

pne-i18n

非HTTPベースで利用されるプログラムの極小化

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

非HTTPで呼ばれるプログラムは、API経由にして極力小さくする。 特にDBは呼ばせないようにする。

現在RSS デイリーメール mail.php などは単純なリクエストレスポンスモデルでは動いていない。 これをすべてHTTPのリクエストレスポンスモデルに書き換える。

  • CRON=>HTTPClient=>httpリクエスト=>OpenPNEモジュール
  • mail.php=>HTTPClient=>httpリクエスト=>OpenPNEモジュール
  • pop3mail.php=>HTTPClient=>httpリクエスト=>OpenPNEモジュール

OpenPNE3 テンプレートに使用するヘルパー関数のつかいかた

OpenPNE3(.0beta4現在)のテンプレートで使用している主なヘルパー関数の説明です。

op_include_box

シンプルなボックスを表示させたいときに使用する。

パラメータ

$id
ID
$body
パーツに表示する内容
$options
オプション(すべて任意)
  • title: パーツの見出し
  • single: (PCのみ)枠線が一重か二重か
  • partsInfo:(PCのみ)パーツに入れる説明文
  • moreInfo: 「もっと読む」のようなリンク

op_include_form

フォームを表示させるときに使用する。

パラメータ

$id
ID
$form
フォームの内容
$options
オプション(すべて任意)
  • title: パーツの見出し
  • single: (PCのみ)枠線が一重か二重か
  • partsInfo:(PCのみ)パーツに入れる説明文
  • moreInfo: 「もっと読む」のようなリンク
  • url: formの送信先のURL
  • isMultipart: multipartを使用するかどうか?の設定
  • button: submitボタンの文言
  • align: (携帯のみ)submitボタンの表示位置(left, center, right)

op_include_list

一覧表示を行いたい場合に使用する。

パラメータ

$id
ID
$list
一覧の内容
$options
オプション(すべて任意)
  • title: パーツの見出し
  • single: (PCのみ)枠線が一重か二重か
  • partsInfo:(PCのみ)パーツに入れる説明文
  • moreInfo: 「もっと読む」のようなリンク

op_include_line

作成途中

パラメータ

WikiInclude(DIRECTORYNAVI)?

Last modified 9 years ago Last modified on Jan 21, 2009, 9:53:54 PM