うちのOSXでGoogle Waveが動いた
http://code.google.com/p/wave-protocol/
Waveサーバの参照実装が先月末に公開されてて、気になってたので試してみたらすごく簡単だった。Google Codeの資料がとても親切。正直それ以上特に付け加えることもないんだけど、一応自分の作業ログとしてやったことをメモっとく。
Java6インストール
http://developer.apple.com/java/download/
もしかしたらJava5でもいけるのかも知れないけど、とにかくGoogle Codeにそう書いてあったのでインストール。ただ、リンクをクリックしたらログイン画面に飛ばされたので、もしかしたらMacでJava6はApple Developer Connection(ADC)の登録必須なのかも。もしそうならADC未登録の人は諦めてJava5で試すか、Java6の正式版が出るまで待つか、1万円払ってADCに登録するかの3択かな。
ログインしたら右サイドバーのDownloadsからJavaを選択して最新版をDL&インストール。
インストールが終わったら最新のJavaを使用するように.bashrcなりなんなりに環境変数を設定。
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home PATH=$JAVA_HOME/bin:$PATH
確認
$ java -version java version "1.6.0_15" Java(TM) SE Runtime Environment (build 1.6.0_15-b03-223) Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-92, mixed mode)
OK
Openfire(XMPPサーバー)インストール
http://www.igniterealtime.org/downloads/index.jsp
Google Codeに上がってるWaveサーバーはOpenfireというJava製XMPPサーバーの拡張機能として実装されてる模様。なのでまずこれをインストールしないと始まらない。インストールについては上のリンクをクリックしてdmg落としたら後は指示に従うだけ。
Openfire初期設定
Openfireの設定はブラウザ上で全部できるみたい。インストールが終わったらいつの間にかOpenfireが起動してるので好きなブラウザで http://localhost:9090 にアクセス。設定画面はキャプチャしてないけど、Google Codeにあるので参考のこと。自分の設定内容はこんな感じ。ほぼ全てGoogle Codeの指定通り。
- Language Selection
- English
- 言語設定。日本語がないので仕方なく英語で
- Server Settings
- Database Settings
- Embedded Database
- データベース。テスト用なら組込みのDB使った方が設定なしなので楽だと思う
- Profile Settings
- Default
- Administrator Account
- andyjpn@gmail.com
- admin
- admin
で、この後Openfireを再起動するらしいんだけど、Google Codeの指示通り・・・にはできなかったので、なんかそれっぽくやろうとしたんだけど
$ sudo bash # cd /usr/local/openfire # chmod +x bin/openfire.sh # bin/openfire.sh stop # bin/openfire.sh start
SQLコネクションがどうこう言われて弾かれたので、Macごと再起動。なんかOpenfire Mac版ってファイルの権限とかオーナーとかおかしいような気が。
Wave拡張が使う自己署名証明書作成
http://code.google.com/p/wave-protocol/wiki/Certificates
これもGoogle Codeに書いてある通りやればOK。わざわざ簡単なシェルスクリプトまで書いてくれてて多謝。
make-cert.shというファイルを作成して、下の内容で保存。
#!/bin/bash NAME=$1 if [ "$NAME" == '' ] then echo "$0 <certificate name>" 1>&2 exit 1 fi openssl genrsa 1024 | openssl pkcs8 -topk8 -nocrypt -out $NAME.key openssl req -new -x509 -nodes -sha1 -days 365 -key $NAME.key -out $NAME.cert
証明書名を指定して実行。質問はCommon Name以外は全部EnterでOK。Common NameはServer Settingsで指定したDomain名にすること。
$ chmod +x make-cert.sh $ ./make-cert.sh test Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:ando-2.local Email Address []:
Wave拡張用のOpenfire設定
先の初期設定を完了すると管理画面にログインできるようになるのでまたブラウザで http://localhost:9090 にアクセス。管理画面にアクセスするときのユーザー名はメールアドレスじゃなくて「admin」に固定されてるみたいので注意。
管理画面に入ったら上の方にある「Server Settings」タブを選んで、次のように設定。(Google Code通り)
- External Components
- Service Enabled
- Enabled
- Port: 5275
- Default shared secret: foobar
- Service Enabled
と設定して Save Settings
- External Components
- Allowed to Connect
- Whitelist
- Subdomain: wave
- Shared secret: foobaa
- Allowed to Connect
と設定して Save Settings
- Security Settings
と設定して Save Settings
Google Codeに寄るとこれ以外にもオススメの設定があるみたいだけど、必須じゃないようなのでとりあえず無視。
Wave拡張インストール
Google CodeのWave拡張はmercurialで取ってこないとダメだったのでそれもインストール。人によって必要なものが違うかもしれないのでまぁ参考程度に。
$ sudo port install mercurial # -> 失敗 $ sudo port install python_select $ sudo port python_select pytyon25 $ sudo port install mercurial $ hg clone https://wave-protocol.googlecode.com/hg/ wave-protocol # -> 失敗 $ sudo port install py25-socket-ssl $ hg clone https://wave-protocol.googlecode.com/hg/ wave-protocol
さっき作った自己署名証明書をwave-protocolディレクトリ直下にmvした後、サーバー設定ファイルを編集。
$ mv make-cert/test.* wave-protocol/ $ cd wave-protocol $ vim run-server.sh
編集した行だけ抜き出すとこんな
#echo "You need to edit the run-server.sh script" ; exit 0 #PRIVATE_KEY_FILENAME=your_private_keyfile.key #CERTIFICATE_FILENAME_LIST=certificate_file.cert #CERTIFICATE_DOMAIN_NAME=yourdomainnamehere PRIVATE_KEY_FILENAME=test.key CERTIFICATE_FILENAME_LIST=test.cert CERTIFICATE_DOMAIN_NAME=ando-2.local
コンパイル&配備&実行
$ ant dist $ run-server.sh
CUIベースのクライアントで動作確認
http://code.google.com/p/wave-protocol/wiki/ConsoleClient
クライアントスクリプトを一部修正。修正したとこだけ抜き出すと、以下。
#echo "You need to edit the run-client.sh script" ; exit 0 # Use the same flag for the domain name as CERTIFICATE_DOMAIN_NAME in # run-server.sh. #WAVE_SERVER_DOMAIN_NAME=yourdomainnamehere WAVE_SERVER_DOMAIN_NAME=ando-2.local
んで、実行。
$ run-client.sh admin
別のターミナルでもう一つ実行。
$ run-client.sh yasushi
adminのターミナルで以下のように入力。
admin@ando-2.local> /new admin@ando-2.local> /open 0 admin@ando-2.local> hello admin@ando-2.local> world admin@ando-2.local> isn't this nice? admin@ando-2.local> /add yasushi@ando-2.local
yasushiのターミナルに次の用に表示されてればOK
0) (w+HXR8VSmoyIjv) helloworldisn't this nice?hogehogef
もちろんyasushiのターミナルで入力した内容はadminにも表示される。
サーバーを起動してるターミナルにはやり取りの内容が全部表示されてるのでプロトコルの確認もできる。
まだ上に書いたようなことしてやってなくて、正直何ができるかはよく分かってない。でもとりあえずGoogle Codeの指示通りに作業を進めるとここまでほとんど引っかかるところはないというのは分かった。Google Waveの中身に興味がある人は試してみるべきではないかと。