2012/01/16

AIR Native Extensionハンズオンセミナーを開催します。

東京てらこでANEについてサンプルを交えて少しお話させていただいたのですが、時間が短いというのと、やはり自分で手を動かさないと理解が難しい、というご意見を頂きました。

Twitterで募ってみたところ多少の需要はありそうなので、簡単なハンズオンセミナーを開きたいと思います。

AIR Native Extensionハンズオンセミナー登録ページ
http://www.zusaar.com/event/199101

開催日時
    2012/01/28(土) 17:00  〜  19:00
定員
    12人
最少催行人数
    10人
参加費
    無料 
場所
    千代田図書館 第1研修室
住所
    千代田区九段南1-2-1千代田区役所9F 
参考URL
    http://www.library.chiyoda.tokyo.jp/facilities/index.html

土曜の、しかも夕方で千代田区という、若干普段のセミナーイベントと違う趣になってますが、向こう3ヶ月間、この日のこの時間しか土日は空いてなかったのです・・・。

 

どういうことをやるの?

恐らくANEの一番大きな問題として「手順が煩雑すぎる、且つ、資料が少ない、且つ、ネイティブを知らなければならない」というものがあります。ですので、「Windows/MacOS/Android/iOS」のいずれかの「HelloWorld」的な簡単なアプリを、あらかじめ用意された資料に従って、1時間半程度で作る感じにしたいと思ってます。まずは足がかりを知るのが目的ですので、「自分で考えて構築する」というよりは、「制作の流れを知る」という方向性が強いです。

 

ANEについても、ネイティブ言語全然知らないけど大丈夫?

資料を用意しますので、それに沿って構築するだけとなります。ご心配なく。

 

条件

ハンズオンで、更に時間があまり長くないので、条件が幾つかあります。

  • ノートPCを持参して頂くこと。
  • AS3について多少の知識があること。(外部ライブラリを使用できるくらいで大丈夫です)
  • 環境を先に準備していただくこと(準備する環境は後ほど告知します)

 

有川さんがやってるNative Extension Labとは何が違うの?

有川さんのラボ(通称:姉ラボ)は、セミナー形式ではなく、集まって黙々と自分の目標をこなしたり、意見を聞いたりと、比較的自由な(しかも結構高度な)意見交換所となってます。今回のハンズオンセミナーは、「教える内容に従って、皆で手を動かして、構築の雰囲気を実感する」のが目的です。

 

まずは一歩、踏み出してみませんか?

ANEは実際問題として、自分で一から作るとなると、ハードルが結構高いです。ですので、できるだけハードルを下げて、多少AS3の知識さえあれば誰でも出来る形で、簡単なANEをワイワイと作ろうと思ってます。堅い勉強会にするつもりは無いので、ANEに少しでも興味がある方は是非ご参加ください。

2012/01/15

東京てらこ19で使用した資料を公開します。

先日行われた東京てらこvol.19で使用したスライドとデモファイルを公開します。

使用スライド
http://melancholy.raindrop.jp/teraco/19/teraco19.pdf

デモ用apk
http://melancholy.raindrop.jp/teraco/19/SpeechToTextToSpeech.apk

デモファイルを起動したら、一番上の「Please speak me」を押すと、Android内蔵の音声認識アプリが立ち上がりますので、マイクに向かって言葉を発すると、認識してテキストとして出力されます。

また、「あけましておめでとう」「今年もよろしく」「HTML5最高」「JKと言えば」とか特定の文字列を話すと、返答が帰ってくるという、「なんちゃってSiri(clockmakerさん談)となってます。

ANEを使う事によって、AIRforAndroidでこういった事が出来るという一例になればと思います。

2012/01/11

やること満載・・・主にゲームが。

第32回「Flash CS 5.5でネイティブ拡張ライブラリを作ってみる。【AIR for Android編】」の巻(前編)
http://mossamina.blog99.fc2.com/blog-entry-34.html
ANEttyの使い方を細かく書いてあります。多謝。

40周年記念商品「カップヌードル キング」2012年1月23日(月) 新発売
http://www.nissinfoods.co.jp/com/news/news_release.html?yr=2012&mn=1&nid=2521

simppa.fi
http://www.simppa.fi/blog/demos/
かっちょいいFlashのデモがたくさん

