2008年9月29日月曜日

2つの嬉しい出来事

今日は、2つの嬉しい出来事がありました!!

1つ目は...ヌーラボから正式に採用の通知が来ました!
やったー! やりましたよ〜!!!
入社は来年の1月からになりますが、凄い楽しみ♪
私の生活が変わる予感。。頑張らなくっちゃ。
あ、その前に、旦那にお祝いパーティ開いてもらおう(笑)

2つ目は...AdobeAIRGalleryASlimTimerが載りました!

記念のスクリーンショット。



アイコンは自分なりに作成し直してみました。
今まではAIRのアイコンを重ねていたんですが、そのアイコンはAdobeの許可がないとダメとのことで...Vector画像が自由に使えるようになっているから大丈夫かと思っちゃってた。失敗。失敗。。

ということで、ASlimTimerはソースも公開されているので、良かったら見てくださいねっ!
• • •

2008年9月25日木曜日

信号機

今日、春日の交差点で初めて見る歩行者信号機がありました。
2本の線のような感じでLEDが光っていて、線がだんだん小さくなっていくことで待ち時間や歩行可能時間を表しているものだったんですが。。
しかも、線の位置と、人の位置が、赤と青の時とで変わるんですよ。
これからそんな信号機に変わって行くんですかねぇ?

説明しにくいのでなんとなくの絵にしてみた。



うーん、ひどいな。。写真撮ってくれば良かった。
• • •

2008年9月24日水曜日

2度目のヌーラボ訪問

2度目のヌーラボ訪問(面接)に行ってきました!
今日は涼しかったのと、2度目なので場所も迷わず順調にたどり着けました。
でも、門を叩いたのは10分前と少し早すぎた感が...すいません。。。

ざっくばらんに雑談でも...という内容だったのですが、正直凄く緊張しましたぁ〜

ヌーラボではどんな開発が多いのかなども聞けたので良かった!
さすがにSeasar関連を組み合わせたのが多いみたい。
また、東京ではRCP、Qt、Cubbyなどでの開発もされているようで、興味深々。

後は、実際ヌーラボで携わった案件の話や、作成中のアプリなども見せて頂いて、おーー!と興奮してきました。
見せてもらったアプリではデザインも綺麗でさすがです〜
また、技術者の頭数を揃えるような受託案件では絶対できないよなーと思う内容とかもあって、さすがです〜

面接を2回させてもらいましたが、私の記憶では一度もPMとかって話題が出てきませんでした。
これってある意味凄い事だなぁと思います。

私はそこそこの歳なので、普通だったら「(この歳だったら)PMでの職種として採用を....」って話は出るんじゃないかなぁ?と思ってました。

それよりも、どっちかというと、技術...やる気...という観点の方を重要視されているように感じました。
これって、技術者にとったら凄く嬉しい!

...そういえば、「現場(技術)を知らないManagerにはなりたくない」と言ったような気もするので、最初に防御壁を作ってしまった所もあるのかもしれないですが。。
だって、「ニワトリとブタ」でいうニワトリにはなりたくないし、みんなで、"チーム"での開発をして、達成感を味わいたい。。

あと、嬉しい!と思ったことが、
「こんな開発をしてみたい」「こんな技術を使ってみたい」というのを、ちゃんと聞いてくれそうだという所。

この仕事を始めたばかりの時、「こんな感じでやってみたらどうか?」という意見を出しても真剣に聞く前に却下されるという事が多くて、どうやったら真剣に聞いてもらえるんだろう?と悩んでいた時期がありました。

始めたばかりだから、ボキャブラリーが少なかったというのも一つの理由だったと思うのですが、「経験が少ない、今までの開発を知らない奴は黙って言われるようにやっとけ!」という雰囲気とか、自分の知らない言葉や技術だから理解できずにスルーされてるんだろうなぁーという雰囲気とか。

ま、そこで、図や表を作って説明するとまだ聞いてもらいやすい などの方法も知る事になったのでそれはそれで良かった所もあるんですけども。ね。

現職の会社では、与えられた仕事の中でやりたい手段、方法などをやらせて貰える部分があったので、"幸せ〜"と思っていた部分もあったんですが、ヌーラボではさらに発展して、受託でとってくる案件も要望に合うものがあれば考慮するよ...ということでした。
これって凄い!! 技術者を信用してなければ出来ない事ですよね。

ということで、私の中で盛り上がってる訳ですが...採用については前向きに検討してもらえているということで。。うっっ嬉しいですっ ダメもとで応募してみてよかった。

