Kyoto GTUG 主催の Google Wave 勉強会に行ってきた

Google Wave は招待して貰ってから使用しただけで、プログラムを書いた事もなかったので、ちょうど良い機会だから参加してみた。

以下、勉強会中にとったメモ書き。
# 資料じたいは 勉強会 資料 - Google Developer Group 京都 で公開されている

Kyoto GTUG とは

  • Google の技術を取得しようとするグループ
    • 現在、全世界で 30 各国 70 を超える地域で活動中
    • 参加してない人はしてね。
  • ハッカソンとは
    • 複数のチームでアプリケーションを作成して発表する
    • 同じ日に東京でも Google Wave ハッカソンが行われ、発表の時にお互い中継する予定

Google Wave 勉強会

  • 株式会社ルーツの北村研二さん
  • Google Wave とは何か
    • プロダクト、プラットフォーム、プロトコルでもある
    • Wave はメール + 掲示板 + Wiki + チャット
    • 同時に同じドキュメントを編集できる
  • Google Wave 以前のコミュニケーション
    • メール:リアルタイム性 -> 低
    • 掲示板:リアルタイム性 -> 中
    • チャット:リアルタイム性 -> 高
    • Google Wave はリアルタイム性が低いものから高いものまでカバーできる
    • コミュニケーションの始まりはメールのようにリアルタイム性は低い
    • 話が盛り上がる or 議論の終盤になるとリアルタイム性があがる
    • 最終的にはチャットの速度の情報交換ができる
  • Google Wave の用語
    • Wave:会話のための Wavelet を格納するコンテナ
    • Wavelet:参加者が配置され、対話を行うスレッド
    • Blip:各メッセージ
    • 過去の状態を再現できる Playback
    • メディアプレーヤのように、過去の状態を再現できる
  • まとめ
    • 参加者がメールのように情報交換でる
    • それを Wiki のように多人数で編集できる
    • リアルタイムで編集できる(ただしコンフリクトした場合は、マージする必要あり)
  • プラットフォームとしての Google Wave
    • API が提供され、それぞれの開発者が勝手に作成したガジェットやロボットを動かせられる。
  • 今日作る Gadgets
    • Hello World
    • 投票 Gadgets
      • 画面を作る
      • タグでクリックできる箇所を囲み、onClick 属性でクリックした時の動作を記述する
      • Google Gadgets に Wave 用のライブラリを追加する必要がある
      • require することで wave インスタンスを使用できるようになる
var state1 = wave.getState().get('key');
var state2 = wave.getState().get('key', option);

_gel('hoge').innerHTML = state1 // _gel は document.getElementById('') の略
    • Google Wave Gadgets と Google Gadgets との違いは、多人数で状態をリアルタイムで共有できるかどうかの違い
    • 状態変化時に画面を更新する(コールバックを登録する)
      • ローカル変数に状態を持たない -> state にもつようにする
      • ローカルに持つと他の人に共有できないため
    • 初期化のイベントハンドラを登録するメソッドがある
gadgets.util.registerOnLoadHandler(function() { // ここに初期化コード });
    • State の初期化
      • wave.getState.reset() で初期化するらしいが、動かなかった
    • デバッグについて
      • デバッグ表示用の span タグを使って表示する方法
      • Wave Sandbox でデバッグログを出す事ができるはず(試したけどダメだった)
  • Google Wave Robots
    • Wave に参加者として追加するプログラム(ボット?)
    • ユーザの Wave の操作に反応するプログラム
    • 自動翻訳プログラムなど
    • Google App Engine 上で動かす事になる
    • 作成するに必要な開発環境
      • Google Wave のアカウント
      • Eclipse + Google Plugin for Eclipse
      • Google Wave Robots のライブラリをダウンロードし、war/WEB-INF/lib にコピーする
      • http://code.google.com/p/wave-robot-java-client/downloads/list
      • プロジェクトのプロパティを開き、Java Build Path を開き、Libraries タブの Add JARs から追加
      • ロボットクラスを作成する
      • コードをがりがり書く
      • 設定ファイルの変更をする(war/WEB-INF/web.xml)を変更する
      • war/_wave/capabilities.xml を作成し、イベントハンドラを検知するように作成する
      • 使うイベントを設定する
      • もろもろデプロイの設定を行い、デプロイする
    • ロボットを追加するにはコンタクトリストに追加する必要がある
      • ApplicationID@appspot.com
    • Wave にロボットを追加する
      • + ボタンを押下してロボットを Wave に追加する
    • Blip を作成し Done を押下すると
    • Java の外部ライブラリ(jar)を使用する方法
      • war/WEB-INF/lib にコピーする
      • クラスパスを追加する
    • 投稿には HTML が使用できるが、タグには制限がある
      • img タグは使えない
      • タグを追加するには、textView.appendMarkup('message') を使う
    • Google Wave Robots のログ
      • ログは Google App Engine の Web サイトからログを確認する
      • ログレベルを指定できるが、severe, waring までしか認識しない
    • Google Wave サーバ
      • Google が提供するものだけではない
      • プロトコルに基づいて実装すれば、Wave サーバを立てられる
    • FedOne
      • すでに公開されている Wave サーバ
      • Wave クライアントのソースも公開されている


Wave 上で動くプログラムの基礎的な所が押さえる事ができたのでとても良かった。

明日はセキュメロに行く予定。