AIR for AndroidでNative Extensionsを試してみた(概要編)
http://live-cast.asia/blog/2011/12/air-for-android-native-extensions.html

AIR for AndroidでNative Extensionsを試してみた(Androidプロジェクト編)
http://live-cast.asia/blog/2011/12/air-for-android-native-extensions-android.html

AIR for AndroidでNative Extensionsを試してみた(Flexライブラリプロジェクト編)
http://live-cast.asia/blog/2011/12/air-for-android-native-extensions-flex.html

AIR for AndroidでNative Extensionsを試してみた(Flexモバイルプロジェクト編)
http://live-cast.asia/blog/2011/12/air-for-android-native-extensions-flex-mobile.html

ハローキティづくしのキュートな歯科医院が誕生 サンリオ全面協力
http://nlab.itmedia.co.jp/nl/articles/1201/11/news044.html

in-app-purchase-air-ios
http://code.google.com/p/in-app-purchase-air-ios/
iOSにおけるアプリ内課金を扱うANE。まだ未検証・・・。

Twitterの発言を捏造されて2ちゃんねるで炎上した件についてAdd Star
http://d.hatena.ne.jp/quolc/20120110/1326212788

大河ドラマ「平清盛」音楽制作メモ
http://yoshim.cocolog-nifty.com/office/2012/01/post-f32b.html
貴重なお話。

スティーヴン・ホーキング博士のためにインテルが新たな入力方式を開発中
http://gigazine.net/news/20120110-stephen-hawking-new-pc/

GPLソフトウェアの移植とライセンスの変更に見る著作権の問題
http://nippondanji.blogspot.com/2012/01/gpl.html

jQuery UI 1.8.17
http://blog.jqueryui.com/2012/01/jquery-ui-1-8-17/

iOS Dev Center : App Storeから配布(Distribution)するまでのMEMO
http://mushikago.com/i/?p=563

Flashを使わなくてもここまでできる!HTML5で制作された国内外サイトをまとめました
http://webdesignmatome.com/webdesign/html5-site

マクロスFイベントで転売席晒し→退場祭り
http://news4vip.livedoor.biz/archives/51853434.html
買った人も同じ罰を受けるってことなのかな・・・。

Create a page flip effect with HTML5 canvas
http://www.netmagazine.com/tutorials/create-page-flip-effect-html5-canvas

「ガリガリ君 梨」超えなるか!? ガリ子ちゃん ラ・フランス×モンスターハンター3(トライ)G、期間限定で発売
http://akiba.kakaku.com/gourmet/1201/10/203000.php

haXe で jQuery を使う方法
http://blog.romatica.com/2012/01/09/haxe_jquery/

東芝、録画予約アプリ「RZスケジューラ」をリリース
http://www.macotakara.jp/blog/index.php?ID=15295

これぞラッキーエラー! 素敵な404ページ
http://www.gizmodo.jp/2012/01/404.html

東芝のLED電球のCMで涙腺崩壊
http://www.gizmodo.jp/2012/01/ledcm.html
崩壊しそうになった。

Tags: ,

2012/01/06

あけましておめでとうございます。

「いつまでが新年なのか?」というのは、「新年」と「今年」の違いが見れないところから見て、恐らく今年一杯、新年なのではないかなと思うわけですが。

そんなことはどうでもよく、改めまして、あけましておめでとうございます。昨年はなんだかんだといろんなことがあった年でしたので、今年もそんな感じで前向きに進んでいければいいなと思う所存です。

目標は・・・昨年と同じ「1カ月に1個、新しいこと、或いは怖気づいていたことをやる」みたいな感じで。ただ、それだけだとあれなので・・・同時に、12か月のうちの1カ月以上は「スケジュール通りの進行」を心がけたいなと思ってます。

初夢が「仕事に追われたり、知人に嫌われたりする」やつで、更には、仕事はじめから「上司が会社辞める」っていう話を聞いてショックを受けてるわけですが。本当に、今年はどうなることやら。

業務自体は、今月中盤から劇的に忙しくなるはずなので、そちらもどうなることやら。ガクブルです。あ、でもこれで、「窓際FlashDeveloper」の名前を半分だけ返上できます(あと半分は、物理的に窓際だから)。

