社長BLOG

既存ツールとのブリッジがOpenPNEに必要だ

これまで自分は大きな勘違いをしていたことがある。うすうす気づいてはいたが、ようやくはっきりした。

自分は世界のソーシャル化(世界中の組織や個人の生活や交流をSNS上で行えるようにする)を目指していた。
そのためにOpenPNEを便利にしていこうとせっせとつくっていた。

だって、mixiやTwitterやFacebookこれらのメガSNSは楽しいし便利だし、これがプライベートな仲間や組織でも使えたら、
もっと便利になる。自分が目指している世界のソーシャル化につながるじゃないか?と考えていたから。

ただ、SNSの中の機能だけをいくら開発しても、根本的にダメなんじゃないかと思うようになってきた。

OpenPNEの利用者は、学校だったり、既存の企業だったり、SNSに関係がない人達も参加している。
忙しく勉強したり働いている人全員に向かって、「君たちみんなSNSを使ってくれ」というのは少し横暴だとおもう。

メガSNSを使うのは、程度の差はあれどみんながSNSに興味を持ってるし、SNSを使おうと思う意欲のある人達だ。
そうじゃない人たちはそもそもアクセスしなくなるしね。

一方で、われわれが取り組んでいるOpenPNEは、SNSが好きか嫌いかに関わらずその組織の全メンバーを巻き込もうとしている。

SNSにはアクセスしないけどSNSにとって重要な人をカバーすることは、メガSNSに無いOpenPNEだけの使命だということに気がついた。

既存ツールとのブリッジ

SNSにはアクセスしないけど、既存の情報ツールにアクセスしてくれる人たちが、ツールを変えなくてもOpenPNEとかかわりを持つような、ブリッジ機能を持たせることが必要だ。

簡単な例をひとつあげる。

電子メールしか使わないひとには、SNSの中の人たちとのやりとりをメールを使ってできるようにする。

SNSの中の人たちには、掲示板やタイムラインとして表示させてあげれば、たとえSNSを使わなくても、実質的にSNSに参加しているのと同じことになる。

FAXがコミュニケーションの基板であれば、FAXインターフェースにしてあげればいい。

こうした既存ツールとのブリッジをしてあげることが、プライベートな組織参加者全員をソーシャル化するという、OpenPNEらしい進歩につながる。

今後、OpenPNEは、現実世界の住人と、サイバー世界の住人をブリッジさせるための接着剤、GLUEとして、発展させていきたい。

OpenPNE3.8の見通し

3.8の形が見えてきた。シンプル、スピード、スマートフォンの3つを指針に取り組んできた。

シンプル

OpenPNEは難しすぎる。サルでも扱えるソフトウエアを目指さなくては、多忙な運営者の負担になってしまうよ。

・インストールが複雑
・管理画面が複雑
・プラグインや機能が多くて複雑

この3つをシンプルにする。インストールは簡単にできる。管理画面の複雑な設定項目は隠す。
プラグインは一旦全部外してから組み立てる。

スピード

今回ソフトウエア自体のスピードアップには、あまり取り組めていない。
プラグインを外したことによって、幾分スピードアップが期待できる。

その代わりに進歩できそうなのが、ユーザー体験としてのスピードアップ。
スマートフォンUIを開発する際には、画面遷移を伴わないAJAXを効果的に使っているため、
実体験としての速度は向上している。

タイムライン機能とメッセージ機能は素晴らしく改善する。
タイムラインはチャットレベルのスピードに、メッセージ機能はIMレベルのスピードになる。

スマートフォン

スマートフォンは、コアと2つのプラグインに対してバッチリ対応する。
その他のプラグインについては、OpenPNE本体リリースのあとに、個別で対応していく。

小さくなって分かりやすく、使いやすくシンプルなOpenPNE
ユーザー体験がスピードアップするOpenPNE
スマートフォンに完全対応するOpenPNE

3つの方向性はこんな感じ。

スケジュール

