こみゅすけのRESTful APIを公開します!

Java Appletのように重いこみゅすけのUIだが、こみゅすけの次の一手として、思い切ってこみゅすけの情報を取得あるいは操作するためのRESTful APIの公開を開始することにした。すでに実装は完了し、下記のドキュメントも執筆完了。
RESTful APIリファレンス – Trac
リソースの削除については、間違ったAPIの利用によって情報が消去されてしまう懸念があるため、HTTP DELETEメソッドは受け付けないようにしてある。その他のGET、POST、PUTメソッドについては、ちゃんと実装を行っているので、試してみて欲しい。利用条件なども上記のページに記載してあるので、一読願いたい。
こみゅすけの開発当初は、Dojo Toolkitをフルに使ったUIをみんなに使って欲しい、という考えだったのだが、今ではこみゅすけの管理下にあるデータベースこそ、価値のあるものであり、みんなにうまく活用して欲しい、と思っている。なかなか完全なRESTful APIというのも、まだ世の中に少ないと思うので、RESTful APIを使ったサービスのマッシュアップを、こみゅすけを題材にして、ぜひ皆さんにいろんな言語で行ってみて頂きたい。その結果、こみゅすけがいろんな場所でいろんな使われ方を見れるようになることが、僕が今考えている最も嬉しいこみゅすけの将来である。
データベースのバックアップは毎時取っているので、「壊しちゃったらどうしよう」など考えず、ぜひチャレンジして見て欲しい。もちろん節度ある行動を求めたいが、ま、とにかく気軽にご利用ください、ということである。
みんなでこみゅすけの将来を一緒に作っていきましょう。作って欲しいです。作ってください。作ってー!

参加申込者一覧のメール送信機能を追加しました

こみゅすけには、イベントの参加申込を受け付ける機能がある。参加申込時にはメールアドレスも入力させているのだが、ロボットに拾われてスパムメールの情報発信源になるのは避けたかったので、入力されたメールアドレスは表示しない(Ajaxのレスポンスにも含めない)ようにしている。
ただ、それだとイベントの主催側がリマインドメールなどを送信できないので、メールアドレスも含め、参加申込者の一覧をコミュニティ管理者にメール送信する機能を追加した。
commusuke_send_attendance_mail.jpg
コミュニティの登録時に入力したメールアドレスを入力して右のボタンを押すと、そのメールアドレス宛にに参加申込者の一覧がメール送信される仕組みである。もちろん間違ったメールアドレスを入力してもメール送信されないようにしている。
ぜひ活用してみて欲しい。

Dukeスニーカーが届きました!

Sun&リクルート主催で行われたMash up Award 3rdのこみゅすけトリプル受賞からすでに1ヶ月以上経過しているが、先週サン・マイクロシステムズ賞の副賞が届いた。
200711191915000.jpg
スニーカー全面にDukeが6パターンちりばめられている。まさにJava好きにはたまらないシューズ。
これ、完全にオーダーメイドなので、1、2万円なのかと思っていたら、とんでもない。その4倍以上したらしい。しかも、Sunの方々の重い重い想い(=念)が詰まっているので、逆に普段履けない。
イベント事に参加するときには、このシューズとDuke Tシャツ、Sunの白シャツにDuke巾着をさげて登壇する予定。あとは、Glassfish関連とJRuby関連グッズも欲しいところである。。。
サン・マイクロシステムズのスタッフの皆さま、ありがとうございました!

iCalendar形式でイベント情報をエクスポートできるようにしました

こみゅすけに登録されたイベント情報は、RSS FeedによってRSSリーダーなどで購読できるようにしている。また、Google Calendarから、イベント情報をGData APIを使ってインポートする機能も提供している。
id:yoshioriさんからの要望もあり、iCalendar形式でイベント情報をエクスポートできるようにしてみた。
commusuke_ical.jpg
これにより、こみゅすけに登録されたイベントを、iCalendar形式に対応したスケジューラ(Google CalendarとかmacのiCalとか)に取り込むことができるようになる。ぜひ活用してみて欲しい。

参加申し込みページにリンクを配置しました

イベントの参加申し込みを受け付ける機能を持つこみゅすけ。今までは、参加申し込みページに直接行くことができず、こみゅすけ上でイベントの検索を参加申込者が自分で行わなければならなかった。これだと、利便性が良いとは言えない。
そこで、あるお方からの要望もあり、イベントの参加申し込みページにリンクを設置して、そのリンクを配布することにより直接参加申し込みページに行くことができるようにした。
attendance_permalink.jpg
コミュニティの登録は自由なので、コミュニティを主催されている方は、ぜひこみゅすけに登録して利用してみて欲しい。

macのSafari3で文字化けしてたのを解消しました

