イナヅマTVログ

2010.05.21
01:29
author: taikiken
0件のコメント

【購入書籍】(電子書籍)App Store & Kindle Store

技術書ですが、いくつか電子書籍も購入しています。
App Store と Kindle Store で購入しMacやiPhoneで読んでいます。
「ちゃんと読める」が最初の感想。
あの小さなiPhone画面でも問題ないようです。

日本の電子書籍市場は立ち上げるつもりが無さそうなので洋書ばかりなのが残念でなりません。
書籍に関わる人たちは、本が売れないとか雑誌が売れないとか言い訳している暇があったらちゃんと電子書籍の未来について考えた方が賢いと思うんだけどなー。

Learning OpenCVLearning OpenCV Learning OpenCV

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識の原書です。
600円の安さにつられて買いましたが、これは原書じゃつらい。
翻訳本を買い足しました。


CSS: The Missing ManualCSS: The Missing Manual CSS: The Missing Manual

緑の表紙と犬のイラストでおなじみのOreilly Missing Manual です。


iPhone 3D ProgrammingiPhone 3D Programming iPhone 3D Programming

数少ないiPhone OpenGL ESに関する本です。


Oreilly の原書はApp Store で大量に販売されています。
Amazonの原書販売よりも早く売られていることもあります。
またKindle Store より価格が大幅に安いのが魅力です。

大藤幹のHTML/XHTMLタグ辞典大藤幹のHTML/XHTMLタグ辞典 大藤幹のHTML/XHTMLタグ辞典

大藤幹さんの辞典シリーズ。


最新刊はこっちです。
大藤幹のHTML/XHTML/CSS辞典 大藤幹のHTML/XHTML/CSS辞典


次はKindle Storefr購入した本です。
まだAmazon.co.jpではKindle Bookの販売は始まっていないようなのでAmazon.comで購入しました。

Amazon.comアカウントを設定するとMacとiPhoneのKindleが同期してくれるのがとても便利です。
Macで読み進めて電車の中でiPhoneで読もうとすると読み終わっているぺーじまでページ送りをしてくれます。

新しい本が少ないような気がするのは気のせいだと良いな。
価格はもうチョイ安く設定してくれると良いのにと思ってしまいます。
ペーパーバッグと数ドルの差だったらかなり迷ってしまいます。


繰返しになりますが、日本の電子書籍市場がすくすくと健やかに育っていくことを願わずにはいられません。

2010.05.20
09:13
author: taikiken
0件のコメント

【購入書籍】OpenCV, openFrameworks, Processing

ActionscriptのBitmap操作で行き詰って調べてたらたどり着いた本です。

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識


Gary Bradski (著), Adrian Kaehler (著), 松田 晃一 (翻訳)

結局OpenCVじゃん。
てな話になっちゃう。

フェーストラッキングやリアルタイムクロマキーが実現できるのもOpenCV様のおかげなんですね、分かりました。
C言語の解説書だし分け分かんない言葉がいっぱい出てくるし、「ヒーヒー」言いながら読んでます。


Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門


田所 淳, 比嘉 了, 久保田 晃弘

「メディアアート」ってタイトルに魅かれました。
openFrameworksなら、やりたいことが直感的にちゃっちゃとできるらしいウワサを聞きつけ購入。
これもC。

かなり面白い。


Built with Processing [改訂版]


前川 峻志, 田中 孝太郎

Processingは3年位前から遊びはじめています。
@flight404さんの作品を見て「Processing」の存在は知りました。

openFrameworksへ影響を与えたらしく、あらためて本を買うことにしました。
Webのドキュメント見たりするよりはるかに分かりやすいです、買ってよかったと思いました。

ただ、本を買っちゃうと読んでるだけで分かった気になるのがいけませんねー。
手を動かさないと本当のことは何も分からないんだけど、って理解しているつもりなのに。。。