私もこれから頑張らなくてはっ!
どんだけ良い会社であっても、自分自身が怠けていたら「楽しい!」って思えるようにはならないし!

ちなみに、ヌーラボではまだまだ人材募集しているそうです。
応募してくる方も、まだまだ足りないという事でした。
結構、自重して応募しない人が多いんじゃないのかなぁ...なんて想像したりして。。

かく言う私も、去年だったら、"ムリ"と思って応募してなかったかもしれない。
今年は何が変わったのかというと...「自重するな!」と相方が背中を押し続けてくれるようになった事ぐらいかも(笑)

このブログを見て、自重せず、前向きな行動を起こす人が少しでも増えると幸いでございます!
• • •

2008年9月23日火曜日

家が緑でいっぱい



会社の引越に伴い、増殖していた植物達を家に引き上げてきました。
増殖したのは、ポトスと、パキラと、幸せの木。
この子達は、のびすぎた所を切って水に指しているだけでどんどん伸びて行く強い奴です。

どんどん、二酸化炭素を吸って酸素を出してくださいっ!
ちなみに緑を置く場所が少なくなって来たので、スロット台の引き取り手募集中です♪
• • •

iPhoneで撮った写真をPCに取り込む

iPhoneで撮った写真をPCに取り込む...ちょっと悩んでネットで検索してしまいました。
有料のソフトはあったんですが、うーーん有料かぁ〜なんて思ってたら、旦那に

iPhotoで取り込めるよ


と教えてもらってすんなり解決。
ぐはっ!そういえば、前にiPhotoで取り込んでいたのにすっかり忘れていたです(汗)

Macであれば、iPhoneをPCに繋いだ状態でiPhotoのアプリを起動すると、iPhoneの画像が表示されます。
そこで 「選択した写真を読み込む」もしくは「全てを読み込む」ボタンを押せばOK!
超簡単ですねっ
よく考えたら、普通のデジカメと一緒で、USBで接続したデバイスが判断出来るアプリが入っていたらOKOKなんですよねっ

ブログに書いたので、これで次は忘れずに覚えていられるでしょう(笑)
• • •

2008年9月21日日曜日

URLLoaderのイベントが発火されない件で悩む

AdobeAIRでURLLoaderを使っているのですが、追加しているはずのListenerにイベントが飛んでこなくて悩んでいました。
一応、原因が分かったのでご報告。

URLLoaderにEventListenerを追加するには、addEventListenerを使います。
このAPIを見ると
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーが不要になった場合は、removeEventListener() を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。ガベージコレクターは参照を有するオブジェクトを削除しないため、登録されているイベントリスナーに関係したオブジェクトはメモリから自動的に除去されません。

と書いてあります。そうか...メモリリーク怖いしなぁーと思い、第三引数のWeakReferenceをtrueに指定して使っていました。

WeakReference...Javaでもおなじみの弱参照ってやつですね。

ということで、このWeakReferenceをつかったAIRアプリとしてこんな感じものもを作ってみました。

WindowLoadTest.mxml
<?xml version="1.0" encoding="UTF-8"?>
<mx:WindowedApplication title="WindowLoadTest" windowComplete="onWindowCompleted()" alpha="0.7" layout="absolute" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script source="WindowLoadTest.as"/>
</mx:WindowedApplication>


WindowLoadTest.as
import flash.net.*;
import flash.events.*;

protected function onWindowCompleted():void {
start();
}

public function start():void {
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest();

request.method = "GET";
request.url = "http://www.google.com/";

loader.addEventListener(Event.COMPLETE, onCompleted, false, 0 , true);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0 , true);

trace("loader load:" + request.method + ";" +request.url);
loader.load(request);
}

private function onCompleted(event:Event):void {
trace("onCompleted:" + event);
}

private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatus: " + event.status);
}


これだと、無事に動きます。Traceで出力されたログは以下。
loader load:GET;http://www.google.com/
httpStatus: 200
onCompleted:[Event type="complete" bubbles=false cancelable=false eventPhase=2]


次に start()メソッドを別のクラスに移動して動かしてみます。
startのロジックをLoadTest.asに移動します。
LoadTest.as
package  {
import flash.net.*;
import flash.events.*;

public class LoadTest {

public function start():void {
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest();

request.method = "GET";
request.url = "http://www.google.com/";

loader.addEventListener(Event.COMPLETE, onCompleted, false, 0 , true);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0 , true);

trace("loader load:" + request.method + ";" +request.url);
loader.load(request);
}

private function onCompleted(event:Event):void {
trace("onCompleted:" + event);
}

private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatus: " + event.status);
}

}
}

