社長BLOG

HOUOU開発ミーティングメモ

手嶋、柏木、木村3名でミーティングしたメモを共有。

先週の取り組み内容

各自ブログで取り組みや考えを書く
週初めに、各自のブログ記事へのリンクを「先週のHOUOU」としてOpenPNE公式ブログで共有する。

Github上にhouou organizasionを作った
「openpne/OpenPNE3のブランチじゃだめなの?」と川原さんから指摘。
opnepneレポジトリの操作、作法に慣れてないから練習のため、と答える。
木村さんから、手嶋、柏木が作法を教えてもらって、早急にマスターする。

RedmineよりもタグとVersion
RedmineのサブプロジェクトでHOUOUを作っているが、それよりも、タグとVersionを使ったほうが良いのではないか?
これまでのやり方に対して、迷惑をかけないように、別プロジェクトや別organizationを作っているが、逆にバグチケットを登録したりする作業がやりにくくなり、閉鎖的になってしまう可能性がある。

ゴルゴンハニー
キラープラグインは開発ネームをゴルゴンハニーと名付けた。
HOUOUのミドルウエアとしての実装を確かめるために、HOUOUと寄り添う形で開発する。
ゆくゆくはHOUOUの魅力を高めるキラープラグインとしてバンドルを目指す。

ゴルゴンハニーのPC版のアクションスタイルは
jQuery=>JSON Action=>jQueryTemplateで実現。
ユーザータイムライン相当の機能はできたが、コメント機能はまだ。
PC版もスマートフォン版も同一のJSON Actionを利用する予定だ。

OpenPNEコアの動き
プラグインは外した状態での動作は、わりとしっかりしている。
prototype外しは、意外とuse_helper Javascript が多い。
=>sfProtocorusに入っているヘルパーをリプレイスする方式にする。インターフェース一緒で実装を入れ替えるリファクタリング的な発想。どうもそれほど大した関数は使ってないようだ。

この変更は、リファクタリングとなり、過去との違いが分かりづらいかもしれない。
プラグイン作者に対しても告知が必要だ。

最初のマイルストンについての各自の予定と進捗

・openpne本体でのブランチ操作
・prototype=>jQueryに移行中であることのブログ、ML表明
・openpne:install で、ネットワーク通信なし、pluginサーバ確認なし、パッケージ同梱で、セットアップできるようにする
・openpne:installのインタラティブをやめる
・opPlugin:install-from-zip などをつくって、ネットワークレス、手動設置でプラグインをインストールできるようにする。(マイグレートのダウンサイズ版)
・機能ごとにブランチを作って、変更単位が分かりやすくする。(木村さんおしえて)houhouで1回実行=>openpneのブランチで本番

HOUOUマイルストンの確認

HOUOU_NOVEMBER
・prototype=>jQuery
・インストールがネットワークレス
・インストールに必要な全プラグインをZIP同梱
・ガジェットレイアウトをさっぱり
・プラグインを手動設置したときの配慮
・ゴルゴンハニーがスムーズに動くようにする

HOUOU_DECEMBER
・スマートフォン基盤系
・コアから機能を外す
・スマートフォンUI一部(新規登録、ログイン、ホーム)
※バンドルプラグインのスマートフォン化は方式が完全に固まってから
・ゴルゴンハニー:一部スマートフォン対応
・スマートフォン向けにJSONタイプのアクションを整備する

TODO:RedmineにHOUOUプロジェクトが作られているが、OpenPNEプロジェクト内のバージョンとタグでやれるようにする。木村さんがチケット作ってみて。ブログも書く。

HOUOU:OpenPNEにも通知センターがほしいね

またアドバンスドサクセス項目を思いついてしまった。

通知センターというのはiPhpone iOS5の用語で、
アプリ内のあらゆるサービスから飛んでくる通知情報をユーザーに取って気持ち良い形で表示してくれる仕組みのこと。
Androidにも同様の仕組みがある。

Facebookでもいろんなアプリやサービスから飛んでくる通知は、ある程度まとめて管理してくれる。
OpenPNEにもほしい。

メッセージボックス、日記コメント、フレンドリンク申請、コミュニティ参加依頼などなど、OpenPNEでもいろんな場面で通知が飛んでくる。通知の種類は二段階。

・ホーム画面に赤文字で表示
・登録されているメールアドレスにメール通知

OpenPNE3では、通知に関してうまくマネージされているとは言えない。
いろんなサービスを参考にして、通知管理モデルを確立しなければ。

HOUOU一つ目の開発マイルストン

HOUOU最初の成果をどこに置くか?

ソースコード的な進化というよりも、HOUOUとしてのスタートを印象づけるものとして設定したい。

開発段階としては
◆マイルストン1
・プラグイン全外し
・prototype=>jQueryへスイッチ
・ガジェットレイアウトの見直し
・インストールをネットワークレスに
・ゴルゴンハニーの分離提供