本来の目的はActionscript / Flash なんですけど、それ以外の分野(言語)にもヒントはいっぱいあるんだと感じています。
これからも興味の向くままに貪欲にいきたいです、ハイ。

あらためて思ったけど、興味があるのはインタラクティブ!
もっともっとインタラクティブで行きたい!!!

2010.05.18
18:16
author: taikiken
1件のコメント

Progression4事始め、LoadSWFでロードしたファイルのプロパティ

Progression4って便利だなぁー。
と言ってもまだコマンドを使ってるだけだけど。
ガンガン使うのはこれから。

LoadSWFで呼び込んだswfファイルのプロパティにアクセスするのにちょっとしどろもどろしたのでメモっとく。

ロードするファイルexample.swfに関数bowがあります。

import jp.progression.commands.lists.SerialList;
import jp.progression.commands.net.LoadSWF;
 
import flash.net.URLRequest;
import flash.display.Loader;
 
new SerialList(
	null
	, new LoadSWF(new URLRequest("example.swf"))
	, function ():void {
		var loader:Loader = Loader(this.latestData);
		var loaded:Object = loader.content;
		loaded.bow();
	}
).execute();

Loaderで型指定(Cast)するのがポイントだった。
loader.contentの戻り値をObject型で受取らないといけなかった。
なんとなく想像できるけど、これはFlashの問題(仕様、性格、体質:うまい言い方がみつからない)だよなぁ。

ロードしたファイルのライブラリ・ファイル(クラス)を使うのはもうちょっとややこしかった。
ロードするファイルexample.swfにクラスSomeClassがあります。

import jp.progression.commands.lists.SerialList;
import jp.progression.commands.net.LoadSWF;
 
import flash.net.URLRequest;
import flash.display.Loader;
import flash.system.ApplicationDomain;
 
new SerialList(
	null
	, new LoadSWF(new URLRequest("example.swf"))
	, function ():void {
		var loader:Loader = Loader(this.latestData);
		var domain:ApplicationDomain = loaded.contentLoaderInfo.applicationDomain;
		var class:Class = domain.getDefinition( "SomeClass" ) as Class;
		var instance:* = new class();
	}
).execute();

SerialList内のthis参照はSerialListになってるんだね。
これもうっかりするとハマりそう。

2010.05.17
09:21
author: taikiken
0件のコメント

【購入書籍】ActionScript / Flash な本たち

2009年の年末から2010年5月までに色々Amazonさんから購入した書籍のリストです。
*お断り、リンクはアフリエイトになっています。

ActionScript

Papervision3Dではじめる Flash3Dアニメーション


ハヤシ カオル

ActionScript 3コーディング解説やOOPの説明もあります。
この点は親切だとも言えますし、余分だとも言えるかもしれません。
Papervision3D初の日本語解説書籍です。丁寧な日本語で読みやすく分かりやすく書かれています。
読み進めるにつれPapervisionを使い始める前に3Dへの理解を深めておく必要があると痛感させられました。
3DはStrata->Shadeで止まってあれから何年触ってないだろう。。。


Flash3Dコンテンツ制作のためのPapervision3D入門


池田 泰延

@clockmakerさんのPapervision解説本です。
ブログも毎回楽しく読ませてもらっています。
Beautiflでも有名ですよね。
勿論wonderflでも。


ProgressionによるFlashコンテンツ開発ガイドブック


阿部貴弘, 池田泰延, 楢山哲弘, 松竹 誠, 山上健一

これからのFlash開発標準になるかものProgression。

待望のProgressionガイド書籍です。
progression.jpのドキュメントも良くできてるけど、手元に置いておきたい一冊です。

Progressionは使いはじめたばかりですが機能の多さに驚きを隠せません。
本とドキュメントを見ながら奥深さを探検したいと思います。

.fla 2 ―Idea of Flash Creation―


新藤愛大, 寺井周平, 萩原俊矢, 小山智彦, 眞野東紗, 小瀧和正

発売日に手に入れ、すぐに読んでしまいました。
クリエイターそれぞれの考え方に触れられるのはとても刺激的。