まぁそんな後ろ向きな自分ですが、良ければまた1年間、温かい目でお付き合いいただければ幸いです。

Tags:

2011/12/28

ちょっと判りづらかったかなー

昨日の記事、内容がちょっとだけ深いところもあって、説明がうまくいってない気がする。ちょっと補足記事書かないといけないかな。自分の文章力のなさを痛感しているところです・・・。でもこれって、説明するには前提として伝えておかなければならない知識が多すぎるんだよなー。有川さんの記事内容が割といろんなことを省略している理由がわかる気がしました。まぁでも、有川さんの場合はどちらかというと、ドSだからかな・・・(笑)。

さて、今年ももう終わりですね。ちょい早いですが、総括を。多分、年末年始はいろいろあって記事書く気力はないので。

今年は、まぁいろいろありました。資格を取りにいったり、撃沈したり。一応今年の目標として、「1カ月に1個、新しいことに挑戦するか、或いは、やろうと思いつつなんか気が引けてしまってることをやる」っていうのがありました。何気に達成できてるので、ちょっとホッとしてます。あんまりストイックじゃないのがいいですね。1カ月に1個でいいし。これくらいがちょうどいい。いい感じに「ギリギリ達成できる目標」だったなー、と思いました。

元来引っ込み思案なので、この目標のおかげで自分を奮い立たせることで前に出ていけたこともあります。今でも人と話すのは苦手ではあるのですが・・・。

この目標の一番の達成事項としては、やはりFlash関連イベントへの積極的な出席でしょうか。いろんな人と知り合うことが出来ましたし、仲良くなることが出来ました。なんか幾つかのコミュニティに入れて頂いてるような感じもあり、それによるモチベーションの増加など、「一緒のことをやる仲間って大事だなー」と思う今日この頃です。

というわけで、目標って大事だなー、とつくづく思ったわけです。

一応、来年の目標は決まってはいるのですが、それはまた来年。それでは、良いお年を。

「新・光神話 パルテナの鏡」は2012年3月22日に発売決定。マルチプレイは3対3のチーム対戦,最大6人でのバトルロイヤルが可能
http://www.4gamer.net/games/113/G011330/20111227012/

クレジットカードみたいに使える「Vプリカ」で、べにぢょさんとネットショッピングしてみた
http://b.hatena.ne.jp/articles/201112/6837
これはいいかもだけど、ちょっとした残金とかはどうするんだろうか・・・。チャージできるものではないとのことなので、どうしょうもないよなー。

Tween24 バージョン1.0.1 リリース
http://package.a24.cat/2011/12/24/tween24-1-0-1/

ネットワーク状況の変化を通知してくれるNative Extension
http://blog.romatica.com/2011/12/27/air_ane_ios_networkstatus/
ANEttyを使用して頂いてるitozさんの記事。ANEttyの紹介も頂いています。ありがとうございます。

IE互換性検証用仮想マシン(Internet Explorer Application Compatibility VPC Image)を試してみました
http://blog.bricoleur.in/archives/1551

クロスプラットフォームの新しい選択肢「cocos2dx」でスマートフォンアプリを開発! -導入編
http://mdlab.jp/project/framework/01.html

Xtion を試してみましたよ
http://www.digifie.jp/blog/archives/539

「サイン帳の落とし物はないですか??」その一言にとったディズニーランドのキャストの行動は・・・・
http://blog.goo.ne.jp/usuitks/e/489ade06b44cc567c6d0998496c7719f

ゲームデザイナー菅野ひろゆき氏、死去
http://slashdot.jp/story/11/12/26/0821205

rdfの日付形式をjsで整形する //JavaScript
http://www.bute-studio.com/lab/2010/07/rdfdc-date.html

In-App Payments が日本でも利用できるようになりました
http://googledevjp.blogspot.com/2011/12/in-app-payments.html
Googleのアプリ内課金が利用できるようになったとのこと。

【電撃PlayStation】ファルコムjdkバンド2011のクリスマスライブ! その模様とライブ後の出演者の声をお届け!!
http://news.dengeki.com/elem/000/000/437/437845/

ITエンジニアが年末年始に読んでおきたい厳選書籍 + α
http://hiroki.jp/2011/12/26/2457/