3月中にベータ、4月上旬にリリースを目指す!

アットプッシュ「@PUSH」を国際標準に

アットプッシュとは今作った言葉。

Twitterで @tejima 形式で相手にプッシュすることができる。
@を送られた、相手はMentionとして通常のタイムラインより目立つ所に表示される。

Twitterの設定によっては、iPhoneのアプリバッジを光らせたり、携帯メールで通知してくれたりする。

分かりやすく、とても素晴らしい機能だ。

アットマークプッシュとは?

この素晴らしさを、もっと拡張できないだろうか?
@の数を一つではなく、2,3と増やしていくことでプッシュの強さを高めていくしかけだ。

@tejima は1プッシュ。これはメンション扱い。
@@tejima は2プッシュ。これは携帯メールやSMSなどモバイルデバイスレベルにプッシュ。
@@@tejima は3プッシュ。軽帯電話を鳴らして強いプッシュを実現する。

@4つ以上は、まだ定義していないがどんどん強くなる。
その人の周りにいる人にプッシュを送り、伝言を頼む、なんて機能はソーシャルっぽくて面白いかもしれない。

国際標準に

今日、デモンストレーションで、@@@プッシュで電話がかかるデモをしてきたが、なかなか評判が良かった。
既存の仕様と地続きであり、世界中のユーザーにとって説明なしで利用できるところが受けた。

国際標準になると、素敵なんじゃないか?なんて話を、XOOPSコミュニティの人たちと雑談した。
これは共通仕様になるかも!

スマートフォンレイアウトの単体テスト


◆テストガジェット配置イメージ

HOUOUで開発しているスマートフォンUIでは
LOGIN、HOME、MEMBER、COMMUNITY、SNSの5つの基本レイアウトがある。
これらのUIが正しく動作するか?ガジェットを格納できるか?ガジェットを格納したときにも、基本UI部分は正しく動作するか?
などの、テストを自動的に行いたい。

課題

スマートフォンUIでは、JavaScriptを多用しているため、ふたつの課題がある。

1.symfony limeを利用できない
2.テストプロセスの自動化ができない

limeはJavaScriptテストができるQUnitとAPI通信を偽装するモックをつくってくれるmockjaxを利用することでカバーできそうだ。

テストプロセスの自動化については、まだ良い解決策が見つかっていない。
Travis-ciでHEADLESSテストが実行出来るという記述があるので、これに期待している。
※PHP5.4ではWEBサーバモードがあるらしいので、この組み合わせでうまくいかないだろうか?

テストのやり方

要するに図のとおり。

テスト専用のガジェットを作り、その中にテストを記述する。
5つの基本レイアウトにそれぞれテストガジェットを一つづつ配置。
layoutHOME なら HOMETestGadgetとなる。

まずは他のガジェットを設置しない状態(ガジェットコンテナにテストガジェットしかない状態)で単独でテストを行う。
これに通過したら、基本レイアウト単体での動作は正しいとする。

レイアウトに他のガジェットが入った時も、そのガジェットとテストガジェットの両方を設置した上で組み合わせ検証を行う。

テスト用のfixtureには、テストガジェットを配置するように記述する。

レイアウト単体のUI動作試験が行いたいので、APIとの接続についてはmockjaxを利用してダミーのモック相手のテストとする。これが本番のAPIサーバ相手に通信すると、結合テストになってしまうからね。信頼性が上がらない。

これでレイアウト単体の動作確認は行うことができるはずだ。

HOUOU OpenPNE3.8のドキュメント計画

OpenPNEはドキュメントが充実していないといわれて久しい。

OpenPNE3からは、コアフレームワークをsymfonyにしたことで、基礎部分のドキュメントは不要になった。

ただ、OpenPNE独自に開発した部分やOpenPNEを使って、ただSNSを運営したい、というニーズにはまだまだ答えられていない。ドキュメントも進歩させたい。

Ver2時代の資料の取り扱い