WindowLoadTest.asは以下に変更
protected function onWindowCompleted():void {
new LoadTest().start();
}


これを実行すると以下のTraceログになります。
loader load:GET;http://www.google.com/

追加したはずのEvent.COMPLETEのイベントが飛んでこないみたいでログに出てきません(涙)


ここで、LoadTest.asでWeakReferenceで追加しているコード
loader.addEventListener(Event.COMPLETE, onCompleted, false, 0 , true);
を強参照に戻す、つまり
loader.addEventListener(Event.COMPLETE, onCompleted)
にすると、Event.COMPLETEのイベントが飛んでくるようになります。

...ということで、どうやらURLLoaderに弱参照のみのListenerを追加するとイベントが完了する前にGCが行なわれて,GC対象になってしまう...ような感じです。

それならばっ!ということで、LoadTestのクラスを、MXMLのクラス変数で保持するようにしたら?という所を試してみました。
コード的には以下のように修正です。

WindowLoadTest.as
private var loadTest:LoadTest;

protected function onWindowCompleted():void {
loadTest = new LoadTest();
loadTest.start();
}


そうすると、結果は
loader load:GET;http://www.google.com/
httpStatus: 200
onCompleted:[Event type="complete" bubbles=false cancelable=false eventPhase=2]

となり、無事にCOMPLETEDイベントも返ってきました!

どういう状態のものがGC対象になるのか、ならないのか...ちゃんと理解しながらコード書かないとハマるなぁ...
今回の件は解決できたからいいとしても、はっきりと理解できていないので、不安です。。
• • •

2008年9月20日土曜日

@ITリッチクライアントカンファレンスに行ってきた

@IT リッチクライアント・カンファレンスIVに行ってきました。
来ていた人ですが...結構多かったです。私はずっとA会場(帳票でない方)にいたんですが、Microsoftの方が話されていた時には、ほぼ満席だったんじゃないですかね?
女性の方も多くてびっくりしました。
今注目の分野ってことなんでしょうか。

参加したのは、以下の3つです。
A-1『ビジネスWebアプリにおけるユーザーエクスペリエンス戦略』
A-2『Ajax/Java + XML 標準技術で実現するRIA』
A-3『エンタープライズシステムに求められる操作性と更なる進化』
A-4『Flex/AIR事例 〜RIA開発の現場から〜』

一番最初のものは、
Microsoftの方が話されていたんですが、昔から現在に至るまでの変化をOffice製品で説明されていたのは楽しかったです。

機能が増えて行くと、メニューバーもどんどん数が増えて行って...画面上には表示できなくなってきた。
そこで、イルカとかのアシスタントを作ったがこれが失敗(笑)
他には「適応型メニュー」として、よく使うメニューを優先的に見えるようにしたが、これも反応はイマイチ。理由としては、メニューの位置が変わってしまうから。
確かに、メニューやツールバーって位置で覚えて操作する事が多いから、私もあんまり好きじゃなかったりします。

Office製品でのユーザアンケートをとった時があったらしいんですが、
「何の機能が欲しいですか?」と聞いて返って来た内容が、既に存在する機能だったというのが多かったみたいです。
...これは、つまり、ユーザが見つけられていない ということ。
※これは別のセッションでCurlの方が話されていた内容だったと思う。

それで、あのOffice2007が出て来たんですね。
あの様変わり(し過ぎた)インターフェースが!!

メニューなどの"ターゲット"を見つけやすいために必要な要素としては
1. 大きい事
2. 近い事
...という公式もあるらしく、これも考慮した形として、文字のすぐ近くに出てくる"ミニツールバー"とか、大きいOfficeボタンの"マジックコーナー"などが出て来たんですね。

んが!不評も多いですよね、特に使い慣れた人から。
変わりすぎている!という観点から。

今、ちょうどキャズム(ジェフリームーア)の本をいまさらながら読んでいる所なんですが、継続性を求めるような実利主義者が、Officeを既に使い込んでいる状態だったと思うのですが、そのような人達にはとっても厳しいんだろうなぁ...なんて。

かくいう私もOffice製品に関しては、特に目新しいモノを率先して見ている訳でないので、多分実利主義者になるんかなぁーって感じで、Office2007を初めて使う時には、戸惑いまくりました。

