<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>feb19.jp blog</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/" />
   <link rel="self" type="application/atom+xml" href="http://feb19.jp/blog/atom.xml" />
   <id>tag:feb19.jp,2012:/blog/1</id>
   <updated>2012-01-15T09:39:11Z</updated>
   <subtitle>life is creative!</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.33-ja</generator>

<entry>
   <title>iOS 5 の Twitter Framework で Twitter 投稿する</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000233.php" />
   <id>tag:feb19.jp,2012:/blog//1.233</id>
   
   <published>2012-01-15T09:18:33Z</published>
   <updated>2012-01-15T09:39:11Z</updated>
   
   <summary> iOS 5 から Twitter が OS 標準になりましたが、その...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="iOS / Objective-C" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="220" label="iOS" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="172" label="objective-c" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="iOS 5 の Twitter Framework で Twitter 投稿する" src="http://feb19.jp/blog/images/image155.jpg" />

iOS 5 から Twitter が OS 標準になりましたが、その投稿コンポーネントが Framework として提供されて OAuth 連携とか組み込まず簡単に作れるようになったのでメモ。]]>
      <![CDATA[<strong>TWTweetComposeViewController</strong> を使います。

1. Twitter Framework をインポート。

2. TWTweetComposeViewController でツイート画面の ViewController が生成できます。
　presentModalViewController:animated: で表示。

<pre><code>#import &lt;Twitter/Twitter.h&gt;</code></pre>

<pre><code>if (![TWTweetComposeViewController canSendTweet])
{
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Twitter" message:@"ツイッターアカウントが設定されていません。" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
    [alert show];
    return;
}
  
TWTweetComposeViewController *tweetView = [[TWTweetComposeViewController alloc] init];
[tweetView setInitialText:@"デフォルト文言"];
// URL をシェアする場合
// NSURL *url = [NSURL URLWithString:@"http://feb19.jp/"];
// [tweetView addURL:url];
  
[tweetView setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
   switch (result) {
        case TWTweetComposeViewControllerResultCancelled:
            // キャンセルボタンが押された
            break;
        case TWTweetComposeViewControllerResultDone:
            // ツイートが完了した
            break;
        default:
            break;
    }
   
    // 消す
    [self dismissModalViewControllerAnimated:YES];
}];
   
// 出す
[self presentModalViewController:tweetView animated:YES];
[tweetView release];</code></pre>

<a href="http://www.amazon.co.jp/gp/product/486100764X/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=486100764X"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=486100764X&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=486100764X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4839939039/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4839939039"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4839939039&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4839939039" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4822222691/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4822222691"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4822222691&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4822222691" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
]]>
   </content>
</entry>
<entry>
   <title>FlashBuilder と FlashProfessional による SWC ワークフロー</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000232.php" />
   <id>tag:feb19.jp,2012:/blog//1.232</id>
   
   <published>2012-01-14T02:02:09Z</published>
   <updated>2012-01-14T02:12:08Z</updated>
   
   <summary> .swc というファイルをご存知でしょうか。swc ファイルは Ad...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="179" label="cs5" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="217" label="cs5.5" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="195" label="flash builder" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="218" label="swc" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="FlashBuilder と FlashProfessional による SWC ワークフロー" src="http://feb19.jp/blog/images/image154.jpg" />

.swc というファイルをご存知でしょうか。swc ファイルは Adobe Flash Compiled Component File、「コンパイル済み Flash コンポーネント」で、このファイルを flash や flex でのパブリッシュ／ビルド時リンクしておくことで、コンポーネント内の UI やロジックを呼び出して使用することができます。]]>
      <![CDATA[Flash CS5.5 でグラフィック／アニメーション素材が含まれた SWC を作成し、Flash Builder 4.5 でそれを呼び出す ActionScript を書き、ビルドするワークフローが最近めちゃめちゃお気に入りです。


<a href="http://ceroan.jp/" target="_blank">世路庵</a>の沖さんが Adobe Developer Center に寄稿された記事でワークフロー自体は説明されています。

SWCを利用したFlash制作の分業ワークフロー：FlashとFlash Builder連携開発 | デベロッパーセンター
<a href="http://www.adobe.com/jp/devnet/flash/articles/flashpro_and_flashbuilder.html" target="_blank">http://www.adobe.com/jp/devnet/flash/articles/flashpro_and_flashbuilder.html</a>

一旦この方式をお試しいただくのが手っ取り早いと思います。


このワークフローのメリット

<strong>1. 素材の fla の構造は考慮する必要が無い</strong>

一つのプロジェクトで SWF が一つで済むのであればあまりメリットはないのですが、ページ遷移時に必要分だけ呼び出すため、「複数の SWF を作ることになるウェブサイト」の場合は、 Flash CS5.5 で最終的な SWF をパブリッシュする場合、プリローダー用、トップページ用、コンテンツページ用というように SWF を分けるために fla ファイルをも分けておかなければなりません。

SWC であれば、Flash Builder でのビルドの際、呼び出しする MovieClip クラスだけをリンクするので、fla ファイルを一つにすることができます。

動的にページを読み込んで表示する Flash は分割すればするほど「この素材はどの SWF にあったっけ？」となりがちで、特に複数人数での開発時に発生しやすいですが、アセットファイルを一つの fla にまとめることでこの煩雑さを解消することが出来ます。


<strong>2. fla がめっちゃ整理できる</strong>

上のほぼ続きですが、MovieClip クラスを ActionScript で呼び出すため、メインタイムラインをそのまま使うわけではないので、タイムラインやレイヤーを使って、各ページを整理することもできます。

タイムラインのフレームごとに ActionScript にリンケージした各ページの MovieClip を配置しておいて、注釈をその外とかに書き込んでみたり、誰が見ても分かりやすい fla を作ることができます。


<strong>3. Flash CS5.5 が落ちなくなる</strong>

このワークフローを取り入れてから突然 Flash が落ちることがほぼ皆無になりました。

この節は、僕の推測なのですが、なぜ Flash CS5.5 は落ちるのか？
パブリッシュしてプレビューしたとき、「自分が作った ActionScript がメモリーリークしている」せいで、パブリッシュ、プレビューを繰り返しているうちに Flash CS5.5 が落ちるんだと思うんです。

Flash Builder でプログラム書くようになって、プレビューするとデフォルトではブラウザ内で展開されます。または別のソフトである Flash Player  Debugger が立ち上がってプレビューができます。

それらがヤバい！ってなってきたときは ブラウザあるいは Flash Player Debugger が落ちます。
Flash CS5.5 はプレビュー確認がしやすいようにか Flash CS5.5 内にテスト用 Flash Player が内包されています。
その Flash Player が暴走して Flash CS5.5 を道連れにしている気がします。

このワークフローを取り入れてから、Flash CS5.5 ではプレビュー確認をせずアセットパブリッシュだけするようになってきました。
そのためか落ちなくなっているのではないかと、あくまで推測ですが、体感、そんな気がします。


<strong>4. ビルドが高速</strong>

Flash CS5.5 ではライブラリに含まれれるさまざまなアセットをパブリッシュする毎回毎回コンパイル（リンク？）しているのであろうことから、ロジックを少し変えた、とか、ActionScript で制御するアニメーションの値を少し変えただけでも全アセットをパブリッシュして（くれやがって）しまいます。

全アセットが既にコンパイルされているので、それ以外の部分のみコンパイルでビルドとなるので、Flash Builder で「自動ビルド」を ON にしているのであれば、少しパラメータを変更して Ctrl+S で保存し、「ビルド」ボタンを押さずとも、ブラウザの画面を F5 / Ctrl+R でリフレッシュすれば即確認ができます。



以上メリットですが、逆にデメリットももちろんあります。


<strong>1. SWC 内に ActionScript が存在していて、そこでバグがあった場合、SWC 使用者からのバグの特定が難しい</strong>

SWC は SWF と同様に、ActionScript を組み込んでおくことが出来ます。
しかし、そこでコンパイル済みとなるので、SWC の中で ActionScript エラーがあった場合は、行単位での特定ができなくなります。

なので、グラフィックアセットの SWC を作るときには ActionScript はあまり組み込まない方が良さそうです。

MovieClip または Sprite などのビルトインクラスを継承する形だけにしておいて、どうしても使う場合は SWC 用 ActionScript 群と、 Flash Builder で制御するとき（SWC を使う側）の ActionScript を別にして使うと、テストも書きやすそうです。

そして SWC 内の ActionScript では ASDoc の記述と厳格な型宣言を強くオススメします。


<strong>2. タイムライン上のサウンドが再生されない</strong>

Flex SDK とかのバグ（というか仕様？）なんじゃないかと思うのですが MovieClip タイムライン上にサウンドを配置しても、サウンドが再生されません。

音とグラフィックが同期したようなアニメーションを作る場合、タイムラインにサウンドを配置してストリーミングで再生するのが一般的かと思いますが、それができないので getTimer で時間を確認しながらグラフィックと同期する手法でうまいことやるしか無さそうです。

人によってはこれ結構致命的だとおもうけど・・・。



あと色々・・・

・命名規則ルールを打ち合わせして、うまいことやれば、アセットのインテグレーションとプログラミングの作業を分割することが出来そうな気がします。
・リンケージがデフォルトパッケージになってしまうので、パッケージ指定をリンケージ設定の時にもやっておくとちょっと気持ちよくなります。
・それにしても Flash CS5.5 と Flash Builder 両方買わないと、ってのは割高感がどうしても・・・。というのであれば、Flash Builder でなくとも Flash Develop とかでも同様のワークフローはできそうな気がします。


---

ちなみにイメージ絵は印象派の時代の画家ベルトモリゾの作品です。


<a href="http://www.amazon.co.jp/gp/product/4839936757/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4839936757"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4839936757&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4839936757" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4797367466/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4797367466"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4797367466&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4797367466" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4883377679/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4883377679"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4883377679&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4883377679" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
]]>
   </content>