URLにはハイフンか、アンダースコアか。 SEOメモ
http://findaway-i.jp/seo/url%E3%81%AB%E3%81%AF%E3%83%8F%E3%82%A4%E3%83%95%E3%83%B3%E3%81%8B%E3%80%81%E3%82%A2%E3%83%B3%E3%83%80%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8B%E3%80%82-seo%E3%83%A1%E3%83%A2/474.html

プログラミングは「名前」が9割。
http://d.hatena.ne.jp/shunsuk/20110926/1317033011

ポテトチップスで作る、豆乳ポタージュスープ
http://allabout.co.jp/gm/gc/387624/

本当のJavaScriptを知っているか!具体的にコードで学べる「テスト駆動 JavaScript」
http://hiroki.jp/2011/12/20/2567/

ウェブサイト「たのみこむ」、サービス終了撤回を頼みこまれてやっぱり続けることに決定
http://blog.esuteru.com/archives/5614149.html

「魔法少女まどか☆マギカ展」が池袋で開催中! マミさんのはちきれんばかりのおっぱいや名シーンパネルが展示されているぞ!
http://blog.esuteru.com/archives/5615531.html

Tags: ,

2011/12/27

ANEのplatformsについての個人的まとめ

みなさん、姉(ANE)ってますか?

さて、aneファイルを制作するときにADTを使用してパッケージングを行うことはご存知かと思いますが、その際にコンパイル環境の構築の仕方に困惑したことがあると思います。主に、「SWCを用意して、そのSWFを取り出して、なんか両方必要らしいから、library.swfを全プラットフォームにコピーして、ADTに両方関連させて」のところです。この手順がややこしい上になかなか説明もややこしく、非常にあいまいな状態なので「なんでこんな抽出手順が必要なんだろう?SWCがあるんだから、そこだけでやればいいじゃない」という疑問を抱くことは当然です。

というわけで、今回はそんな話を自分的に纏めたいと思います。最後には、前回の疑問だった「なんでdefaultプラットフォームという名前が使われているのか」の答えも出てきます。

なお、今回の話は、有川さんのADCの記事を一度目を通しておいたほうがいいかと思います。この記事の「何故swcからlibrary.swfを抽出して全platformフォルダに入れるか」を考えてみたいと思います。

ネイティブ拡張(Native Extensions)入門
第3回 ネイティブ拡張の開発方法 後編
http://www.adobe.com/jp/joc/devnet/air/articles/native_extensions_part3.html
 

まずは

Adobe公式ドキュメントから抜粋した、下記の文章を見てみましょう。これが一番コンパクトにまとまっているかと思います。

ネイティブ拡張をパッケージ化する際には、SWC ファイルと個別の library.swf ファイルの両方が必要になります。library.swf ファイルは SWC ファイルから抽出します。SWC ファイルには、オーサリングとコンパイルのための ActionScript 定義が含まれています。library.swf には、特定のプラットフォームで使用される ActionScript 実装が含まれています。拡張のターゲットプラットフォームごとに別々の ActionScript 実装が必要な場合は、複数の SWC ライブラリを作成し、プラットフォームごとに個別に library.swf を抽出します。ただし、ベストプラクティスは、すべての ActionScript 実装で同じパブリックインターフェイスを使用することです(ANE パッケージに含めることのできる SWC ファイルは 1 つだけです)。

http://help.adobe.com/ja_JP/air/extensions/WS99209310cacd98cc2d13931c1300f2c84c7-8000.html

さて、ではこれで意味がわかるかというと、なかなか判らないですね。「パッケージ化にはANE-SWCと、その中身のANE-SWFが必要(ANE-SWF はANE-SWCを解凍して抽出する)」っていうことくらいは、参考サイトとかでレクチャーされてるので判ると思いますが。

 

では

ここから解説に入りますが、その前に。SWCからlibrary.swfを抽出とかしてコンパイルとかそういう手順は一旦忘れましょう。このlibrary.swfはどれを指すのかとか、絶対混乱するので。

さて、こんな図を作ってみました。多分厳密に言うと、これはADLによるデバッグ時の図になるかと思いますが、まぁそれは置いておいて。あ、図が致命的にダサいのは勘弁してください。