でも、Microsoftのような市場に大きな影響を及ぼすような会社の製品が新しいUIを採用したということで、そのUIがスタンダードになる可能性って結構大きいのと思う。

ちょこっとした業務アプリの開発だって、しっかり考えて行かないといけない...というお尻叩きになったのかもしれない。

もう一つ、参考になったのは、「紙のプロトタイプ」の話。
Microsoftでは紙のプロトタイプが使われているそうです。紙だからこそ、手軽にできる所も多いと思うので、私も参考にしたい...と思いました。

最後に...プレゼンの仕方の話を。
よくある事かとは思うのですが、デモをする時にネットワークの調子が悪いなどのせいで、上手く動かなかったりという事が何回かありました。
ネットワーク越しで何かのアプリなどを動かすようなデモって多いはずなんで、本番でワタワタしないように安全策をとった方がよいでしょうねぇ。
よくわからない会場のネットワークの設備に頼る事なく、自分でも用意しておくとか。

もう一つ、気になった事が。。

前のページのプレゼン資料に戻るとき....一個一個前へ戻していく操作をするんですよね。
見やすいために1ページ内で、アニメーションっぽく文字を次々出して行くように作成されている場合は、また戻るのが汚い!遅い!
自分がやる時には、ページ番号をちゃんと控えておいて、ダイレクトで飛ぶように気をつけよう。。と改めて感じました。
• • •

2008年9月18日木曜日

ヌーラボに行ってきました!

なぜヌーラボに?というと...なんと...面接でっ!
はい。実は転職に向けて活動中だったりします。

丁度、本格的に転職活動を考えようと思っていた矢先に、"SeasarConferenceでヌーラボでは人材募集している"という話をお聞きして、これは!もはや運命に違いない!...と自分で勝手に思って応募しちゃいました。

現職の会社でも話が通り、ヌーラボの方にも今日の面接の事をブログに書いてもいいと了解して頂けたので今日の面接について書いちゃいます。
(ヌーラボの方、変な事お願いしてすいません。。)

普段は私服なんですが、今日は面接のためスーツで出勤。
で、現職の会社では、少し早めに退社させてもらいました。
ヌーラボは渋谷にあるのですが...普段あまり行かない若者の街なので、落ち着いてたどり着けるように余裕を持って&ルノアールで汗を引かせてから行こう と思いまして。

汗かきな私に加え、普段着ないスーツってことで汗だくになるのは目に見えていたんですよw

ルノアールを無事に発見し入ろうとした所で、なぜか男の人に声をかけられる。「おねーさん、この後、時間ありませんか?」云々...そんな声を掛けられたのは、久しぶり過ぎです。
ちょっぴり嬉しかった...(何歳になっても変わらない、女心ってやつですね。)
彼の真意は分かりませんが(おばさん狙いの詐欺かもっ?)、さすが若者の街!新橋じゃこんなことないよなぁーなんて思いながらルノアール入店。

20分前にちょっと早いかなぁーと思いつつ、ルノアールを出てヌーラボに向かいしました。
ここまでは順調。予定通り。

その5分後、近くのはずなのにヌーラボが見つけられない事件が発生。
iPhoneのMapを見つつビルに入って、ヌーラボの看板を探しまくっている怪しい人に変貌しましたw
結局、近くにいた宅急便の方に聞いて、「ちょっと行った茶色のビルの5階ですよ。すぐですよ。」と教えられ、茶色のビルに入り5階を見てみたけどヌーラボの文字が見つからない....えーっえーーっとパニクった後、6階という事が分かる。
宅急便の方は多分6階と言ってくれていたんでしょうが、私が聞き間違えたみたい。
そんなかんだで、ヌーラボのドアをノックしたのは4分前ぐらいだったような気がする。ギリギリ!なんてこった!!

ということで、予定が狂って、汗だく状態のまま入室。あぁ〜(涙)

面接では、縣さんと、馬場さんが担当して下さいました。
最初に(ほぼ無理矢理)会社の名刺+Amaterasの名刺を渡しました。はい、もちろん、Amaterasの名刺を上にしてw 
竹添さんにAmateras名刺を出すことを快く承諾してもらえたので、ここでは思い切ってアピールしてきましたぁ Amaterasの半透明な名刺が好評でした!
あと、竹添さんってすごいよねーって話で少し盛り上がりました。(ネタにさせてもらいました)
> 竹添さん 色々有難うございますっ!