</entry>
<entry>
   <title>WiFi Cat</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000231.php" />
   <id>tag:feb19.jp,2012:/blog//1.231</id>
   
   <published>2011-12-31T15:36:20Z</published>
   <updated>2011-12-31T16:19:13Z</updated>
   
   <summary> あけましておめでとうございます。それはそうと季節がら猫が暖房器具代わ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Column" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="WiFi Cat" src="http://feb19.jp/blog/images/image153.jpg" />

あけましておめでとうございます。それはそうと季節がら猫が暖房器具代わりに <a href="http://www.apple.com/jp/airmacextreme/" target="_blank">AirMac Extreme</a> によく乗ります。]]>
      <![CDATA[そんなわけで耐久性も高く猫を飼っている方の WiFi ルーターは AirMac Extreme がおすすめです。

<img alt="WiFi Cat" src="http://feb19.jp/blog/images/image153a.jpg" />

猫にまとわりつかれても電波はちゃんと出ていました。

<img alt="WiFi Cat" src="http://feb19.jp/blog/images/image153b.jpg" />

ことしもよろしくお願いいたします。]]>
   </content>
</entry>
<entry>
   <title>FlashPlayer 11 対応コンテンツを FlashBuilder 4.5 で作る</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000230.php" />
   <id>tag:feb19.jp,2011:/blog//1.230</id>
   
   <published>2011-10-07T14:24:44Z</published>
   <updated>2011-10-10T03:16:49Z</updated>
   
   <summary> いやー久しぶりの投稿。ネタは結構有るんですけどね。まずは Flash...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="195" label="flash builder" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="215" label="flash player 11" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="FlashPlayer 11 対応コンテンツを FlashBuilder 4.5 で作る" src="http://feb19.jp/blog/images/image152.jpg" />

いやー久しぶりの投稿。ネタは結構有るんですけどね。まずは Flash Player 11 がリリースされたので。Flash Builder 4.5 ではこんな感じで設定できます。Flash Builder 4.5 結構最初はブーブー言ってたけど最近は気に入っています。Flash Builder 4 とか 3 でも基本的には同様にやればできると思います。]]>
      <![CDATA[<strong>0. 準備</strong>

ここから
<a href="http://www.adobe.com/support/flashplayer/downloads.html#fp11">http://www.adobe.com/support/flashplayer/downloads.html#fp11</a>
Plugin content debugger をインストールして、
Projector content debugger と PlayerGlobal (.swc) をダウンロードします。



<strong>1. Flex SDK の用意</strong>

Flex SDK も 4.5.1 が出ているので入れておくと良いかもしれません。
入っている人は飛ばしてください。
<a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK">http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK</a>
の 4.5.1 のダウンロードページの
<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4.5">http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4.5</a>
から、4.5.1.21328 Adobe Flex SDK Download をクリックして解凍します。
../Adobe Flash Builder 4.5/sdk/
の下に 4.5.1 というディレクトリを作成し、解凍した flex_sdk_4 の中身を移動しておきます。


<strong>2. playerglobal.swc を設置する</strong>

使用する Flex SDK のディレクトリのなかに playerglobal.swc を入れます。
このように 10.2 のディレクトリができているので

<pre><code>…/Adobe Flash Builder4/sdks/4.5.1/frameworks/libs/player/10.2/playerglobal.swc</code></pre>

同様の 11.0 のディレクトリを作って設置します。

<pre><code>…/Adobe Flash Builder4/sdks/4.5.1/frameworks/libs/player/11.0/playerglobal.swc</code></pre>

多分ダウンロードした playerglobal.swc は playerglobal_11.0.swc みたいな名前になっているので playerglobal.swc にリネームして格納すると良いと思います。


<strong>3. Flash Player 11 Content Debugger の設定をする</strong>

Flash Builder を開き、設定を行います。

環境設定＞Flash Builder＞デバッグを開き
スタンドアロンの Adobe Flash Player (デバッグバージョン) に、落とした Projector content debugger を参照して指定します。


<strong>4. プロジェクトのコンパイラー設定を変更する</strong>

適当に Flex 4.5 ぐらいでプロジェクトを作ります。

できたらプロジェクトのプロパティを開き、
ActionScript コンパイラーから Adobe Flash Player オプションがデフォルトだと 10.2.0 とかになっているので、11.0.0 を指定します。

さらに追加コンパイラー引数に

<pre><code>-locale en_US</code></pre>

などと書かれているところに半角スペース開けて（書いていない場合もある）、

<pre><code>-swf-version=13</code></pre>

と記述します。

これで設定完了です。


<strong>5. Flash Player 11 の機能を使ってみよう</strong>

とりあえず Flash Player 11 から使えるようになった Graphics.cubicCurveTo をつかって曲線を書いてみます。
できたら OK です！

<pre><code>package
{
    import flash.display.Sprite;
    
    public class Flash11Study extends Sprite
    {
        public function Flash11Study()
        {
            graphics.lineStyle(0,0);
            graphics.moveTo(0,0);
            graphics.cubicCurveTo(200, 100, 100, 200, 300, 300);
        }
    }
}</pre></code>

<!--
それにしても最近の Flash はちょっと下火になってきてて Stage3D なんかが出てきてちょっと楽しげな感じになってきたので喜ばしい感じ。ぶっちゃけ iOS にすり寄ってる Adobe ダセエみたいな感じもあって。Windows 8 Metro IE10 対応されないからファビよってて。いつから Flash 界そんな日和ってのって感じで。もともと逆境の業界だろうがとか思うんです。テクノロジーとかプラットフォームとか関係ねーしとか思います。いいもん作っていこうぜとか思います。

（だから Flash 以外も勉強するんだけどね　笑）
-->

<a href="http://www.amazon.co.jp/gp/product/4862671098/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4862671098"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4862671098&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4862671098" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/B004VDDZ2M/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B004VDDZ2M"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=B004VDDZ2M&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=B004VDDZ2M" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/1430225416/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=1430225416"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=1430225416&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=1430225416" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

]]>
   </content>
</entry>
<entry>
   <title>MacBook Air 11&quot; Mid 2011 を買いました</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000229.php" />
   <id>tag:feb19.jp,2011:/blog//1.229</id>
   
   <published>2011-07-31T14:02:50Z</published>
   <updated>2011-07-31T14:35:08Z</updated>
   
   <summary> MacBook Air 11&quot; Mid 2011 の特盛モデル買いま...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Column" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="211" label="lion" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="101" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="213" label="macbook air" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="MacBook Air 11 inch Mid 2011 を買いました" src="http://feb19.jp/blog/images/image151.jpg" />