◆マイルストン2
・スマートフォン基盤対応(招待、画像投稿、認証、画面振り分け)
・スマートフォン用AJAX関数群の整備
・スマートフォンコアUI
・ゴルゴンハニーとの連携

こんな感じで進めたい。マイルストン1はほとんど何もせず、空っぽのOpenPNEからスタートするけど、
OpenPNEが軽やかになった感覚は持ってもらえるだろう。

HOUOU内部パラメータの命名規則

OpenPNEにはパラメータの名前を考えなくてはならない箇所が複数ある。

SNS全体の設定値を格納するSNS_CONFIG
メンバーのパラメータを保存するMEMBER_CONFIG
プロフィール情報を扱うPROFILEなど。
symfonyタスクの実行名もパラメータでは無いが、名前を考える必要がある。

これらのパラメータの命名規則は、いよいよきっちり定めたい。

Javaのパッケージ命名規約は参考にしている。com.sun.java というやつ。運用実績が多いというのが選定ポイント。

ただ、ドメインが逆順というのがトリッキーで嫌いだ。ディレクトリであるパッケージと違って変数は、ツリー構造の管理が必要ないので、今回は逆順にしなくてもいいかもしれない。

OpenPNEであれば、someparam.pne.jp とする。
プラグイン作者であれば、自分のドメインを利用して
somepluginparam.cqc.jpなどと命名すれば、OpenPNE本体や他のプラグインと衝突する心配がない。
こうした命名規則は、プラグインで利用するタスクの名称や略称にも適用できるはずだ。

命名規則が役に立つと思われる項目は次のようなもの

・TwitterやFacebookなど外部OAuthのアクセストークン
他のプラグインやコアアプリケーション間で共用する可能性がある。

・認証プラグインで利用するキー名
認証プラグインのキーはかなり重要なので、特別に目立つ名前で管理したほうがいい。

・OpenPNE本体で扱うメールアドレス
いまpc_addressとなってるけど、響きがオフィシャルっぽくない

現在は規約がない状態なので、HOUOUのローカルルールとして運用し、うまくいくようなら標準化
という運びにする。

HOUOUシンプル化プロセス

プラグインなしのセットアップ

認証プラグイン一本だけの状態でインストールするように、plugins.ymlを変更する。

77webさんのハックを参考に。
https://gist.github.com/1283287

この部分の関連作業は
・除外したときに完全動作するか?を軽くチェック
・初期インストール時にプラグインサーバを確認しないように
・インストールに必要なバンドルパッケージは提供ZIPに含める

除外を検討する機能の一覧

コアに含まれている、他のサービスで代替可能な機能を除外する。管理画面機能のほうが除外しやすいので、ミニマムサクセスでは管理画面機能を中心にリストアップする。フルでは、ユーザー機能に踏み込む。

バナー設定
Google DFPなどに置き換え可能。OpenPNEよりももっとバナーを使いそうなWordpressにないんだから、なんでついているの?って感じがする。テーマやテンプレートに直接書きこんでもらうスタイルのほうが使いやすいだろう。

ホーム画面レイアウト
まだ洗練されておらず、使いこなせない。ここはソースを弄ってもらったほうが使いやすいんじゃないか?

規約とプライバシーポリシー
フリーページ+アルファで置き換え効かないか?一度変更したら二度と買えないのでフラットなテキストでもいいくらい。

APIキーの設定
Ver2ではこういう設定はconfig.phpファイルに書き込んでいた。
OpenPNE.ymlやProjectConfigrations.class.php線引きは?
こういう要素があるのであれば、SNSCONFIGを汎用的に設定できる管理項目をひとつだけ用意し、
Windowsのレジストリエディタのような扱いにすればいいんじゃないかな。

インタラクティブをスキップ

インストールプロセスで引数を指定できるようにして、インタラクティブをスキップ。

OpenPNE.yml と ProjectConfigrations.class.phpをプリセットできるか?

ここはセキュリティ上の問題がありそうなので、海老ちゃんに確認する。

OpenIDなどでパスワードを要求しない

opAuthOpenIDPluginではOpenPNEの内部構造上の制約で、パスワードを要求するが、
OpenIDでログインしているのにユーザーにパスワードを設定してもらうというのは、シンプルではない。

ユーザーにとっての複雑さが増す。IDがなくてパスワードだけがある状態というのは、通常よりもかえって覚えにくい。
※メールアドレスとパスワードのセットというのは、ユーザーが慣れているやり方だしね。他のサイトと同じパスワードを使い回していたりなんかして。

何よりも重要なのは、プラグインを除外してスタートすること。
コア機能の除外は後のステップでいいな。

コミュニティ=>グループ

コミュニティよりもグループの方が全利用者にとって理解しやすいのではないか?

コミュニティとは、狭義の意味でSNSの中に設置されているコミュニティを指す。
ただ、今やこれはmixiから由来する日本の方言になりつつある。