はい。SWCとlibrary.swfでは、明確に役割が違います。先ほどのドキュメント抜粋の文で書くと、

  • SWC・・・オーサリングとコンパイルのための ActionScript 定義
  • library.swf・・・特定のプラットフォームで使用される ActionScript 実装

となります。SWCはいわば「パブリックインターフェイス」の役割を持っていて、AIRアプリのオーサリング時とコンパイル時に使用されます。その「パブリックインターフェイス」を通じて、実装部分である各プラットフォームのlibrary.swfを読みに行くわけです。ここらへんはAS3のインターフェイスクラスと通常の実装クラスを想像すればいいかと。

さて、ここからは、図にあるSWCは「コンパイル用SWC」、library.swfは「実装library.swf」と書きます。

 

では本題。

「何故コンパイル用SWCから実装library.swfを取り出して、そのプラットフォームに配置して云々っていうことを行うか」ということですが。だって、どうせSWCの中身とlibrary.swfが同じであれば、わざわざそんなことする必要ないですよね。SWCだけ指定して、ADTがそこらへん勝手にやってくれればいい。そしたら、SWCだけ作って指定すればいいから楽!

実は、必ずしもlibrary.swfは全プラットフォームで同じというわけではないのです。

はい、まずドキュメントのこの部分を見てみましょう。

拡張のターゲットプラットフォームごとに別々の ActionScript 実装が必要な場合は、複数の SWC ライブラリを作成し、プラットフォームごとに個別に library.swf を抽出します。

どういうことか。つまり、一般的な手法として解説されている「コンパイル用SWC」から必ずしもlibrary.swfを抜きだす必要はなく、「コンパイル用SWCはそのままに、別途実装用SWCを作って、そっちの実装用library.swfを抽出して配置してもいい」わけです。それぞれのプラットフォームに合った実装が出来るよー、というわけですね。

ただし、

ただし、ベストプラクティスは、すべての ActionScript 実装で同じパブリックインターフェイスを使用することです(ANE パッケージに含めることのできる SWC ファイルは 1 つだけです)。

という文にも注意です。つまり、「実装を別々に作ってもらってもいいけど、その実装はSWCファイルで設定してあるパブリックインターフェイスの内容に沿った実装を行うべきだよね」ということだと思います。SWCではgetHelloWorld()だけ定義してるのに、とあるプラットフォームの実装にはsetHelloWorld() が定義されているとかはNGってことではないかと。あとパッケージ名が違うとかクラス名が違うとかもNGかと思います。

まぁそんなわけで、「折角、他から抽出したlibrary.swfでも使えるような仕組みになってるんだから、「コンパイル用SWCだけでいいじゃん」とか横着せずに、それぞれのプラットフォームに適切なlibrary.swfを置いてくださいね」ということでした。

 

では、何故

一般的な解説サイトでは、コンパイル用SWCから実装library.swfを抜き出して全プラットフォームに配置するのでしょう?先ほどの話からいえば、コンパイル用ならコンパイル用、実装用なら実装用で分けた方が役割分担が出来てて判りやすいですよね。

まず、コンパイル用SWCの方は先ほども書いたとおり「パブリックインターフェイス」なので、どんな実装をされていようが問題ありません。予想では、どんなパッケージのどんなクラスにどのようなメソッドを定義しているかとか、そういう情報さえあればいいということになるかと思います。

んで、各プラットフォームのlibrary.swfは実装ファイルとなるので、ExtensionContext.call()なりフォールバックなり、ちゃんと実装された内容を記述してるものである必要がありますね。

ということは、前回の記事のように普通にコンパイル用SWCに定義と実装がされていれば、同じファイル(コンパイル用SWCと、それに由来する実装library.swf)を使っても大丈夫、ということに気付くと思います。しかも、同じパッケージ、同じクラス、同じメソッドを必ず実装出来てるので、仕様が統一化できるわけですね。

まぁあと、いちいちプラットフォーム毎に実装分ける必要があるのか、っていうのも疑問ではありますが。それすらもコンパイル用SWCの方でCapabilities.OSによる切り替えとかやればいいわけで。

よく判らん方は、最初の図を見ながら読んでみると、判りやすいかもしれません。

Defaultプラットフォームとはなんだったのか