多くのmacユーザは、Leopard(10.5)に移行したことだろう。僕も販売開始のその日にLeopardに移行した。Leopardには、Safariの新しいバージョン3が搭載されている。このSafari3でこみゅすけを見てみると、なんと見事に文字化けしていた。Safari2でも文字化けしていて直したというのに、だ。
Safari2では、dojoによって読み込まれるjsファイルおよびhtmlテンプレートファイルの両方が文字化けしていたのだが、dojoに手を入れて文字化けの補正をした状態でSafari3で見てみると、htmlテンプレートファイルのみ文字化けしていた。むー、何なんだSafariは。。。
jsファイルは文字化けしていないので、いっそのことhtmlテンプレートファイルは廃止し、その内容はjsファイルに書いてしまう手法で修正を行った。手元のMacbook ProのSafari3では、文字化けは解消されている。読み込むファイル数がhtmlファイルがなくなった分減っているので、起動時の高速化も実現できている。ま、高速になったといっても、微々たるもんだけど。
macユーザの方々にも、ぜひSafari3でこみゅすけを利用してみて欲しい。

Sun Tech Days 2007 Mash upセッションで話してきました

昨日のSun Tech Days 2007 Day-2にて行われたMash upに関するセッションに登壇し、こみゅすけについての話を行ってきた。その時のプレゼン資料が↓である。

実際には3人(Sunの藤井さん、リクルートの川崎さん、僕)で担当。藤井さんが司会&全体のまとめ、川崎さんがWeb API提供側としてのMash upに関する話、僕が受賞作品の紹介と個人的に感じている今後のMash upの方向性についての話を行った。かなり内容的には濃かったと思う。コンテストの大規模化、Web APIの広がり、単なるWebからソーシャルOSへの変化など、今後を占う上での重要かつ3人の(偶然なんだけど)統一された意見がわかってもらえたのではないかと思う。
本当はUstream配信をしようと思っていたのだが、ちょっとしたハプニングが発生し、急に僕のmacを本番で使うことになったため、残念ながらUst配信をすることはできなかった。身近な人には配信を予告していたのだが、ごめんなさい。
やっぱり最近のこみゅすけに対するみんなの印象は、「重い」ってことのようだ。「HTML版も提供して欲しい」という意見もあった。ものすごく「アンチWebページ」的な思想で作ってしまった面もあり、dojoを使ったことも、「重さ」に拍車をかけている。パフォーマンスチューニングをする余地はあるのだが、現状のUIだとどうしても限界があるため、ちょっと考えを改めないといけないかもしれない。
ま、何はともあれ、無事に発表ができてほっとしている。当日会場にいらしていただいた方々、そして応援をくれた方々には、感謝の意を伝えたい。ありがとうございました。
そして、これからも「こみゅすけ」をよろしくお願いいたします。

Sun Tech Daysでこみゅすけについて話します

Sun&リクルート主催のMash up Award 3rdで3部門同時受賞に輝いた「こみゅすけ」について,Sun Tech Daysのセッションで紹介させていただくことになった。
日付: 2007年11月8日(Day-2)
時間: 18時10分〜19時00分
セッション: 2-J1-6 Mash up Award Demonstration
こみゅすけ開発のきっかけ,搭載している機能,技術的な解説,そして今後の展望などを,デモンストレーションを交えながらお話させていただく予定。「いろいろなトラブルに直面しては乗り越える」という,まさに「運用」と言える話もあったりするので,自分でサービスを立ち上げたいと思っている方には,ぜひセッションに足を運んでいただきたい。
また、Sun藤井さんからMash up Awardに関する話や、リクルート川崎さんからWebサービスの提供側から見たMash up Applicationの話も、逃すことのできない内容となるはずである。
Mash upをやったことのある方も、そうでない方も、ぜひお越しください。

こみゅすけをJRuby on Glassfishに移行!

機能追加をして久々にmongrelを再起動したら,こみゅすけが起動しなくなった。というか,4つ動かしていたrailsアプリが全滅。すっごい緊急事態。
稼働させているサーバは,Fedora Core 6。64bitのクアッドコアCPUで,uname -aの結果は以下の通り。

Linux chako 2.6.20-1.3002.fc6xen #1 SMP Mon Aug 13 14:21:21 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux

yumを毎日自動起動させていたのだが,先週の10月11日にruby関連のパッケージが「1.8.5.113-1.fc6」になった模様。たぶんこれが原因。ruby -vとrails -vの出力結果は以下の通り。

ruby 1.8.5 (2007-09-24 patchlevel 114) [x86_64-linux]
Rails 1.2.3