面接中では、ヌーラボを選択した理由や、自分のアピールポイントなど色々お話しました。
気さくに対応して頂いたので、なんだか色々喋ってしまって...まとまりがない返答になっていたと思います。うーーん、反省。
面接前に「自分の事を喋り続けてはいけない」という記事を見たのになぁ。

途中で色々イベント(!?)があったんですが、メタメタなものが。。
いやぁ、「地頭力」が無くなっている....と実感。何をするにも、Google様に頼ったり、Eclipseの機能に頼ったりしている私が浮き彫りです。ガックリ。。
そんな私に対して色々フォローの言葉を掛けて頂いて、ヌーラボの優しさに触れましたw

1時間半の予定の面接が30分オーバーになってしまい終了。
あー、私、喋り過ぎですね...

まぁ、でも素の私は見て頂けたんじゃないかなと思います...おしゃべりな私も、プログラム好き好きっ な私も。

そんな私を長時間、面接して頂いたヌーラボの方には本当に感謝です!
有名な方と2時間に渡って色々お話ができるのはとてもいい経験&楽しかったです。有難うございました!

そうそう!馬場さんから「実はSwing、結構好きなんですよ」という発言が。Swing使いの私としては凄い嬉しかった〜

結果はどうあれ、今後イベントでお会いする事があったら、「面接の時、2時間お話に付き合わせてしまった私ですっ!」とお話のきっかけにさせてもらおうと思いますw 嫌わないで下さいww

就職先を探している方がいらっしゃいましたら、ぜひヌーラボに応募してみてください!
いや、本当に、有名な方と知り合いになれる絶好のチャンスだし(と勝手に思っているだけですが)、話の節々で聞ける経験談とかは興味をそそられます。
外との風通しが良い会社 & "アジャイル開発"が社名の前にある会社 なので、失敗は無いと思います。

さて...今後ですが、今回の面接の結果が1週間後に連絡がきて、OKだった場合、その次に上役面接があるとの事でした。

正直、ヌーラボしか応募していない状態だったんですが、現在、東京事務所の社員が3名、全体で10名ということで...ハードルは高そうです。(今、悟る事じゃないって?すいません。。)
10名というのはHPで見てたんですが、何を間違えたのか東京事務所で10名と思い込んでました。。

他の会社もちゃんと見始めた方がいいかもしれないなぁ。。仕事が無いと腐っちゃうし(笑)
とはいえ、本命!と思っている会社以外の所に、面接行くのは...時間とらせちゃう訳ですし、気が引けてしまいますね...
• • •

2008年9月17日水曜日

AdobeAIRでBasic認証をする

...ことが出来ました!

方法としては、
1. {user}:{password} をBase64でエンコード
2. HttpHeaderに"Authorization"をKeyに、"Basic " + {1の結果} を追加
...と、よく記事に書いてある方法と基本方針一緒です。

ですが、Base64のライブラリをDownloadして試していたんですが成功しなくて。。
(私の使い方が悪かったのかもしれないんですが)

そこで色々探っていたら、Base64のライブラリは何処かで拾ってこなくても、組み込まれているのを使えば出来るのが判明!
ということで、結局HttpServiceに以下のコードを入れるだけで無事に動かせました♪


var httpService:HTTPService = new mx.rpc.http.mxml.HTTPService();
var encoder : Base64Encoder = new mx.utils.Base64Encoder();
encoder.encode(user + ":" + password);
httpService.headers["Authorization"] = "Basic " + encoder.toString();


Base64のエンコードするのを自分で自作はしたくないけど、ライブラリを使う必要があるならライセンスをしっかり見ないとなぁー と思っていた矢先だったんで、良かったよぉ...mx.utils.Base64Encoderが組み込まれていて。

確認はFriendFeedのAPIでやってます。他ではまだやってないのですが...
これに合わせて作成途中のAFriendFeedも修正してみました。
該当のソースは、service/FriendFeedService.asになっています。

あ!でも、まだCommentとLikeのPOSTは成功してなくて動きませんっ(笑)

ちなみに、この方法は HTTP Authentication for HTTP/GET requests using ActionScript 3の下の方にあるコメント欄で発見しました。
有り難う!> コメントした人
• • •

2008年9月16日火曜日

”FriendFeedのクライアントっぽいもの”報告

先日、IWDDのHackathonで作った「FriendFeedのAdobeAIRクライアントっぽいもの」です。
画像ではたまたまTwitterのものしか表示されていないですが、FriendFeedで設定している色んなサービスが見れるようになります。

