2008.1.16 (wed) Adobe にて行われた「Colin Moock にジャパニーズActionScript魂を紹介する会」に招待していただいたので行ってきました。

会場入り口のInformation

遅まきながら簡単ですがColinのトークを中心にレポートをまとめました。

Colin Moockのトーク- ECMAScript4について

まずActionScript3からみて大きな変更ありません。

仕組みや機能が増えるというよりは、既存の言語のあいまいさを補間するようなデータ型の拡張などが主になっているようです。

それにより小さいコードから大規模なアプリケーションにまで耐えうるような言語としてバージョンアップするのが狙いです。

Record type

簡易なインターフェイス(型)を動的に定義できます。

new { x:int, y:string }( 3, "foo" )

typeキーワードを使って定義を生成することもできます。

type Point = { x:int, y:int };

これにより既存のコードであいまいなオブジェクト型についてパラメータの仕様を定義することができます。

Array type

Arrayの中の要素について型を宣言できます。

[ 1,2,3 ] : [ int ]
{ x:10, y:"foo" } : { x:int, y:string }

Union type

変数に2つ以上の型を定義できます。

type AnyNumber = ( int, double, number, Number ); type AnyString = ( string, String );

Nested type

ネストしたオブジェクトの定義もできます。

type Person = { name:{ last:string, first:string }, born:Date, spouse:* }

nullを代入可能かどうか決められる

var v: C! = "hoge"; // nullの代入ができない var v:C? = null; // nullの代入ができる

カスタムクラスのプロパティを初期化するときはこの機能が衝突してしまうのが問題。
これはコンストラクタの宣言の後ろに特別な初期化の式を記述できるようになり、インスタンス生成時の引数を代入することで回避。

class C {
function C(p) : x = p
{
...
}
var x : D! // must be initialized
}

like演算子

任意のプロパティ定義がマッチしていればOKというゆるい型定義ができる。

たとえばx:intとy:intを持っていれば、PointインスタンスもMovieClipインスタンスも代入可能になる。

var x: like { x:int, y:int };

Parameterized type

クラスや関数の型指定のみを動的に定義できる機能。HashやMapのような構造を定義できる。

class Pair.<T> {
var first: T, second: T
}

// Tの部分を生成時にint形を指定して生成するとTの部分が動的に定義される。
new Pair.<int>(3, 4)

ブロックスコーピング

ブロック内のスコープをネストして元の値を変更しないで一時的に変数を利用できる。

要するにPerlのlocalキーワードと同じ感じ。

{
let a = 10, b=1
{
let a = 20
print(a+b) // prints 21
}
print(a) // prints 10
}

Generic function

Javaのoverloadと同じ機能。引数の型によって同名の関数を振り分ける機能。

Program unit

コードの一部をインクルードできる。(大量のimport文とかから開放される?)

Iterator

Pythonをもとにしたイテレータ機構。

getメソッドとnextメソッドを実装することでfor ..inでループ処理ができる。

 

yossyさんのトーク - SparkProject

Sparkプロジェクトの概要といくつかのライブラリの紹介。

ASRefrection、ASUnit、Snippetsなど。

munegonさんのトーク - BitmapData

Webカメラを利用したBitmapDataのエフェクトなど。

DisplacementMapFilterによる遅延エフェクトがおもしろかった。

id:secondlifeさんのトーク - アプリケーションの国際化

getTextという多言語対応のフレームワークのAS版のお話。

言語ファイルをライターとコーダーで分業できるので効率的。

#クラスパス最上位にクラスファイル(.as)を指定するとインポート不要らしい。

むらけんさん&teraさん - Gainer + AIR +Wii +Helmet

あのヘルメットを実演してくれました。最近話題のWiiリモコンの赤外線をハックもつかってほぼ手ぶらでAIR製ブラウザでネット閲覧ができます。

ヘルメットを傾けるとブラウザのほうが追従するので寝ながら見られるそうです。

てっきり、むらけんさんはかぶる役かとおもいきやAIR部分を担当されたとのこと。

イワサキさん - MVCの完全分業フレームワーク

スゴイ地図などを制作された制作会社のFlashの大規模開発のフレームワークについて。

イベントマネージャをつくってロジックとView部分を完全に分離して、デザイナーとコーダーで分業しているそうです。

View担当のデザイナーがMCの階層を意識しないで作れるようにフレームワーク側でフォローするというアプローチが印象的でした。

ただ、ある程度ひとりでいろいろやれるところがFlashの醍醐味であって、Flashの開発スタイルとしてここまで分けてしまうのはちょっとさびしいように思いました。

コバヤシさんのトーク - Ruby on Flash

Rubyで書いたコードをASとして解釈してコンパイルできるコンバータとVMの話。

AIRとRubyと連携するまでは聞いたことありますがASを書かずにFlashを作る人ははじめてです。

Rubyでコードを書いてタスクリストをJSONで生成してそれをVMに通すみたいな流れでした。

あとお祭りドリブンという単語が個人的に響きました。

クスールのオザキさん - Gainerでダッシュ四駆郎

マイクの音声でミニ四駆が走るキットを開発する話。

とりあえず感動したというか、テクノロジーの間違った使い方と情熱に感服しました。

 

ほかの方のレポートなど

Japanese ASer intercepts Colin" was very exciting!! : be-interactive.org

コリンさんと戯れる会: YANEURAKEIKAKU* || BLOG

01:09 Colin Moock さんのイベント : unknownplace.org

AS3 アプリケーションの国際化 : id:secondlife

HTML5飯