発生しているエラーは,NoMemoryError。あれ?機能追加した結果メモリ不足になった?と疑ってみるも,何もいじっていないrailsアプリもダメなため,アプリケーションコードが悪いわけではなさそう。具体的なエラー内容は,以下の通り。

NoMemoryError (negative allocation size (or too big)):
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:86:in `sprintf’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:86:in `active_record_runtime’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/benchmarking.rb:69:in `perform_action_without_rescue’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/rescue.rb:83:in `perform_action’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `send’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:430:in `process_without_filters’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:624:in `process_without_session_management_support’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/session_management.rb:114:in `process’
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:330:in `process’
/usr/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in `dispatch’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:78:in `process’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `synchronize’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `process’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:in `process_client’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `each’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `process_client’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `initialize’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `new’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `initialize’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `new’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:271:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `each’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:211:in `run’
/usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243
/usr/bin/mongrel_rails:16:in `load’
/usr/bin/mongrel_rails:16

sprintfメソッドでエラーになってる。そこで,NoMemoryErrorとsprintfでググってみると,同じ現象になってる人を発見
[ruby-dev:31404] negative allocation size in rb_f_sprintf
どうやら,x86_64環境でしか発生しない現象っぽい。上記で載ってる現象再現手順を実行してみると,見事に再現する。

yoichiro$ ruby -ve ‘printf “%d\n”, 0.9′
ruby 1.8.5 (2007-09-24 patchlevel 114) [x86_64-linux]
-e:1:in `printf’: negative allocation size (or too big) (NoMemoryError)
  from -e:1

これをmacでやっても,エラーにはならない。

yoichiro$ ruby -ve ‘printf “%d\n”, 0.9′
ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.10.1]
0

どうすればいいのか,さっぱりわからない。「x86_64環境でrubyとrailsはテストされていない」ということ?うーん。
こみゅすけをこのままダウンさせておくわけにはいかないので,「railsが動く別の環境」を考える。そう,JRubyがある。JRuby上でrailsアプリはそのまま動作するはずなので,さっそくこみゅすけをJRuby上で動作確認することにした。mac上でJRubyをコンパイルして,railsなどをインストール。いろんなサイトを見ると,ActiveRecord-JDBCでデータベース接続を行っているっぽいので,インストールしてdatabase.ymlファイルなどを書き換える。
実行してみると,基本的にdatabase.ymlとenvironment.rbファイルの書き換えだけで,JRuby+ActiveRecord-JDBCで動作した。と思ったら,MySQLから取得した文字列が見事に文字化けしている。いろいろ文字コード関連の設定を試みてみるが,どれも改善に至らず。調べてみると,ここに載ってるように,同じ現象になっている人がいる。しかも,どうやらActiveRecord-JDBCはUTF-8の扱いでバグがあるらしく,パッチを当てないとダメらしい。
rubyもダメ。jrubyもダメ。万事休す。
人間の思い込みは怖いもので,jrubyの場合はActiveRecord-JDBCを使わなければいけないものだと思っていたが,別にActiveRecordのみでjrubyでもデータベースは扱えることに気がつく。jrubyを試している人がこぞってActiveRecord-JDBCを使っているのは,何故だろうか。。。
mac上でjrubyによるこみゅすけの稼働ができることを確認後,運用しているサーバにGlassfish v2をインストール。GoldSpikeプラグインをインストールして,warファイルを構築。その際にdatabase.ymlファイルの編集とenvironment.rbファイルを編集して,productionモードで動作するようにしておく。Glassfishにデプロイして,mod-proxyの設定を変更。すると,比較的あっさりとこみゅすけが動作を開始した。
というわけで,今日からこみゅすけは,JRuby on Glassfishで運用をしている。
今後JRubyでいくか,何とかmongrelで運用できる方法を見つけるか。悩むところだ。。。

Mash up Award 3rdで「こみゅすけ」がトリプル受賞を果たしました

8月の初めから開発を初めた「こみゅすけ」。Sunとリクルートが開催した「Mash up Award 3rd」コンテストに応募していたのだが,この度なんと「3部門同時受賞」に輝いた。最優秀,マッシュ賞,アップ賞に続く第4位的な感じであり「大賞まであと一歩!」なのだが,とにかく嬉しい!めちゃめちゃ嬉しい!具体的には,

  • サン・マイクロシステムズ賞
  • テクノラティ賞
  • 面白法人カヤック賞