MacBook Air 11" Mid 2011 の特盛モデル買いました。Core i7 1.8GHz 256GB 4GB。そして昨日届いたので、早速色々インストールしている段階です。ちなみに自宅メインマシンとして利用しようと思っています。]]>
      <![CDATA[前までのメインマシンは MacBook Pro 15" early 2008 です。このマシンは Snow Leopard のままにしておいて、趣味の音楽用として残しておこうと思います。一旦クリーンインストールし直したいけど。。

<img alt="MacBook Air 11 inch Mid 2011 unboxing A" src="http://feb19.jp/blog/images/image151a.jpg" />

というわけで MacBook Air の環境設定メモ。

システム環境設定で設定したこと:
・キーボード
　キーのリピート、リピート入力認識までの時間
　→最速にする
・Dock
　サイズ割りと小さめに
　自動で隠れるようにする
　（ここは好みだと思う）
・言語とテキスト
　大文字英数字とか大文字カタカナとかデフォルトにはないのでチェックいれる
・トラックパッド
　軌跡ちょっと早くするぐらいにしとく
　(スクロール方向を維持して使ってみることにします・・・まだキモいけど)

<img alt="MacBook Air 11 inch Mid 2011 unboxing B" src="http://feb19.jp/blog/images/image151b.jpg" />

Finder の環境設定で設定したこと:
・すべてのファイル名拡張子を表示
・サイドバーから iDesk とマイファイル解除してホームフォルダにチェック
・新規 Finder ウインドウはホームフォルダに

Finder のウインドウ立ち上げた表示オプションで設定したこと:
・常にカラム表示で開くにチェック
　カラム表示でブラウズにチェック
・並び順序を種類、表示順序を名前にする

あと Cmd+/ を押して、フッターを表示することで、今のディスク容量とか常に表示するように。

<img alt="MacBook Air 11 inch Mid 2011 unboxing C" src="http://feb19.jp/blog/images/image151c.jpg" />

Mac OS X Lion からデフォルトでは「ライブラリ」フォルダは非表示になったので、これを表示するようにします。
ターミナルを開いて

<pre><code>chflags nohidden ~/Library</code></pre>

と入力します。


<img alt="MacBook Air 11 inch Mid 2011 unboxing D" src="http://feb19.jp/blog/images/image151d.jpg" />

Mac App Store 経由で今まで使っていたソフトウェアがまるっと移行できました。

RSS リーダー、Google リーダークライアント。Read It Later とかにサクッと遅れる。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Freeder%252Fid439845554%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a5.mzstatic.com/us/r1000/063/Purple/83/b7/af/mzi.rlusgtgr.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Reeder</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ニュース<br />
価格: &#65509;850<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fpages%252Fid409201541%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a2.mzstatic.com/us/r1000/106/Purple/80/0d/b9/mzi.rdwcimlr.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Pages</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: &#65509;1,700<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fnumbers%252Fid409203825%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a4.mzstatic.com/us/r1000/079/Purple/cb/66/ba/mzi.juymhrmj.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Numbers</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: &#65509;1,700<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fkeynote%252Fid409183694%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a2.mzstatic.com/us/r1000/064/Purple/f4/ec/f4/mzi.miqiccex.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Keynote</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: &#65509;1,700<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

Xcode 4.1 for Lion は Mac App Store で落とせ、って iOS Developer Center に行ったら書いてあった
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fxcode%252Fid448457090%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a3.mzstatic.com/us/r1000/080/Purple/4d/a4/4a/mzi.wjcyaplr.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Xcode</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 開発ツール<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Faperture%252Fid408981426%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a1.mzstatic.com/us/r1000/120/Purple/a6/84/c5/mzi.dzpcgnng.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Aperture</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 写真<br />
価格: &#65509;6,900<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fmotion%252Fid434290957%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a1.mzstatic.com/us/r1000/090/Purple/55/87/2a/mzi.szlftsos.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Motion</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ビデオ<br />
価格: &#65509;4,300<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

TODO リストアプリ。なんか見た目がシャレオツ。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fwunderlist%252Fid410628904%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a5.mzstatic.com/us/r1000/115/Purple/cb/11/c6/mzi.ucuhfzgk.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Wunderlist</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

HTML5 なオーサリングツール。実際は使わないけど、参考にする。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fhype%252Fid436931759%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a5.mzstatic.com/us/r1000/074/Purple/44/5d/83/mzi.mjbxjzfm.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Hype</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: グラフィック&デザイン<br />
価格: &#65509;2,600<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

あんまりやらないけど、将棋。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fid431512351%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a5.mzstatic.com/us/r1000/110/Purple/c5/94/02/mzi.ncujcifl.60x60-50.png" width="75" style="margin-right: 6px;" /><b>桜花</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ゲーム<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

gmail クライアント。シャレオツ。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fsparrow-lite%252Fid417418059%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a5.mzstatic.com/us/r1000/057/Purple/bd/51/aa/mzi.nhwibqmn.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Sparrow Lite</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

動画のフォーマット変換。YouTube からむにゃむにゃ。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fmirovideoconverter-mvc%252Fid412699210%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a3.mzstatic.com/us/r1000/031/Purple/0b/ed/b0/mzi.mfuwriat.60x60-50.png" width="75" style="margin-right: 6px;" /><b>MiroVideoConverter (MVC)</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ビデオ<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fevernote%252Fid406056744%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a3.mzstatic.com/us/r1000/082/Purple/0f/b3/a2/mzi.wehjectn.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Evernote</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 仕事効率化<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

タイマー。
<a href="http://click.linksynergy.com/fs-bin/stat?id=CbI3zj2dr2o&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fminutes%252Fid406827163%253Fmt%253D12%2526uo%253D4%2526partnerId%253D30" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a1.mzstatic.com/us/r1000/059/Purple/f8/d2/38/mzi.rwnmlwze.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Minutes</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ライフスタイル<br />
価格: &#65509;85<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

シンプルなテキストエディタ。
<a href="http://click.linksynergy.com/fs-bin/click?id=CbI3zj2dr2o&subid=0&offerid=94348.1&type=10&tmpid=3910&RD_PARM1=http%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Ftextwrangler%2Fid404010395%3Fmt%3D12%2526uo%3D4" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a2.mzstatic.com/us/r1000/045/Purple/49/8a/ab/mzi.vjqjrgzk.60x60-50.png" width="75" style="margin-right: 6px;" /><b>TextWrangler</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 開発ツール<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<a href="http://click.linksynergy.com/fs-bin/click?id=CbI3zj2dr2o&subid=0&offerid=94348.1&type=10&tmpid=3910&RD_PARM1=http%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Ftwitter%2Fid409789998%3Fmt%3D12%2526uo%3D4" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a4.mzstatic.com/us/r1000/054/Purple/46/11/cc/mzi.fzyeykio.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Twitter</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: ソーシャルネットワーキング<br />
価格: 無料<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

スマートなウェブデザインツール。
<a href="http://click.linksynergy.com/fs-bin/click?id=CbI3zj2dr2o&subid=0&offerid=94348.1&type=10&tmpid=3910&RD_PARM1=http%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Fcoda%2Fid406001464%3Fmt%3D12%2526uo%3D4" rel="nofollow" target="_blank"><img align="left" hspace="6" src="http://a2.mzstatic.com/us/r1000/060/Purple/28/1e/a1/mzi.bdqitjho.60x60-50.png" width="75" style="margin-right: 6px;" /><b>Coda</b> <img alt="App" src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_macappstore-sm.gif" style="vertical-align: text-bottom;" /></b><br />
</a>カテゴリ: 開発ツール<br />
価格: &#65509;8,500<br clear="all" />
<img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=Dk8JKvDVYwE&bids=186984.200232&type=3&subid=0">

<img alt="MacBook Air 11 inch Mid 2011 unboxing E" src="http://feb19.jp/blog/images/image151e.jpg" />

ほかに色々入れていこう

・Firefox
・Chrome
・Cot Editor
・Adium
・Flash Player 10.3
・Production Premium CS5
・Flash Builder CS4.5
・Office 2008
・dropbox
・Skype
・QuickTime 7 <a href="http://support.apple.com/kb/DL923?viewlocale=ja_JP" target="_blank">http://support.apple.com/kb/DL923?viewlocale=ja_JP</a>
・eclipse / Android SDK →<a href="http://feb19.jp/blog/archives/000228.php">別エントリーで詳説</a>

<img alt="MacBook Air 11 inch Mid 2011 unboxing F" src="http://feb19.jp/blog/images/image151f.jpg" />

Safari で Lion のフルスクリーンがかなりいい感じですね。
トラックパッドでスイスイ画面を切り替えられる※のとか、一気に過去の OS と違うんだぜ感すごいします。
（※三本指でトラックパッドを右左になぞるとデスクトップが切り替えられる）

フルスクリーン中はドッグとか近辺にマウスカーソル持っていっても反応しないので、Launch Pad に慣れるようにしようと思いました。

<img alt="MacBook Air 11 inch Mid 2011 unboxing G" src="http://feb19.jp/blog/images/image151g.jpg" />

噂に違わぬ MacBook Air 、早いです！
既に去年からいわれているように、SSD がやっぱりすごいんだとも思いつつ、Core i7 1.8GHz が乗っているというのもあって、各種インストールも高速で、正確な時間を計った訳ではないですが、重量級の Xcode のインストールが 3 分弱で終わったりなんかしてすごい。

ファイルの読み込みも早いです。一瞬のローディングみたいなのもなく、PSD とか PDF でも Quicklook の表示をパンパン変えていけて、自炊した電子書籍とか矢印キー押しっぱなしでページがザーっと変えていけるのとかもう快適すぎます。電子書籍ビューアーに iPad 欲しかったけどこれでもうちょい我慢できそう。

<img alt="MacBook Air 11 inch Mid 2011 unboxing H" src="http://feb19.jp/blog/images/image151h.jpg" />



あとケース買いました。

<a href="http://www.amazon.co.jp/gp/product/B004H7V4AC/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B004H7V4AC"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=B004H7V4AC&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=B004H7V4AC" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
↑ moshi muse とかいうソフトケースです。丸められるので使わないときは場所がとらないのがいいですね。

<a href="http://www.amazon.co.jp/gp/product/4048708589/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4048708589"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4048708589&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=4048708589" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/B005CPUAX0/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B005CPUAX0"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=B005CPUAX0&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=B005CPUAX0" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/1430237201/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=1430237201"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=1430237201&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=1430237201" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

]]>
   </content>
</entry>
<entry>
   <title>Mac OS X Lion に Android SDK を入れる</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000228.php" />
   <id>tag:feb19.jp,2011:/blog//1.228</id>
   
   <published>2011-07-31T13:18:05Z</published>
   <updated>2011-07-31T13:34:56Z</updated>
   
   <summary> このへんはインストール作業がややこしいのでメモ。...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Technology" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="201" label="android" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="211" label="lion" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="101" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="Mac OS X Lion に Android SDK を入れる" src="http://feb19.jp/blog/images/image150.jpg" />

