Colin Moock にジャパニーズActionScript魂を紹介する会に行ってきました-2008.1.16 (wed) @Adobe
2008.1.16 (wed) Adobe にて行われた「Colin Moock にジャパニーズActionScript魂を紹介する会」に招待していただいたので行ってきました。
遅まきながら簡単ですが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