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

Changes between Version 3 and Version 4 of pne-book-9-5


Ignore:
Timestamp:
Mar 13, 2008, 5:54:44 PM (14 years ago)
Author:
imoto
Comment:

--

Legend:

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

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