Adobe® Flash® Professional CS5 に搭載予定の新機能 "Packager for iPhone" のベータ版を一足お先に触らせて貰えたので、早速 Flash 製 iPhone アプリ「KATAMARU? OR NOT」を作って AppStore に並べてみました。ここ最近は日本でも続々と Flash 製 iPhone アプリがリリースされてますね。
僕のは見るからにこれそのまんまです。コードも、レイアウトの調整と、操作をキーボードからタップに変えたのと、ぐるぐる回ってる部分の描画を BitmapData に変更した (DisplayObject がいくつも addChild されてる Sprite を回転させると4〜5個超えた辺りから重かった…) のと、ハイスコアの保存をつけた (しかも SharedObject ですよ!) 以外はそのまんまです。fla ファイルの新規作成から申請まで、実作業時間 4 時間かかってないです。これは本当にスゴイ (既にコードは出来ていたっていうのと申請慣れしていたっていうのはありますけど)。"Packager for iPhone" の持つパワーの参考にしてもらえれば幸いです。
※本当は BetweenAS3 の開発お助けツールを作ろうとしていたんですが、時間がかかりそうだったのでそれはまた今度。
去年に引き続き、今年もカナダのユーザーグループ FITC が主催するイベント「FITC Toronto 2010」が開催されるようです。そんな中、面白いプロジェクトがスタートしたとのお知らせを頂きました。その名も「TOUR Project」。概要を引用させてもらうと、
アート・デザイン、音楽などのカルチャー情報を扱うWEBサイト「CINRA.NET」を運営する株式会社CINRAと、クリエイターのためのデザインポータル「CBC-NET」を運営する株式会社グランドベースは共同で、世界各国で行なわれるデザインカンファレンスに参加するツアープロジェクトをスタートしました!
というわけで、世界の色んなイベントとかカンファレンスを巡ろうぜ!ってことらしいです。その第一弾が FITC Toronto 2010。僕も去年と同じく参戦予定ですので、ぜひ一緒に行きましょう!トロントに行きたいけど一人旅はちょっとな〜と思っていた方も、このツアーに参加すれば問題なしです。
申し込み期限が3/6で、最小催行人数10名ですので、お申し込みはお早めに!
この度、絶版となっていた Flash アイデア本「.fla」が、Spark project にてオンライン復刊します!こちらの特設ページから、全て無料でダウンロード出来ます。ぜひこの機会に先人たちのアイデアに触れてください〜。
紹介し忘れてて、配信開始してから大分時間が経ってしまいましたが、Rez とか LUMINES とか元気ロケッツとかでお馴染みの キューエンタテインメント株式会社さん と共同で、「Q?pid™ - フィンガーパズル」という iPhone アプリを作りました。アイデア出しなどにちょっと参加しつつ、キューさんで企画やデザイン、僕の方で実装といった感じで作りました。

