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

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

--

OpenPNE3ノート

PHPフレームワークの選定

二つを目的とするプロジェクトです。 OpenPNE本体の挙動や設計面についての仕様です。

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位
テストフレームワークの有無
国際化対応レベル
ドキュメント量
サポートの継続
[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バージョンPHP5PHP4 PHP5PHP5PHP4 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と編集してください。

#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

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に