umjammer です。 ソーシャルアプリ、盛り上がっていますね。 クライアントが多いゲームだとユーザー数が100万人単位とか、B2Cシステムの極みともいえる大規模分散処理が必要とされるインフラが求められます。そんな大掛かりなアプリケーションを作成する場合は、手前味噌になりますが DSAS Hosting for Social 等を利用することになるでしょう。 一方、小ぢんまり始めるのなら世の中にはソーシャルアプリを動かすインフラがすでに用意されています。 このシリーズでは簡単に始めてしまおうをコンセプトに、ソーシャルアプリの作り方を三回にわたって紹介していこうと思います。
Social Application Map


まずは第一回として Mixi アプリを作ってみます。 Mixi アプリに限らず、ソーシャルアプリは基本 JavaScript もしくは Flash で作成しますが、一から作るとなると面倒ですよね。しかし良く考えてみるとブラウザと連携が可能なプラットフォーム、つまりプラットフォームから JavaScript にアクセス出来る仕組みさえあれば、開発は JavaScript に限らず行うことができます。最近では 3D プラットフォーム なども存在します。 今回はちょうど手元にあった、いにしえの Java Applet のプログラムを移植してみます。ブラウザで動く Java には LiveConnect というブラウザとの連携 API が存在します。すべてのブラウザに載っているわけではないのですが Firefox 3.6, Safari 4 等は対応していますのでまあ良しとしましょう。 Mixi アプリはダウンロード元が Mixi のホストになります。Java Applet は自前でホスティングしています。Java Applet はクロスドメイン制約があるため直接 Mixi ホストの OpenSocial API にアクセスすることはできません。よって LiveConnect を使用して JavaScript の関数をを呼ぶことになります。 Java Applet から JavaScript 関数を呼ぶ (ハイスコア)

    JSObject window = JSObject.getWindow(applet);
    window.call("setScore", 1000);

JavaScript 側 (外部 API)

    function setScore(score) {
      var params = {};
      params[gadgets.io.RequestParameters.AUTHORIZATION] =
          gadgets.io.AuthorizationType.SIGNED;
      gadgets.io.makeRequest(url + "/" + score, setScoreCallback, params);
    }
JavaScript 側で OpenSocial API や外部 API 呼出しを行ってあげれば Applet で OpenSocial API を制御できます。 また JavaScript 側の API 呼び出しは非同期が基本ですので、 Java 側にあとで値を設定する場面が出てきます。 JavaScript から Java メソッドを呼ぶ

document.applets["appletName"].java_method(args)

出来上がりはこんな感じ、
Mixi Lode Runner


ゲームオーバーになると自分のスコアが外部 API 呼び出しで登録され、ハイスコアランキングが更新されるようになっています。 版権モノなので残念ながら Mixi では一般公開はしていません。 Java Applet で Mixi アプリのソース まとめ Java Applet で Mixi アプリができました。あなたの PC の中でホコリを被っている Applet や、ここで紹介している方法 で iAppli なども Mixi アプリにすることが可能になりますよ!もちろん Flash や JavaScript のゲームですともっと簡単に移植できますね!みなさんが持っていて使わなくなったゲームを再び日の当たる場所に出してあげませんか?