このへんはインストール作業がややこしいのでメモ。]]>
      <![CDATA[まず Lion には Java が入っていないので入れます。
なんか入れ方は何通りもあるそうですがとりあえず「ターミナル」を立ち上げて

<pre><code>javac -version</code></pre>

と入力するとご丁寧にインストールのダイアログが開くのでこれを実行します。

Java for Mac OS X 10.7 のダウンロードとインストールが始まります。
再度

<pre><code>javac -version</code></pre>

と叩くと、1.6.0_26 と表示されました。

これでインストールの準備 OK です。

---

Eclipse をインストールします。

Eclipse IDE for Java Developer (Indigo Cocoa 64bit) をとりあえずダウンロードします。
<a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</a>
解凍してできる eclipse ディレクトリまるまるアプリケーションディレクトリに突っ込みます。

日本語化もした方が何かと便利です。
Pleiades もとりあえずダウンロードします。
「安定版」とかいうテキストリンクをクリックしてダウンロードします。
<a href="http://mergedoc.sourceforge.jp/" target="_blank">http://mergedoc.sourceforge.jp/</a>

解凍してできる features の中の jp.sourceforge.mergedoc.pleiades ディレクトリと、
plugins の中の jp.sourceforge.mergedoc.pleiades ディレクトリをそれぞれ
eclipse ディレクトリの features と plugin に入れます。

Eclipse.app を右クリックメニュー（コンテクストメニュー）で「パッケージの中を表示」の中にある、
Contents/Mac OS/eclipse.ini
このファイルをテキストエディタとかで開いて、以下の行を加えます。

<pre><code>-javaagent:/Applications/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar</code></pre>

eclipse を初期化しつつ実行します。
ターミナルをまた開いて、

<pre><code>/Applications/eclipse/ecipse -clean</code></pre>

とたたきます。

eclipse が実行されます。

ようこそ画面とかが日本語化されてたら OK です。
次回から起動する際は eclipse.app をダブルクリックで起動で大丈夫です。

これで Eclipse のインストールは完了です。

---

次は Android SDK を入れます。

<a href="http://developer.android.com/sdk/index.html" target="_blank">http://developer.android.com/sdk/index.html</a>
Mac 用 SDK をダウンロードします。

落としてできたディレクトリの名前が長ったらしいので
Android SDK とリネームし、ホームフォルダ直下に移動します。


ヘルプ＞新規ソフトウェアのインストールで Android Developer Tool をインストールします。

作業対象に

<pre><code>https://dl-ssl.google.com/android/eclipse/</code></pre>

を入れて「追加」
ダイアログに Android Developer Tool と名前を入れて OK

しばらく待つと「開発ツール」が表示されるのでチェック入れて次へ次へ同意して次へ。
インストールを待ちます。一回確認ダイアログがでますが、承諾してインストールを続行。

インストールが完了したら、Eclipse を再起動します。


Eclipse＞環境設定を開いて Android のタブを開き、
Android SDK のルートディレクトリを指定します。
自分の場合は SDK ロケーションが
/Users/*****/Android SDK
となりました。


SDK Platform Tools コンポーネントをセットアップします。

メイン画面に戻ってツールアイコンの中に Android 君（ドロイド君？）のアイコンがあるのでクリックして Available Downloads から必要そうな SDK をインストールします。
まぁ一通りダウンロードしておきます。

ここは新型 MacBook Air だろうがそこそこ時間がかかるのでコーヒーを飲みます。
最後らへんで確認ダイアログが出るので承認します。

Virtual devices で実機がなくても確認できるように、シミュレータをセットアップすることができますので、何か作ります。

以上で完了です。

---

いまや最新は API Level 13 にもなったんですねー。
進化が早くて姪とかに会う親戚のオッサンの気分です。


ちなみにパスはあんまり通す必要も無いといえば無いのでここでは割愛しました。

すてきな Android 開発ライフを！

（iOS 差し置いて・・・）

<a href="http://www.amazon.co.jp/gp/product/4863540523/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4863540523"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4863540523&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=4863540523" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4822202968/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4822202968"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4822202968&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=4822202968" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4844329871/ref=as_li_ss_il?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4844329871"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4844329871&MarketPlace=JP&ID=AsinImage&WS=1&tag=slog0e-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=&l=as2&o=9&a=4844329871" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />


]]>
   </content>
</entry>
<entry>
   <title>Flash Player 11 Molehill の cubicCurveTo() で CSS3 の transition-timing-function: cubic-bezier() を設定するツールを作りました</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000227.php" />
   <id>tag:feb19.jp,2011:/blog//1.227</id>
   
   <published>2011-03-15T15:53:28Z</published>
   <updated>2011-03-15T23:17:35Z</updated>
   
   <summary> タイトルが謎の呪文になりつつあります。Flash Player 11...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="HTML / CSS / JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="209" label="css3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="210" label="html5" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="61" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="208" label="molehill" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="Flash Player 11 Molehill の cubicCurveTo() で CSS3 の transition-timing-function: cubic-bezier() を設定するツールを作りました" src="http://feb19.jp/blog/images/image149.jpg" />

タイトルが謎の呪文になりつつあります。Flash Player 11 がインキュベータリリースされて、3D だ！ 3D だ！と騒がれていますが、しばらくその辺に触る余裕が無いのでちょっと悲しい日々。少しでもと cubicCurveTo() を使ってみたというお話です。]]>
      <![CDATA[Flash Player 11 では Graphics.cubicCurveTo() という関数が追加されたので、Graphics.moveTo() と合わせて三次元ベジエ曲線（イラレのペンツールのベジエ曲線）が描けるようになりました。

<pre><code>this.graphics.lineStyle(0, 0xff0000);
this.graphics.moveTo(0, 0);
this.graphics.cubicCurveTo(100, 0, 0, 100, 100, 100);</code></pre>

↓実行

[Flash Player 11 のキャプチャ画像]
<img alt="Flash Player 11 のキャプチャ画像" src="http://feb19.jp/blog/images/image149a.png" />

そして CSS3 の特に webkit 系のブラウザでは -webkit-transition-timing-function: cubic-bezier(x0, y0, x1, y1); に三次元ベジエ曲線のコントロールポイント 2 点を与えると、時間と値をマトリックスにしたイージングを作る事が出来ます。(moz 系でも対応？とりあえず今 CSS3 を使う場所は iPhone/Android 限定だから調べてません。。)

まさに Flash の「モーショントゥイーン」の「イージングカーブ」ですね。

div で出来たボックスを left 0px から 100px へ移動するアニメーションだとこんな感じで設定します。

<pre><code>.box {
    position:absolute;
    background-color:red;
    top:0px;
    left:0px;
    width:50px;
    height:50px;
    -webkit-transition-property: all;
    -webkit-transition-duration: 1s;
    -webkit-transition-repeat-count: infinity;
    -webkit-transition-timing-function: cubic-bezier(0.2, 0, 0.7, 1);
}
body:hover .box {
    left: 100px;
}</code></pre>

というわけで CSS3 でアニメーション制作する場合にちょっと便利そうで、 Flash Player 11 の機能を利用したツールを作ってみたわけです。

実行には Flash Player 11 が必要です。
インキュベータリリースがダウンロードできます。
<a href="http://labs.adobe.com/downloads/flashplatformruntimes_incubator.html">http://labs.adobe.com/downloads/flashplatformruntimes_incubator.html</a>

そんなたいそれた物ではないですが、Flash の画面上でイージングベジエ曲線のコントロールポイント調整すると、自動的にオーバーレイしている赤い&lt;div&gt;ボックスのスタイル宣言が更新されて、シームレスにチェックできるツールの巻：
<iframe src="http://feb19.jp/blog/swf/cubicbeziertest/" width="401" height="300" scrolling="no"></iframe>
青いコントロールポイントを動かす事が出来ます。]]>
   </content>
</entry>
<entry>
   <title>VIM (Vi) をターミナルで操作 / Mac OS X</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000226.php" />
   <id>tag:feb19.jp,2011:/blog//1.226</id>
   
   <published>2011-02-05T16:16:13Z</published>
   <updated>2011-02-05T16:26:08Z</updated>
   
   <summary> vi で操作したりする機会がたまにあるので備忘録。...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Technology" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="101" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="207" label="terminal" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="206" label="vi" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="日本語で書かれている技術書を扱っている電子書籍書店一覧 " src="http://feb19.jp/blog/images/image148.jpg" />

vi で操作したりする機会がたまにあるので備忘録。]]>
      <![CDATA[.bash_profile にパスを書いてーとかいう話で困らないように。
<strong>vi .bash_profile</strong> で、vi のコマンドモードに移行し、<strong>a</strong> でインサートモードに入り、テキストを編集後、 <strong>Esc</strong> でコマンドモードに戻り、<strong>:wq</strong> すると編集完了。

<strong>:set number</strong> と <strong>:syntax on</strong> とか、コマンドモードで叩いておくと色々便利です。

ターミナルで、
<strong>vi readme.txt</strong>　とかで開く。コマンドモードで開始されます。

＜コマンドモード時＞
<strong>:q </strong>    終了
<strong>:qa!</strong>　保存しないで終了
<strong>:w ファイル名</strong>　編集中の内容をファイル名で保存
<strong>:wq</strong>　ファイルに保存して終了

<strong>:help</strong>　ヘルプの表示

<strong>/文字列</strong>　文字列を下へ検索
<strong>?文字列</strong>　文字列を上へ検索
<strong>n</strong>　下方向へ次を検索
<strong>N</strong>　逆方向へ次を検索

<strong>:set number</strong>　行番号を表示＜必須＞
<strong>:set no number</strong>　行番号を非表示
<strong>:set autoindent</strong> 　自動インデントモードに＜好きな人は＞
<strong>:set noautoindent</strong>　自動インデントモードモードを解除
<strong>:syntax on</strong>　シンタックスハイライトモード。キーワードをハイライトする。
<strong>:set ignorecase</strong>　検索時に、大文字小文字を区別しないようにする
<strong>:set hlsearch</strong>　検索結果をハイライト表示＜必須＞
<strong>:set incsearch</strong>　検索をインクリメンタルサーチにする

<strong>i</strong>　カーソルの左からインサートモードへ移行
<strong>I</strong>　行頭からインサートモードへ移行
<strong>a</strong>　カーソルの右からインサートモードへ移行
<strong>A</strong>　行末からインサートモードへ移行

＜インサートモード時＞
<strong>Esc</strong>　でコマンドモードに帰る／インサートモード解除]]>
   </content>
