2007.11.06
category
comments

Adobe MAX Japan 2007(2日目)

dsc_1084.JPG

2日目のセッションはこちら。

S-3 アドビシステムズが考える未来に向けたテクノロジーの可能性と日本市場に対しての展望
A-5 Adobe AIR APIの使い方
C-6 インタラクションデザインの実際:アイデアの開発
D-7 ActionScript3.0とインタラクティブデザイン
D-8 FlexBuilderで使いこなす、ActionScript3.0~最適化とプロファイリング
S-4 スペシャルイベント:スゴロクアワード 表彰式

tha中村さんのセッションでは過去の作品や実験、アイデアから実案件につながっていく話を聞かせてもらいました。当時やってた試みを振り返ってみて、あれ使えるんじゃないか的に再度掘り起こしてみるそうです。使っていて楽しい、気持ちよい感覚を徹底的に表現することで10年前の作品を見ていてもいろんな意味で新鮮さがありました。またどのサイトも説明ぽくなっておらず、触れる事で分かる楽しさがあります。あー、なるほどねと。「前後で認識が変わる感覚」という言葉が印象的でした。あとジャイルみたいなコンセプチュアルな表現も人になかなか説明しづらいんだけど、うまい具合にビジュアル化されてて神秘的な世界観をじっと見ちゃう感覚に襲われます。そもそも自分みたいに説明しようと先走る時点でダメなんですね、はい。

同じくthaの深津さんのセッションでは表現を実現するまでのスタディを紹介してもらいました。ジャイルの渦巻きタイポの初期バージョンとか。挙動単位でクラス作ってパラメータやパスURLはXMLで全て外部化。こうすることで派生バージョンの管理をXMLの差し替えだけでできるようになる。このXMLにはかなり細かい動作のパラメータが書かれてました。(何秒間表示するか、パーティクルの数、フラグとか)表示や演出に関してのクラスは案件ごとに使い捨てらしい。すごい。+39さんのセッションでも思ったけど自分の作り方にもう涙目。

2007.11.03
category
comments

Adobe MAX Japan 2007(1日目)

dsc_1074.JPG

行ってきました、AdobeMAX。1日目の選択セッションはこちら。まとめレポートはいろんなブログで詳しく書かれているので、特にインパクトの強かったセッションだけを抜粋。

S-1 あらゆるユーザのアイデアや情報との関わり方に改革をもたらすアドビプラットフォームテクノロジーの現在
D-1 ニコニコ動画とFlash
E-2 Flashによる3D空間の創造とメカニズム
D-3 Flash Lite3.0で広がるモバイルコンテンツの世界
C-4 AS3だけじゃない!まだまだいけるぞAS1/2!
S-2 Technology Sneak Peak

まずはROXIKの城戸さんのセッション。これはプレゼン用のFlashからしてすごかった。軽く引きました。PICTAPSのような100体以上のキャラクターが3D空間を人文字のように整列してスライドの文章を表していました。その動きも走るアニメーションからその場でジャンプしたりと個々に設定されていて、Wiiの似顔絵チャンネルの広場みたいな感じ。内容は現在進行中の仕事の紹介や、制作の一連の流れをデモとして見せてくれました。FlashとLightWaveとFireworksを同時に立ち上げて制作するそうです。LightWaveでポリゴンの形を作って、Fireworksでテクスチャを作る。これらの作業の変更内容がリアルタイムにFlashのswfに反映されてました。(swfは開きっぱなしの状態で!)その後、2Dと3Dの違いや座標変換の仕組みについてなど。Papervision3Dなどのフレームワークは使わないで、ゼロから自作でコードを書くことをお勧めしますと言ってました。またWebでの3D表現の世界はまだ始まっていないらしく、今勉強しておくことは将来必ず自分のためになると。仕組みも分からずフレームワークに頼ると、どこかで破綻して思い通りの気持ちよい動きは実装できないという事らしい。確かにPapervision3D使うと、なんとなく動くけど細かい制御をしようと思うと途端にコードが書けなくなってしまう。これには納得。自作3Dクラスに挑戦してみようかなと思った。

次はKARATE SYSTEM+39さんのセッション。ここでは主に社内で使っている独自フレームワークの紹介とMVCの概念について。正直ハイレベルすぎてついて行けませんでした。設計方法に衝撃。200~500行くらいのボリュームでクラスを細かく作る。1案件で100個くらい。基本処理の「Model」、表示の「View」、ViewとModelを制御する「Controller」の組み合わせで処理する。ASについては独学でやってきてるので他人の書き方や構造について聞けると非常に参考になる。MVCの考え方については勉強になったし、大きな収穫だった。これも勉強してみよう。