OpenPNEの場合、SNS自体が、”ゲーム好きコミュニティ”や”◯◯顧客コミュニティ”であるため、狭義のコミュニティとの誤解がおこりやすい。

名称変更の実装はわりと簡単だが、実際に入れ替えるとなると、手続きがかなりややこしいので、項目としてはアドバンスドサクセスに積んでおく。

グループ関連の余談。

FacebookはFacebookでファンページやらグループやらともだちリストやらFacebookページやら、似たような概念が多くて、分かりにくい。
Twitterの”リスト”機能はソーシャル・ネットワーク的には失敗と判断している。参考にしない。
ハッシュタグもグルーピングの一種ではあるが、もっとうまく運用することができそうな気がする。Twiterの発明としては@tejima とRTが最高だが、ハッシュタグはもっと改良の余地がある。

HOUOU:フォロー=>購読 へ

Twitterが登場したときフォローという概念はとっても凄いと思った。
だが、最近はその考えが変わってきている。

フォローはそのリンクを貼るために相手側の許可を必要としない接続であってRSSリーダーにおける”購読”と同じ意味である。だったら、購読という要素を付け加えれば、フォローっていらないんじゃない?と思うようになってきた。

ダイレクトメッセージについての挙動についても気になる点がある。
Twitterでは、相手をフォローすると、その人からダイレクトメッセージを受けることができる。
一方こちらから送るには、相手からフォローしてもらわないとならない。
これは結構複雑で、
ダイレクトメッセージを送ったのに、フォローし忘れで相手が返事を出せないという事故がよくおきる。
通常のソーシャルネットワークと同じように、相互リンクした時だけメッセージを送りあえる。という仕様の方がよほどシンプルだ。

相互リンクがない相手に通知するには、@tejima 型のメンションである程度カバーできる。
単方向リンクで片側だけダイレクトメッセージが送れるという仕様は、混乱を増やすだけで、あまり価値がない。

相手を感じるUX:どんなタイムラインがいい?

通常のUXの世界で大事なのは、スピーディーに使いやすいこと、年齢を問わず誰にでも分かりやすいこと、などなどある。

ソーシャルネットワークのUXではこれに加えて、「コミュニケーションしている相手を感じられるか?」という要素が加わる。

以前ミッキーマウスは一人だけ効果という記事を書いたけど、
どちらのUIのほうが、ユーザー体験として、よりコミュニケーション相手を意識するか?ということを考える。

ゴルゴンハニー(opTimelinePlugin)でもできる限り相手を感じるUIにしたい。

今のタイムラインのスタンダードであるこんなUIは、ミッキーマウスひとりだけ理論に反しているんだけど、

スタンダードだし、みんな慣れてるよね。
相手からのコメントの場合写真を反対側にすると、なんとなく会話している雰囲気は増す。

フキダシにするとスペース効率が悪くなったような印象を与える。
フキダシっぽい丸みを出すとその分テキストの領域が少なくなる。ほとんど四角で角だけ丸いフキダシがいいだろう。

なんてことを考えながら、UIを洗練させていく。

※2011/11/15 追記
休日のうちにモックアップをいくつか追加した。

HOUOU キラープラグインはゴルゴンハニー

HOUOU本体は、シンプル、スピード、スマートフォンにフォーカスし、ソーシャル・メディアをつくるためのミドルウエアとしてOpenPNE3を洗練させること。

これだけでは洗練されていても、どうやって使うの?というアプリになってしまう。

エンドユーザー向けのキラー機能は、1つのプラグインで提供する。
opTimelinePluginがキラープラグインだ。

TwitterやFacebook、Yammer、Chatterなど、今のソーシャル・メディアの主力機能であるタイムライン機能を実現するプラグインだ。

相談しながら柏木くんがメインで作っている、コードネームは「ゴルゴンハニー」。

HOUOUは洗練されたミドルウエアになる。生地がとっても美味しいプレーンなピザ、というイメージだ。

このプレーンなピザに、ゴルゴンゾーラとはちみつを合わせるだけで、素晴らしく美味しい料理になる。
opTimelinePlugin もそんな小さくすてきなトッピングを目指すよ、という意味で「ゴルゴンハニー」と名付けた。

これはOpenPNE3.6でも動作するようにつくるので、既存のOpenPNE3ユーザーにとってもメリットがある。

HOUOU 設定ファイルはゼロかひとつか

OpenPNE3の設定ファイルは
OpenPNE.yml
projectconfiguration.class.php
自動的に作られるdatabases.ymlの3つある。

3つは多すぎる。シンプルでない。

ひとつしかだめだ。できることならゼロにしたい。

最低でもMySQLの接続アカウントを格納する必要があるので、ゼロにはできないんじゃないか、なんて思うのだが、
SQLiteならパスワードいらないから、ゼロまでできるかも。

設定ファイルをひとつにできないか考える。

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

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

ページの先頭に戻る