ここまで読めば、なんとなく予想がつくでしょう。つまり、用意しているプラットフォームの何処にも属さなかった場合、defaultとして指定された実装library.swfファイルを読みに行く、ということになります。で、これがコンパイル用SWCから抽出されている場合、コンパイルSWC作成時にOSで処理を分けてフォールバックを行う作りをしておけば、defaultプラットフォームの時はそのフォールバックが機能しますよ、っていうことですね。なので、「プラットフォーム」という言葉の意味合いは確かに妥当ですし、コンパイル用SWCでフォールバックを行うことも妥当でした。この二つの意味に気付いてやっと、defaultプラットフォームの真意が判る感じですね。

あ、ちなみに

library.swfという名前ですが、変えたらだめです。固定です。

というわけで

なんかグダグダと書いてきて、正直判らない人がたくさんいるのではないかと思いますので、そんな人は、Adobe公式ドキュメントの「ネイティブ拡張のパッケージ化」の部分を熟読しましょう。

ANEttyではどうなっているか

コンパイル用SWCから実装library.swfを自動抽出して全てのプラットフォームで同じ実装をするようにしています。まぁ正直、途中でも書いたようにプラットフォーム毎に実装をバラバラにする意味はあんまりないかなーと思いますので、このままで行きたいと。どうしてもバラバラの実装をしたい方は、コンパイル環境一式を書き出したうえで、それをベースに各自作っていただく方式にしたいと思います。

で、結局何が書きたかったかというと、コンパイルSWCだけで済むから楽だよ!っていう宣伝でした。

2011/12/26

ANEttyを0.0.3へバージョンアップしました。

ダウンロードはこちらから。
http://melancholy.raindrop.jp/wordpress/?p=2244

なお、実は自動アップデート機能を実装していて、ちゃんと何回も確認したのですが、何故か動かないので、申し訳ありませんが再度ダウンロードした後にインストールしていただくようお願いします。

2011/12/23

さて、今年の終わりまで残り10日です。

早いものですね。とりあえず「クリスマス終了のお知らせ」はまだかな?

TLF(Spark TextInput) Issue
http://wonderfl.net/c/Ao8X
>メイリオ指定して、”fffffffff” みたいなテキスト突っ込むと再現する困ったちゃん…

これからPS Vitaの購入を考えている人へ。注意点まとめ
http://www.gizmodo.jp/2011/12/ps_vitano.html

クレジットカードなしで Windows Phone アプリを購入できる「Vプリカ」
http://nanapho.jp/archives/2011/12/how-to-purchase-windows-phone-apps-without-credit-card/

ギター弦『エリクサーストリングス』原材料問題で生産停止
http://ggsoku.com/2011/12/docomo-nexus-update-fail/

NTTドコモ、メール障害に続いて「文鎮アップデート」を実施 ―Android4.0最速端末が最速文鎮に
http://ggsoku.com/2011/12/docomo-nexus-update-fail/

なぜブログを書くべきなのか
http://stocker.jp/diary/blog-1/

クリスマスプレゼント!「みんなのPython Webアプリ編」のPDFを無料公開します
http://coreblog.org/ats/minpy-web-is-now-free-to-read
まさかの1冊丸ごと配布。