</entry>
<entry>
   <title>日本語で書かれている技術書を扱っている電子書籍書店一覧 </title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000225.php" />
   <id>tag:feb19.jp,2011:/blog//1.225</id>
   
   <published>2011-01-29T05:20:49Z</published>
   <updated>2011-01-29T06:21:36Z</updated>
   
   <summary> だんだん増えてきているみたいですね。出来ればどこでも同じ商品が買える...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Column" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="196" label="ebook" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="日本語で書かれている技術書を扱っている電子書籍書店一覧 " src="http://feb19.jp/blog/images/image147.jpg" />

だんだん増えてきているみたいですね。出来ればどこでも同じ商品が買えるといいのですが。]]>
      <![CDATA[チョイチョイフォーマットが違ったりして混沌とする電子書籍界隈ですが、どうせ「Shiori」とか「Kotoba」みたいな名前でアメリカの会社が立ち上げた革新的なフォーマットとサービスが何れ一蹴されるんじゃないかと、Windows とか iPhone とか Google とか見てると思うんですが、それを理由に勉強しないでいるわけには行かないので、重くて開き続けるのに持ち運ぶのに億劫になる技術書類、専門書類はフォーマット気にせず電子書籍で読んじゃいます。本の内容の効果がある期間に読んで、使えて、活かせれば、そして内容理解して、だいたい使えるようになったら、それでいいんです。

小説は文庫で読むのが好きですが、技術書は電子書籍、というか PC で読むほうがいいです。

<a href="http://www.oreilly.co.jp/ebook/">オライリー ebooks</a>
- <a href="http://www.oreilly.co.jp/books/9784873113876/">詳説 ActionScript 3.0</a>
- <a href="http://www.oreilly.co.jp/books/9784873114620/">iPhone/iPadゲーム開発ガイド――Objective-Cで作る2D/3Dゲーム</a>
- <a href="http://www.oreilly.co.jp/books/9784873114682/">jQueryクックブック</a>


<a href="http://www.shinanobook.com/genre/search">shinanobook.com</a>
- <a href="http://www.shinanobook.com/genre/book/356">XcodeによるObjective-C入門</a>
- <a href="http://www.shinanobook.com/genre/book/589">ActionScript 3.0による 三次元表現ガイドブック</a>
- <a href="http://www.shinanobook.com/genre/book/378">OpenCV プログラミングブック</a>

<a href="http://direct.ips.co.jp/book/Template/Promotion/pr_SubPromotionIMP.cfm?PM_No=1223">インプレスジャパン</a>
- <a href="http://direct.ips.co.jp/book/Template/Goods/go_contentimp.cfm?GM_ID=EL100027&SPM_ID=1&CM_ID=004000I01&PM_No=1140&PM_Class=N&HN_NO=00400">iPad電子書籍アプリ開発ガイドブック【PDF版】</a>
- <a href="http://direct.ips.co.jp/book/Template/Goods/go_contentMdN.cfm?GM_ID=MEL100001&CM_ID=0071000&SPM_ID=2&HN_NO=00710&PM_No=&PM_Class=">電子書籍の作り方、売り方　iPad/Kindle/PDF対応版 【PDF】</a>

<a href="http://www.magastore.jp/category/?id=12">MAGASTORE</a>
- <a href="http://www.magastore.jp/magazine/?id=64">Web Designing</a>

<a href="http://www.fujisan.co.jp/Category/800/digital">雑誌定期購読専門サイト fujisan</a>

<a href="http://www.papy.co.jp/act/static/genre2/030-053.htm">パピレス</a>

<a href="http://p.booklog.jp/">ブクログのパブー</a>
- <a href="http://p.booklog.jp/book/13565">XHTML+CSSで書く ホームページ構造デザインガイド</a>

--

英語でも OK ならちょっと大変だけど、
<a href="http://oreilly.com/ebooks/">O'Reilly Ebooks</a> が最強だと思います。DRM 無いし。安いし。]]>
   </content>
</entry>
<entry>
   <title>AS3 で bit.ly API を使う</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000224.php" />
   <id>tag:feb19.jp,2011:/blog//1.224</id>
   
   <published>2011-01-04T08:57:25Z</published>
   <updated>2011-01-04T09:11:58Z</updated>
   
   <summary> 短縮 URL 使いたかったので bit.ly 使う事にしたのです。b...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="203" label="bit.ly" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="205" label="web api" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="AS3 で bit.ly API を使う" src="http://feb19.jp/blog/images/image146.jpg" />

短縮 URL 使いたかったので bit.ly 使う事にしたのです。bit.ly は、もの凄い長い URL を短い URL に変換してくれるサービスです。Twitter / Facebook / mixi / ameba とかのつぶやき、マイクロブログへの投稿時にちょっと URL をくっ付けさせてもらうときに便利。]]>
      <![CDATA[あとわざと URL を隠蔽したいときとか。悪い事は駄目ですよ。

bit.ly 以外でも同じようなサービスは一杯有りますが、今のところここが<a href="http://jp.techcrunch.com/archives/20100603bitly-pro-data/" target="_blank">最強</a>かな。Google や Facebook、Twitter も独自で始めつつ有るみたいですが今のとこ API 無いので開発者は使えません。

--

さてそういうわけで bit.ly API ですが、最近はデコンパイルとかされるんじゃないかとかいうので、セキュリティを考えるとサーバープログラムで API キーは隠蔽したほうがいい気がしたので最終的に PHP で仲介しましたが、一応 Flash から直接 API 叩けたのでメモ。

API キーとかいうのが必要なので開発者として登録します。<a href="http://bit.ly/a/sign_up" target="_blank">ここでアカウントとって</a>、<a href="http://bit.ly/a/your_api_key" target="_blank">ここで API キーをチェック</a>します。
アカウントを取ると、自分が作った短縮 URL がどれだけクリックされたかとかのレポートを見ることができるので、開発者でなくても取っておくと面白いかも。

URL を短縮するには <a href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/v3/shorten" target="_blank">shorten</a> を使用します。

JSON.decode 使うので、<a href="https://github.com/mikechambers/as3corelib" target="_blank">as3corelib</a> を使います。
※画面右の Download から Download.zip で展開して出来た src フォルダの中身 (com フォルダ) を作成する fla と同じディレクトリに置く。
<a href="http://feb19.jp/blog/archives/000159.php">JSON について、詳しくこちらで以前解説しました</a>。

以下ソースです。

<pre><code>import com.adobe.serialization.json.JSON;
 
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
 
var urlVariables:URLVariables = new URLVariables();
urlVariables["login"] = 自分のログイン ID;
urlVariables["apiKey"] = 発行された API キー;
urlVariables["longUrl"] = "http://hogehogeho-ke-gehogehogeho";
urlVariables["format"] = "json";
 
var urlRequest:URLRequest = new URLRequest();
urlRequest.data = urlVariables;
urlRequest.method = URLRequestMethod.GET;
urlRequest.url = "http://api.bit.ly/v3/shorten";
 
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(urlRequest);
 
var shortUrl:String;
function completeHandler(event:Event):void
{
     var data:String = urlLoader.data;
     trace(data);
     var json:Object = JSON.decode(data);
     trace(json["data"]["url"]);
}</code></pre>

出力例：

<pre><code>{ "status_code": 200, "status_txt": "OK", "data": { "long_url": "http:\/\/hogehogeho-ke-gehogehogeho", "url": "http:\/\/bit.ly\/gA1aNc", "hash": "gA1aNc", "global_hash": "ifJ1Wn", "new_hash": 1 } }
http:\/\/bit.ly\/gA1aNc</code></pre>

XML と同じで普通に URLLoader で load するだけです。JSON で分解しておしまい。

参考：
<a href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation" target="_blank">bit.ly API 一覧</a>]]>
   </content>
</entry>
<entry>
   <title>次世代 Flash Builder (Burrito) プレビュー版を触ってみた</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000223.php" />
   <id>tag:feb19.jp,2010:/blog//1.223</id>
   
   <published>2010-10-27T00:52:49Z</published>
   <updated>2010-10-29T02:45:09Z</updated>
   
   <summary> 次世代 Flash Builder &quot;Burrito&quot; のプレビュー...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="4" label="adobe" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="110" label="air" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="201" label="android" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="200" label="burrito" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="195" label="flash builder" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="46" label="flex" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="次世代 Flash Builder (Burrito) プレビュー版を触ってみた" src="http://feb19.jp/blog/images/image145.jpg" />

次世代 Flash Builder "Burrito" のプレビュー版が公開されていました。60日間は体験版として利用できるようですが、Flash Builder 4 (Standard でも Premium でもいい) を持っている人は、そのシリアルを入れれば、プレビュー版（しかも Premium）の使用期限を延長して使い続けられるようなので使ってみる事にします。]]>
      <![CDATA[<a href="https://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5Fflashbuilder%5Fburrito" target="_blank">Adobe Labs の Burrito のページからダウンロードできます</a>。ダウンロード後インストーラーが立ち上がって Flash Builder 4 のシリアルを入れるところがでてきます。

Web Premium CS5 とか Master Collection CS5 を持っている人は拡張シリアル番号を要求するページへリンクできるので、そこから Burrito をシリアル番号貰えるっぽいです。ちなみに行ってみたらまだ今すぐは要求できず、 11/21 以降（アメリカ時間？）から要求できるっぽいです。イマイチ分かりませんが。。

<img alt="次世代 Flash Builder (Burrito) プレビュー版容量" src="http://feb19.jp/blog/images/image145a.jpg" />

766MB 必要でした。

--

実際に Mac OS X 版を動かしてみたところ、Mac 版 eclipse 3.6 の Cocoa 32 bit ベースになっているからでしょうか(64bit ではないです) 。起動が体感かなり早くなっていました。

モバイルアプリケーション開発プロジェクトを軽く作ってみたのですが、今のところターゲットプラットフォームは Android しか選べませんでした。Windows Mobile とか Black Berry も後々対応するそうです。iOS は流石に予定に無いのかなw　まぁもう Objective-C 割と使えるようになったので問題ないけど。。。


新規「Flex モバイルアプリケーションプロジェクト」で、とりあえず作ってみました。Flex SDK は Flex Hero とかいう見知らぬバージョンしか選べないようですが、Burrito を入れたときに既に入っていた様子。

Android デバイスを接続せずに実行ボタンを押すと、「起動方法を選べや」というダイアログが出るので「デスクトップ上」を選択し、プルダウンメニューから好きなデバイスを選びます。選べるデバイスはこちら。どれでもいいので選びます。

<img alt="次世代 Flash Builder (Burrito) プレビュー版でシミュレートできるデバイス一覧" src="http://feb19.jp/blog/images/image145b.jpg" />

Xperia とか IS03 とかあるわけ無いっすね。。後々出てくる事を期待したいですが、AIR が動くのが Android OS 2.2 からなので、まだまだ先になりそう。次世代 Flash Builder が発売されるぐらいまでに 2.2 とかになってくれていればいいのですが。ということを考えないといけないと思うと、やっぱり Android アプリ開発は、特に Flasher には、まだまだ国内では HTC Desire 一択って感じがします。逆に言えば、もう少し経たないと AIR for Android は流行らないということか。。

実行すると、こんな感じで adl （AIR Debug Launcher）が立ち上がります。

<img alt="次世代 Flash Builder (Burrito) プレビュー版 で Flex モバイルアプリケーションを実行" src="http://feb19.jp/blog/images/image145c.jpg" />

画面を回転させることもできます。（回転できないアプリケーションにすることももちろんできます）

<img alt="次世代 Flash Builder (Burrito) プレビュー版 で Flex モバイルアプリケーションを実行2" src="http://feb19.jp/blog/images/image145d.jpg" />


SWF とか普通に動かせるのでちょっと感動。開発も思いのほか快適なのでちょっと楽しいです。eclipse で Java で作るより快適。eclipse に Android SDK 通して、エミュレータ起動したときのあのもっさり感とは無縁です。

もうこりゃ Android アプリ作るなら Flash Builder （っていうか AIR）かなーって思うぐらい快適。Flash でデザインした SWF を stage.scaleMode = StageScaleMode.SHOW_ALL とかしたらそのままほぼ全機種対応でき。。はしないけど。。難しかったデザインの凝った UI とか、アニメーションでの演出とかもかなりやりやすくなる。

ようやく Flash Player 10.1 から搭載されたモバイル系 API が活用されていくときが来た気がします。Windows 7 でのマルチタッチ API ってなんだったんだ。

それにしても今開催されている MAX 2010 では、来場者全員に Adobe と協賛の Motorola から Android の最新端末 <a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/Motorola-DROID-2-US-EN" target="_blank">Droid 2</a> (Android 2.2)がプレゼントされたらしい。うらやましい！！

--

新機能とかは下記のページにまとまっていました。

Flash Builder "Burrito" プレビュー版公開 - akihiro kamijo
<a href="http://cuaoar.jp/2010/10/flash-builder-burrito-1.html" target="_blank">http://cuaoar.jp/2010/10/flash-builder-burrito-1.html</a>

Flash Builder "Burrito" 情報 - akihiro kamijo
<a href="http://cuaoar.jp/2010/10/flash-builder-burrito.html" target="_blank">http://cuaoar.jp/2010/10/flash-builder-burrito.html</a>
<a href="http://cuaoar.jp/2010/10/flash-builder-burrito-2.html" target="_blank">http://cuaoar.jp/2010/10/flash-builder-burrito-2.html</a>

Flash Builderの次期バージョン「Burrito」の新機能
<a href="http://www.adobe.com/jp/joc/devnet/flex/articles/whatsnew_flashbuilder_burrito.html" target="_blank">http://www.adobe.com/jp/joc/devnet/flex/articles/whatsnew_flashbuilder_burrito.html</a>

[Adobe MAX 2010] Flash Builder次期バージョン「Burrito」の新機能を3分でおさらい！ | エントリー | _level0.KAYAC | flash ActionScript blog
<a href="http://level0.kayac.com/2010/10/adobemax2010_burrito.php" target="_blank">http://level0.kayac.com/2010/10/adobemax2010_burrito.php</a>

-- 

Flex Developer Center に Burrito が使用されている映像チュートリアルが追加されていました。
<a href="http://www.adobe.com/devnet/flex.html" target="_blank">http://www.adobe.com/devnet/flex.html</a>
ここの Flex Test Drive for Mobile をクリックして、Contents のところから Flex Test Drive for Mobile の各チュートリアルを見る事ができます。

一時間でモバイルアプリケーションを作ってみたシリーズ
Flex Test Drive for Mobile: Build a mobile application in an hour

<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_1_1.html" target="_blank">インターフェースを作る</a>
<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_1_2.html" target="_blank">データに接続する</a>
<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_1_3.html" target="_blank">View を作り込む</a>
<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_1_4.html" target="_blank">デバイスで動かす</a>

Android 用にパッケージする
Flex Test Drive for Mobile: Deploy the application

<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_4_1.html" target="_blank">アプリケーションをビルドする</a>
デバイスに転送して動かす は、 Coming Soon でした。]]>
   </content>
