[[TOC]] = 今後のOpenPNE = = OpenPNE3 = == 概要 == 現在、OpenPNEのバージョンはOpenPNE2系です。[[BR]] しかし、2008年度中を目処にOpenPNE3をリリースすることを決めています。[[BR]] これはOpenPNEのメジャーバージョンアップです。そこで今回はこのOpenPNE3の解説をして、どの様にOpenPNEが変わるかということを解説していきます。[[BR]] == OpenPNE3開発の経緯 == OpenPNE1.0がリリースされてから6ヵ月後にOpenPNE2がリリースされました。[[BR]] この時の注目は、「OpenPNEAPI」「携帯版の機能拡張」「ユニコード化」「大規模運用対応」「フロントコントローラーモデル採用」でした。[[BR]] 特にユニコード化はOpenPNE2の特徴で、このOpenPNE2がリリースされた後に日本語圏以外のSNSも立ち上がるようになりました。実際、カニチィという日本語・英語・中国語で交流できる多言語サイトが登場し、話題を呼びました。 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/kanichi.png,650)]] OpenPNE2でユニコード化された理由としては多くの需要があったことと、OpenPNEを日本だけではなく、世界の人にも使ってもらいたいと考え開発しました。そして、今回OpenPNE3でも多くの要望や意見を交えながら、バージョンアップの開発に踏み切っています。[[BR]] このOpenPNE3へのバージョンアップでも多くの機能を取り入れていく予定なので、その注目機能についてみていきましょう。 == 注目機能 == OpenPNE3にも注目機能があります。[[BR]] その注目機能とは、「フレームワーク採用」「XHTML+CSS化」「国際化」「外部連携(OpenID、OpenSocial)」です。 注目機能の中で、一番大きく変わるのはフレームワーク採用です。これまでOpenPNEは独自フレームワークを採用してきましたが、OpenPNE3からは外部で開発されているフレームワークを採用する予定です。 それではそれぞれの注目機能について簡単に解説していきます。[[BR]] ・フレームワーク採用[[BR]] ・XHTML+CSS化[[BR]] ・国際化[[BR]] ・外部連携(OpenID、OpenSocial)[[BR]] === フレームワーク採用 === 現在、OpenPNEでは独自フレームワークを採用しています。[[BR]] しかし、ドキュメントの不足やフレームワークの設計なども問題から、なかなか開発者に受け入れてもらいにくいという現状もあります。OpenPNEはPHPフレームワークを開発しているわけでないのでフレームワークについてのドキュメントを書くなら少しでもOpenPNEの開発をしたいという思いがあり、これまでフレームワークについてのドキュメントはありませんでした。[[BR]] しかし、OpenPNEが世の中に広まり、今後もより良いものにしていくためには多くの開発者と共にOpenPNEを作り上げなければならないと考えています。[[BR]] そこで、このOpenPNE3では独自のフレームワークではなく、外部開発のフレームワークを採用して多くの開発者が参加できる環境を整えたいと考えています。 外部のフレームワークを採用することにより、まずフレームワークについてのドキュメント整備が必要なくなります。そして、多くの開発者が慣れ親しんだフレームワークを採用することにより、多くの開発者と共にOpenPNEを開発することができるという点もあります。[[BR]] また、外部のフレームワークを採用することによりOpenPNEの開発スピードを上げていきたいと考えています。最近のPHPフレームワークの中にはRuby on Railsの影響を強く受けているものも多く、迅速に開発できるフレームワークが数多くあります。 それらの迅速に開発できるフレームワークを採用することにより、少しでもOpenPNEの開発スピードを上げていきたいと考えています。 OpenPNE3のフレームワーク採用の候補に挙がったフレームワークがいくつかあります。 そのフレームワークとは、「CakePHP」「symfony」「ethna」「ZendFramework」「maple」「CodeIgniter」です。 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/GoogleTrends.png,650)]] 実績、Googleトレンドで人気の比較、ドキュメントの整備、実際に簡単なアプリケーションを作ってみての結果など多くのことを考慮した結果、OpenPNE3に採用するフレームワークはsymfonyに決定しました。 ただ、やはりいくつか越えなければならない懸念点もあります。一番の懸念点は現在のパフォーマンスを維持、そしてより高めることができるかということです。[[BR]] 特にsymfonyは多くの設定ファイルを読み込むため、普通のフレームワークより表示速度が遅いと言われています。しかし、symfonyにはその遅さをカバーできるだけの強力なキャッシュ機能を備えているので、そのキャッシュ機能を活かしていきたいと考えています。 また、symfonyはCakePHPなどと違いPHP4では動作しません。つまり、PHP5以上でなければなりません。フレームワークの選定に入った当初はこの点は非常に問題視していた点でした。なぜなら、レンタルサーバがほとんどPHP4だったからです。しかし、2007年7月にPHPコミュニティで、PHP4のメンテナンス終了に関して発表があり、2007年12月31日をもって、PHP4の機能追加を終了し、2008年8月8日にはセキュリティパッチの提供も終了という発表が出されました。[[BR]] この発表により、レンタルサーバはPHP5への移行を始めると考えこのPHPの対応バージョンによる懸念点を解消しました。 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/symfony.png,650)]] {{{ symfony Web PHP Framework http://www.symfony-project.org/ }}} === XHTML+CSS化 === これまで、OpenPNEのテンプレートはCSSではなくテーブルタグを使っていました。[[BR]] しかし、テンプレートが見にくく開発スピードが上がらないなどの点からこのOpenPNE3ではテンプレートのXHTML+CSS化に取り組みます。 このXHTML+CSS化はOpenPNE2.0のころから要望がありましたが、なかなか実現できていない機能でした。すでにOpenPNE2.12でXHTML+CSS化にに取り組み始めています。そして、OpenPNE3では完全にXHTML+CSS化している予定です。[[BR]] このXHTML+CSS化により、ソースコードの量が格段に減少します。[[BR]] 一番少ないテンプレートでは、ソースコード量が約3分の1まで減少します。 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/css.png,650)]] このXHTML+CSS化はすでにプロジェクト化されwikiも公開されています。 そこで指針も公開されています。また、すでに開発体制も整っています。 * 指針 * テーブルレイアウトを廃し、CSSによるレイアウトに切り替える * XHTMLの構文適合性を満たす * XHTMLの目的適合性をある程度意識 * 開発体制 * マークアップ班 - OpenPNEが出力するHTMLのうち各部位のマークアップを行う * テンプレート班 - マークアップ班のマークアップを参考に、テンプレート上で実際のマークアップを行う * パーツ・進捗管理班 - パーツや進捗の管理を行う * 広報班 - このプロジェクト自体や進捗などを広く世間に伝えていく [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/css_prj.png)]] パーツ単位の作業手順 === 国際化 === OpenPNE2からユニコード化し、ソースコードレベルでは国際化していました。[[BR]] 確かにOpenPNE2でユニコード化したことで多くのSNSに採用されることになりました。しかし、もっと多くの人に使ってもらいたいという思いからOpenPNE3では本格的に国際化のに取り組みます。[[BR]] 具体的に、国際化とはメニューなどを日本語だけではなく各国の言語にしていきたいと考えています。この国際化の取り組みにより、あまりプログラミングの知識を必要としない海外の人もテンプレートやソースコードを触ることなく、簡単にSNSを立ち上げることができるようになります。 国際化にあたり、まずは英語版OpenPNEをリリースすることを目標にしています。[[BR]] 英語版開発体制が完了した後に、国際化OpenPNEを作成します。[[BR]] まずは、英語版OpenPNEの普及を図り、そこでのフィードバックを活かしていきたいと考えています。また、コミュニティで開発者を募り、国際化への足ががりにしたいと考えています。[[BR]] 当初はPC版のみで実装していく予定です。[[BR]] === 外部連携 === この外部の連携はOpenPNE2でも取り組んできました。[[BR]] そのOpenPNE2で取り組んできたものとはOpenPNEAPI、小窓、MasterPNE、SlavePNEです。[[BR]] 最近はOpenPNEと外部アプリケーションを一緒に使いたいという要望があります。[[BR]] その様な要望に答えるべく、ID連携のためにOpenIDに対応していきたいと考えています。[[BR]] 現在もOpenPNEのID連携はできます。しかし、現在のID連携はSlavePNEを中心としたID連携です。しかし、今後はMasterPNEでのID連携も強化するためにOpenIDに対応していきたいと考えています。[[BR]] また、Googleが提供するSNS向けのアプリケーションAPIであるOpenSocialにも対応していく予定です。[[BR]] この2つの機能に関してはすでにプロジェクト化しある程度実装も進んでいるので詳しく解説していきます。[[BR]] ==== OpenID ==== OpenIDとはWebサイトを超えて認証システムを構築できるシステムです。[[BR]] OpenPNEがOpenIDに対応することで、外部のアプリケーションとのID連携が容易になります。[[BR]] OpenPNEにおけるOpenIDの対応方法は2パターン考えられます。[[BR]] その2パターンとは「OpenPNEがOpenIDのプロバイダになる」と「OpenPNEがOpenIDのカスタマになる」です。 OpenPNEがOpenIDのプロバイダになると、OpenIDに対応する外部サービス、ソフトウエアに対して認証情報を提供できるようになります。[[BR]] 例えば、OpenPNEにログインしている人だけ、MediaWikiが編集できたり、OpenPNEにログインしている人だけ、MovableTypeで立ち上げたブログにコメントをつけることができるようになります。 [[BR]] OpenPNEがOpenIDのカスタマになると、他のOpenIDプロバイダのURLでOpenPNEにログインできるようになります。例えば、ライブドアのアカウントで、OpenPNEにログインできたり、OpenID.ne.jpのアカウントで、OpenPNEにログインできるようになります。[[BR]] まずはOpenPNEがOpenIDのプロバイダになるための実装から開発を行っています。[[BR]] [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/openid.png,650)]] {{{ OpenID 公式サイト (英語) http://openid.net/ }}} ==== OpenSocial ==== OpenSocialとはGoogleが提供するSNS向けのアプリケーションAPIの共通仕様のことです。[[BR]] OpenSocialはJavaScriptと単純なHTMLで動作します。[[BR]] 現在OpenSocialが対応しているのは、プロフィール情報の吐き出し、フレンドリンク情報の吐き出し、新着情報の吐き出しです。 この機能が実現できるようになれば、iGoogleに新着情報を出すことができるようになりSNSの利用がますます便利になります。 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/igoogle.png,650)]] igoogleでのイメージ図 [[Image(https://trac.openpne.jp/svn/prj/pne-book/pne-book-9/pne-book-9-5/open_social.png,650)]] {{{ OpenSocial http://code.google.com/apis/opensocial/ }}} == OpenPNE3になることによって何がどう変わるか == OpenPNE2がOpenPNE3になって誰にどのような影響を与えるのかを考えていきましょう。[[BR]] 今回は、開発者、オーナー、ユーザーの三者の視点からOpenPNE3がどのように影響を与えるのかを解説します。OpenPNE3のキーワードである「フレームワーク採用」「XHTML+CSS化」「国際化」「外部連携」の四つの中で大きく影響を及ぼす機能を中心に見ていきます。 === 開発者 === ==== フレームワーク採用 ==== フレームワークにsymfonyを採用した場合ドキュメントが豊富にあります。[[BR]] これまでOpenPNEにはフレームワークのドキュメントなどは一切ありませんでした。ドキュメントを書かなかった理由としては、ドキュメントを書くよりOpenPNEのソースコードを一行でも書く方がOpenPNEにとっていいと考えていたからです。OpenPNEはPHPフレームワークを作っている訳ではないので、PHPフレームワークの設計などはsymfonyに任せたいと考えています。PHPフレームワークの設計を考える必要がなくなることで、SNSエンジンの設計に集中できます。 また、symfonyをフレームワークに採用した場合は、O/Rマッパーなどを使用することで迅速に開発を進めることができます。まず、迅速に開発をして、表示が遅いようであれば直接SQLを書き直したりキャッシュ機能を使って負荷を軽減することもできます。 ==== XHTML+CSS化 ==== XHTML+CSS化により、ソースコード量が減少し、テンプレートが見やすくなります。[[BR]] このことによって管理が容易になったり、修正したい箇所が分かり易いという利点が挙げられます。 ==== 国際化 ==== 国際化により、多くの人にOpenPNEを使用してもらえる機会が増えます。そして、国際化を足ががりに日本だけではなく、海外の人も巻き込んで一緒にOpenPNEを開発していくことも可能になります。[[BR]] 現在OpenPNEは国内で開発されて国内で使用されています。しかし、OpenPNE3で国際化することで、世界中の人で開発され世界中の人に使用されるソフトウェアを目指すことができるようになります。 === オーナー === ==== フレームワーク採用 ==== もしフレームワークにsymfonyを採用した場合、スペックの低いレンタルサーバだと非常に重くなる可能性があります。しかし、symfonyには強力なキャッシュ機能が備わっているのでそのキャッシュ機能でカバーできると考えています。[[BR]] また、symfonyを採用した場合はPHPのバージョンがPHP5である必要があります。現在、多くのレンタルサーバがPHP4を採用していますが、PHP4のサポートがなくなるという発表があったことで今後PHP5への以降が盛んになると思われます。 また、フレームワークの採用によりOpenPNE本線の開発スピードが上がればそれによってより多くの機能が使えたりOpenPNEが便利になったりと恩恵を受けることができます。 ==== XHTML+CSS化 ==== XHTML+CSS化によりソースコードが見やすくなります。これまでテンプレートはソースコード量が多く、どこに何が書いているのかが分かりにくい状態でした。しかし、XHTML+CSS化されることで、あまり知識がないオーナーも簡単なテンプレートの修正は行うことができるようになります。 ==== 国際化 ==== 国際化によって、テンプレートなどを触る必要なく日本語以外の言語に対応したSNSを立ち上げることができます。[[BR]] これまでカニチィの様な二国間SNSや国際交流SNSを立ち上げたいと考えた場合、ある程度ソースコードやテンプレートを修正する必要があったのである程度の知識は必要でした。 しかし、国際化によってほとんど知識がない人でも国際化したSNSを立ち上げることができるようになります。 ==== 外部連携 ==== 外部連携を強化することで、これまでカスタマイズが必要で強引にOpenPNEと連動させて一緒に使用していたものが簡単にOpenPNEと外部のサービスを連動させることができるようになります。[[BR]] 例えば、よくOpenPNEにwikiを入れたいというときは、wikiを直接OpenPNEに組み込むのはそれなりにカスタマイズが必要です。[[BR]] しかし、この外部連携を使えばOpenPNEとMediaWikiをOpenIDでID連携させて、簡単にOpenPNEとWikiを使用することができます。[[BR]] また、カスタマイズした場合はOpenPNEのソースコードを直接書き換えているのでOpenPNEのバージョンアップに追従するのに手間がかかっていたが、外部連携でそのカスタマイズを置き換えることでOpenPNEのバージョンアップに追従できるようになります。[[BR]] また、導入することができる機能の幅も広がるので、SNSの可能性を広げることができます。 === ユーザー === ==== 外部連携 ==== 外部連携によって多くの機能を使うことができます。[[BR]] ID連携をすることで、OpenPNEと同じIDで外部アプリケーションにログインできたり、外部アプリケーションのIDでOpenPNEにログインすることができるようになり、管理が容易になります。[[BR]] また、外部連携によって他のアプリケーションを使うことができるようになるので多くの機能をSNSで使用することができます。[[BR]] ==== レビュー機能の廃止 ==== レビュー機能は使用頻度が低いため、機能を見直します。現在のレビュー機能を削除し、小窓を拡張して同様の機能を実現し置き換える予定です。[[BR]] ただ、一方的にレビューを廃止するというわけではなく、現在あるレビューに関しては日記などに置き換える予定です。[[BR]] これまでのレビューというのはAmazonの商品だけでのレビューでした。しかし、これから小窓を拡張することで、Amazonの商品だけではなく他にもレビューすることができるようになりレビューの幅が広がります。[[BR]] == OpenPNE3開発に向けて == === 開発スタンス === OpenPNE3の開発スタンスについてまとめます。[[BR]] これらの開発スタンスはOpenPNEの開発スタンスではなく、自分自身がこの開発スタンスで臨むということです。[[BR]] ==== 人間関係の表現 ==== OpenPNEは何のソフトなのかを間違えないで開発していきたいと考えています。[[BR]] 現時点で見えてるのは、「SNSは人間関係を表現するソフト」だと考えているので、そこは見失わないでいきたいと思っています。[[BR]] 具体的には「日記」「あしあと」「コミュニティ」など、非常に面白い機能はありますが、SNSの本質を考えたときに、究極的にはこれらの機能が含まれなくても良いと思います。[[BR]] この様に書くと「面白い機能が何も無いじゃん」と誤解を受けるかも知れないが、多くの機能を中途半端に追加するより「人間関係の表現」に特化する必要があるということです。[[BR]] その「人間関係の表現」ができてこそ、「日記」「あしあと」「コミュニティ」などの各機能がより良く機能すると考えています。だからこそ、常にSNSは何のためのソフトなのかということを意識しながら開発を進めていきたいと考えています。 ==== 一隅を照らす ==== 「人間関係を表現する」についての役割を背負い、その隅を照らし続けたいと考えています。 例えばOpenPNEは「人間関係」を照らし、MediaWikiは「知識の集積」、WordPressは「日記」、Flickrは「写真」、YouTubeは「動画」を照らすというように一隅を照らしていきたいと考えています。 ==== ギリギリまで削除 ==== 「この機能を取ったらSNSのソフトとして存在し得ない」というギリギリまで削除したいと考えています。[[BR]] 「SNSは人間関係を表現するソフト」なので、それ以外の部分は削除していくと、ソフトとして完成度が高まるのではないかと思っています。[[BR]] 伽藍とバザールにあった以下の一文が非常に心に残っています。 {{{ 「完成」(デザイン上の)とは、付け加えるものが何もなくなったときではなく、むしろなにも取り去るものがなくなったとき。 }}} ==== 手段より目的優先 ==== 「どのプログラム言語を使うのか」「オブジェクト指向を使うのか」「PHPのフレームワークを使うのか」「Table構造で書くのか」「XHTML+CSS化するのか」と言うのは非常に大事なことだが、これらが目的ではなく手段にとどめておきたいと考えています。 開発にはさまざまな要素があって、その時々に応じて最善の手段を選択していきたいと考えています。そして、様々な選択肢の中からそれぞれのメリット、デメリットを考えた上で常に選択をしていきたいと考えています。 {{{ 伽藍とバザール エリック・レイモンドによって書かれたオープンソースのソフトウェア開発に関する論文。伽藍とバザールは山形浩生氏によって翻訳されWebで公開されています。 伽藍とバザール http://cruel.org/freeware/cathedral.html }}} === OpenPNE3への想い === OpenPNE3がなぜ今開発されるのか。それは端的に言えば今のOpenPNE2に限界を感じたからです。[[BR]] OpenPNE1.0系がOpenPNE2.0系へメジャーバージョンアップした時も同じです。常に良いものを追い求めていたら、いつかは枠に収まりきらなくなり大きな壁にぶち当たります。その時、その壁を突き破ることができなければOpenPNEは終わりだと考えています。[[BR]] OpenPNEはこれまで多くの人に使われてきました。そして多くの方に興味を持ってもらえるようになりました。しかし、今のソースコードや設計では興味を持ってもなかなか開発に踏み切れないということもあります。[[BR]] 本当はOpenPNEをより良いものにしたいという気持ちがあれば一緒に開発して欲しいという思いはあります。しかし現実的には興味はあるが開発できないという壁があります。[[BR]] これらの壁を突き破るのが今回のフレームワークを採用する一つの理由です。[[BR]] フレームワークを採用することで、そのドキュメントなどを活かし、OpenPNEに興味を持った人が少しでも開発に参加し易くしたいという思いがあります。[[BR]] 今後、OpenPNEはもっと器を大きくして広く開発者を受け入れたいと考えています。[[BR]] そのために、このOpenPNE3では多くの方のを受け入れられるだけの準備をしておきたいと考えています。 = OpenPNE mini = 基盤 = OpenPNE Office = 基盤 = OpenPNE有識者の期待 = 20人ほどOpenPNE有識者の期待が入る == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています == 株式会社○○ ○○ ○○様 == === OpenPNE3の外部連携の充実に期待しています === OpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待していますOpenPNE3の外部連携の充実に期待しています