僕たちプログラマーは、プログラミングに、Excelを使います!
http://d.hatena.ne.jp/miya2000/20111221/p0
ん・・・うーん・・・。(笑

F-siteセミナー「みんなのFlash効率化大作戦」
http://f-site.org/articles/2011/11/10130448.html
次回のF-siteのセミナー内容。JSFL友の会に僕も入りたい。

無料で有料ムービー変換ソフトWin&Mac用ライセンスキーを期間限定配布中
http://gigazine.net/news/20111221-video-converter-license-key-present/
12月25日まで。

ネイティブ拡張(Native Extensions)入門 第1回 ネイティブ拡張を理解する
http://www.adobe.com/jp/devnet/air/articles/native_extensions_part1.html

ネイティブ拡張(Native Extensions)入門 第2回 ネイティブ拡張の開発方法 前編
http://www.adobe.com/jp/joc/devnet/air/articles/native_extensions_part2.html

ネイティブ拡張(Native Extensions)入門 第3回 ネイティブ拡張の開発方法 後編
http://www.adobe.com/jp/joc/devnet/air/articles/native_extensions_part3.html

日本ファルコムがPSP「那由多の軌跡(ナユタノキセキ)」を電撃発表。「軌跡シリーズ」の舞台設定・キャラ・ゲームシステムのすべてを一新した完全新作
http://www.4gamer.net/games/145/G014513/20111221001/
楽しみですね。とりあえず年末年始で碧の軌跡をクリアーしないと。

Native Extension Lab in 大阪に参加しました
http://reinyan.pussycat.jp/wpc/?p=825

9割がプロジェクトの失敗を繰り返す
http://itpro.nikkeibp.co.jp/article/Watcher/20111219/376881/

Stage3D対応のAway3D 4.0 – ダイナミックシャドー
http://clockmaker.jp/blog/2011/12/away3d_4_dynamic_shadow/

Stage3D対応のAway3D 4.0 – フィルター(ポストエフェクト)
http://clockmaker.jp/blog/2011/12/away3d-4-filter3d/

FITC Tokyo 2011 レポート 1日目 – ポエ山氏によるFlashアニメーションからGolan Levinのレスポンスメディアについてまで
http://www.cbc-net.com/topic/2011/12/fitc-tokyo-2011-day1/

Eclipse パッケージエクスプローラ右クリックでターミナル(コマンドプロンプト)を開く
http://d.hatena.ne.jp/msuhara/20110226/1298798191
この機能は欲しかった。というかデフォルトで欲しい。

IE互換性検証用仮想マシン(Internet Explorer Application Compatibility VPC Image)を試してみました
http://blog.bricoleur.in/archives/1551
>制作サイドとしては頭の痛いのが旧バージョンのIEでの動作検証。IETesterを使って検証している方も多いと思うんですが、実はMicrosoftがIEの各バージョン別に、互換性検証用の仮想マシンイメージを配布しています。

HTML5アプリをモバイルアプリに変換するPhoneGapが1.3にバージョンアップ。Windows Phone 7対応の強化など
http://www.publickey1.jp/blog/11/html5phonegap13windows_phone_7.html

“PHP Apocalypse”を開催しました!
http://labs.gree.jp/blog/2011/12/4367/

【ネタバレ】PSP「魔法少女まどか☆マギカ」 マミさんが魔女化すると、こうなる
http://alfalfalfa.com/archives/4998777.html

ちっともゆるくない夕張市のゆるキャラ「メロン熊」に園児が号泣 
http://news4vip.livedoor.biz/archives/51849513.html

HTML5やクラウドなどを使えばここまでできる「モーグリのツイートキャッチ」
http://gigazine.net/news/20111220-moogle-tweet-catch/
FF13-2のモーグリは可愛すぎです。特にモーグリ投げの時にバタバタ暴れる感じが堪らない。

2011/12/22

ANEのdefaultプラットフォームについて

ANEに関してちょっと有川さんとTwitterでやりとりする機会があって、いい話がいろいろ聞けたので、自分の勘違いも含めて共有しておこうと思います。

defaultプラットフォームについて

実は何度ドキュメントを読んでも良く解らなかったのですが、これは例えば、Windows用ANEを実装したAIRを使用したときに、Macで使ったらどうなるか、ということを考えればいいと思います。つまりフォールバック機能を持つ特別なプラットフォームです。

で、この「プラットフォーム」という言葉にだまされて、ANE-SWCとは別のSWCをネイティブ実装に倣って作ってたのですが、上手く動かず。実際はそういう事ではなく、ANE-SWCで、ExtensionContext.call()を書く際に、同時にその場所にフォールバックを書いておけ、ということだったのです。つまり、ANE-SWCの中にそういう機能を盛り込んでおけ、ということだったのです。

フォールバックの方法

綺麗なのは、Capabilities.osによるプラットフォームの分岐でそれぞれの処理を行うということです。つまり、該当プラットフォームであればExtensionContext.call()を使い、それ以外だったら別の実装をそこに書くと言った感じです。

また、try-catchで書く事も可能です。ExtensionContext.call()を使った際に、もしネイティブ側の実装が無かったら「ArgumentError: Error #3500: The extension context does not have a method with the name (メソッド名).」というエラーがでます。なので、このエラーが出たらフォールバック処理を書く、ということを行います。

フォールバックは、もしネイティブ実装が無い場合にエラーで処理を止めるのではなく、スムーズに状況にそったユーザー体験を提供しますので、必須の機能と言っていいと思います。また、デバッグでシミュレーションを行うときに、ネイティブ実装は機能しません。そのときに代わりとしてフォールバック機能を使用することができるので、そういう意味でも必須と言えます。

ANE-SWCのネイティブ呼び出し関数の戻り値はvoidにせず、intで返す

これは有川さんの持論なので、必ずしも倣う必要は無いかもしれませんが、参考までに。何か処理を行う際、それが同期処理であれば、戻り値としてintによるステータスコードを返した方がいいようです。C言語の文化なので、倣った方がいいとか。

1だったら成功とか、2だったら任意のエラーとか。もし、複数の問題があるかもしれないという事を考えたら、uintで2進数によるビットフラグを使った方がいいかもですね。で、それぞれの数値を定数化しておくと。ここら辺はお好みで。

纏めると

例としてはこんな感じかな?完全に想像で書いているので動作の保証はしません。あくまでイメージで。

public static const CONNECTION_ERROR:int = -2;
public static const ATTACK_MISS:int = -1;

//ANE-SWCに記述。AIRアプリから呼ばれる関数。Windowsのみのネイティブ実装。
public function attack(attackType:String):int
{
    try
    {
        if (Capabilities.os.indexOf("Windows") > -1)
        {
            return _context.call("attack", attackType) as int;
        }
        else
        {
            var damage:int = 0;
            /* ダメージ算出のコード */
            return damage;
        }
    }
    catch (error:Error)
    {
return CONNECTION_ERROR;
    }
}

こういうの、複数人で何処かに纏めたいですね。情報散乱してると集めるの大変だし。

2011/12/16

そういえば。

この前知人に「尊敬するFlasherとかいるんですか?」と聞かれ、「みんな自分より全然凄いから、みんな尊敬してます」と答えたわけですが(本当の話、自分は大してプログラミングのレベルが高いわけではないので、特に自分の周りにいる人たちは尊敬してます)、考えてみたら、多大に影響を受けた人物がいて、それは僕のFLASH講師とBeInteractiveの新藤さんだったと気づきました。

Flash講師は、まぁいろいろあって、もう人生を左右するくらいの刺激を受けたのですが、新藤さんは、初めて行ったFlashの勉強会であるSparkProjectの主催で、ライブコーディングで凄い衝撃を受けて、これをきっかけに「ああいうことをやってみたい!」と強く思い、無理を言って社内のFlash勉強会内で発表などをさせてもらったりしました。

まぁ何を言いたいかというと、この前のFlash MEETUPで新藤さんと話す機会があり、名刺交換もしていただき、凄く刺激を受けさせていただいたということも話させていただき、無量ということを言いたかったわけです。・・・話下手だし、馬鹿なので、あまり話しできなかったですけど・・・。

ASDocのよくある記述ミス4個
http://www.mztm.jp/2011/12/16/asdoc/

開発者が知っておくべき、6つのUIアーキテクチャ・パターン
http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_10/greatblogentry_10_01.html

Flash Media Server 4.5.1 Update out
http://www.solid-thinking.com/blog/?p=752

ついに! Microsoft、来年からIEを自動アップデートすると発表
http://jp.techcrunch.com/archives/20111215about-damn-time-microsoft-will-silently-upgrade-everyone-to-latest-version-of-ie/

DeNA川崎氏が語る──秒速で進化する「ngCore」の全貌
view-source:http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=002008

そば屋五兵衛 WEB サイトにて使用されている暗号化技術に関して
http://www.sobaya-gohei.com/enc_explain.html
なにこのハイテクそば屋。

FlashでMacAppstoreに載せられるのか。
http://togetter.com/li/228243

REGZA Zの「FF XIII-2」最適画質モードとは? -画質調整の狙いと効果を解説
http://av.watch.impress.co.jp/docs/topic/20111215_498877.html?ref=rss

ニフティ等『ハローキティ スマートフォンアプリコンテスト』を開催
http://www.aivy.co.jp/BLOG_TEST/nagasawa/c/2011/12/post-357.html

Tags: ,