なかでも新藤さんの天才ぶりは衝撃です。

また前号の「.fla」はSpark Projectで無料ダウンロードができます。
よ、太っ腹!
リンクは@beinteractive 新藤さんのブログ「“.fla ─ Idea of Flash Creation” が Spark project にて復刊中 」からどうぞ。


ブラウザで無料ではじめるActionScript 3.0 ―It’s a wonderfl world―


面白法人カヤック, フォークビッツ

wonderflの投稿コードもとにしたActionScript 3解説書。

クラスファイルの作り方やBitmapな操作も事例をもとに簡潔に解説されています。
実践的なコード記述が学べるのではないかと思います。


今回は「Actionscrip / Flash」編ということで、ここまで。
ほかにもたくさん買ってるのは、いつになるか分からないけど次回ということで。。。

2010.05.10
13:07
author: taikiken
0件のコメント

【News】ウェブジン創刊

東京で活躍しているデザインハウスTYPOGRAMからWebマガジン「ウェブジン」が創刊されています。
エッジのきいた写真と粋な文章の雑誌です。
フォントにこだわったカッコいいデザインに仕上がってるのはさすがです。
次号の予定もあるそうです。
Webで雑誌という古くからありながら、なかなか定着しないテーマに新しい切り口で臨んでいて今後の展開が楽しみです。

http://www.typoglam.com/prooph.html

ウェブジン
ウェブジン

2010.05.05
00:46
author: taikiken
0件のコメント

Transmit 4でAmazon S3

Transmit
Amazon S3が便利に使えるようになるっていうアナウンスを見たらTransmit 4へアップグレードしない訳にはいけませんよね。

iDiskのようにDiskとしてマウントすることもできてことのほか便利なことが判明。

Transmit 4

こんなに便利だとバックアップディスクとしても使えそうだけど・・・
従量制だからなぁー、個人で負担できる範囲に収まるかどうかがポイントになりそう。

【おまけ】
panic.comのサイトは毎回演出が新鮮。
機能紹介のflipは驚いた、HTML 5な効果だったのかな。

2010.04.21
13:07
author: taikiken
0件のコメント

ActionScript, EazeTweenはじめの一歩

GoogleCode : eaze-tween
EazeTweenを試してみました。

連続するモーションを直感的に記述できるのが便利です。
モーションを一時中断したり再開したりするのが驚くほど簡単に実現できます。
もちろんキャンセルするのも簡単です。

複数のインスタンスを操作するのはちょっとめんどくさいかな。
今のところ(?)な挙動は無いようです。

処理スピードはどうなんだろう。
まぁ、処理スピードも重要ですが、TweenEngineは直感的に記述できてコーディグの負担が減る方が嬉しいことが多いのも事実です。

また新しい選択肢ができてしまいました。
うれしいけど、こまるよなぁー、どれ使うか・・・

EazeTween
EazeTween DEMO

import aze.motion.eaze;
import aze.motion.EazeTween;
import aze.motion.easing.*;
 