</entry>
<entry>
   <title>AS3 で GoF デザインパターン [00] - 目次</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000199.php" />
   <id>tag:feb19.jp,2010:/blog//1.199</id>
   
   <published>2010-10-15T07:26:44Z</published>
   <updated>2010-10-24T15:40:24Z</updated>
   
   <summary> 以前、ちょっと思い立ってチマチマ「GoF による 23 のデザインパ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="199" label="gof" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="ActionScript 3.0 で Gang of Four デザインパターン [00] - 目次" src="http://feb19.jp/blog/images/image121.jpg" />

以前、ちょっと思い立ってチマチマ「GoF による 23 のデザインパターン」を勉強していました。Evernote にメモしてありましたがメモが増えすぎたのでブログへ吐き出し連投(23回＋目次)します。]]>
      <![CDATA[目的が構造、生成、振る舞いのどれに適用されるかで分類され、さらに適用される範囲がクラスかオブジェクトかで分類されるらしいですが、どれが便利でどれが必修でとか効率よく勉強したいところですが、よく分からないのでしらみつぶしに見ていくことにしてみました。
 
主にプログラミング本100選にも選ばれた名著「<a href="http://www.amazon.co.jp/gp/product/4797327030?ie=UTF8&tag=slog0e-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4797327030">増補改訂版Java言語で学ぶデザインパターン入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=slog0e-22&l=as2&o=9&a=4797327030" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />」を参考にしながら、AS3 で書くとどうなるかとか、Flash ならでのはの使い道とか、考えながらサンプルコードを書いていこうと思いましたが、Flash ならではで書きすぎると本筋とは違う無駄な実装コードが増えるので、あえて省いて何かのチェックポイントで trace() だけしているものがほとんどです。いくつかは Shape とか BlurFilter とかグラフィックを用いたものもありますが。
 
Action Script 3.0 デザインパターンの勉強を通して感じたのが「インタフェースを活用してプログラミングする」ということで、オブジェクト指向を活かすプログラミング――抽象化や、カプセル化や、ポリモーフィズムするという事なんだと思います。そのコンセプトを形にしていく上で登場してきた伝統的なテクニックであるという事を感じました。
 
「このパターンはこういう時に便利」ということで広まったのだと思いますが、構造が大げさ過ぎるとか、オーバーヘッド高過ぎるとか、正直これ何に使うのと思うパターンもあります。オブジェクト指向の考え方を知るために学ぶという感じがいいのかもしれません。
 
 
＜目次＞
 
01. <a href="http://feb19.jp/blog/archives/000200.php">Iterator パターン</a>　<繰り返し処理を行う時のパターン>
02. <a href="http://feb19.jp/blog/archives/000201.php">Adapter パターン</a>　<インターフェースの変換を行う時のパターン>
03. <a href="http://feb19.jp/blog/archives/000202.php">Template Method パターン</a>　＜処理をサブクラスにまかせるパターン＞
04. <a href="http://feb19.jp/blog/archives/000203.php">Factory Method パターン</a>　＜インスタンスの生成をサブクラスにまかせるパターン＞
05. <a href="http://feb19.jp/blog/archives/000204.php">Singleton パターン</a>　＜インスタンスを一つだけ作るパターン＞
06. <a href="http://feb19.jp/blog/archives/000205.php">Prototype パターン</a>　＜コピーされたインスタンスを作るパターン＞
07. <a href="http://feb19.jp/blog/archives/000206.php">Builder パターン</a>　＜複雑なインスタンスを組み立てるパターン＞
08. <a href="http://feb19.jp/blog/archives/000207.php">Abstract Factory パターン</a>　＜関連する部品を組み合わせてインスタンスを作るパターン＞
09. <a href="http://feb19.jp/blog/archives/000208.php">Bridge パターン</a>　＜機能の階層と実装の階層を分けて考えるパターン＞
10. <a href="http://feb19.jp/blog/archives/000209.php">Strategy パターン</a>　＜アルゴリズムを切り替えるパターン＞
11. <a href="http://feb19.jp/blog/archives/000210.php">Composite パターン</a>　＜容器と中身を同一視するパターン＞
12. <a href="http://feb19.jp/blog/archives/000211.php">Decorator パターン</a>　＜飾り枠と中身を同一視するパターン＞
13. <a href="http://feb19.jp/blog/archives/000212.php">Visitor パターン</a>　＜構造を渡り歩きながら仕事をするパターン＞
14. <a href="http://feb19.jp/blog/archives/000213.php">Chain of Responsibility パターン</a>　＜責任をなすりつけあっていくパターン＞
15. <a href="http://feb19.jp/blog/archives/000214.php">Facade パターン</a>　＜窓口をシンプルにするパターン＞
16. <a href="http://feb19.jp/blog/archives/000215.php">Mediator パターン</a>　＜相談役を一人にするパターン＞
17. <a href="http://feb19.jp/blog/archives/000216.php">Observer パターン</a>　＜状態変化を通知するパターン＞
18. <a href="http://feb19.jp/blog/archives/000217.php">Memento パターン</a>　＜状態を保存するパターン＞
19. <a href="http://feb19.jp/blog/archives/000218.php">State パターン</a>　＜状態をクラスとして表すパターン＞
20. <a href="http://feb19.jp/blog/archives/000219.php">Flyweight パターン</a>　＜同じ物を共有して無駄をなくすパターン＞
21. <a href="http://feb19.jp/blog/archives/000220.php">Proxy パターン</a>　＜必要になってから作るパターン＞
22. <a href="http://feb19.jp/blog/archives/000221.php">Command パターン</a>　＜命令をクラスにするパターン＞
23. <a href="http://feb19.jp/blog/archives/000222.php">Interpreter パターン</a>　＜文法規則をクラスで表すパターン＞


 
 
参考にした書籍、サイト

増補改訂版Java言語で学ぶデザインパターン入門
<a href="http://www.hyuki.com/dp/" target="_blank">http://www.hyuki.com/dp/</a>
 
サルでもわかる 逆引きデザインパターン
<a href="http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html" target="_blank">http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html</a>
 
デザインパターン編　トップページ
<a href="http://www.geocities.jp/ky_webid/design_pattern/index.html" target="_blank">http://www.geocities.jp/ky_webid/design_pattern/index.html</a>
 
デザインパターンを読み解く
<a href="http://www.happiese.com/system/dpattern.html" target="_blank">http://www.happiese.com/system/dpattern.html</a>

Togetter - 「デザパタ140文字」
<a href="http://togetter.com/li/15991" target="_blank">http://togetter.com/li/15991</a>
 
ほかいろいろあったと思います。


あとこのシリーズは僕の好きな画家、<a href="http://www.google.co.jp/images?client=safari&rls=en&q=%E3%82%B8%E3%83%A7%E3%83%B3%EF%BC%9D%E3%82%A2%E3%83%88%E3%82%AD%E3%83%B3%E3%82%BD%E3%83%B3%EF%BC%9D%E3%82%B0%E3%83%AA%E3%83%A0%E3%82%B7%E3%83%A7%E3%83%BC&oe=UTF-8&redir_esc=&um=1&ie=UTF-8&source=og&sa=N&hl=ja&tab=wi&biw=1127&bih=794" target="_blank">グリムショー</a>の絵をイメージ絵として使わせていただきました。]]>
   </content>