2007.10.20
category
comments

waterを見てきた

dsc_1027.jpg

佐藤卓ディレクションの「water」を見に21_21に行ってきた。水にまつわる様々な作品が展示してあった。プロジェクターから床に投影された映像を足で踏むと水たまりのように波打ったり、超撥水素材の皿に水滴を落として不思議体験ができるなど。特にMETAPHORさんの作品はさすがWebっぽいアプローチで楽しめました。ネットから瞬時にキーワード検索で画像を引っぱり出し、フォトビューワーのように表現されてた。展示は子供から大人まで幅広い年齢層が水と遊んでいた姿が印象的だった。

2007.10.06
category
comments

INFOBAR2を見てきた

dsc_0925.jpg

原宿にあるKDDIデザイニングスタジオに行ってきた。歴代のコンセプトモデルと一緒に「INFOBAR2」も展示してありました。一番気になっていたグリーンのモックは思ってた以上に黄緑っぽくて良い感じ。この色だけ「MEDIA SKIN」みたいに塗装表面が少しボコボコしてて、ちょっと特別扱いなのか。ストレート端末だけあって縦に長過ぎるけど厚みは許容範囲かな。10/31(水)から先行展示イベントをやるみたいで、そのタイミングでは実機が触れるとのこと。結構欲しいかもなので要検討。

2007.10.05
category
comments

QueueLoaderを使って複数画像をまとめて読み込む

QueueLoaderを使うとCASAのGroupLoadみたいに複数の画像やswf、mp3をまとめて読み込むことが出来る。簡単に説明すると、_oLoaderにaddItem()で画像等を追加した後、まとめて_oLoader.execute()で読み込みを実行するだけ。このクラスの中では各画像の読み込みを「アイテム」、トータルの読み込みを「キュー」と定義しているみたい。

_oLoader.addItem()の第1引数は画像のパス、第2引数は読込み先のオブジェクト、そして第3引数はtitleというプロパティの値を設定できる。クラス内部を見てみるとtitleというプロパティだけが存在していたので他のプロパティは付け加えられないように設計されてるようだ。ということは、この値を使って各画像のローディング状態を読込み先のムービークリップに渡してローディングバーとかに反映できるのか。これは使える。

ACTIONSCRIPT:
import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

//-----[初期設定]
var _oLoader:QueueLoader = new QueueLoader();
var imageNum:uint = 4;

//-----[読込画像を追加]
for(var i:uint = 0; i<imageNum; i++)
{   
    var image:Sprite = new Sprite();
    image.x += 10;
    addChild(image);
   
    _oLoader.addItem("images/"+i+".jpg", image, {title:"Image "+i});
}

//-----[イベントリスナーの登録]
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_START, onItemStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_PROGRESS, onItemProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_INIT, onItemInit, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_ERROR, onItemError,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit, false, 0, true);

//-----[読込の開始]
_oLoader.execute();

function onQueueStart(event:QueueLoaderEvent):void
{
    trace("キューの読込開始");
}

function onItemStart(event:QueueLoaderEvent):void
{
    trace(event.title);
    trace("アイテムの読込開始");
}

function onItemProgress(event:QueueLoaderEvent):void
{
    trace("アイテムの読込中: "+Math.round(event.percentage * 100)+ "%");
}

function onQueueProgress(event:QueueLoaderEvent):void
{
    trace("キューの読込中: "+Math.round(event.queuepercentage * 100)+ "%");
}

function onItemInit(event:QueueLoaderEvent):void
{
    trace("アイテムの読込完了");
}

function onItemError(event:QueueLoaderEvent):void
{
    trace("エラー");
}

function onQueueInit(event:QueueLoaderEvent):void
{
    trace("キューの読込完了");
}

Thank you for Adams.

2007.10.03
category
comments

ASQLを使ってas3から直接MySQLとやり取りしてみる

久しぶりのas3エントリー。ASQLとはMySQLに直接接続できるライブラリー。現在の最新リリースはalpha 0.1.4。まずはクラスをASQLのサイトからダウンロードしてくる。ソースは以下参照。

今回はローカルにあるMySQLに接続するので、connector.connect()の第1引数と第2引数はそのままにしておく。第3引数と第4引数をデータベースに合わせて変更する。第5引数はポート番号なので特に変更する必要なし。次にconnector.query();でSQL文を発行してやる。ここも任意のテーブル名を指定する。最後に受け取るデータはすべて配列で返ってくるため、evt.data[0].columnNameとする事で個別に取得できる。columnNameはデータベースのフィールド名に置き変えてやれば、それに対応するデータが取れる。用事が済んだらconnector.disconnect();でコネクションを開放してやるのもお忘れなく。

