最新ブログ
opAuthMailAddressPlugin 1.3.5 リリースのお知らせ
12 / 08 木曜日 2011
OpenPNE 開発チームの渡辺です。
本日 2011/12/08 (木)、 opAuthMailAddressPlugin 1.3.5 をリリースしました。
OpenPNE 3.6 で opAuthMailAddressPlugin 1.3.4 以下を使われている方は、opAuthMailAddressPlugin 1.3.5 へのバージョンアップを実施してください。
月刊HOUOU11月号が完成しました!
11 / 30 水曜日 2011
開発チームの柏木です。
OpenPNE3.7開発版(HOUOUプロジェクト)の第一弾として、月刊HOUOU11月号 (HOUOU_NOVEMBER) を配布します。
この月刊HOUOUは、OpenPNE3が今どのような変化を遂げているかを、手軽に確認していただくために、今後毎月月末に提供していきます。
サイト運営者の方々には、HOUOUプロジェクトの成果、最新機能をいち早く体験していただき、
使い勝手に対するフィードバックや、開発の方向性についてのアイデアをわれわれと共有していただきたいです。
また、HOUOU11月号のリリースと同時に柏木が開発を続けてきた、タイムライン機能を実現するopTimelinePlugin (開発コード「ゴルゴンハニー」)も、月刊HOUOUと同時に配布していきます。
早速ダウンロード
・OpenPNE開発版 HOUOU 11月号 ダウンロードはこちら => http://www.tejimaya.com/downloads/2011/HOUOU_NOVEMBER.zip
・タイムライン機能(ゴルゴンハニー)ダウンロードはこちら => http://www.tejimaya.com/downloads/2011/opTimelinePlugin.zip
HOUOU 11月号 概要
・最小限のプラグインでインストールが完了します
まずOpenPNEのプラグイン構成を見直し、デフォルトのバンドルプラグインを「opAuthMailAddressPlugin」のみに削減しました。
opAuthMailAddressPlugin だけをインストールさせることにより、OpenPNE3 のインストールが格段に速くなります。
インストールだけでなく、OpenPNE3 の画面表示速度も格段に速くなりました。(後述)
・デフォルトガジェットレイアウトが最小限のものだけになりました
バンドルプラグインを1つだけにしたのと同時に、「日記一覧」や「お気に入り一覧」などのガジェットもすべて取っ払い、ホーム画面やメンバープロフィール画面の表示速度が格段に早くなりました。
【参考・裸になったOpenPNE3】
・インタラクティブインストールを回避するオプションを追加しました
OpenPNE3 インストールと言うと、インタラクティブ形式でインストールタスクを進めていましたが、
HOUOU11月号からは、コマンド1つにデーターベース名やユーザー名、パスワードを指定することにより、
インタラクティブ形式をバイパスすることができるようになりました。 ( @77web さん提供)
・prototype.jsを廃止しjQueryに変更しました
プラグイン開発者の頭を悩ませる要因の1つでもあった、「prototype.js」ですが、
HOUOU 11月号では、OpenPNE3からprototype.jsを取っ払い、完全にjQueryに移行させました。
HOUOU11月号では「シンプル」をテーマに開発を続けてきました。
次回の12号ではいよいよ「スマートフォン」をテーマに開発を続けていきます!
【HOUOUのインストール方法】
まず、上記URLから HOUOU_NOVEMBER.zip をダウンロード&展開します。
そして最初はいつものOpenPNE3と同じインストール手順を行います
$ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php $ cp config/OpenPNE.yml.sample config/OpenPNE.yml $ vi config/OpenPNE.yml
そしてここからがHOUOUの新しいインストール方法です。
$ ./symfony openpne:fast-install --dbms=mysql --dbuser=username --dbpassword=password --dbname=databasename --dbhost=localhost
このようにコマンドの引数にデーターベースの接続情報を指定してやるだけで、インタラクティブを回避することができました。
※本コマンドは openpne:install コマンドに統合する予定です。
opTimelinePlugin (ゴルゴンハニー) 概要
・アクティビティをより進化させました
opTimelinePlugin(以下ゴルゴンハニー) では、今現在OpenPNE3 にあるアクティビティ機能をさらに強化させることを目的に作られたもので、且つ、このHOUOUプロジェクトのスマートフォン対応での重要な役割を担っています。
今のソーシャル・ネットワークに必要な機能の充実を目指しています。
・アクティビティにコメントが付けられるようになりました
まず、自分のアクティビティの投稿にユーザーからコメントが付けられるようになりました。
アクティビティの念願のコメント機能が、このゴルゴンハニーにて実現いたしました。
・リアルタイムでの更新がされるようになりました
アクティビティのタイムラインが30秒おきに自動更新されるようになりました。
今までは手動での更新が必要だったので、ブラウザを開けぱなしのまま、SNSメンバーの最新の情報を見ることができます。
・コミュニティアクティビティ機能を実装しました
ゴルゴンハニーでは、コミュニティ内でのアクティビティというものを実装いたしました。
コミュニティ内でだけ話したいこと、つまり、コミュニティの中でひそひそ話をしたいというときに、
コミュニティ宛の投稿というものができるようになったので、コミュニティ内での会話というのが楽しめるようになりました。
・スクリーンネームを設定できるようになりました
ゴルゴンハニーでは、Twitterと同じように、メンバーそれぞれにスクリーンネーム(@username)をOpenPNE3内に提供します。
スクリーンネームは、アクティビティの中でも使え、スクリーンネームの入った投稿をすると、そのスクリーンネームがメンバーのプロフィールとリンクされるようになります。
【裸になったOpenPNE3に…】
【ゴルゴンハニーを入れてみるだけでこうなる】
【ゴルゴンハニーのインストール方法】
まず、pluginsディレクトリにopTimelinePlugin.zip を展開します。
そしてあとはこのコマンドを叩くだけです。
$ ./symfony opTimelinePlugin:install
ゴルゴンハニーはこれからもどんどん成長していきます。温かく見守っていただければと思います。
サイト運営者の方にはぜひHOUOU11月号とゴルゴンハニーを試していただければと思います。
次回の12月号にご期待ください!
11/24 OpenPNE&PHP:デザイナー向けセミナー開催
11 / 22 火曜日 2011
手嶋です。
HOUOUの開発に没頭しており、告知をすっかり忘れていたのですが、
11/24 OpenPNEを題材にしたデザイナー向けのPHPセミナーを開催します。
時間は19:00から。場所は東京駅の近くです。
講師は手嶋が担当します。あまり難しいことは紹介せずに、
デザイナーの仕事の幅を拡げる上で、OpenPNEを利用するにはどうしたら良いか?
というような内容を考えています。
・OpenPNEをもっと知りたい
・デザイナーの仕事の幅を拡げる武器として、OpenPNEを学んでおきたい
・デザイナーだけどPHPを初めたい
という方に参加して欲しいです。告知が遅くなってしまったので、
担当の方に無理を言って、当日(24日)の16:00まで受け付けてもらえるようにしました。
興味のある方は、リンク先から申し込んでください。
Webデザイナーのための、”PHP”はじめよう
~PHP5技術者認定初級試験対策シリーズ~
<SNS OpenPNE 編>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<SNS OpenPNE 編>では、まだPHPにあまり触れていない方を対象に、前半ではPHPがベースとなっているSNSエンジン「OpenPNE」を取り上げ、その機能や内部構造をご紹介、後半ではそのカスタマイズを実演します。
加えて、PHPの基礎的なスキルを見につけることで、どのようにスキルアップや経験値を増やせるか、効果的にPHPスキルを修得するために必要な学習方法についてもご紹介します。
先週のHOUOUプロジェクト
11 / 22 火曜日 2011
先週分 (11/14 – 11/20) のブログ記事は次のとおりです。
手嶋屋ブログ (手嶋さん)
BeSocial.jp (柏木さん)
opTimelinePlugin(ゴルゴンハニー) preview版公開!
opTimelinePlugin(ゴルゴンハニー)のタスクリスト
今週のHOUOUプロジェクトについて
kim_upsilonの日記 (木村さん)
OpenPNE 3.6.1 リリース日について
11 / 21 月曜日 2011
OpenPNE 開発チームの坂田です。
新安定版 OpenPNE 3.6.1 のリリース日が決まりましたので、お伝えします。
OpenPNE 3.6.1 のリリースは 2011/12/08 (木) を予定しています。
また、OpenPNE 3.6.1 のリリースと同時に OpenPNE 3.4.18 もリリース予定しています。
リリース項目について以下を予定しています。
対応項目の詳細については、OpenPNE 3.6.1 バージョン情報 OpenPNE 3.4.18 バージョン情報 をご覧ください。
1日に2つ、新安定版と旧安定版をリリースしますので、楽しみにしていてください。
以上、よろしくお願いします。
先週のHOUOUプロジェクト
11 / 15 火曜日 2011
木村です。
OpenPNE3.7 (コードネーム: HOUOU) の開発が始まりました。現在の開発の状況をお知らせするため、毎週月曜日にこのブログで開発者のブログ記事を紹介していきます。
先週分 (11/11 – 11/13) のブログ記事は次のとおりです。
手嶋屋ブログ (手嶋さん)
2011/11/11のHOUOU
プロジェクトの準備や、どんな段取りで開発を進めているかについて。
HOUOUはオープン
TheApacheWayを参考にしたオープンな開発について。3名ともブログ日誌を共有する。
HOUOUのUI UXの研究
balsamiqを使ってHOUOUのUI研究をしている。
HOUOU 設定ファイルはゼロかひとつか
3つあるOpenPNEの設定ファイルはもっと減らせないか?
HOUOU キラープラグインはゴルゴンハニー
フルサクセス以上で提供されるプラグインをゴルゴンハニーと名付けた。
相手を感じるUX:どんなタイムラインがいい?
相手と対話、対面している雰囲気をどうつくるか?
HOUOU:フォロー=>購読 へ
Twitterでフォローが流行ったけど、フレンドリンクのままでいいかも。
コミュニティ=>グループ
コミュニティという表現は死語、方言になりつつあるのでは?
BeSocial.jp (柏木さん)
OpenPNE 3.7 「HOUOU」開発仕様について。【beta版】
HOUOU(次期OpenPNE)がどのようになるかについて説明しています。HOUOUの仕様や機能的説明が多いです。
OpenPNE3.7 HOUOU プロジェクトのgithubアカウントを作成しました。
HOUOU用のgithubのorganizationとレポジトリを作成しました。あくまでこのレポジトリは3人の練習用レポジトリで、いつかは本線にマージする予定です。
opTimelinePlugin進捗状況について。(2011年11月14日)
ゴルゴンハニーについて、1日でどのくらい開発が進んだかの報告。
管理人日記 2011年11月14日
HOUOUやゴルゴンハニーのちょっとした裏話を書いています。
※2011/11/15 手嶋追記
※2011/11/15 柏木追記
OpenPNE3.7(HOUOU)についてのブログ
11 / 11 金曜日 2011
手嶋です。
OpenPNE3.7(HOUOU)の開発シリーズは手嶋が指揮をとることになりました。
久しぶりの陣頭指揮になります。開発予算、仕様策定、リリースの責任者として活動します。
開発方針や目標などについては手嶋のブログに掲載してますので、参照してください。
OpenPNE3.7のコードネームは”HOUOU”
初の開発コードネーム設定。
OpenPNE3.7(HOUOU)のスケジュール
2012/03月リリース予定です。
HOUOU目玉要素1 シンプル
全プラグインを外した状態から開発スタート!
HOUOU目玉要素2 スピード
最低15%スピードアップします。
HOUOU目玉要素3 スマートフォン
ついにスマートフォン対応。AJAXアクション方式も採用。
HOUOU目玉要素番外編 キラープラグイン
タイムライン!タイムライン!タイムライン!
HOUOUのサクセスレベル
3つのサクセスレベル。ミニマム、フル、アドバンスド。
安定版 OpenPNE 3.4.17 リリースのお知らせ
11 / 10 木曜日 2011
OpenPNE 開発チームの坂田です。
本日、安定版 OpenPNE 3.4.17 をリリースしました。
今回も前回に続き予定通りのリリースとなりました。
今回の修正には opAuthMobileUIDPlugin , opCommunityTopicPlugin の更新が含まれています。
opCommunityTopicPlugin の更新についての詳細は下記リンクを御覧ください。
opCommunityTopicPluginリリースの詳細
不具合、何か気づいた点などあれば公式 SNS や redmine.openpne.jp などで報告していただければと思います。
次回のリリースは 2011年12月08日(木) を予定しています。
リリース情報などの情報はpnetanがTwitterでよくつぶやいていますので
是非フォローしてみてください。
http://twitter.com/pnetan
バージョンアップ・インストール
ダウンロード
OpenPNE 3.4.17(zipアーカイブ) は以下のボタンからダウンロードできます。
- zip版ダウンロード
パッケージの詳細は、こちらになります。
OpenPNE 3.4.17
インストール
OpenPNE 3.4.17 のインストールは、OpenPNE3.4 セットアップ手順 を確認ください。
3.2.x から 3.4 へのアップグレード、3.4 の以前のバージョンからのマイナーバージョンアップを行う場合は、このドキュメントを参考ください。
opCommunityTopicPlugin 0.9.9 リリースのお知らせ
11 / 10 木曜日 2011
OpenPNE 開発チームの渡辺です。
本日 2011/11/10 (木)、 opCommunityTopicPlugin 0.9.9 をリリースしました。
OpenPNE 3.4 で opCommunityTopicPlugin 0.9.8.1 以下を使われている方は、opCommunityTopicPlugin 0.9.9 へのバージョンアップを実施してください。
OpenPNE3.6beta11のORMを変更する実験をしました
11 / 08 火曜日 2011
OpenPNE3にある現状の課題の一つにパフォーマンスの問題があります。OpenPNE3がサーバーに要求するスペックはOpenPNE2よりも高く、OpenPNE3へのアップグレードを敬遠する理由の一つとなっています。そこで、もしOpenPNE3で使用しているDoctrine1を別のORMで置き換えるとどの程度パフォーマンスが改善されるかを実験しました。
環境
- basho1 (芭蕉1 / Webサーバ)
- Intel Core 2 Quad Q8400S 2.66GHz / 4GB Memory
CentOS 5.5
PHP 5.3.3 / APC 3.1.9 / XHProf 0.9.2
Apache 2.2.3
- basho3 (芭蕉3 / DBサーバ)
- Intel Core i5 i5-760 2.80GHz / 8GB Memory
CentOS 5.5
MySQL 5.1.53
詳細は http://d.hatena.ne.jp/openpne/20110823/1314078181 を参照して下さい。
比較したORM
- Doctrine 1.2.4 (OpenPNE3標準)
- Propel 1.6.2
- php-activerecord 1.0
- Doctrine 2.2.0-DEV
DBサーバにメンバーが380,000人登録されている状態で、検索クエリを設定していない状態の「メンバー検索」ページにてXHProfを使用して計測しました。
比較のために使用した修正版OpenPNE3のソースコードは下記URLから入手できます。
- https://github.com/upsilon/OpenPNE3/tree/propel
- https://github.com/upsilon/OpenPNE3/tree/activerecord
- https://github.com/upsilon/OpenPNE3/tree/doctrine2
結果
処理時間
doctrine1 | propel1.6 | php-activerecord | doctrine2 | |
Total Incl. Wall Time (microsec) | 885,274 | 457,233 | 477,260 | 383,231 |
Total Incl. CPU (microsec) | 784,880 | 367,944 | 387,942 | 332,949 |
処理時間では Doctrine1 > php-activerecord > Propel > Doctrine2 の順となりました(短いほど良好)。グラフからも分かるとおりDoctrine1は圧倒的に時間が掛かっています。一方、それ以外のORMではあまり変わらない結果となりました。
メモリ使用量
doctrine1 | propel1.6 | php-activerecord | doctrine2 | |
Total Incl. MemUse (bytes) | 21,630,856 | 20,403,448 | 14,256,808 | 16,358,240 |
Total Incl. PeakMemUse (bytes) | 21,947,888 | 20,609,392 | 14,485,672 | 16,603,624 |
メモリ使用量では Doctrine1 > Propel > Doctrine2 > php-activerecord となりました(少ないほど良好)。PropelがDoctrine1と同じくらいのメモリ使用量になるのは予想外でした。ただ、MemUseとPeakMemUseの差はどのORMでもほとんど変わらないため、メモリ使用量の改善はORM以外の処理でオブジェクトが解放されるように工夫する必要がありそうです。
Function call数
doctrine1 | propel1.6 | php-activerecord | doctrine2 | |
Number of Function Calls | 184,078 | 76,753 | 87,364 | 69,613 |
Function call数についても比較しました。これは Doctrine1 > php-activerecord > Propel > Doctrine2 の順でした(少ないほど良好)。ここでもDoctrine1が特に悪い結果となりました。
変更に要する作業量
OpenPNE3ではプラグインが現在 plugins.openpne.jp に登録されているだけでも80個近く存在し(2011年11月現在)、ORMを変更した場合はこれらの内データベースを使用するほぼ全てのプラグインで修正を行う必要が出てきます。そのため、ORMを変更する場合は単純にパフォーマンスが良いというだけでなくDoctrine1からの移行のし易さも考慮する必要があります。
Propelは、現在Doctrine1で使用しているのビヘイビアやi18nに相当する機能を備えており、sfPropelORMPlugin によってsymfony1.4環境でも問題なく使用することができるため、他のORMと比べると格段に移行し易いです。ただし、それでもschema.ymlの変更やモデルクラスの大幅な修正が必要になるため、移行作業はかなりの時間を要します。参考までに、今回の実験のためにメンバー一覧のページをPropel向けに修正するために15日(通算56時間)ほど掛かりました。
php-activerecordは、現時点でsymfony1.4向けのプラグインが提供されておらず(今回はORMの比較のために作成した sfActiveRecordPlugin を使用しています)、今までのようなsymfonyのタスクによるテーブルの作成やfixtureの挿入は一から実装する必要があります。また、i18nに相当する機能はORM側で用意されておらず、どのように対応するかが課題になります。
Doctrine2は、symfony1.4向けプラグインとして sfDoctrine2Plugin が提供されていますが実質メンテナンスされておらず、最新版のDoctrine2には対応できていません。i18nはORM側の機能としては用意されていませんが、DoctrineExtensions などを利用することでそれに相当する機能を使えるとのことです(ただし今回の検証ではうまく動作しなかったため使用しませんでした)。
このような現状から、単純に移行に掛かる作業量だけを考えた場合はPropelがベターな選択肢となります。
# もちろんORMを変更する必要がなければ作業量はゼロです :)
まとめ
処理時間 | メモリ使用量 | ORM変更の作業量 | |
Propel | ○ | △ | ◎ |
php-activerecord | ○ | ◎ | × |
Doctrine2 | ◎ | ○ | △ |
結果をまとめると上記の表のようになりました。全体的なパフォーマンス面ではDoctrine2、移行のための作業量を考慮するとPropelが良い選択肢となりそうです。いずれにしても処理時間では最大で4〜5割の改善は見込めることが分かりました。
結果データなど
今回の実験で得られたXHProfのデータを下記URLで公開しています。
Doctrine1:
- HTML: https://ty.upsilo.net/openpne-xhprof/?run=doctrine1&source=member_search
- XHProfデータ: https://ty.upsilo.net/openpne-xhprof/raw/doctrine1.member_search.xhprof
Propel:
- HTML: https://ty.upsilo.net/openpne-xhprof/?run=propel&source=member_search
- XHProfデータ: https://ty.upsilo.net/openpne-xhprof/raw/propel.member_search.xhprof
php-activerecord:
- HTML: https://ty.upsilo.net/openpne-xhprof/?run=activerecord&source=member_search
- XHProfデータ: https://ty.upsilo.net/openpne-xhprof/raw/activerecord.member_search.xhprof
Doctrine2: