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

Changes between Version 11 and Version 12 of pne-book-9-5


Ignore:
Timestamp:
Mar 25, 2008, 12:20:20 PM (10 years ago)
Author:
imoto
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • pne-book-9-5

    v11 v12  
    1 [[TOC]]
    2 
    3 = OpenPNE3 =
    4 
    5 解説:國忠[[BR]]
    6 文:井本
    7 
    8 == 概要 ==
    9 現在、OpenPNEのバージョンはOpenPNE2系です。[[BR]]
    10 しかし、2008年度中を目処にOpenPNE3をリリースすることを決めています。[[BR]]
    11 これはOpenPNEのメジャーバージョンアップです。そこで今回はこのOpenPNE3の解説をして、どの様にOpenPNEが変わるかということを解説していきたいと思います。[[BR]]
    12 
    13 
    14 == OpenPNE3開発の経緯 ==
    15 OpenPNE1.0がリリースされてから6ヵ月後にOpenPNE2がリリースされました。[[BR]]
    16 この時の注目は、「OpenPNEAPI」「携帯版の機能拡張」「ユニコード化」「大規模運用対応」「フロントコントローラーモデル採用」でした。[[BR]]
    17 特にユニコード化はOpenPNE2の特徴で、このOpenPNE2がリリースされた後に日本語圏以外のSNSも立ち上がるようになりました。実際、カニチィという日本語・英語・中国語で交流できる多言語サイトが登場し、話題を呼びました。
    18 
    19 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/kanichi.png,650)]]
    20 
    21 
    22 OpenPNE2でユニコード化された理由としては多くの需要があったことと、OpenPNEを日本だけではなく、世界の人にも使ってもらえるようにと思い、開発しました。そして、今回OpenPNE3でも多くの要望や意見を交えながら、バージョンアップの開発に踏み切っています。[[BR]]
    23 このバージョンアップで多くの機能を取り入れていく予定なので、その注目機能についてみていきましょう。
    24 
    25 == 注目機能 ==
    26 
    27 ・フレームワーク採用[[BR]]
    28 ・XHTML+CSS化[[BR]]
    29 ・国際化[[BR]]
    30 ・外部連携(OpenID、OpenSocial)[[BR]]
    31 
    32 OpenPNE3にもいくつか注目機能があります。[[BR]]
    33 それではそれぞれの注目機能について簡単に解説していきます。[[BR]]
    34 
    35 
    36 
    37  === フレームワーク採用 ===
    38  現在、OpenPNEでは独自フレームワークを採用しています。[[BR]]
    39  しかし、ドキュメントの不足や設計なども問題から、なかなか開発者に受け入れてもらいにくいという現状もあります。OpenPNEはPHPフレームワークを開発しているわけでないのでフレームワークについてのドキュメントを書くなら少しでもOpenPNEの開発をしたいという思いがあり、これまでフレームワークについてのドキュメントはありませんでした。[[BR]]
    40  しかし、OpenPNEがここまで世の中に広まり、今後もより良いものにしていくためには多くの開発者と共に作り上げないと考えています。[[BR]]
    41  そこで、このOpenPNE3では独自のフレームワークではなく、外部開発のフレームワークを採用したいと考えました。外部のフレームワークを採用することにより、まずフレームワークについてのドキュメント整備が必要なくなります。そして、慣れ親しんだフレームワークを採用することにより、多くの開発者と共に開発することができるという点もあります。[[BR]]
    42  また、最近は簡単で迅速に開発できるフレームワークも増えてきました。この様な迅速に開発できるフレームワークを採用することによりOpenPNEの開発スピードを上げたいという想いもあります。[[BR]]
    43  
    44  
    45  OpenPNE3のフレームワーク採用の候補に挙がったフレームワークがいくつかあります。
    46  そのフレームワークとは、「CakePHP」「symfony」「ethna」「ZendFramework」「maple」「CodeIgniter」です。
    47  
    48  [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/GoogleTrends.png,650)]]
    49  
    50  
    51  実績、Googleトレンドでの比較、実際に簡単なアプリケーションを作ってみての結果、今のところOpenPNE3に採用するフレームワークはsymfonyになりました。
    52  
    53  ただ、やはりいくつか越えなければならない懸念点もあります。一番の懸念点は現在のパフォーマンスを維持、そして高めることができるかということです。[[BR]]
    54  特にsymfonyは多くの設定ファイルを読み込むため、普通のフレームワークより表示速度が遅いと言われています。しかし、symfonyにはその遅さをカバーできるだけの強力なキャッシュ機能を備えているので、そのキャッシュ機能を活かしていきたいと考えています。
    55  
    56  また、symfonyはCakePHPなどと違いPHP4では動作しません。つまり、PHP5以上でなければなりません。フレームワークの選定に入った当初はこの点は非常に懸念点でした。なぜなら、レンタルサーバがほとんどPHP4だったからです。しかし、2007年7月にPHPコミュニティで、PHP4のメンテナンス終了に関して発表があり、2007年12月31日をもって、PHP4の機能追加を終了し、2008年8月8日にはセキュリティパッチの提供も終了という通知が出されました。[[BR]]
    57  この発表により、レンタルサーバはPHP5への移行を始めると考えこのPHPの対応バージョンによる懸念点を解消しました。
    58  
    59  
    60  [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/symfony.png,650)]]
    61  
    62  {{{
    63  symfony Web PHP Framework
    64  http://www.symfony-project.org/
    65  }}}
    66  
    67  
    68  
    69  === XHTML+CSS化 ===
    70  これまで、OpenPNEのテンプレートはCSSではなくテーブルタグを使っていました。[[BR]]
    71  しかし、テンプレートが見にくく開発スピードが上がらないなどの点からこのOpenPNE3ではテンプレートのXHTML+CSS化に取り組むことにしました。
    72  
    73  このXHTML+CSS化はOpenPNE2.0のころから要望があったのですが、なかなか実現できていない機能でした。すでにOpenPNE2.12でXHTML+CSS化にに取り組み始めています。そして、OpenPNE3では完全にXHTML+CSS化している予定です。[[BR]]
    74  このXHTML+CSS化により、ソースコードの量が格段に減ります。[[BR]]
    75  一番少ないテンプレートでは、ソースコード量が約3分の1まで減ります。
    76  
    77  [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/css.png,650)]]
    78  
    79  
    80  このXHTML+CSS化はすでにプロジェクト化されwikiも公開されています。
    81  そこで指針も公開されています。また、すでに開発体制も整っています。
    82  
    83  * 指針
    84     * テーブルレイアウトを廃し、CSSによるレイアウトに切り替える
    85     * XHTMLの構文適合性を満たす
    86     * XHTMLの目的適合性をある程度意識
    87  
    88  * 開発体制
    89     * マークアップ班 - OpenPNEが出力するHTMLのうち各部位のマークアップを行う
    90     * テンプレート班 - マークアップ班のマークアップを参考に、テンプレート上で実際のマークアップを行う
    91     * パーツ・進捗管理班 - パーツや進捗の管理を行う
    92     * 広報班 - このプロジェクト自体や進捗などを広く世間に伝えていく
    93  
    94  
    95  [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/css_prj.png)]]
    96  
    97  パーツ単位の作業手順
    98  
    99  
    100  === 国際化 ===
    101  OpenPNE2からユニコード化し、ソースコードレベルでは国際化していました。[[BR]]
    102  確かにOpenPNE2でユニコード化したことで多くのSNSに採用されることになりました。しかし、もっと多くの人に使ってもらいたいという思いからOpenPNE3では本格的に国際化のに取り組みます。[[BR]]
    103  具体的に、国際化とはメニューなどを日本語だけではなく各国の言語にしていきたいと考えています。この国際化の取り組みにより、あまりプログラミングの知識を必要としない海外の人もテンプレートやソースコードを触ることなく、簡単にSNSを立ち上げることができるようになります。
    104  
    105  国際化にあたり、まずは英語版OpenPNEをリリースすることを目標にしています。[[BR]]
    106  英語版開発体制が完了した後に、国際化OpenPNEを作成します。[[BR]]
    107  まずは、英語版OpenPNEの普及を図り、そこでのフィードバックを活かし手いきたいと考えています。また、コミュニティで開発者を募り、国際化への足ががりにしたいと考えています。[[BR]]
    108  当初はPC版のみで実装していく予定です。[[BR]]
    109  
    110  
    111  === 外部連携 ===
    112  この外部の連携はOpenPNE2でも取り組んできました。[[BR]]
    113  そのOpenPNE2で取り組んできたものとはOpenPNEAPI、小窓、MasterPNE、SlavePNEです。[[BR]]
    114  最近はOpenPNEと何か他の外部アプリケーションを一緒に使いたいという要望もあります。[[BR]]
    115  その様な要望に答えるべく、ID連携のためにOpenIDに対応していきたいと考えています。[[BR]]
    116  現在もOpenPNEのID連携はできます。しかし、現在のID連携はSlavePNEを中心としたID連携です。しかし、今後はMasterPNEでのID連携も強化するためにOpenIDに対応していきたいと考えています。[[BR]]
    117  また、Googleが提供するSNS向けのアプリケーションAPIであるOpenSocialにも対応していく予定です。[[BR]]
    118  この2つの機能に関してはすでにプロジェクト化しある程度実装も進んでいるので詳しく解説していきます。[[BR]]
    119  
    120  
    121   ==== OpenID ====
    122  
    123   OpenIDとはWebサイトを超えて認証システムを構築できるシステムです。[[BR]]
    124   OpenPNEがOpenIDに対応することで、外部のアプリケーションとのID連携が容易になります。[[BR]]
    125   OpenPNEにおけるOpenIDの対応方法は2パターン考えられます。[[BR]]
    126   その2パターンとは「OpenPNEがOpenIDのプロバイダになる」と「OpenPNEがOpenIDのカスタマになる」です。
    127  
    128   OpenPNEがOpenIDのプロバイダになると、OpenIDに対応する外部サービス、ソフトウエアに対して認証情報を提供できるようになります。[[BR]]
    129   例えば、OpenPNEにログインしている人だけ、MediaWikiが編集できたり、OpenPNEにログインしている人だけ、MovableTypeで立ち上げたブログにコメントをつけることができるようになります。 [[BR]]
    130  
    131   OpenPNEがOpenIDのカスタマになると、他のOpenIDプロバイダのURLでOpenPNEにログインできるようになります。例えば、ライブドアのアカウントで、OpenPNEにログインできたり、OpenID.ne.jpのアカウントで、OpenPNEにログインできるようになります。[[BR]]
    132  
    133   まずはOpenPNEがOpenIDのプロバイダになるための実装から開発を行っています。[[BR]]
    134  
    135  
    136   [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/openid.png,650)]]
    137  
    138  
    139   {{{
    140    
    141   OpenID 公式サイト (英語)
    142   http://openid.net/
    143  
    144   }}}
    145  
    146   ==== OpenSocial ====
    147   OpenSocialとはGoogleが提供するSNS向けのアプリケーションAPIの共通仕様です。[[BR]]
    148   OpenSocialはJavaScriptと単純なHTMLで動作します。[[BR]]
    149   現在OpenSocialが対応しているのは、プロフィール情報の吐き出し、フレンドリンク情報の吐き出し、新着情報の吐き出しです。
    150  
    151   この機能が実現できるようになれば、iGoogleに新着情報を出すことができるようになりSNSの利用がますます便利になります。
    152  
    153   [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/igoogle.png,650)]]
    154   igoogleでのイメージ図
    155  
    156  
    157  
    158   [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/open_social.png,650)]]
    159  
    160   {{{
    161   OpenSocial
    162   http://code.google.com/apis/opensocial/
    163 }}}
    164 
    165 
    166 
    167 == OpenPNE3になることによって何がどう変わるか ==
    168 OpenPNE2がOpenPNE3になって誰にどのような形で影響を与えるのかという視点で考えていきたいと思います。[[BR]]
    169 今回は、開発者、オーナー、ユーザーの三者の視点からOpenPNE3がどの様に影響を与えるのかを解説します。OpenPNE3のキーワードである「フレームワーク採用」「XHTML+CSS化」「国際化」「外部連携」の四つの中で影響を与えそうな機能を中心に見ていきます。
    170 
    171 
    172 
    173  === 開発者 ===
    174   ==== フレームワーク採用 ====
    175   フレームワークにsymfonyを採用した場合ドキュメントが豊富にあります。[[BR]]
    176   これまでOpenPNEにはフレームワークのドキュメントなどは一切ありませんでした。ドキュメントを書かなかった理由としては、ドキュメントを書くよりOpenPNEのソースコードを一行でも書く方がいいと考えていたからです。OpenPNEはPHPフレームワークを作っている訳ではないので、PHPフレームワークの設計などはsymfonyに任せることで、SNSエンジンの設計に集中できます。
    177  
    178   また、symfonyをフレームワークに採用した場合は、O/Rマッパーなどを使用することで迅速に開発を進めることができます。まず、迅速に開発をして、表示が遅いようであれば直接SQLを書き直したりキャッシュ機能を使って負荷を軽減することもできます。
    179  
    180  
    181   ==== XHTML+CSS化 ====
    182   XHTML+CSS化により、ソースコード量が少なくなり開発者はテンプレートが見やすくなります。[[BR]]
    183   このことによって管理が容易になったり、修正したい箇所が分かり易いという利点が挙げられます。
    184  
    185   ==== 国際化 ====
    186   国際化により、多くの人にOpenPNEを使用してもらえる機会が増えます。そして、国際化を足ががりに日本だけではなく、海外の人も巻き込んで一緒にOpenPNEを開発していくことも可能になります。[[BR]]
    187   現在OpenPNEは国内で開発されて国内で使用されています。しかし、OpenPNE3で国際化することで、世界中の人で開発され世界中の人に使用されるソフトを目指すことができるようになります。 
    188  
    189  === オーナー ===
    190   ==== フレームワーク採用 ====
    191   もしフレームワークにsymfonyを採用した場合、スペックの低いレンタルサーバだと非常に重くなる可能性はあります。しかし、symfonyには強力なキャッシュ機能が備わっているのでそのキャッシュ機能でカバーできると考えています。[[BR]]
    192   また、symfonyを採用した場合はPHPのバージョンがPHP5である必要があります。現在、レンタルサーバはPHP4が多いですが、PHP4のサポートがなくなるという発表があったことで今後PHP5への以降が盛んになると思われます。
    193  
    194   symfonyを採用することによりOpenPNE本線の開発スピードが上がればそれによってより多くの機能が使えたりOpenPNEが便利になったりと恩恵を受けることができます。
    195  
    196   ==== XHTML+CSS化 ====
    197   XHTML+CSS化によりソースコードが見やすくなります。これまでテンプレートはソースコード量が多く、どこに何が書いているのか分からない状態で修正などをしたい場合も手を加えることが困難だったが、XHTML+CSS化されることで、あまり知識がない人も簡単なテンプレートの修正は行うことができます。
    198 
    199   ==== 国際化 ====
    200   国際化によって、テンプレートなどを触る必要なく日本語以外の言語に対応したSNSを立ち上げることができます。[[BR]]
    201   これまでカニチィの様な二国間SNSや国際交流SNSを立ち上げたいと考えた場合ある程度ソースコードやテンプレートを修正する必要があったのである程度の知識は必要でした。
    202   しかし、国際化することでほとんど知識がない人でも国際化したSNSを立ち上げることができるようになります。
    203  
    204  
    205   ==== 外部連携 ====
    206   外部連携を強化することで、これまでカスタマイズが必要で強引にOpenPNEと連動させて一緒に使用していたものが簡単にOpenPNEと外部のサービスを連動させることができるようになります。[[BR]]
    207   例えば、よくOpenPNEにwikiを入れたいという話を聞きますが、wikiを直接OpenPNEに組み込むのはそれなりにカスタマイズが必要です。[[BR]]
    208   しかし、この外部連携を使えばOpenPNEとMediaWikiをOpenIDでID連携することができで、簡単にOpenPNEとWikiを使用することができます。[[BR]]
    209   また、OpenPNEのソースコードを直接書き換えているのでOpenPNEのバージョンアップに追従できていなかったものが、外部連携でそのカスタマイズを置き換えることでOpenPNEのバージョンアップに追従できるようになります。[[BR]]
    210   また、導入することができる機能の幅も広がるので、SNSの可能性を広げることができます。
    211  
    212  
    213  === ユーザー === 
    214   ==== 外部連携 ====
    215   外部連携によって多くの機能を使うことができます。[[BR]]
    216   ID連携をすることで、OpenPNEと同じIDで外部アプリケーションにログインできたり、外部アプリケーションのIDでOpenPNEにログインすることができるようになり、管理が楽になります。[[BR]]
    217   また、外部連携によって他のアプリケーションを使うことができるようになるのでSNSを便利に使用することができます。[[BR]]
    218  
    219   ==== レビュー機能の廃止 ====
    220   レビュー機能は使用頻度が低いため、機能を見直します。現在のレビュー機能を削除し、小窓を拡張して同様の機能を実現し置き換える予定です。[[BR]]
    221  
    222   ただ、一方的にレビューを廃止するというわけではなく、現在あるレビューに関しては日記などに置き換える予定です。[[BR]]
    223   これまでのレビューというのはAmazonの商品だけでのレビューでした。しかし、これから小窓を拡張することで、Amazonの商品だけではなく他にもレビューすることができるようになりレビューの幅が広がります。[[BR]]
    224  
    225  
    226 == OpenPNE3開発に向けて ==
    227 
    228  === 開発スタンス ===
    229  OpenPNE3の開発スタンスについてまとめます。[[BR]]
    230  これらの開発スタンスはOpenPNEの開発スタンスではなく、自分自身がこの開発スタンスで臨むということです。[[BR]]
    231  
    232  
    233   ==== 人間関係の表現 ====
    234   OpenPNEは何のソフトなのかを間違えないでいきたいと考えています。[[BR]]
    235   現時点で見えてるのは、「SNSは人間関係を表現するソフト」だと考えているので、そこは見失わないでいきたいと思っています。[[BR]]
    236  
    237   具体的には「日記」「あしあと」「コミュニティ」など、非常に面白い機能はありますが、SNSの本質を考えたときに、究極的にはこれらの機能が含まれなくても良いと思います。[[BR]]
    238   この様に書くと「それじゃ面白い機能が何も無いじゃん」と誤解を受けるかも知れないが、多くの機能を中途半端に追加するより「人間関係の表現」に特化する必要があるということです。[[BR]]
    239   その「人間関係の表現」ができてこそ、「日記」「あしあと」「コミュニティ」などの各機能がより良く機能すると考えています。だからこそ、常にSNSは何のためのソフトなのかということを意識しながら開発を進めていきたいと考えています。
    240  
    241   ==== 一隅を照らす ====
    242   「人間関係を表現する」についての役割を背負い、その隅を照らし続けたいと考えています。
    243  
    244   例えばOpenPNEは「人間関係」を照らし、MediaWikiは「知識の集積」、WordPressは「日記」、Flickrは「写真」、YouTubeは「動画」を照らすというように一隅を照らしていきたいと考えています。
    245  
    246   ==== ギリギリまで削除 ====
    247   「この機能を取ったらSNSのソフトとして存在し得ない」というギリギリまで削除したいと考えています。[[BR]]
    248   「SNSは人間関係を表現するソフト」なので、それ以外の部分は削除していくと、ソフトとして完成度が高まるのではないかと思っています。[[BR]]
    249  
    250   伽藍とバザールにあった以下の一文が非常に心に残っています。
    251  
    252   {{{
    253   「完成」(デザイン上の)とは、付け加えるものが何もなくなったときではなく、むしろなにも取り去るものがなくなったとき。
    254   }}}
    255  
    256   ==== 手段より目的優先 ====
    257   「どのプログラム言語を使うのか」「オブジェクト指向を使うのか」「PHPのフレームワークを使うのか」「Table構造で書くのか」「XHTML+CSS化するのか」と言うのは非常に大事なことだが、これらが目的ではなく手段にとどめておきたいと考えています。
    258  
    259   開発にはさまざまな要素があって、その時々に応じて最善の手段を選択していきたいと考えています。そして、様々な選択肢の中からそれぞれのメリット、デメリットを考えた上で常に選択をしていきたいと考えています。
    260  
    261  
    262   {{{
    263   伽藍とバザール
    264 エリック・レイモンドによって書かれたオープンソースのソフトウェア開発に関する論文。伽藍とバザールは山形浩生氏によって翻訳されWebで公開されています。
    265 
    266 
    267 伽藍とバザール
    268 http://cruel.org/freeware/cathedral.html
    269 
    270 
    271     }}}
    272    
    273    
    274  === OpenPNE3への想い ===
    275  OpenPNE3がなぜ今開発されるのか。それは端的に言えば今のOpenPNE2に限界を感じたからです。[[BR]]
    276  OpenPNE1.0系がOpenPNE2.0系へメジャーバージョンアップした時も同じです。常に良いものを追い求めていたら、いつかは枠に収まりきらなくなり大きな壁にぶち当たります。その時、その壁を突き破ることができなければOpenPNEは終わりだと考えています。[[BR]]
    277  
    278  OpenPNEはこれまで多くの人に使われてきました。そして多くの方に興味を持ってもらえるようになりました。しかし、今のソースコードや設計では興味を持ってもなかなか開発に踏み切れないということもあります。[[BR]]
    279  本当はOpenPNEをより良いものにしたいという気持ちがあれば一緒に開発して欲しいという思いはあります。しかし現実的には興味はあるが開発できないという壁があります。[[BR]]
    280  これらの壁を突き破るのが今回のフレームワークを採用する一つの理由です。[[BR]]
    281  フレームワークを採用することで、そのドキュメントなどを活かし、OpenPNEに興味を持った人が少しでも開発に参加し易くしたいという思いがあります。[[BR]]
    282  
    283  今後、OpenPNEはもっと器を大きくして広く開発者を受け入れたいと考えています。[[BR]]
    284  そのために、このOpenPNE3では多くの方のを受け入れられるだけの準備をしておきたいと考えています。
    285  
    286