アプリの内容は、「触れる」をテーマにした男女のコミュニケーションツールとして使えるようなアプリです。指ツイスター的な、ちょっと変わったゲームが楽しめます。折角なので Youtube にあがってたプロモーションビデオを貼ってみる↓
プレイしてみると分かると思いますが、ゲーム部分に、JellyPics のアルゴリズム (勝手に JellyEngine と呼んでいます) が使われています。もともと JellyPics を見せたところ好評で、これを元にアイデアを膨らませていった感じです。
これから卒業や入学、入社など年度の境でのイベントに活躍するかも…!なのでよかったら買って遊んでみてください。ついでに JellyPics もよろしくね。
という記事を gihyo さんの新春特別企画で書きました。ぜひご覧下さいませ!
みなさま新年あけましておめでとうございます。あっという間に2009年が終わってしまいました。思い返してみると、去年は経験の年だったような気がします。なんかわけわからんぐらい色々あった。というわけで時系列でちょっと振り返り。
新年早々 iPhone アプリをリリース
「JellyPics」ですね。Flash/ActionScript 以外の環境でのマトモな開発は大分ひさびさ。しかも、Objective-C っていう C 系の言語だったのでなかなか新鮮な気持ちに。標準フレームワークである Cocoa も結構よくできていて、ここから学んだことも沢山ありました。あと OpenGL とか。これがきっかけで、予期せず iPhone アプリの仕事が来るようになったりして、2009年に iPhone という要素が大きく入り込んできたのはコイツのおかげかも。普段の制作ではなかなかやらない、プロモーションだったりサポートだったりも勉強になった。
貼る蔵 for iPhone をリリース
というわけで早速お仕事としてウノウ株式会社さんの写真共有サービス「フォト蔵」用のアップローダー「貼る蔵」をリリース。エンタメ系じゃない、テーブルビューとか標準 UI を使ったアプリの開発として勉強になった。
Adobe MAX Japan 2009 でセッション
二回目の Adobe MAX Japan 参加にして、Spark project のセッション & コミュニティブース枠を頂くという非常にありがたい事態に。もうめっちゃスパークした。今でも鮮明に記憶に残っています。これがきっかけで2009年面白いことになった人も居たようで、「場を提供する」というのがコンセプトでもある Spark project としては非常に嬉しいことです。そして、この MAX お疲れ飲みに FITC の主宰 Shawn が参加したことが、4月のトロント行きを決定することになるとはまだつゆ知らず…。
BetweenAS3 の構想を発表
っていうほど大したものでもないんだけど…。Adobe MAX Japan 2009 で初めて発表して、そのあとブログでもう少し詳細な構想を発表、同時に開発もスタート。2009年を共にするライブラリ誕生の瞬間でもあった。しかし、2010年になっても絶賛開発中とは…。
ひさびさに AS2
この頃、CD-ROM で配布するコンテンツの一部である Flash ゲームを、ひさびさに AS2 で制作するという案件もやっていて、AS2 でかつゲームということでなんだか懐かしい気持ちに。
Spark project 勉強会 #07 開催
Adobe MAX Japan 2009 の余韻を残しつつ開催。
おバカアプリ選手権に出演
くだらない iPhone アプリを作っていたら、なぜか、おバカアプリ選手権なんていう変わったイベントに出ることに。普段のイベントとは違う感じで面白かった。
DeskTopLive.as に出演
DeskTopLive シリーズ第一弾の DeskTopLive.as に、深津さん・吉川さんとのライブコーディング対決の出演者として参加。(パフォーマンスとしての) ライブコーディングの難しさと辛さを知る。てか時間短い。ぜひリベンジしたいところ。ちなみに観客として参加した、シリーズ第二弾の DeskTopLive.xna も面白かったです。
Spark project 勉強会 #08 開催
DeskTopLive.as の経験を生かしてちょっくらライブコーディングでもしてみるかと思って、コミッターへのなりかた解説 & 実際にライブラリを作ってコミットしてみるという内容で発表。副産物として Eseclock が生まれる。
FITC Toronto 2009 でセッション
Adobe MAX Japan 2009 で燃え尽きたと思ったら今度は海外だよ。ひえー。ということで、主宰 Shawn 氏の招待 & ご好意により、カナダのユーザーグループ FITC の超大規模 Flash イベント FITC Toronto 2009 に日本代表スピーカーの一人として参加。プレゼンはこちら。海外とかマトモに行ったことないし英語全然分からないのに英語でプレゼンをするという暴挙に出る。イベントそのものも、海外の人との交流も、自分のプレゼンも、カナダの観光も、色々刺激になりすぎて BeInteractive! 的2009年を最も訳分からない年にしらしめたイベントアワード最優秀賞受賞。自分が見る世界が大分広がった。というか、世界は広かった。
Wonderfl で BetweenAS3 のアルファ版が使えるようになる
アルファ版にも関わらず、Wonderfl が BetweenAS3 を対応ライブラリに追加してくれました。ありがとうございます。これがアルファ版リリースということでもいいかも。これを期に、Wonderfl をライブラリのドキュメントとして使うという発想も推し進める。
JActionScripters がスタート
FITC の影響もあり、英語需要が高まりつつある中、Flash 界の切り込み番長 fladdict さんが英語ブログ JActionScripters をスタート。最近書いてないから書かなきゃ。
BetweenAS3 がアルファ版なのに広まり始める
しかも海外にまで。予想以上の速度で伝播していっているのを感じて焦る。とてもありがたいんですけどね。そんななか、Saqoosha さんが商業案件で作者よりも早く使うというとても心臓に悪いことをしてくださる。結果的に特に問題なかったようで良かったです。ちなみに FLARToolKit としても初商業案件。
Spark project 勉強会 #09 開催
なんと SWFObject の作者、Geoff 氏が遊びにきてくださる。しかも誕生日が近いということでみんなでめっちゃお祝い。喜んでくださったようなので良かった。
Spark67 Part2 開催
もはや恒例になりつつある、ロクナナワークショップさんと Spark project の共同イベント Spark67 の第二弾を開催。イベントにメインで関わりつつも、ほとんど何もしない (イベント中も横にポツーンと座ってたまに喋るだけ) という不思議な体験をする。加茂さん Saqoosha さんありがとうございました。
WebDesigning 7月号に寄稿
しばらく連載してたコラム one's view が終わってからご無沙汰だったけれども、FITC のレポートと、ActionScript ライブラリ最終回という大役をつとめさせて頂きました。ひとつの雑誌で二つ記事が載るもの珍しい。
Spark project 勉強会 #10 開催
しなやかに開催。何気に盛りだくさんな回でした。上野さんの Union Platform の発表で、作者であるコリンが Skype 出演というサプライズも。
Spark project 勉強会 #11 開催
なごやかに開催。今回は Gaia Framework の Steven Sacks が遊びにきてくださいました。海外の FLASHer が来ると Spark 勉強会に参加というのがなぜか恒例化しつつある。
BetweenAS3 の新しいアルファ版をリリース
いまのところの最新メジャーリリース。ライブラリ作るのってやっぱりたいへん。でも楽しい。
Spark project 勉強会 APMT:WEEK 特別版開催
APMT:WEEK の一環として、Spark project 勉強会の特別版を開催。お題はトゥイーン!ということで、発表〜トークセッションまで、いつもよりちょっと豪華な感じでやってみつつ、企画や司会って大変だなぁと思う。
10年近くのブランクを経てマジック (手品) 熱が蘇る
テレビなんかでも定期的にマジックブームが来ると言いますからね。小学校〜中学校一年ぐらいまでは大分やってたんですよ。テンヨーの売りネタとかですけど。今でも大分残ってます。たまたま前田知洋さんの演技を見たのがきっかけで、熱が戻ってきたみたいです。ちょっと大人になってみて改めて思うのは、マジックと Flash、マジックとプログラミング、色々共通するところがあって面白いなーということ。勉強になることも多そうなので、改めてちゃんとやってみようかなと。あと、趣味らしい趣味がなくていつも困っていたので(笑)。今はカード系を中心にのんびりと。あとこんなんとか。見たいという方はリクエストして頂ければやります!
ANA+AMEX 世界へ飛ぼう!地球10周プレゼント制作
ANA と AMEX さんのキャンペーンサイト「世界へ飛ぼう!地球10周プレゼント」の Flash オーサリングを担当しました。実際の制作はイチゴウさんとの連携プレー。ここまでしっかりしたキャンペーンサイトを作るのは実はこれが初めてだったり、実案件で BetweenAS3 を投入するのも初めてだったり、Cocoa を模した自作フレームワークを試してみたり、と色々チャレンジングで面白い案件でした。勉強出来たことも多かったです。
Adobe MAX 2009 でセッション
Adobe MAX Japan 2009、FITC Toronto 2009 と来て、遂にラスボス…じゃなくて Flash 界のトップイベント Adobe MAX 2009 に初参加ながらスピーカーとして参加。Saqoosha さんと共にロサンゼルス。もうなんというか感慨深いですね。ありがとうございます。
OSS 奨励賞受賞
Spark project やライブラリ開発といった活動をしていたおかげで、OSS 奨励賞という賞を頂きました。まさかこんな形になると思っていなかったので、本当にありがたいです。
WebDesigning 100号で one's view 再掲
WebDesigning 100号記念の付録として付いた、過去の one's view 傑作選的な冊子に、僕が寄稿したコラムも二つ掲載頂きました。嬉しいですね。
大阪に遊びに行く
といっても大阪に遊びに行くのは初めてではないんですけど。しかし今回は大阪てら子に初参加、そして翌日 Katamari, Inc. さんに遊びに行ってゲーム作って帰ってくるっていう面白い体験をさせてもらいました。暖かく迎えてくださってありがとうございました。
森ボーイ (笑) になる
森ボーイなんて言葉はありません。11月頭ぐらいから、六本木ヒルズ 40F & 49F にあるカフェ+レンタルデスクなアカデミーヒルズの会員になって、そこで仕事するようになりました。家だとダラダラしてしまうんで、良い環境を見つけられてよかったです。ついでにマシンも MacBook Pro 15inch を新調、今までデスクトップ派だったんですが、外に出たりイベントに参加することも多いので、完全にノート派になりつつあります。タスク管理として Remember The Milk, メモとして Evernote を導入、だんだん慣れてきてとてもいい感じです。
日産ROOX スペシャルコンテンツ制作
日産ROOX のスペシャルコンテンツのメインパートの Flash オーサリングを担当しました。キャンペーンサイト二本目。はじめてちゃんと Papervision3D を使ったり、FLV を扱ったりしました。仕事だと自分からはなかなかやらないことが出来て良いですね。今回、動き (モーション) 付けがほぼお任せされていたので、音楽にあわせた楽しいダンスステージを演出出来るよう、BetweenAS3 をバリバリ使って作ってました。楽しかったです。
注目クリエイター列伝にインタビュー掲載
久々のインタビューです。ありがたや。
Spark67 Part3 Beginners & Deep 開催
Part2 からはや数ヶ月、Part3 はなんと Beginners と Deep の二本立て。どちらにも出演し、Beginners では50分+ライブコーディング、Deep では90分全力で喋るという過去最大のプレゼンテーションを経験させて頂く。終わった後の飲み会では、「生きてる?」と何度か聞かれた。
.fla2 執筆
アイデアや着想を前面に押し出すという技術書の中でも珍しいコンセプトで話題だった書籍 .fla の第二弾、.fla2 の新著者陣の一人として執筆に参加させて頂きました。そして無事発売。装丁も本当に素晴らしく、良い記念にもなりました。
プライベート
テクニカルなことだけじゃなくて色々経験出来たり成長できたりしているのはあなたのおかげです。いつもありがとう > 彼女
2010年に向けて
振り返ってみると、本当に盛りだくさんですなこれ…。イベントへの出演や書籍の執筆など、コーディング以外の活動もだいぶ多かったです。おかげで、まだまだ勉強しなきゃいけないことが沢山あるなぁ、と思わされました。2010年は少し大人しめに、勉強 (鍛錬) の年にしたいかなと思っております。それでは本年もどうぞよろしくお願い致します。
行ってきました FITC Tokyo。今年の 4 月に FITC Toronto に招待されてはじめて FITC というイベントを知ったわけなんですが、その FITC が日本初上陸ということでかなり楽しみにしてました。
結論から言うと、こんなに満足度高いイベントなかなかないっすよ。マジで。
というか、Quasimondo の Mario 先生のプレゼンだけでお釣りが来るレベルでした。相変わらず超面白いプレゼンで、しかも今回は同時通訳付きだったので 100% 楽しめました。
自らを「数学の熱狂的なファン」という Mario 先生が、数理 (素数), オートマトン (ライフゲーム), 圧縮, コラージュといったトピックについて、こんな風に考えてみたり、発展させてみたり、発見したりすると面白いよねってことを、Flash での実際のトライを交えつつ紹介。個人的には、一番最初の数理、Flash でのビジュアライズを武器にして色々な発見をしていく、ってのが一番ゾクゾクしました。自分で手を動かしてこういうことやったりするのが嫌いじゃないので、共感出来たのかも。
プレゼンが終わったあと、すぐ Flash やりたい気分になったので、そのあとのセッションを聞きながら、一時間ぐらいでコラージュのまねごとをやってみました。とてもQuasimondo レベルにはならないけど、いやー、Flash って面白いですね。
馬鹿全さんが FLASHer 向けビット演算入門記事をアップしてますね。AS3 においては、必ずしも高速化にはつながらないですが、ビット演算ってパズルみたいで面白いですよね。例えば、
n = Math.max(n, 255);
※ n は整数 (uint)
の代わりに、
n = (n | (((n & 0xffffff00) + 0x7fffffff) >> 31)) & 0xff;
とか!
何をやってるのか少しずつ見て行ってみましょう。
一番最初に実行されるのは n & 0xffffff00 です。これで、「n が 255 以下の場合には 0 、それ以外は 1 以上」な値が作れます。
なぜかというと、255 以下の値というのは、8 ビットで全て表現出来るため、上位 24 ビットは必ず全て 0 になります。逆に 255 より大きい値は 9 ビット以上必要で、必ず上位 24 ビットのうち最低でもひとつは 1 のビットがあります。ここで、0xffffff00 (2 進数で書くと
1111 1111 1111 1111 1111 1111 0000 0000
となる) との論理積をとると、その上位 24 ビットの値のみが反映され、255 以下の場合は 0、255 より大きい場合は 1 以上となります。
例えば 57 は
0000 0000 0000 0000 0000 0000 0011 1001 ← 57 &) 1111 1111 1111 1111 1111 1111 0000 0000 ← 0xffffff00 ------------------------------------------ 0000 0000 0000 0000 0000 0000 0000 0000
で 0 となり、308 は
0000 0000 0000 0000 0000 0001 0011 0100 ← 308 &) 1111 1111 1111 1111 1111 1111 0000 0000 ← 0xffffff00 ------------------------------------------ 0000 0000 0000 0000 0000 0001 0000 0000
で、1 以上の値となります。
続いて、+ 0x7fffffff です。0x7fffffff は、
0111 1111 1111 1111 1111 1111 1111 1111
というように、最上位ビットのみ 0 な値で、ここに 1 以上の値を足せば、繰り上がりによって、最上位ビットを 1 にすることができます。前の段階で 255 以下で 0、255 より大きいと 1 以上な値を作ったので、これにより、255 以下であれば最上ビットが 0、255 より大きいと最上位ビットが 1 な値を作ることができます。
57 の例の続きで言うと、
0000 0000 0000 0000 0000 0000 0000 0000 ← 前段階で作った値 +) 0111 1111 1111 1111 1111 1111 1111 1111 ← 0x7fffffff ------------------------------------------ 0111 1111 1111 1111 1111 1111 1111 1111
で最上位ビットが 0、308 の例の続きだと
0000 0000 0000 0000 0000 0001 0000 0000 ← 前段階で作った値 +) 0111 1111 1111 1111 1111 1111 1111 1111 ← 0x7fffffff ------------------------------------------ 1000 0000 0000 0000 0000 0000 1111 1111
で、最上位ビットが 1 になります。
続いて、>> 31 による符号付き右ビットシフトです。符号付きビットシフトというのは便利で、ビットシフトしたビット数だけ、上位ビットが、最上位ビットの値で埋められる性質があります。これを利用して、31 ビット右にシフトすると、全ビットを最上位ビットの値に変えることができます。
57 の例の続きで言うと、
0111 1111 1111 1111 1111 1111 1111 1111 ← 前段階で作った値 >> 32) ------------------------------------------ 0000 0000 0000 0000 0000 0000 0000 0000
で、全ビットが 0、308 の例の続きだと
1000 0000 0000 0000 0000 0000 1111 1111 ← 前段階で作った値 >> 32) ------------------------------------------ 1111 1111 1111 1111 1111 1111 1111 1111
で、全ビットが 1 になります。
さて、長々とやってきましたが、これで何が出来たかおさらいすると、n が 255 以下の場合は全ビットが 0、n が 255 より大きい場合は全ビットが 1 な値が作れたということです。ここまでくれば後もう一歩です。
次に、その値と、n の論理和をとります。すると、n が 255 以下の場合は n、n が 255 より大きい場合は 0xffffffff (全ビットが 1) になります。
57 の例の続きで言うと、
0000 0000 0000 0000 0000 0000 0000 0000 ← 前段階で作った値 |) 0000 0000 0000 0000 0000 0000 0011 1001 ← n つまり 57 ------------------------------------------ 0000 0000 0000 0000 0000 0000 0011 1001
で 57 のまま、308 の例の続きで言うと
1111 1111 1111 1111 1111 1111 1111 1111 ← 前段階で作った値 |) 0000 0000 0000 0000 0000 0001 0011 0100 ← n つまり 308 ------------------------------------------ 1111 1111 1111 1111 1111 1111 1111 1111
で 0xffffffff (全ビットが 1) になります。
最後に、0xff との論理積をとると、57 の例の場合は
0000 0000 0000 0000 0000 0000 0011 1001 ← 前段階で作った値 |) 0000 0000 0000 0000 0000 0000 1111 1111 ← 0xff ------------------------------------------ 0000 0000 0000 0000 0000 0000 0011 1001 ← 57
で、変わらず 57、しかし 308 の例の場合は
1111 1111 1111 1111 1111 1111 1111 1111 ← 前段階で作った値 |) 0000 0000 0000 0000 0000 0000 1111 1111 ← 0xff ------------------------------------------ 0000 0000 0000 0000 0000 0000 1111 1111 ← 255
で、255 に収まります。めでたしめでたし!
…なんか、解説しようと思ったら思ったより言葉で説明するの大変でした。ぜひ他の値だとどうなるか手を動かして試してみてください。
連日お伝えしている .fla2 ですが、なんと12月5日(土)にアップルストア銀座で、著者陣によるトークセッションイベントをやります!モデレーターは、前 .fla の著者でもある Pickles のタナカミノルさんです!詳細はこちらの特設サイトでご確認下さいませ。
ちなみに、このサイトもお忙しい中 Pickles さんが作ってくださったようです。ありがとうございます。
当日は、著者陣への質問コーナーもあるみたいですが、質問を事前に Twitter で募集するようです。ハッシュタグ #dotfla をつけて聞きたいことをつぶやいてくださいね!あと、サインもあるとかなんとか?あらかじめ本を買って持って行きませう。
ところで、前日12月4日(金)には Spark67 Part3 もあるので、そちらもお見逃し無く!
早速ですが、僕のパート p.65 BetweenAS3 の fig.11 が、誤って fig.10 と同じものが掲載されていることが判明しました。正しくは
Thu Sep 10 01:50:25 GMT+0900 2009 ---- Hello ----
になります。
また、p.39 ProgramTree の fig.6 の 10 行目付近、if 文の先頭に謎の ! がついていますがこれは不要です。正しくは
if (scanner.getToken().type != '+') {
になります。お詫びして訂正致します。よろしくお願いします。
なお、質問や感想等ありましたら、コメント、メール、ついったーなどでお気軽にどうぞ!