</entry>
<entry>
   <title>AS3 で GoF デザインパターン [23] - Interpreter</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000222.php" />
   <id>tag:feb19.jp,2010:/blog//1.222</id>
   
   <published>2010-10-15T07:23:55Z</published>
   <updated>2010-10-15T07:26:50Z</updated>
   
   <summary> ツリー構造で構文解析結果を表す際に使用されます。が、何に使うのかはイ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="199" label="gof" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="ActionScript 3.0 で Gang of Four デザインパターン [23] - Interpreter パターン" src="http://feb19.jp/blog/images/image144.jpg" />

ツリー構造で構文解析結果を表す際に使用されます。が、何に使うのかはイマイチよくわかりません。]]>
      <![CDATA[例えば "1+2*3" という文字列を AS3 に解釈させて 7 を算出させるために使うそうです。

1+2*3 は、 123*+ という書き方にできます。これは逆ポーランド記法といい、一旦この記法に変換した後に、数値と演算子を判別しながら処理していきます。

<pre><code>Interpreter.as
package jp.feb19.gof.interpreter
{
	public class Interpreter
	{
		public function Interpreter()
		{
		}
		
		public function precedence(a:String, b:String):Boolean
		{
			var high:String = "*/";
			var low:String  = "+-";
			if (a == "(") return false;
			if (a == ")" &amp;&amp; b == "(") return false;
			if (b == "(") return false;
			if (b == ")") return true;
			if (high.indexOf(a) &gt; -1 && low.indexOf(b) &gt; -1) return true;
			if (high.indexOf(a) &gt; -1 && high.indexOf(b) &gt; -1) return true;
			if (low.indexOf(a) &gt; -1 && low.indexOf(b) &gt; -1) return true;
			return false;
		}
		
		public function convertToPostfix( value:String ):String
		{
			var stString:StackString = new StackString();
			var result:String = "";
			var operator:String = "+-*/()";
			var topsym:String = "+";
			var isEmpty:Boolean = false;
			
			for (var i:int = 0; i &lt; value.length; i++)
			{
				if (operator.indexOf(value.charAt(i)) == -1)
				{
					result += value.charAt(i);
				}
				else
				{
					while ( !(isEmpty = stString.isEmpty()) &amp;&amp;
						precedence(topsym = stString.pop(), value.charAt(i)) )
					{
						result += topsym;
					}
					if ( !isEmpty )
						stString.push( topsym );
					if ( isEmpty || value.charAt(i) != ")" )
						stString.push( value.charAt(i) );
					else
						topsym = stString.pop();
				}
			}
			while( !stString.isEmpty() )
				result += stString.pop();
			
			return result;
		}
		
		public function evaluate( value:String ):Number
		{
			var stNumber:StackNumber = new StackNumber();
			var operator:String = "+-*/";
			var a:Number = 0;
			var b:Number = 0;
			for (var i:int = 0; i &lt;value.length; i++)
			{
				if (operator.indexOf( value.charAt(i) ) == -1)
				{
					stNumber.push(Number(value.charAt(i)));
				}
				else
				{
					b = stNumber.pop();
					a = stNumber.pop();
					switch(value.charAt(i))
					{
						case "+": a = a + b; break;
						case "-": a = a - b; break;
						case "*": a = a * b; break;
						case "/": a = a / b; break;
					}
					stNumber.push( a );
				}
			}
			
			return stNumber.pop();
		}
	}
}</code></pre>

<pre><code>StackNumber.as
package jp.feb19.gof.interpreter
{
	public class StackNumber
	{
		private var _stack:Array;
		private var _sp:int;
		
		public function StackNumber()
		{
			_sp = -1;
			_stack = [];
		}
		
		public function push(num:Number):void
		{
			_stack[++_sp] = num;
		}
		
		public function pop():Number
		{
			return (isEmpty()) ? 0 : _stack[_sp--];
		}
		
		public function isEmpty():Boolean
		{
			return _sp &lt;= -1;
		}
	}
}</code></pre>

<pre><code>StackString.as
package jp.feb19.gof.interpreter
{
	public class StackString
	{
		private var _stack:Array;
		private var _sp:int;
		
		public function StackString()
		{
			_sp = -1;
			_stack = [];
		}
		
		public function push(str:String):void
		{
			_stack[++_sp] = str;
		}
		
		public function pop():String
		{
			return (isEmpty()) ? "" : _stack[_sp--];
		}
		
		public function isEmpty():Boolean
		{
			return _sp &lt;= -1;
		}
	}
}</code></pre>

テストクラス

<pre><code>InterpreterTest.as
package jp.feb19.gof.interpreter
{
	import flash.display.Sprite;
	
	public class InterpreterTest extends Sprite
	{
		public function InterpreterTest()
		{
			super();
			
			var input:String = "1+2*3";
			trace(input);
			var interpreter:Interpreter = new Interpreter();
			var postfix:String = interpreter.convertToPostfix(input);
			trace(postfix);
			var result:Number = interpreter.evaluate(postfix);
			trace(result);
		}
	}
}</code></pre>

出力

<pre><code>1+2*3
123*+
7</code></pre>

オリジナルプログラミング言語とか作るときに使ったりするそうです。電卓とか作ったりするときにも使えるかも。あとはプログラミンみたいなサイトを作るときとか？

SQL 文も逆ポーラン記法的らしくて、文は Interpreter で読まれているそうです。]]>
   </content>