の3部門である。これはすごい。
RIMG0897.jpg
こみゅすけでは,テクノラティ社提供のブログ検索Webサービスは使用しているのだが,面白法人カヤック提供のWebサービスは使用していない。それにも関わらず部門賞を頂いたことにとっても驚いた(前例がないかも?)。「どれだけ提供したAPIをうまく利用してくれたか」で部門賞は判断されているとばかり思っていたが,実はそれだけでもないんだな,ってことなのだろう。
・・・というわけで,9月30日に行われた表彰式に出席してきたので,その様子を紹介してみよう。まずは,会場の入り口の風景。お馴染の看板と受付があった。
RIMG0888.jpg
RIMG0852.jpg
会場は100人ちょい入る規模の部屋だったのだが,80%以上埋まっているという感じ。
RIMG0851.jpg
14:10頃に,いよいよ表彰式が開始された。かっこいいムービーでスタート。まだ誰も受賞内容をこの時点では知らないので,緊張が高まった瞬間だっただろう。僕の心拍数もこのときから一気に急上昇していく。
RIMG0854.jpg
Sun藤井さんの挨拶のあと,5人ずつ部門賞が発表されていった。大賞3作品の発表は部門賞のあと最後になるので,内心「どうか呼ばれませんように!」と願いながら部門賞の発表を聞いていた。
RIMG0863.jpg
部門賞最後の組の発表前まで,僕の名前は呼ばれない。「ぬぉ!もしかして・・・」と思った瞬間,部門賞最後の組で僕の名前が呼ばれた。「うーん,まぁ,部門賞取ることだってすごいこと。100万と5万じゃ違うけど,仕方ないな」と自分を瞬時に納得させ,壇上に上がった。
ここで3部門同時受賞となったのは,先に述べたとおり。いくつか副賞も頂いたのだが,カヤック賞の副賞が「1万円相当の絵画」で,これがかなりでかい。その場で開けることはできず,家で開いてみたところ,以下のような絵画だった。
RIMG0923.jpg
テクノラティ賞は,コーヒーグッズ。コーヒーポットと某有名コーヒーの粉だった。カヤックさん,テクノラティさん,ありがとうございます!
あと,サン・マイクロシステムズ賞の副賞は,なんとDukeスニーカー。オーダーメイドらしく,手元に届くまでに1ヶ月かかるらしい。出来上がりのイメージは,こんな感じ。ありがとうございます!
RIMG0895.jpg
最後に,大賞3作品の発表が行われた。受賞者は,この方々。大賞作品は,どれもさすがにしっかり作り込んであり,しかも製作時間もそれなりにかけてある(最優秀作品は3月から作っていたらしい)。
RIMG0871.jpg
その後,会場はそのままで懇親会に移行。マッシュアップに関するクイズ大会が行われ,なんと僕がいた組が1問だけ間違えただけで,優勝してしまった。賞品は「クリスタルDuke」。これ,大きさはコップ程度だが,結構高価なものらしい。
RIMG0878.jpg
飲み物と食事も有り難いことに用意されていた。マッシュアップコンテストにちなんで,「マッシュアップバーガー」なるものもあった。ハンバーガーの具材を各自マッシュアップする,という形式。
RIMG0884.jpg
あとは自由にいろいろな人とお話タイム。ここで僕は「名刺がなくなる」という痛恨のミスを犯してしまう。自分から話しかけることもできず,非常に残念な時間が過ぎていった。反省。
RIMG0883.jpg
スタッフや審査員の方々ともいろいろとお話することができた。ここでは紹介できない裏話なども聞いてしまい,「そうだったのかぁ」と嬉し悲し恥ずかしな気持ちになった。
表彰式終了後,嫁と新橋で合流し,ささやかながら(といっても結構いい値段したけど)美味しい焼肉を食べながら祝勝会。一緒に喜びを分かち合える人が傍にいるって,こんな嬉しいことはない。幸せを噛みしめながら,焼肉を噛み続けた。
マッシュアップコンテストに応募するのは,今回が初めて。それなのに,トリプル受賞という結果が残せて,非常に満足している。ただし,大賞に入るのと入らないのとでは,メディアに取り上げられる度合いが全く異なる。上位3賞に入って,こみゅすけがより広く認知されればいいな,と思って応募していただけに,この点に関しては少し残念に思っている。しかし,Sunの方々から力強く,
「Sunはこみゅすけを使っていきます!」
という言葉を頂いた。コミュニティの情報がコンテンツの全てであるこみゅすけにとって,Sunからのバックアップが得られることは,この上ないこと。期待に応えられるように,今後もこみゅすけを育てていかなければならない。

Mash up Award 3rdのスタッフの皆さんには,貴重な体験をさせていただき,ありがとうございました。入賞された全ての作者の方々,おめでとうございます。共に素敵な時間を過ごせたことを,とても嬉しく思っています。トリプル受賞は,こみゅすけ開発に意見をくださった方々皆さんのおかげです。そして,見守ってくれた僕の素敵な妻に,ありがとう。
これからも,こみゅすけをよろしくお願いいたします。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes