SeasarCon終了とT2のデモ

SeasarConference Autumnが無事終了しました。
参加者も約450名と雨の中、多くの方に来場頂きありがとうございました。

T2チームとしては2枠頂きました。

1枠目のT2自体の詳細

http://d.hatena.ne.jp/shot6/20090913#1252791997
大谷さん、お疲れ様でした。T2の今後がうまく伝わったのではないかと思います。

T2 HaclsのデモT2Piano

T2で登壇した際のT2Pianoのデモの画面とクライアント側のソースを載せておきます。

クライアントJavaFX

サーバ側 T2Piano


デモの動きの詳細について

http://d.hatena.ne.jp/c9katayama/20090914/1252938449

JavaFXのソース

JavaFXでAMF通信する際のソースです。
BlazeDSを利用する場合とT2AMFを利用する場合と2パターン載せておきます。
sliderを動かすとテツの画像がクルクル回りながらサーバ側とAMF通信し、ピアノの音を鳴らします。

/*
 * T2Piano.fx
 *
 * yone098
 */
package piano;

import javafx.ext.swing.SwingLabel;
import javafx.ext.swing.SwingSlider;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.stage.Stage;
// for t2amf connection
import org.t2framework.t2.format.amf.client.AmfConnection;

// BlazeDSのRemotingMessageを利用してAMF通信
function callPianoByBlazeDS(val: Number) {
  var con:AMFConnection = new AMFConnection();
  con.addHttpRequestHeader("Content-Type", "application/x-amf");
  con.connect("http://localhost:8989/t2-piano/t2.amf");
  var remoting:RemotingMessage = new RemotingMessage();
  remoting.setClientId(UUIDUtils.createUUID());
  remoting.setDestination("javapiano");
  remoting.setOperation("play");
  var paramList:flex.messaging.io.ArrayList = new flex.messaging.io.ArrayList();
  paramList.add(val);
  remoting.setParameters(paramList);

  var response:Object = con.call("null", remoting);
  if (response instanceof AcknowledgeMessage) {
    var ack:AcknowledgeMessage = response as AcknowledgeMessage;
    var body: Object = ack.getBody();
    if (body instanceof Integer) {
      var ret: Number = body as Number;
        println("sucess return from t2piano:{ret}");
    } else {
      label.text = "BlazeDS error!";
    }
  } else {
    label.text = "BlazeDS error!";
  }
};

var slider:SwingSlider = SwingSlider {
   layoutY: 400
   minimum: 0
   maximum: 1000
   value: 3
   vertical: false
   onMouseDragged: function(e) {
     if (e.dragX  mod 5 == 0) {
       // T2AMFを利用する場合
       var t2amf: AmfConnection = new AmfConnection();
       t2amf.setDestination("javapiano");
       t2amf.setOperation("play");
       t2amf.connect("http://localhost:8989/t2-piano/t2.amf");
       t2amf.callAmf(e.dragX);

       // BlazeDSを利用する場合は以下
       // callPianoByBlazeDS(e.dragX);
     }
  }
}

var label:SwingLabel = SwingLabel {
    layoutY: 380
    text: "T2Piano"
    width: 350
}

Stage {
    title: "JavaFX-T2Piano"
    width: 350
    height: 370
    scene: Scene {
        content: VBox {
            content: [
                label,
                slider,
                ImageView {
                    image: Image {
                        url: "{__DIR__}tetsu.png"
                        width: 300
                        height: 300
                    }
                    rotate: bind slider.value
                },
            ]
        }
        fill: Color.WHITE
    }
}

まとめ

参加して頂いた皆様、スピーカの皆様、そしてスタッフの皆様本当にありがとうございました。
T2チームの皆さんもお疲れ様でした、楽しかったです。
また、技術評論社様、ソフトバンククリエイティブ様、献本ありがとうございました。