eaze(target0).to(1).tint(0xff0000);
eaze(target1).delay(.1).to(1).tint(0xff0000);
eaze(target2).delay(.1).to(1).tint(0xff0000);
eaze(target3).delay(.1).to(1).tint(0xff0000);
eaze(target4).delay(.1).to(1).tint(0xff0000);
eaze(target5).delay(.1).to(1).tint(0xff0000);
eaze(target6).delay(.1).to(1).tint(0xff0000);
eaze(target7).delay(.1).to(1).tint(0xff0000);
eaze(target8).delay(.1).to(1).tint(0xff0000);
eaze(target9).delay(.1).to(1).tint(0xff0000).onComplete(
  function ():void {
    var i:uint;
    var limit:uint = 10;
    for (i = 0; i < limit; i++) {
      eaze(root["target" + i]).delay(.5).to(1.5, {y:240, rotation:720})
      .delay(.4).to(1).tint(0xffff00)
      .delay(.5).to(1).tint(0xffffff)
      .delay(.5).onComplete(function ():void {
        var j:uint;
        var ezt:EazeTween;
        for (j = 0; j < limit; j++) {
          ezt = eaze(root["target" + j]).delay(.1 * j).to(1, {rotation:360}).easing(Back.easeOut)
          .delay(1).to(1, {rotation:-360}).tint(0x00ffff).easing(Back.easeOut);
          if (j == limit - 1) {
            ezt.delay(1).onComplete(function ():void {
              var k:uint;
              for (k = 0; k < limit; k++) {
                  ezt = eaze(root["target" + k]).delay(.2 * k).to(1.5, {y:35, rotation:720}).tint(0xffffff);
                  if (k == limit - 1) {
                      ezt.onComplete(trace, "END");
                  }
                }
              }
            );
           }
         }
        }
      );
    }
  }
);

eaze を使えば簡単にモーションができるようです。
eaze の戻り値は EazeTween インスタンスになります。
EazeTween には連続モーション用の chain メソッドがあるのでこんな入れ子にしなくてもいいのかも。

pause, resume, stopstatic で用意されているので簡単に使えます。

// stop
EazeTween.killAllTweens();
 
// pause
EazeTween.pauseAllTweens();
 
// resume
EazeTween.resumeAllTweens();

pause後にstop した後、別のモーションをするためにはいったんEazeTween.resumeAllTweens(); をしてあげないといけないようでした。

easing関数は引数が違うのでEazeTweenの関数を使わなくてはいけません。
用意されているイージング クラスは以下のとおりです。

Back
Cubic
Elastic
Expo
Linear
Quadratic
Quart
Quint

2010.04.20
14:20
author: taikiken
0件のコメント

Flex SDK, asdocコマンドでAPI ドキュメント出力その2

bytearray.org のDemoで使われていた EazeTween が面白そう。
ScaleBitmap : New version

GoogleCode : eaze-tween

モーションを直感的に . (ドット)シンタックスでつなげられるのが魅力的。
シーケンシャルなモーションが手軽に使える感じ。
使ってみた感じはまた今度・・・

サンプルはあったけど今回はドキュメントが付属してなかったので asdoc でドキュメント出力メモ。
クラス構成とプロパティ、メッソドが分かるだけでも役にはたつかな。

FlashBuilder 4/sdks/4.0.0/bin

cd /Applications/Adobe Flash Builder 4/sdks/4.0.0/bin
 
./asdoc -source-path YOUR_PATH/svn/trunk/as3/src 
-main-title "EazeTween" 
-window-title "EazeTween" 
-output YOUR_PATH/docs
-doc-sources YOUR_PATH/svn/trunk/as3/src/aze/motion

-doc-sourcesオプションでディレクトリを再帰的に検索して出力してくれる。
-outputで出力フォルダを指定。
成功すると出力フォルダにファイルが書出されます。
フォルダのindex.html にアクセスするとドキュメントが見れます。

2010.04.13
00:31
author: taikiken
0件のコメント

BitmapData.histogram の戻り値

BitmapData – ActionScript 3.0 言語およびコンポーネントリファレンス
histgramの説明が?だった件のメモ。
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/BitmapData.html#histogram()

public function histogram(hRect:Rectangle = null):Vector.<Vector>

これを見るとVector.<Vector>が戻ってくるみたいなので以下のコードを書いたらエラーになった。

var bmd:BitmapData = new BitmapData(10, 10);
var hist:Vector.<Vector> = bmd.histogram();

「1067: 型 __AS3__.vec:Vector.<__AS3__.vec:Vector.> の値が、関連しない型 __AS3__.vec:Vector に暗黙で型変換されています。」

