工数見積もりが出来そうな名前だけど実は出来ない、Adobe Cocomoを試す(勿論FlashDevelopで)
Adobeが色々と物を出してきたが、WindowsユーザだけどCygwinユーザでない俺としては、
錬金術は錬金術師たちに任せて、
docomoCocomoを試してみることにする。
Adobe知らない人でも、Cygwin得意な人とかはAlchemyオススメ。
今なら、色んなライブラリを移植してヒーローになれる。
導入
まず、導入記事としては以下の記事が非常に参考になる。
18日(米国時間)、Adobe SystemsはMAX 2008カンファレンスの開催に合わせて、コードネーム「Cocomo」と呼ばれるWebサービスを公開した。
Cocomoは、最近流行りのPaaS(Platform as a Service)モデルによるサービス提供を目指すものであり、Adobeにとっては新しいビジネスモデルの試みとなる(どのようにしてCocomoから収益を上げていくかは、まだ未定とのこと)。
【ハウツー】Adobeの新たな挑戦「Cocomo」を早速試してみた! | エンタープライズ | マイコミジャーナル
と言うか、ほぼこれを見るだけでいいんじゃない?ってくらいの勢いだ。
とりあえず、記事に従ってSDKをダウンロードし、
どこか適当なフォルダに「Cocomo」とでも名前をつけて展開しておこう。
あと、記事中にもあるCocomoのトップページ下部にある「New Dev? Sign up!」から
アカウントを作る場合、パスワードは6~12文字と言う制限があるので気をつけよう。
これに違反していると、Createボタンを押しても警告どころか反応が無い。
俺がどれだけ???ってなったか・・・。
FlashDevelopの設定
次は設定だ。記事の後半の設定部分がFlex Builder用になってはいるが、
別にCocomoのcocomo.swcをFlashDevelopに設定すればいいだけだ。
まずFlashDevelopのプロジェクトを作り、
プロジェクトのプロパティ設定で、
Classpathにcocomo.swcが入っているフォルダを追加する。

そうするとプロジェクトパネルのツリー内に追加したフォルダがあるので、
開いてを見つけ、右クリックして「Add To Library」を選択。

下の「playerglobal.swc」のように青色になったら成功。
コンパイル・実行
以上で準備完了だ。
記事にあるサンプルをコンパイルしてみよう。
新しいMXMLファイルを作り、名前をつける。
そして、コンパイル対象に指定しておく。
で、記事のコードをコピーし、幾つか編集する。
タグ「rtc:AdobeHSAuthenticator」の属性userNameと
passwordを自分のAdobe IDに変更する。
記事で言うと(2)の部分だ。
ここで注意点だが、MXMLの属性なので、当然XMLの制限を受ける。
もしパスワードに「<」とか「>」、「&」などを使ってる場合、
「<」「>」「&」と書いてやる必要があることを忘れないように。
パスワードに万が一「<」が入ってると、
エラーにもならずただパスワードが違いますと言われるだけで気付かないかも知れない。
ちゃんと「&lt;」という値にしておこう。
勿論基本原則としては、記事にもあるとおりこんな所に平文のパスワードを書くような
コーディングをしてはいけない。
あと、自分で作ったルームを使うためには、
タグ「rtc:ConnectSessionContainer」の属性roomURLを変更する。
記事で言うと(3)ね。
これでよし。
コンパイルして実行してみよう。ちゃんとホワイトボードが出る。
role
さて、実はCocomoにはroleと言う概念がある。
例えば、これはホワイトボードのサンプルを2つのアカウントで実行してみたもの。
- ルームを作ったアカウント

- ルームを作ったアカウントとは別のアカウント

ご覧のように、ルームを作ったアカウントとは別のアカウントの場合、
編集は出来ない。
デバッグログを見たところ、ルームを作ったアカウントはこんな感じで、
.user descriptor from server [object]
\\
.displayName [string]= <名前(苗字と名前)>
.userID [string]= <何か一意っぽい文字列>
.affiliation [number]= 100
.role [number]= 100
違う方はこんなだった。.roleの値が違う。
.user descriptor from server [object]
\\
.displayName [string]= <名前(苗字と名前)>
.userID [string]= <何か一意っぽい文字列>
.affiliation [number]= 100
.role [number]= 10
APIドキュメントのクラスUserRolesを見ると、それぞれの値の意味が分かる。
幾つかroleがあるようなので、管理方法についても
学ぶ必要があるだろう。
Developer's Guideによれば、examples\CustomRosterが参考になるようだ。
ローカル開発
さて、実際開発作業中に毎回毎回Adobeに接続するのは面倒なので、
ローカルな環境で開発を行う。
Cocomo SDK内のextras\LocalConnectionServer.airをインストールし、
起動するとローカルな環境での開発が可能になる。
このAIRアプリはAdobeのサーバと大体同じように動いてくれるので、
テストにはもってこいだ。
ただし、このローカル環境を使うには特別な接続が必要になる。
例えば、先程までの、Cocomoに接続するアプリはこんな風だった。
id="auth"
userName="Adobe IDを入れてください"
password="Adobe IDのパスワードを入れてください" />
<rtc:ConnectSessionContainer roomURL="ルームのURLを入れてください" id="cSession" authenticator="{auth}" width="100%" height="100%">
が、ローカル環境の場合、こうなる。
<rtc:ConnectSessionContainer id="cSession" authenticator="{auth}" width="100%" height="100%">
見ての通り、rtc:AdobeHSAuthenticatorがになっており、
またrtc:ConnectSessionContainerから属性roomURLが消えている。
このローカル環境のサンプルは、examples\LocalConnection\LocalConnection.mxmlsにある。
実はこのローカル用サンプル、色々と機能を詰め込んであるので、それはそれで面白い。
ただし、このサンプルのコメントにこうある。
All users enter the room as host, though the LocalConnectionServer does support roles and role change functions.
どういうことだ?roleを変える機能はあるけど、みんなhostになっちゃうよ?
roleを変える機能を使う方法はない!ってことか?