本家サイトのフォーラムでも触れられてるけど、swfをデコンパイルされるとサーバー情報が丸見えになるのでプロテクトをかけるなどの注意が必要。

ACTIONSCRIPT:
package
{
   import pl.mooska.asql.*;
   import pl.mooska.asql.events.*;
   import flash.display.Sprite;

   public class AsqlSample extends Sprite
   {
      private var connector:Asql = new Asql();

      public function AsqlSample()
      {
         connector.addEventListener( SQLEvent.CONNECT, handleConnect );
         connector.addEventListener( SQLError.SQL_ERROR, handleError );
         connector.addEventListener( SQLEvent.SQL_OK, handleOK );
         connector.addEventListener(SQLEvent.SQL_DATA, handleData);
         connector.connect("localhost", "root", "パスワード", "データベース名" , 3306);
      }
     
      private function handleConnect ( evt:SQLEvent ):void
      {
         trace("コネクション成功");
         connector.query("select * from テーブル名");   //type a query, without semicolon at the end
      }
      private function handleError ( evt:SQLError ):void
      {
          trace("エラー "+evt.text);
      }
      private function handleOK ( evt:SQLEvent ):void
      {
         trace("SQL文の実行成功");
      }
      private function handleData ( evt:SQLEvent ):void
      {
         trace("データ受け取り成功");
         trace( evt.data[0].columnName);
         connector.disconnect();
      }
   }
}

2007.09.29
category
comments

ダカフェレンズを購入しました

dsc_0876.jpg
SIGMAの30mm F1.4 EX DC HSMをついに買ってしまった。ボケ具合と明るさが半端なく良いかんじ。D40Xだとボディに対してレンズが大きいのでちょっと不恰好。その分、愛嬌がプラスされました。レンズ自体はやっぱり重いのね、と改めて実感。しかし大満足。今日は御成門の味芳斉(みほうさい)にて昼飯。牛肉飯うまかった。フォトログ早く作らなきゃな。

2007.09.27
category
comments

ブログのレイアウト変更中

もっとシンプルなデザインにしたいので、現在クリーニング中です。CSSをまともに弄るのは初めてかも。

2007.09.14
category
comments

自転車が欲しい

通勤で使ってる自転車が激しく傷み始めたので、新車を購入しようと画策中。

求める条件
・片道約10kmの距離に耐えられるタフさ
・デザイン

候補
PEPERINA (Bianchi) チェレステカラーきれい。機能的にも申し分なし。
JEDI (LOUIS GARNEAU) かっこよさならダントツ1位。しかし値段が。
TYPE1 Blue (KRONAN) 北欧っぽさ全開。おしゃれ。
TOKYOBIKE (TOKYOBIKE) フレームが細くてシンプル。

まだ絞りきれてないので、もうちょい探してみようかと。

2007.09.05
category
comments

画像のIPTC情報を取得する

JPEG画像にはExif以外にもIPTCという規格が存在する。検索用キーワードを埋め込んだり、任意のコメントを写真に残したい場合にこれを使う。デジカメで撮った写真にローカルPCでコメント、キーワードを埋め込んで、ファイルをアップロードするだけで自動的にテキスト情報をデータベースに登録みたいな事をしたいので調べてみる。Exif情報を取り出したときとほぼ一緒な感じ。

PHP:
<?php
    $size = GetImageSize (&quot;photo/00001.jpg&quot;, $info);
    $iptc = iptcparse ($info[&quot;APP13&quot;]);
   
    if(isset($info[&quot;APP13&quot;]))
    {
       if(is_array($iptc))
       {
            echo &quot;caption=&quot;.$iptc[&quot;2#120&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;graphic_name=&quot;.$iptc[&quot;2#005&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;urgency=&quot;.$iptc[&quot;2#010&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;category=&quot;.$iptc[&quot;2#015&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;supp_categories=&quot;.$iptc[&quot;2#020&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;spec_instr=&quot;.$iptc[&quot;2#040&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;creation_date=&quot;.$iptc[&quot;2#055&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;photog=&quot;.$iptc[&quot;2#080&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;credit_byline_title=&quot;.$iptc[&quot;2#085&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;city=&quot;.$iptc[&quot;2#090&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;state=&quot;.$iptc[&quot;2#095&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;country=&quot;.$iptc[&quot;2#101&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;otr=&quot;.$iptc[&quot;2#103&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;headline=&quot;.$iptc[&quot;2#105&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;source=&quot;.$iptc[&quot;2#110&quot;][0].&quot;&lt;br /&gt;&quot;;
            echo &quot;photo_source=&quot;.$iptc[&quot;2#115&quot;][0];
        }
    }
?>

page 5 / 9«123456789»