OpenPNE公式WEB http://www.openpne.jpのドキュメントはかなり古くなってしまっている。
まず、バージョン2時代の情報を取り下げ、公式サイトの情報をVer3前提のドキュメントにアップデートする。

取り扱う情報としては

・環境構築、ダウンロードからインストールまでの説明
・OpenPNEの開発情報(特にスマートフォンAPIを使った拡張方法)

この2点に絞って、資料を充実させたい。その他の資料はサイトから取り除く。

技術サポートサービスからのフィードバック

先日、OpenPNEの技術サポートサービスをリニューアルした。
専任の担当者もついて、各種マニュアルやOpenPNEの開発ガイドなどの情報を充実させている。

こちらの成果を、OpenPNEプロジェクトにフィードバックすることでサイトを充実させる。

公式SNS

公式SNS内のコミュニティ掲示板は、ドキュメントが少ない中での貴重な情報源である。
素晴らしいコミュニティサポートが提供されている。(感謝)

こちらも旧バージョンとバージョン3のサポートに掲示板を分け、運営することにする。

バージョン3の掲示板の内容は非公開とせず、インターネット上に共有する。
※投稿は、これまでどおり公式SNSのアカウントが必要。

少しでもOpenPNEの運用情報にアクセスしやすくなるようにしたい。
こちらはすでにバージョン3用のコミュニティが動き始めたので、これを起点にサポートを続けていく。

HOUOUでは開発が精一杯の状況で正直それほど余裕が無いのだが、ドキュメントも進歩させていきたい。

HOUOU OpenPNE開発版はプレーンピザ

OpenPNE開発版の目標は「生地がうまいプレーンなピザ」

ピザの上にいろんなトッピングをして美味しく食べることができる。

もちろんそのまま食べてもおいしい。

シンプルな味付け。
スピーディに焼ける。
スマートなイメージ。

プレーンなピザに合うトッピングとして、タイムライン機能を
「ゴルゴンハニー」というコードネームで作成している。

HOUOU 開発者向け要素はDeveloperPluginに退避させたい

今のOpenPNEはまだまだシンプルではない。

今日気になったのは、開発者向けの機能。

一般のSNS運営者が使わないような開発者向けの機能が、山のようにビルトインされている。

例えばOpenPNEのインストール、バージョンアップ、プラグインのインストールに使うsymfonyコマンド。

デフォルトで1画面におさまりきれない量のコマンドが出現する。
運営者が使うのはこの中のせいぜい10個程度。
symfonyコマンドでよくわからない英語が、ズラーッと並んでくるだけでも、ビビってしまう。

大量の使わないコマンド群は、運営者にとってはノイズとなる。
これは隠蔽したい。

開発者モードをセットすると、隠されていたコマンド群が出現する。というような機構を備えようと思う。
見栄えとして隠蔽するだけなら、HOUOUシリーズの中でも実現できるんじゃないかと思う。

いずれ開発者プラグインをつくる

今後はsymfonyの高度なプラグイン機構を活かして、opDeveloperPluginをつくり、
開発者向け要素はこちら側に移動することで、運営者の利用をもっとシンプルにすることはできないだろうか?

運営者はそのまま使う。開発者は開発者プラグインを導入して使う。
または、運営者向けに、開発要素の含まれていないビルド済みのシンプルなパッケージを提供する方向性もあるかも。

HOUOU OpenPNEとTravis-ci

TravisはOpenPNEの進歩に役立ってくれると直感し、対応をすすめている。

とりあえずOpenPNEの本体、プラグイン単体の両方でテストができるようになった。

OpenPNE本体の自動テスト

このブランチが自動テストに対応している。
https://github.com/houou/HOUOU/tree/tjm/apitest

プラグイン単体のテスト

opSheet2ProfilePluginを試しに対応してみた。
https://github.com/tejima/opSheet2ProfilePlugin

プラグイン単体の方はかなりトリッキーで、次のような手順で無理やりテストしている。

