最新ブログ
安定版 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:
OpenPNE 3.6 系のリリーススケジュールについて
10 / 19 水曜日 2011
OpenPNE開発チームの今村です。
OpenPNE 3.6.0 のリリース時に3.6系のリリーススケジュールについて
今後、新安定版のリリースは旧安定版とタイミングを合わせ、毎月第2木曜日とします。
次回のリリースは 2011年11月10日(木)を予定しています。
とお伝えしましたが、これをいったん撤回し2ヶ月に1回というスケジュールへの変更を予定しています。
この変更には、OpenPNE 3.6.0 リリースまでに行ったバグ修正を、3.4系にも反映し機能面での差分を吸収していきさらなる安定化を目指す狙いがあります。
本来であれば、3.4系も3.6系も同時にリリースをしていきたいところではあるのですが、それをするにはテスターをはじめとするリソースが不足しているためこの結論に至りました。
3.6系の正常リリースおよび、3.4系のさらなる安定化の為にもご理解とご協力をお願いします。
OpenPNE 3.6.1のリリース日については決まり次第ブログにて告知をします。
なお、3.4系についてはこれまで通り「毎月第2木曜日」(次回は2011/11/10)にリリースを行っていく予定です。
携帯電話IPアドレス帯域リストを更新しました
10 / 18 火曜日 2011
OpenPNE開発チームのきわです。
2011/10/17、OpenPNEのIPアドレス帯域リストを更新しました。
OpenPNEの携帯版を利用している方はSNSに反映お願いします。
今回の変更について
今回のリリースでは以下のような対応をおこないました。
au 2011年秋冬モデル以降の一部機種で使用されるIPアドレス帯域の追加
2011年6月時点で対応を保留していた 2011年秋冬モデルの一部機種向けのIPアドレス帯域を追加しました。
このリリースの保留理由・リリース理由については以下をご覧ください。
- [openpne-dev:720] 2011年7月に追加される au 2011年秋冬モデル以降で使用される IPアドレス帯域について
- https://groups.google.com/group/openpne-dev/browse_thread/thread/6accc1f7f53fdfc3?hl=ja#
- [openpne-dev:814] 2011/10/17 携帯電話IPアドレス帯域リストに対して au 2011年秋冬モデル向けのIPアドレス帯域の追加対応を実施する予定です
- https://groups.google.com/group/openpne-dev/browse_thread/thread/e407aefffcbd6ac9
IPアドレス帯域リストのファイルにライセンスを適用
配布しているIPアドレス帯域リストにライセンスを適用しました。
OpenPNE 3 と同じ Apache License Verion 2.0 を採用しています。
IPアドレス帯域リストのファイル冒頭に最終更新日と更新内容を記載
今までのファイルではいつ時点のリリースのファイルを適用しているかわかりにくかったので、
ファイルの冒頭に最終更新日と更新内容を記載するようにしました。
ダウンロード
https://www.openpne.jp/pne-downloads/mobile_ip_list/
こちらのページから各バージョンのIPアドレス帯域リストをDLできます。
IPアドレス帯域リストの更新方法
OpenPNE3
OpenPNEのパッケージ内にある以下のファイルを、ダウンロードしたIPアドレス帯域リストに置き換えてください。
lib/config/config/mobile_ip_address.yml
OpenPNE2
OpenPNEのパッケージ内にある以下のファイルを、ダウンロードしたIPアドレス帯域リストに置き換えてください。
webapp/lib/ktaiIP.php
次回の更新
次回の更新は未定です。
安定版 OpenPNE 3.4.16 リリースのお知らせ
10 / 13 木曜日 2011
OpenPNE 開発チームの今村です。
本日、安定版 OpenPNE 3.4.16 をリリースしました。
次回のリリースは 2011年11月10日(木) を予定しています。
今後、3.4系は新案定版の3.6系とリリース日を合わせ、毎月第2木曜日にリリースを予定しています。
また、3.4系のサポート期間は時期安定版のbeta(3.8beta)のリリースまでとなります。
バージョンアップ・インストール
ダウンロード
OpenPNE 3.4.16(zipアーカイブ) は以下のボタンからダウンロードできます。
- zip版ダウンロード
パッケージの詳細は、こちらになります。
OpenPNE 3.4.16
インストール
OpenPNE 3.4.16 のインストールは、OpenPNE3.4 セットアップ手順 を確認ください。
3.2.x から 3.4 へのアップグレード、3.4 の以前のバージョンからのマイナーバージョンアップを行う場合は、このドキュメントを参考ください。
OpenPNE 3.6 の新機能について
10 / 07 金曜日 2011
OpenPNE 開発チームの今村です。
2010/3/13にOpenPNE 3.5.0 がリリースされてから約1年8ヶ月という長い道のりを経て、ついにOpenPNE 3.6.0 をリリースすることが出来ました。
OpenPNE 3.6.0 では非常に多くのバグフィックス、新機能追加、チューニングが施されています。
チケット数にすると約300チケットもの対応をし、紹介する新機能も非常に多くなっています。
非常に長いエントリになっていますので、時間ねーぜ!という方は、下記の見出しを参考に気になるところから御覧ください(^_^;)
- ユーザー向け新機能・改良点
- 新機能では「部分SSL機能」や「インストール時にDBを造り直さないオプション」などが追加され、パフォーマンス面では、より高速化をめざし「opNonCountQueryPagerの利用」や「OpenPNE.ymlの結果をキャッシュする」といった改善が行なわれています。
- バンドルプラグイン
- opIntroFriendPlugin、opRankingPlugin、opFavoritePlugin が追加されました。
- 開発者向けの新機能・改良点
- 認証周りの仕様変更や、プラグインの依存性をサポートするようになりました。
3.6.0リリースにあたって、全ての機能の動作を確認する全機能テストも行なわれました。アクション一覧を参考に正常動作の確認がおこなわれ、新機能についても問題のないことを確認しました。
新安定版 OpenPNE 3.6.0 リリースのお知らせ
10 / 07 金曜日 2011
OpenPNE 開発チームの佐野です。
本日、安定版 OpenPNE 3.6.0 をリリースしました。
皆様お待ちかねの新安定版の誕生です。
新機能については別途詳細なエントリにて告知します。
今後、新安定版のリリースは旧安定版とタイミングを合わせ、毎月第2木曜日とします。
次回のリリースは 2011年11月10日(木)を予定しています。
グローバルナビやローカルナビの CSS を独自に書かれている方へ
OpenPNE-3.6.0 ではナビゲーション部分に関する問題を修正していますが、すでにお使いの OpenPNE を OpenPNE-3.6.0 にバージョンアップする場合に、独自に記述した CSS が無効になってしまう可能性があります。これは全ての SNS に影響する問題( opSkinClassicPlugin を使っている場合に限らない問題)です。
※この記事では、独自の CSS を記述している場合について注意していますが、 CSS に限らずともナビゲーション項目の id 属性値を記述している場合に当てはまります。 JavaScript などでも id 属性値を参照している場合には注意してください。
OpenPNE 3.6RC2 リリースのお知らせ
09 / 30 金曜日 2011
opCommunityTopicPlugin 1.0.2.2 リリースのお知らせ
09 / 30 金曜日 2011
(2011/10/06 追記: 「注意事項」の節を追加しました。 opCommunityTopicPlugin 1.0.2 もしくは opCommunityTopicPlugin 1.0.2.1 を導入されていた方は必ずお読みください)
OpenPNE 開発チームの渡辺です。
本日 2011/09/30 (金)、 opCommunityTopicPlugin 1.0.2.2 をリリースしました。
このリリースでは「1.0.2 で追加されたマイグレートスクリプト(リビジョン番号 6)で外部キー制約違反により、マイグレートに失敗することがある」という問題の修正を行なっています。
OpenPNE 3.6 を使われている方、もしくは OpenPNE 3.4 で opCommunityTopicPlugin 1.0.2.1以下 を使われている方でマイグレートに失敗する問題が発生している場合は、 opCommunityTopicPlugin 1.0.2.2 へのバージョンアップを実施してマイグレートを行なってください。
OpenPNE 3.2, 3.4 を使われている方は opCommunityTopicPlugin 0.9.8 をお使いください。