見かけが夏ライオンに似ている気がするのは、多分気のせいw

ソースですが、以下にUpしてみました。
SVNへのリンク
TracのBrowseSourceへのリンク

機能としては、FriendFeedのフィードが見えて、リンクのクリックができるだけ...としょぼしょぼではあります。
これから改造を加えて行くかなぁーと思っています。
個人的にはTwitterとかは夏ライオンを今まで通り使っていくのでTwitterの内容は特にいらない(笑)
FriendFeedの方はページリンクとコメントを見て行きたいので、そういうFilterをつけたり... Like や Comment がつける事ぐらいできたらなぁーと思っているので、とりあえずはその方向の目標で。

作成途中でハマったこと。

mx:Listを使って、ItemRendererを自作して表示してみるようにしてみたんですが、行の高さが思い通りにならなくて。。
1フィードに表示する文字数って違ってくるから、1行毎の高さは違う状態(全ての文字が収まる高さ)にしたかったのですが、これが上手くいかない....

まず、1行毎に高さを別々にしたい場合には、mx:Listの属性に
variableRowHeight="true"
wordWrap="true"
を入れる必要があるみたい。

これを行なった状態でも、元々全ての文字が収まっていた行もスクロールして小さい行のものを表示していくと、小さい行サイズになってしまう。

よくわからなくて、大分悩んでいたんですが、結局以下の行をレンダラのクラスに追加して解決しています。
override public function set data(value:Object) : void{
super.data = value;
//これをしないと、スクロールしていくとリストの行サイズがおかしくなる
validateNow();
}


Rendererというのは一つのインスタンスを使い回して表示していると思うのですが、その際に中のデータの入替は行なうけどサイズの計算はしてない...ってことなのかなぁ?

validateNow() がどれだけコストのかかる処理なのかは不明なので、これが正解の対応ではないかもしれない。。。
A List itemRenderer using States and Transitionsという記事も見つけたんだけど、んーちょっとよくわからず。今回の件とマッチするような内容でもない気もして。。

不明なこと

FriendFeedの情報をとってくる際に、認証ダイアログが出てきます。(OSの機能としてのダイアログ)

ここで、FriendFeedで提供されているNickNameとRemoteKeyを入れるとFeedが取得できるようになるのですが....
ここで入力されたNickNameをアプリケーションから取得ってできないんだろうか?
ここはちょっとよく分かっていない。。

いや。。。そもそもAlertThingyではこのOSで表示するダイアログって表示されないよなぁー。他に方法があるんやろうか。あるんだろうな。。。

ちなみに、HTTPServiceで、
httpService.setRemoteCredentials(nickName, remoteKey, "utf-8");
を指定してあげても、OSの認証ダイアログって出てくるみたいなので、これじゃない方法なんだろうとは思います。。だれか知っていてたら教えてください。。

修正したいこと。

今、Service(TwitterとかFriendFeedとか)のアイコン画像を取得しているのですが、取得するアイコンは同じものが多いのでキャッシュして最低限の画像を取得するようにしたい。

一応、How to Cache Images in Your Flex Applicationの記事を読んで、真似て作ってみたんですが、これだと、Loadが完了していない画像の場合は、同じ画像だったとしても読みにいっちゃぅんじゃないかなぁーと。
同じ画像をいくつも使われている場合は、最初の一回だけ読みにいって、後の画像はそれを参照するようにしたいな。と。

そもそもAIRにはブラウザのように画像キャッシュの機能があったりしないのか?との漠然と感じる所もあったりして...同じ画像を何回か取得した時の、ネットワークの通信内容をチェックしてみるのを先にした方がいいかもしれんなぁー。
• • •

2008年9月14日日曜日

IWDDのHackathonイベント

IWDDのHackathonイベント@岩手 に参加してきました!

Hackathonのイベントというのに参加したのは初めてだったんですが、楽しかったです。
IWDDでは何十回もイベントを重ねてやっているということで、凄い老舗のグループだったみたいですが、温かく迎えてくれて有難うございました。
参加されているメンバーは、経験豊富な方ばかりだったのですが、その中で久しぶりの新人(?)として仲間入りしたhappy_ryoさんは、とても可愛がられていましたw

「岩手を盛り上げよう」という壮大なテーマをもってやっておられるグループで(なんですよね?)、あーいいなー と感じることも多かったです。いろんな方面の人と触れ合えるというのもいいですよね〜
確かに、東京では難しいが、岩手のような地域ならでわ!で出来る事(やりやすい事)ってあるんかも!と思います。
岩手に在住だけど仲間がいないー(涙) という方がいらしたら参加してみてください〜!いろいろ相談も乗ってくれると思いますよん。