</entry>
<entry>
   <title>AS3 で GoF デザインパターン [22] - Command</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000221.php" />
   <id>tag:feb19.jp,2010:/blog//1.221</id>
   
   <published>2010-10-15T03:24:11Z</published>
   <updated>2010-10-15T03:41:44Z</updated>
   
   <summary> 命令一つ一つをクラスにすることで、まずコードが読みやすくなったり、処...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="199" label="gof" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="ActionScript 3.0 で Gang of Four デザインパターン [22] - Command パターン" src="http://feb19.jp/blog/images/image143.jpg" />

命令一つ一つをクラスにすることで、まずコードが読みやすくなったり、処理を後で実行したり、ログを取ったり、やり直したり、ロードを待ったりできます。命令をキュー的に実行して、redo / undo の対応もできたりします。]]>
      <![CDATA[Progression にも SerialList というクラスがありますが、これがまさに Command パターンに基づいています。多分。それと Command パターンの発展系として Thread ライブラリ（そうめん）があります。

ほかにも Command パターンをベースにしたライブラリはいくつかありますが、Command パターンのこの仕組みが便利というよりかは、ポリモーフィズムをコンセプトにしているってことが肝なんだと思います。

<pre><code>Command.as
package jp.feb19.gof.command
{
	public class Command
	{
		public function Command()
		{
		}
		
		public function execute():void
		{
			
		}
		
		public function unexecute():void
		{
			
		}
	}
}</code></pre>

<pre><code>Calculator.as
package jp.feb19.gof.command
{
	public class Calculator	//Receiver
	{
		private var _curr:int = 0;
		
		public function Calculator()
		{
			
		}
		
		public function operation(operator:String, operand:int):void
		{
			switch(operator)
			{
				case "+":	_curr += operand;	break;
				case "-":	_curr -= operand;	break;
				case "*":	_curr *= operand;	break;
				case "/":	_curr /= operand;	break;
			}
			
			trace("current value=" + _curr + " (" + operator + " " + operand + ")");
		}
	}
}</code></pre>

<pre><code>Invoker.as
package jp.feb19.gof.command
{
	public class Invoker
	{
		private var _calculator:Calculator;
		private var _commands:Array;
		private var _current:int;
		
		public function Invoker()
		{
			_calculator = new Calculator();
			_commands = [];
			_current = 0;
		}
		
		public function redo(levels:int):void
		{
			trace(levels + "回リドゥ");
			for (var i:int = 0; i &lt; levels; i++)
			{
				if (_current &lt; _commands.length - 1)
				{
					var command:Command = _commands[_current++];
					command.execute();
				}
			}
		}
		
		public function undo(levels:int):void
		{
			trace(levels + "回アンドゥ");
			for (var i:int = 0; i &lt; levels; i++)
			{
				if (_current &gt; 0)
				{
					var command:Command = _commands[--_current] as Command;
					command.unexecute();
				}
			}
		}
		
		public function compute(operator:String, operand:int):void
		{
			var command:Command = new CalculatorCommand(_calculator, operator, operand);
			command.execute();
			
			_commands.push(command);
			_current++;
		}
	}
}</code></pre>

Command サブクラス。
コマンド？→けいさん　的な。

<pre><code>CalculatorCommand.as
package jp.feb19.gof.command
{
	public class CalculatorCommand extends Command	// ConcreteCommand
	{
		private var _calculator:Calculator;
		private var _operator:String;
		private var _operand:int;
		
		public function CalculatorCommand(calculator:Calculator, operator:String, operand:int)
		{
			_calculator = calculator;
			_operator = operator;
			_operand = operand;
			
			super();
		}
		
		public function set operator(value:String):void
		{
			_operator = value;
		}
		
		public function set operand(value:int):void
		{
			_operand = value;
		}
		
		override public function execute():void
		{
			_calculator.operation(_operator, _operand);
		}
		
		override public function unexecute():void
		{
			_calculator.operation(undo(_operator), _operand);
		}
		
		private function undo(value:String):String
		{
			switch(value)
			{
				case "+":	return "-";
				case "-":	return "+";
				case "*":	return "/";
				case "/":	return "*";
				default:	throw new ArgumentError("演算子エラー: " + value);
			}
		}
	}
}</code></pre>

テストクラス

<pre><code>CommandTest.as
package jp.feb19.gof.command
{
	import flash.display.Sprite;
	
	public class CommandTest extends Sprite
	{
		public function CommandTest()
		{
			super();
			
			var invoker:Invoker = new Invoker();
			
			invoker.compute("+", 100);
			invoker.compute("-", 30);
			invoker.compute("*", 50);
			invoker.compute("/", 4);
			
			invoker.undo(4);
			
			invoker.redo(3);
		}
	}
}</code></pre>

出力

<pre><code>current value=100 (+ 100)
current value=70 (- 30)
current value=3500 (* 50)
current value=875 (/ 4)
4回アンドゥ
current value=3500 (* 4)
current value=70 (/ 50)
current value=100 (+ 30)
current value=0 (- 100)
3回リドゥ
current value=100 (+ 100)
current value=70 (- 30)
current value=3500 (* 50)</code></pre>

非同期処理の連続実行とかは Command パターンでキュー的に実行すると比較的楽なので、いいと思うのですが、何でもかんでもコマンドにしようというのは、結局オーバーヘッドを大きくすることにつながっている部分もありそうなので、便利な所を使っていくのがいいのじゃないかなぁとか思っています。]]>
   </content>
</entry>
<entry>
   <title>AS3 で GoF デザインパターン [21] - Proxy</title>
   <link rel="alternate" type="text/html" href="http://feb19.jp/blog/archives/000220.php" />
   <id>tag:feb19.jp,2010:/blog//1.220</id>
   
   <published>2010-10-15T03:19:57Z</published>
   <updated>2010-10-15T03:30:37Z</updated>
   
   <summary> インスタンスは必要になってから作るようにする事で無駄をなくす事を目指...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="Flash / ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="89" label="as3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="15" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="199" label="gof" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://feb19.jp/blog/">
      <![CDATA[<img alt="ActionScript 3.0 で Gang of Four デザインパターン [21] - Proxy パターン" src="http://feb19.jp/blog/images/image142.jpg" />

インスタンスは必要になってから作るようにする事で無駄をなくす事を目指したパターンです。]]>
      <![CDATA[あるクラスのふりをした別のクラスが先にメソッドを受け取って、加工して、本来のクラスに渡すようにします。

クラス構造とか見てると普通にポリモーフィズムしてるだけじゃん？とか思ったりもしますが、 Flash の Loader がこのパターンに該当していて、 load する前に addChiild できるところとかこんな感じらしいです。

<pre><code>ISecurity.as
package jp.feb19.gof.proxy
{
	public interface ISecurity
	{
		function login():void;
	}
}</code></pre>

ISecurity 実装クラス

<pre><code>ProxyLogin.as
package jp.feb19.gof.proxy
{
	public class ProxyLogin implements ISecurity
	{
		private var _username:String;
		private var _loggedIn:ISecurity;
		
		public function ProxyLogin(username:String)
		{
			_username = username;
		}
		
		public function login():void
		{
			if (_loggedIn == null)
			{
				_loggedIn = new RealLogin(_username);
			}
			_loggedIn.login();
		}
	}
}</code></pre>

<pre><code>RealLogin.as
package jp.feb19.gof.proxy
{
	public class RealLogin implements ISecurity
	{
		private var _username:String;
		
		public function RealLogin(username:String)
		{
			_username = username;
			
			trace(_username + " をログインします");
		}
		
		public function login():void
		{
			trace("ログイン済み: " + _username);
		}
	}
}</code></pre>

テストクラス。

<pre><code>ProxyTest.as
package jp.feb19.gof.proxy
{
	import flash.display.Sprite;
	
	public class ProxyTest extends Sprite
	{
		public function ProxyTest()
		{
			super();
			
			var user1:ISecurity = new ProxyLogin("user1");
			var user2:ISecurity = new ProxyLogin("user2");
			var user3:ISecurity = new ProxyLogin("user3");
			
			user1.login();
			user2.login();
			user2.login();
			user3.login();
			user2.login();
			
		}
	}
}</code></pre>

出力

<pre><code>user1 をログインします
ログイン済み: user1
user2 をログインします
ログイン済み: user2
ログイン済み: user2
user3 をログインします
ログイン済み: user3
ログイン済み: user2</code></pre>

正直あんまりよくわかりませんでした。インターフェースでプログラミングして隠蔽するって言う事なんだと思います。別のパターンでもそういうことだし。
]]>
   </content>
</entry>

</feed>

