2012年4月8日

第26回北海道開発オフに参加してきた

2012/03/31に第26回北海道開発オフが開催されたので参加してきた。

第30回が近づいてきたので、ちょっとイベント企画を提案してみようと思い、今回はその技術的な下調べをしてみた。

調べたかったのは、以下を実現できる方法

  • 異なる言語で書かれたプログラムを同時に実行
  • 実行の結果を一つの画面に表示

これらを実現する方法として、CGIをJacaScriptから呼び出して受け取った結果を表示するWebアプリケーションを作ってみることにした。

CGIは、1~3をランダムに返すだけの簡単なプログラム。Pythonで書いた。

import random
i = random.randint(1, 3)

print('Content-Type: text/plain')
print('')
print(str(i))

このCGIをJavaScriptで呼ぶ。jQueryを使ってやってみる。はじめてのjQuery。


var imagelist = {
   1: "goo-02.gif",
   2: "cyoki-02.gif",
   3: "paa-02.gif"
};

function execCgi() {
    $.post('/cgi-bin/player1.py', null, completedExec1);
    $.post('/cgi-bin/player1.py', null, completedExec2);
}

function completedExec1(result) {
    $("#result1").html(result);
    src = imagelist[parseInt(result)];
    $("#image1").attr("src", "/image/" + src);
}

function completedExec2(result) {
    $("#result2").html(result);
    src = imagelist[parseInt(result)];
    $("#image2").attr("src", "/image/" + src);
}

execCgi関数で、postメソッドを使ってCGIを呼んでいる。読んだあとのコールバックにcompletedExecを指定した。completedExecでは返された数字にしたがって画像を表示するという、つまりはじゃんけんゲームである。

上記のソースでは呼んでいるCGIは同じものだが、異なるものを呼ぶようにすれば、それぞれ書いたプログラムでジャンケンゲームができるはずである。Webサーバーの設定をすれば言語も複数対応できるだろう。

これで、好きな言語で、あるルールに従ったCGIプログラムを作って、対戦する、といったゲームが実現できると思うので、第30回のイベント企画として提案してみた。