さて、私のHackathonの御題は、"FriendFeedのAdobeAIRクライアントっぽいものを作る事"にしちゃったんですが、なんだか場の雰囲気を考えずにやっちゃった感も...なんだかすいません。
家にいてもゴロゴロしながら開発しちゃうんですが、あぅいぅ場にいると集中して取り組めるので、またいい感じですね。一日でなんらかの完成を迎えようとする締め切りがあるのもいい。あと、たわいもないおしゃべりも!

しかし、なんだか影響を受けてしまったんだろうが、これから東京にあるコミュニティで参加できそうなものをないかちょっと探してみようとしている私もいる。。
• • •

2008年9月13日土曜日

iPhone2.1のUpdate!

Updateしましたー。
噂通り、日本語の入力も早くなったし、同期も早くなったし、連文節の変換もできるし。
使いやすくなりましたよ。ホント。
連文節の変換については、単語を入力した時点で出てくる漢字の候補を選択していった内容も学習してくれたらいいんですが、それはダメみたい。残念ー。

気のせいかも知れないのですが、Bylineの同期処理とか、アーカイブの処理も早くなった気がします。

いいねー!いいねー!

あとはコピペができたら....頑張ってください、Appleさん。
ちなみに私はジョブス大好きっ子なんですが、体調って結局大丈夫だったのかなぁ?
ジョブスも頑張れ!
• • •

2008年9月11日木曜日

Chrome

GoogleChrome・・・思った以上にいろんな人が使っている予感。
いわゆるイノベータ、アーリーアダプタの人が使うのかな?と思いきや、それよりも大きな層の人も使っているっぽい気がします。恐るべし。
技術者以外の人の場合、話を聞いているとV8エンジンの速さに惹かれているだけじゃない気もしますね。あのシンプルさとかデザインチックなものとか・・・そういうところも大きいのかな?

そんな中、私はなぜかChromeという言葉が気になりまして。
AdobeAIRでも設定する属性の一つにWindowChromeってのがあったので・・・同じような意味で使ってるんかしらん?? と。

さっそく辞書で引いてみたんですが、
chrome /krm|krm/

1a クロム合金.
b クロムめっきのもの 《製品・仕上げなど》.
2 =→chromium.
3 =→chrome yellow.

クロムの元素しか引っ掛からん。
他に意味あるんかなぁ?

他に見てみると、
Chrome(クローム)はVIAの一部門となったS3 GraphicsのGPUである

・・・これも違うよなぁ

他には見つけられず。。
正解を知っていたら教えてくださいーだれかー!
• • •

2008年9月8日月曜日

Adobe AIR Update Framework

以前、AdobeAIRでのパッケージの更新チェックの記事を書いたのですが、WEB+DB PRESS vol.46の記事をみていたら、Adobe AIR Update Frameworkというものをあるのを知りました。

現在ではまだBeta版っぽいのですが、自分で自作するよりなかなか便利そうです。
XMLに最新バージョンと、そのAIRパッケージのリンク、リリースノートの内容を記述してUpしておけば、あとはFrameworkにお任せができちゃいます。
綺麗なUIを自作する手間も省けるし、リリースノートの内容も表示してくれるし。
"再起動時にインストールする"なんてのも選べちゃいます。

使用方法は自動Update part2に書いてみましたのでよければどうぞ♪

また、ASlimTimerも1.0.5のバージョンから、このAdobe AIR Update Frameworkを使うようにしてみました。
あと最新バージョンでは、Alarmの機能を追加してみました。
指定時間になったら、ダイアログが出て来て、アイコンがピコピコ(?)動くようになります。
個人的には、こういうAlarmの機能ってめっちゃ便利っ!
お昼行く時間とか、帰る時間とか、仕事に集中しているとすっかり忘れちゃう私なので余裕をもって帰る準備とかできるし。

なんだか、AIRの機能を色々試しているようなアプリですが(笑)、よければこちらも使ってくださいね。

この、ASlimTimerも、もうそろそろ機能もそろって来たので宣伝に走ろうかな。。
• • •

2008年9月6日土曜日

突然参加したSeasarConference 2008

今日はSeasarConferenceに行ってきました。
事前登録とかしてなかったので、当日登録(!)して気にせず飯田橋へGo!
14:00からのセミナーから参加していきました。