BitmapData オブジェクトの 256 値のバイナリ数のヒストグラムを計算します。このメソッドは 4 つの Vector を含む Vector オブジェクトを返します。 インスタンス(Number オブジェクトを含む 4 つの Vector オブジェクト)です。4 つの Vector インスタンスは、赤、緑、青およびアルファの順の各コンポーネントを表します。各 Vector インスタンスには、各コンポーネントの値のポピュレーションカウント(0 ~ 255)を表す 256 値が含まれています。

戻ってくるVectorには4つのVectorが入っていて、そのVectorにはNumberが入っている。だったら次のようにしてみた。

var bmd:BitmapData = new BitmapData(10, 10);
var hist:Vector.<Vector.<Number>> = bmd.histogram();

うん、エラーは出なくなった。

update

2010-06-25
Flex 4 リファレンスでは修正されてます。
http://help.adobe.com/ja_JP/AS3LCR/Flex_4.0/flash/display/BitmapData.html?allClasses=1#histogram()

ところでAdobeはワザワザhelpをオンライン・ドキュメントにして製品に添付してないのに旧版の修正(訂正)をしないのはなんでなんしょうね。

2010.04.08
23:23
author: taikiken
0件のコメント

Optimizing, Flash 最適化ネタ

akihiro kamijo さんのブログにFlash最適化ネタが連続投稿されてました。
Flash コンテンツパフォーマンス最適化 (メモリ編 1)
Flash コンテンツパフォーマンス最適化 (メモリ編 2)
Flash コンテンツパフォーマンス最適化 (CPU 編)

Adobe Flash Platform : Optimizing Performance for the Flash Platform
の翻訳・要約ですが、分かりやすく書かれています。

Flash最適化を心がけるとメモリーリークに悩まされることも少なくなるはず。

書かれている中のひとつ、Object pooling は昨年のFITCでGrant Skinner先生が言ってたしこのあいだのFlash Campでもあったなぁ。
インスタンスは使い回す、が大切なんだ。
Arrayよりもメモリー消費が少ないVectorでPoolすると良いらしい。
Vectorはサイズ(length)を決めて作るとより効果的。
Vector class versus Array class

原文はPDFも用意されているのでダウンロードして大切にします。

忘れないうちにメモっとく。

ミップマップ
Flash コンテンツパフォーマンス最適化 (メモリ編 2)の”ダイレクトミップマッピング”の項
kamijoさんの別記事:Flash Player の Mip マップサポートについて
ActionScript Help:ミップマッピングの利用

2 次元イメージの場合は、ビットマップサイズを 4 または 8 で割り切れるサイズにし(例えば 640 x 128 では、320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x 2 > 5 x 1 のようにサイズを縮小できます)、3 次元テクスチャの場合はビットマップサイズを 2^n にします。MIP マップは、幅と高さが 2^n であるビットマップ(256 x 256、512 x 512、1024 x 1024 など)から生成されます。Flash Player または AIR では、幅または高さが奇数になると、ミップマッピングは終了します。

update 2010-04-09
kamijoさんのブログに追加投稿がありました。
Flash コンテンツパフォーマンス最適化 (AS3 編)
このエントリーの中にリンクされているSome ActionScript 3.0 Optimizationsの最適化ネタは一度は読んでおくべきだと思います。

for i loop の条件は array.length を毎回評価しないようにする。

// bad
for (var i = 0; i < array.length; i++)
 
// good
for (var i = 0, max = array.length; i < max; i++)

定数も複数回使う時は一度変数に代入して再利用する。

bit演算も高速化の助けになる。
4 * 2 -> 4 << 1 4 * 4 -> 4 << 2 4 / 2 -> 4 >> 1
4 / 4 -> 4 >> 2

update 2010-04-10
野中先生もAdobe devnetへ寄稿されてたんですね。
ActionScript 3.0の最適化
ActionScript 3.0におけるパフォーマンス向上のヒント

型指定は必須。
差が出るのはループの条件指定。
Mathクラスの数値演算の項は何となく理解できる。
quasimondolibsのMathutilsはネイティブMath関数群を高速化して置換えてたもんなぁー。