・プラグインのコミットをgithubにPushする
・Travisが自動的にコミットされたソースを取得する
・テスト前の設定スクリプトでOpenPNE本体を取得し/vender/OpenPNEに展開
・/vender/OpenPNE/plugins/opSheet2ProfilePlugin ディレクトリをつくり、そこにソースを移動する
・OpenPNEをインストール
・プラグインのテストプログラムを実行する

これでうまく行った。

これでOpenPNEとOpenPNEプラグインを毎回コミット単位で、継続的テストにかけることができるようになった。

自動テストの今後

スマートフォンWEBクライアントのJavaScriptをテストできるようにしたい。

SeleniumもTravisで自動テストできるようにしたい。

テストデータをもっと洗練させたい。

プラグインのテストをもっと手軽にできるようにしたい。

HOUOU 百人一首でテストデータをつくる

3月からOpenPNEのテストに取り組んでいくのだが、テストデータの扱いに困った。

OpenPNE3.6までのテストではテスト用に専用のデータを作っている。
A B C D Eというニックネームのユーザーがいて、Aというコミュニティがあって、

というようなデータを作ってテストをしている。

これは分かりにくいしつまらない。

テストを最小限のコストで実行するためにはやむを得ないと思うけど、
開発者みんなの頭の中でデータ構造を覚えていないから、テストの品質を考えてベストじゃないと思う。

みんなが共有できて、魅力的なテストデータをつくろうと考えた。

テストデータをテストの時だけ使うのではなく、予めデータの入ったインストールも試せるような
OpenPNEのデモンストレーションモードとして作れば、力もかけられるし一石二鳥だ。

百人一首で決まり

最初は「世界がもし100人の村だったら」でつくろうと考えた。
次にアイデアがでたのは、女性をAKB48から、男性をEXILEから持ってくるというアイデア。
ただこれは、誰がどのメンバーIDだかがわからないし、AKBとEXILEをフレンドリンクさせると、それはそれで問題があるんじゃないか?ということで却下。

最終的には、100人ぴったりで、ナンバリングできるし、名前もついてるし、「公家」「坊主」「武士」コミュニティに所属させたりするのも楽だし、英語化もされている、ということで、百人一首に決まった。

OpenPNE3.8にはデモンストレーションモードとして、百人一首の世界が再現される。
管理者は「天智天皇」だ。このデモでは天智天皇から招待状が届くことになる。

※追記 サンプルのたたき台ができた。
https://github.com/tejima/opSheet2ProfilePlugin/blob/master/test/fixtures/common/100data.yml

OpenPNE3.8リリースまでの段取りMTG

段取りについて列挙。

スマートフォンをHTML5Validにする
マージ作業の前にタグとして正しい状態をつくる

hououの成果をOpenPNE本線にマージする
スマートフォンAPI、スマートフォンアクション、その他hououで行った修正を本線にマージする。
以後OpenPNEの基本開発スタイルに沿って進める。

2つのプラグインをOpenPNEパッケージに加える
メッセージ機能と、日記、もしくはトピック機能を対象とする。
パッケージに加える基準に引き上げるためにスマートフォン化する。

スマートフォンHTML構造を改善する
HTMLタグ付けの見直し、CSSの共通化。

スマートフォンのテーマをデザインする
現在デザインなしで、グレースケールで作っているテーマをデザインする。

国際化対応する
HOUOUプロジェクトで開発した部分を国際化対応する。

シンプル化をもっと進める
アクティブでない機能を隠す。
分かりにくい部分のもっと取り除く。

スピード化をもっと進める
・スマートフォンAPI READ部分のDoctrine外しは実現する。

リリースQA
リリース用のQA作業。
3月はQA祭り。

OpenPNE�~�蓈���񋟃T�[�r�X�̂��m�点

  • ��K�̓z�X�e�B���O
  • �Z�p�T�|�[�g
  • �J�X�^�}�C�Y
  • OpenPNE Manager
  • ���q���܃T�|�[�g

ページの先頭に戻る