最初に参加したのは、
「CubbyでRestFulなWebアプリを」

色々Webフレームワークが乱立しているのですが、開発者自身がサクっと作れるフレームワークが欲しいなぁーということで作りはじめられたそうです。
Rest風なアプリで重要な所としてはやっぱり、"CoolなURI"ですが、その部分を作るのって結構大変。
そこでアノテーションを多用してやっていこうっていうもの...ってことですね。
アノテーションの設定で、正規表現もつかえたり、優先順位も設定できるのは使い勝手がよさそう。
中で、「オレオレフレームワークを作って行こうよ。一人一個ぐらいのペースでw」って話題をだされていましたが、すごく納得。
今会社では、自社製品として、オレオレフレームワーク作っちゃってるんですが、その自社製品を使った開発しかしていない後輩は見ていると、かわいそう...というか...心配なんですよね。。
フレームワーク自体を作る時に考える要素と、フレームワークを使った開発時に考える要素って、多分結構違っていルヨウに思います。
後者しかしていないと、なんというか.....与えられた手段でしか考えない...一昔前のスパゲッティコードみたいなものを書いてしまう...ようになってしまう人として育ってしまう危険性が大きいような気がする。
開発者全員が"やるべき"とは思わないけど、効率よく上手くやりたい(早く退社したいw)って人は、与えられた仕事だけじゃなくて、フレームワーク作るとか、良い勉強になると思う。

私も、今年の始めにEclipseプラグインを作り始めたのですが、おかげでEclipseの操作性とか動きの関連性とか、よくわかるようになりました。
操作性なんてプラグイン作らなくても分かりそうなものなんですが、おー、しらんかった!っつーのをいくつも発見しましたです。ハイ。

次に参加したのは、
「わんくまでみる勉強会開催のススメ」

勉強会を開催してみよー。してみる時にはこんなことに注意!という内容の話だったのですが、一番心に残ったのは、「開催者自体が楽しめるようなものであること」ということ。
社内で勉強会をやろう!としたとき、あまり続かなかったんですよ。
その一つが、後輩に技術を学ばせようとしている話題が多くて、開催者側はあまり楽しんでなかったんですよねー。
社内でなくて、社外での勉強会で面白そうなものに、どっぷりと入ってみたいなぁーと思いました。つーか、自分で主催せーよって話なんですけどもねw
個人的には東京にはいっぱい勉強会があるんで、「連れ立って色んな勉強会に参加してみよーグループ」みたいなのを作ったらアウェイ気分も解消されるしいいよなーなんて思ったりもする。そんなのを誰か一緒にやりません!?

次に参加したのは、
「Jiemamy データベースの構成管理とリファクタリング」

Jiemamyについては、事前知識がちょっとあった状態だったのですが参加。
思った以上に人もいっぱいいて正直びっくりしました。
たしかに、DBの修正ってコストが高くなってしまうんですが、コストが高い理由ってなんだろう?と考えたときに、ソースとの同期がとれないってのが大きいんですよね。
ソースとの同期がとれたら、「えー、DBの修正無い方向での修正ないのー?」とか、修正を見越して汎用的なエリアを追加してきちゃないERにしちゃったりとかなくなりそう。
頑張ってほしーです!

最後にLTを見てきました。
LTおもしろかったですー。
1.S2Swing ...
SwingにデータモデルとのBindができるとコード量が少なくて楽!
2.TERASOLINA ...
オープンソースにしたという判断は間違いじゃなかった!という実例にして世の中を変えてほしい!
3.全ては定時退社のために ...
定時退社する → OSSの活動に時間が避ける → IT業界が幸せに!
4.Sabotter ...
Twitterが使えずEclipseしかダメって現場にも、違和感なくとけ込める外観にとどまることなく、プレゼン資料にまでなっちゃぅ優れものw
5.newで開始するWebコンテナ(すいません、名前忘れちゃいました) ...
営業の人がデモしやすいように開いているポートを探して実行しちゃうその心意気大好きです。自分のマシンには入れたくないけど、営業の人には絶対いいはず。
まるでウイルスのように色々情報を書き集めてそれとなく動いちゃっている方がいいはず。
営業の人が「CATARINA_HOMEって何?」って言っている話がありましたが、「JAVA_HOMEって何?」って人もゴロゴロいる.....

最後に...一般に使われているフレームワーク。
私、使ってなさすぎです。。。あーなんとかせねばなぁ。。。
• • •