2008年12月29日月曜日

AdobeAIRで処理が全て完了してからアプリを終了する

AdobeAIR(Flex3+ActionScript3)で作成しているアプリASlimTimerで大改修(?)をしていました。

AdobeAIRで作成すると、サーバとのアクセス処理(URLLoader)は非同期で実行されるので処理中に画面をポチッと終了...ってされると、中途半端な所で終わっちゃったりします。
ASlimTimerはSlimTimerのサービスを使っているのですが、最近SlimTimerのアクセスが凄く重かったりもして、余計にマズい状態になりやすくなってたりして。。

そこで、今までは オンライン状態だったら
”SlimTimerのサービスにアクセスする”とだけしていた処理を、
  1. ローカルDBに保存する
  2. SlimTimerのサービスにアクセスする
  3. サービスから正常完了のレスポンスがあった場合にはDBから情報を削除する
という処理に変更し、さらにSlimTimerのサービスのアクセスを同期処理で順次行なって行くようにしてみました。
これによって、SlimTimerのサービスが落ちていた対策とともに、サービスが重かったら待機中に更新を溜め込み、集約できる更新は一つに集約するという仕組みになっています。

どこかのサービスのAPIを使ったマッシュアップものを作る場合には、最初からこぅいぅ観点は必要だったんでしょうねぇ。。。勉強になったわ。

そして、「アプリ終了時にはそれらの処理が完了するまで待ちたい!」ので、ちょっと調べる。

AdobeAIRのメイン画面 WindowedApplication の closing というイベントを使ってできるみたいです。

たとえば、画面の終了をキャンセルさせたい(閉じさせたくない!)場合には、
mxmlの方では、
<mx:WindowedApplication closing="onWindowClosing(event)"

ActionScriptの方では
private function onWindowClosing(event:Event):void {
event.preventDefault();
}

と書くといける(=画面が閉じない) みたい。
preventDefaultというのは、Swingでいう、AWTEvent#consumeと一緒って感じかなぁ。

じゃー終了時に、処理が完了しているかチェックして、
完了していなかったら一定時間待ってから再度チェックして、
完了したと同時に終了させる
という事をさせたい場合には、
private function onWindowClosing(event:Event):void {
event.preventDefault();
var intervalId:uint = setInterval(function():void {
if (!isExecuting()) { //これは自分で実装したチェックの関数
//処理が完了
clearInterval(intervalId); //Intervalをクリア
stage.nativeWindow.close(); //画面を閉じる
}
}, 200); //200ミリ秒毎
}
という感じでできそうです。
setIntervalというのは、flash.utilsのパブリック関数として定義されているものです。
setInterval(closure:Function, delay:Number, ... arguments):uint
ミリ秒単位で指定した間隔ごとに関数を実行します。


WindowedApplicationのクラスの場合、import flash.utils.setInterval; というのは書かなくてもコンパイルが通りますが、これは多分WindowedApplicationのクラスの方でimportされているんでしょうね。
# こぅいぅ所はちょっと分かりにくくなっちゃうから、私的には嫌な所なんですが。

stage.nativeWindow.close(); というのは画面を終了する処理になっています。
stageというのはWindowedApplicationから参照できるプロパティです。stageというのは、以前からFlashをバリバリ使っている方にはおなじみのもののようなのですが、私のように初心者の方はクラスを俯瞰してみた記事画面遷移についてで少し記述しているので、よければどうぞ。

....と思いきや、setIntervalのASDoc見てみると、もぅ推奨されていないみたいですね。flash.utils.Timer を使えと。さよですか。
では、書き直し。
private function onWindowClosing(event:Event):void {
event.preventDefault();
var timer:Timer = new Timer(200, 0);
timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void {
if (!isExecuting()) {
timer.stop();
stage.nativeWindow.close();
}
});
timer.start();
}

こんな感じ。たぶん。
• • •

2008年12月21日日曜日

EffectiveJava第2版を読んだ

EffectiveJava第2版を今読み終えました。
始めは旦那が読み終わったら借りようと思っていたんですが、私も買ってしまいました。...ということで、この本は、我が家に2冊もあったりします(笑)
我が家に2冊も買わせた本はこれで2つ目。

読んだ感想ですが...あー私ってばあまり使う人のことを考えずにコーディングしてたなぁってのが一番かなぁ。
「要求通りに動くもの」というのを作るのはまぁ当たり前ですが、そこから「自分以外の人にも使いやすくする事」というのはこんなに丁寧に考えて作るもんなんだなぁ....と。

私も仕事上で製品開発を一応していたので、「使う人の事を考えて拡張しやすいように」というのは、まぁ普通に考えて作った所はあるんですが、使う為の前提が多かったり...動かしてみないと分からなかったり...リリース後に発生した”これも拡張できるように”という要望を満たすため委譲クラスをポコポコ作るハメになったり...提供インターフェースで提供してなかったので実装クラスを継承してもらうしかなかったり...と色々ありました。

他の人に使ってもらうようなライブラリのクラス構成を考えるのはホント難しいです。

どれだけ やって欲しくない事を 実行時エラーでなく、コンパイルエラーで出せるようにするか...というのが重要だし、その方法/手段というのはアイデア(?)次第で出来る事も多い。
ただ、その方法を自分で始めから探るのは時間もかかるしミスも多い。ましてや仕事上の限られた時間ではそんな時間もとれない。
そこでこぅいぅ本の情報が凄く役に立つんだと思う。私のような低速な脳みそでは特に(笑)
この情報を生かして実践していくのは、もしかしたら何も考える前よりも時間がかかる作業があるかもしれない。人に使ってもらいやすくするというのは時間がかかる作業だし。
でも、こぅいぅ方法を教えてもらった事に感謝しつつ、変なコードを後々の人に残さないようにして行く事が自分の為にも、業界全体にとっても必要なんだ!と感じなくてはなぁ。
なんて思います。

でも、J2SE5になってからenumやアノテーションが使えるようになって楽になった部分が凄くありますよね。
まぁ、私の仕事上では互換性を保つためにそれらを使ってガラっと替える事はできなくて涙流した所は多いですけども(ぐすっ)

コノ本では、オススメしない内容とその理由、代替案...というカンジで書いてあるので、納得もしやすくていいです。使うのが適切な場面というのも明確になりますし。
(でもたまに文面が難しいので大変。。お布団に入ってから見るのはツライ。)

本を読んでから、自分のコードを振り返ると、「あーあそこのコード、まずいよな。直したい」と思いましたぁ。多分読んだ人の殆どが感じたりするんじゃないかなぁ?ということで、Javaをある程度書いてみたって人には超オススメ本。
逆に、Javaをこれから学んでみたいんだけど...方にはオススメしません。

これからはトイレに一冊置いて、復習しますー。

(トイレでゆっくりする時間も大切なのよっ!特に女性は...)

• • •

2008年12月19日金曜日

第?回 千秋楽

現会社の最終出勤日が今日でした。
夜に忘年会&送別会をして家に帰ってきました。

ふと振り返ると、9年目に突入していた現会社の勤務。
結構長くお世話になりました。こんなに長くは考えていなかったんですが(笑)


『起』
入社したての頃は、Java初心者であり...製品開発を作成はじめる所であり...新しい事いっぱいでした。新規開発ってやっぱり楽しいですしねー♪
開発初心者の私に周りの人はとってもイライラしたと思いますが、いやはや、ご迷惑おかけしたと思います。


『承』
しかし、旦那とたった2人だけで東京支社が始まって他の皆さんと接する機会がなくなり寂しい時期がやてきました。
あーだ、こーだ....ってお互い話する機会って必要だと思うんですが、開発グループのメンバーが
・大阪/東京に分かれてしまった事。
・グループ内で担当している箇所が個々人でバシっと分かれてしまっていた事。
で話する機会もなく。。

当時、"どうして東京に行ったのか?"と何人かに聞かれたのですが、会社的に「東京に事務所を作成したいが行く人は社員で...」と考えた時に私たち以外の選択肢が多分なかったからだと思います。その時の社員は役員を外すと4,5人ぐらいしかいなかったと思いますし、入社1年目ぐらいの私達が一番言いやすかったんでしょう。
でも、そういう事が他の方には伝えられてなかったようで、まるで私たちが行きたいと言ったのか?という勘違いをされていた方もいたみたい。
そんな事ないですよー!社長からは「アメリカか、東京かどっちがいい?」という選択肢しかなかったんですから。
ここは、会社側からちゃんと社員全員に相談や説明して欲しかった所でしたね。

そんな状況にて、製品についてもこぅしていこう!というグループの話し合いもなく、淡々と出て来た不具合を修正したり、火のついた案件を片付けて行くような時期が続きました。

こうなると、結果はもぅ見えているようなもんですよね。

今振り返ると、モチベーションも下がっていたな。仕事に対するというよりも、技術に対するモチベーションが。
お金を頂いている訳ですから仕事は頑張りましたよ、当然ながら。でも、それと技術に対するモチベーションってのは違う所ってありますよね。。?


『転』
”私たちマズくないか?”と感じて追いつこうとしたのが、1年と少し前ぐらい。
技術という側面というよりも、
・周りが見えていない(会社の外に出てない)
・昔よりも断然的に本を読む速度、理解速度が落ちている
ような所にヤバっ!
2年前くらいから、会社としての社員としての取り組み姿勢おかしくない?という事でメールやらでわざと動いていた部分もあったんですが、あまり変わらず....つーか、改めて見ると私自身がヤバいやん!みたいな(笑)
とうことで、途中から会社に対する働きかけはもう諦めて、転職も考慮して自分自身をなんとかしよう!ってのが今年一年でした。
あ、諦めて...というのは語弊があるかもしれないですね。何が正しいというのは難しいな...というのも感じたし、引き際というのも肝心だなとも思いまして。

それで今年は結構、怒濤な感じでしたねー。今年はじめにAmaterasのコミッターになったのを皮切りにいろんな勉強会に参加してみたり、AdobeAIRに手を出してみたり。
技術の本だけでなく、プロジェクト管理の本やら、マーケティングの本などにも手を出してみたり、LifeHackを考えてみたり。
製品開発をしていたのに、マーケティングの基礎知識もなんにもない状態だったというのは今思うと、凄い失敗だなぁー。”キャズム”って言葉も知らなかったですし(恥ずかしい)



『結』
で、今年末に現会社を退職を決め今日に至りました。来年からは、新しい会社です。
色々興味が出始めると本当に時間が足りなくて思うような今年いっぱいは迎えられなかったような感じですが、こぅやって消化不良のまま、もっとー!と進んで行ける年が重ねられたらいいなぁ〜なんて思っています。


という事で、MKIの方々大変お世話になりました。
今見ると恥ずかしいソースコードをいっぱい残してしまっているのが、いやぁ...すいません。ビシバシ直したってくださいませ(笑)

んでもって、また鍋パーティしましょーねー!
• • •

2008年12月17日水曜日

Wicketを触ってみた

Wicketをちょっとだけですが触ってみました。
それまでは、随分前に社内勉強会したのと、Wicket勉強会で聞きに行くぐらいしかしていなかったので、始めて触ってみたのと一緒。

感想としては....
サクサク書けていけるから気持ちがいいと言われているのも分かる。
でも、やっぱりHTMLテンプレートの存在が気になってしまう。

「デザインとコードを分ける=デザイナとコーダーが並行作業しやすい」という利点は多分大きいんだろうなぁーと思う。
まぁ、私はデザイナと一緒に仕事はした事がないのですが。。孫請けのような仕事ばっかりだったので。

でも、HTMLテンプレートがあるからサクサク感が損なわれる所もあるよね。
(と思ってしまうのは、私がSwingの開発の方が慣れているからかも)

だからといって、HTMLにはdivタグひとつ置いてコードから全部レイアウトしていくのは、デザイナとコーダーが並行作業という場合にはNGだろうし。

まぁ、ここの所は使う人次第って所なんでしょうが、 GWTよりもWicketの方がHTMLでレイアウトしようねっ!って雰囲気が感じられたよぉ〜なぁ〜〜気がしました。< 無責任発言

そういえば、GWTって結構海外では使われている雰囲気がしますよね。日本で感じるよりももっとのびてくるのかもしれないなぁ。ずっと前にサンプル触ったぐらいだったので、また改めていないとな。そうそう、GWT触ったメモの所のサーバが12月末で契約をキルのでこのドキュメントもなんとかせねば。

Wicketに話は戻って。。
Wicketが大規模案件に採用された場合...個人の属人性をなくすために、やっぱり、こぅいぅ時はPropertyModelを使わないといけない。とか、AbstractReadOnlyModelは使わない事。とかコーディングの決め事が多くなったりするんだろうか。
そんな開発だとちょっとWicketの良さも半減しちゃぃそうですね。

さて、いくつか引っかかった所をメモ。

Wicketを実行すると
java.lang.AbstractMethodError: org.slf4j.impl.Log4jLoggerAdapter.isTraceEnabled()Z
at org.apache.wicket.util.thread.Task$1.run(Task.java:107)
at java.lang.Thread.run(Thread.java:613)
のエラーがコンソールに表示されるっつー問題。

この原因は、org.slf4jのversionで、古いものを使っていたため....でした。
<dependency>
    <groupId><org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.4.2</version>
</dependency>
が正解。

教訓:Wicketが用意してくれている、mvn archetype:create でプロジェクトは作ろうね。手元にあるコードをコピってバージョンだけ変えたりしないように(笑)


<wicket:link>で、パッケージが違うものは設定できない?!
aqubi.samples.wicket.page.LabelPage.html
aqubi.samples.wicket.page.extension.ModalWindowPage.html
と、同一パッケージでないページをwicket:linkを使って表示させようと思い、
    <wicket:link>
        <a href="LabelPage.html">Label</a>
        <a href="extension/ModalWindowPage.html">ModalWindow</a>
    </wicket:link>
なぁ〜んてしてみたけどダメ。

ですが、実は1.4-M3から出来るようになっているらしい!!1.3.5で試していたからなぁ〜〜

1.4-rcでやってみたら無事に動いた。
ちなみにフルパスを書いてあげれば、このリンクの部分は使い回しできましたよ。
    <wicket:link>
        <a href="/aqubi/samples/wicket/page/LabelPage.html">Label</a>
        <a href="/aqubi/samples/wicket/page/extension/ModalWindowPage.html">ModalWindow</a>
    </wicket:link>
...とこんな感じ。

教訓:そりゃ最新バージョンの方が機能が増えたりバグが減っているわ。試してみるぐらいなら最新の方がハマるような場面が少ない(...事もある)


触ってみたコードは前のエントリーで書いたGitHubで登録してみました。
単純にコンポーネント並べただけのようなものなので、全くもって体したものではございませんが,public公開にしているのでよければ、
http://github.com/aqubi/wicket-sampleどうぞっ!

...他の人が上手くこのリポジトリから取得できるのかどうかはまだ分からず。
もし取得してみた方がいらしたら、どうだったか情報を教えてもらえると嬉しいです!
• • •

2008年12月16日火曜日

Spark67 EdgeActionScriptLibraries

Spark67 EdgeActionScriptLibrariesというイベントに行って来ました!

内容はSpark ProjectThreadLibraaryと、AIR SAMPOとiPhoneASの紹介でした。

ThreadLibraryは、提供されているThreadというクラスを継承して自分のThreadクラスを作成。
start() を実行すると処理開始。
join() をすると処理が終了するまで待機。
next(function) で次の処理を指定。
...と書いていけるというもの。
エラーが発生した場合には、
error({エラーのクラス}, {callback関数})
みたいなメソッドを書けば...という話だったんですが、どーしても私はこれがひっかかりまして。。。
だって見えたコードには、
join();
next(function);
error({エラーのクラス}, {callback関数})
のような順番で書かれていて....ということは、このタイミングでaddErrorListenerしてる訳はないしなぁ...って思って。(見間違いだったのかしら。。)

あとこのerrorのメソッドのスコープはどれなんだろう?実行メソッド内?実行クラス内全部?とか。

そこで想像したのは、このThread開始時に、主要なエラーListenerはLoaderなどに勝手に追加されていて、発生したエラーのものはStackされつつ実行されている。そして処理が全て完了した時にerrorで指定した該当エラークラスを返してくれるのかなぁ?なんて思って。

それで、質問させてもらいました。「エラーは内部ではStackされていっているのか?」と。
そうしたら返答は「エラーは親へと伝播していって、最後の親のエラーが保存される。try catchを想像してもらったら分かりやすいと思う」という話。
んー私には疑問の解決はできなかったのですが、時間も差し迫っているようだったので、「例えば、2つのImageLoaderの処理を動かして、両方ともエラーが発生した場合はどちらのエラーが?」という質問にしたら、「前に動かしたエラーの方」と答えて頂きました。

んー、なんかしっくり理解はいってなかったので、家かえってThread.asのコードをさっと眺めてみました。
コードをみると....
  • errorというメソッドの中では、結局はaddErrorHandlerというメソッドが呼ばれていること。
  • addErrorHandlerというメソッドの中では、対象エラークラスの名前をKeyにErrorHandlerが作られていること。
  • Thread.asにエラーオブジェクトを格納する変数が private var _error:Object;となっていること。
  • エラーはtry-catch(e:Object)で取得していること
  • Threadの子クラスであるURLLoaderThreadではioErrorHandlerでエラーチャッチした際、最後にthrow new IOError(e.text);をしていること

これでなんとなく理解。質問の仕方も悪かったよね、すいません。
エラーについてそこそこ発生しやすいとか、処理は全部実行するけど、エラーは全部しっかり対策せねばあかん!ゆーときにはこぅいぅライブラリよりも、Threadに親子関係持たせないシンプルなもので分かりやすく処理するようなものを選んだ方がいいんでしょうね。
使う人も分けワカンナくなっちゃうだろうし。

私も同期的にタスクを動かすようなExecutorをAIRアプリ内部で作ってたりしたんですが(簡単なもの)、エラー処理がイマイチで修正せねばあかんのよねぇ〜

そうそう、ソース見せてもらいましたが、ASDocも細かく書いてあるし、コード内のコメントも凄く多い!凄いなぁ〜〜 見習わなければいけません!



iPhoneASはiPhoneアプリをASで書けちゃうライブラリ。
マルチタップや加速度センサーについてもあれこれ触れるみたいなので、なんか楽しそうです。
とはいえ、まずは通信する環境の用意が必要。
iPhoneとはOSCで通信するらしいのですが、FlashではOSC(UDPプロトコル)を利用できない。
XMLSocketでの通信だったら大丈夫なので、OSCとXMLSocketのゲートウェイ的な役目をしてくれるfloscというサーバを使う。
iPhone側にはOSCemoteというアプリがAppStoreにあるので600円で購入。

これで環境が整ったので、iPhoneASを使ってコーディング!
マルチタップや加速度のイベントがaddListenerできる形になっていて、必要な情報..例えばx位置、y位置とか)を渡してくれます。
なので、環境さえ作れたらサクサクっと触れそうな感じ♪

あともうひとつデモしてくれた、WiiFitのウィーボを歩くことでGoogleMapのストリートビューを見るというもの。
なんかの記事でみた記憶がありますが、こんなにマジカでみれるとはっ!
ウィーボとはBlueToothで繋いでいるらしい。
ストリートビューはAIRのHTMLLoaderで見てみたら見れたし、jsもcallできたし...ということでHTMLを読み込むことで表示しているらしい。
んで、StreetViewというライブラリを使ってコーディングっ!



さて、今回のイベントは有料イベント。3,200円。
先日もこの67(ロクナナ)のイベントに行って来たんだけど、正直有料ではもぅいかないなぁという感。
内容が...というよりも、時間と3,200円のお金とを考えると、技術的な事であればソースコード呼んだ方が早いし試す時間もできるしね。
オーガナイザーの大重さんは、「参加者がついて行ってないんじゃないか?」という心配していてまぁそれはあると思うんだけど、逆に、「物足りい人がいるんじゃないか?」という心配はないんかなぁ??
そういう人のために、もっと突っ込んだ質問してみてもいいんじゃないの?と思いました。
それはついて行けない人がいなくてもしょうがないという感じで。そうでないと、それなりに知っている人はお金払ってまでいくような気分にはなれないんじゃないかなぁ?

あと、CSSNiteビギナーズの時と比べると主催者側のやる気がイマイチ感じられない気もして。
比べちゃ悪いんですが、始めていった有料のイベントがCSSNiteビギナーズだったもので。
CSSNiteビギナーズは開催前には、気になっている質問したいアンケートを取ってその内容を講演者に質問してみたり、連動書籍としてイベントに向けた本を作成して発売前に配布したり、開催前にその本のPDFを事前勉強用に配布してくれたり、開催後もアンケートの集計結果を流してくれたり、フォローアップメールがあったり...とさすが有料イベントだなぁーと関心しちゃったんですよね。

さて、これで私の有給期間を使ってのセミナー参加は終わりです。。
来年再就職したら、土日のイベントがメインになるだろうなー。
• • •

2008年12月15日月曜日

お茶の水まで散歩

今日はなんか疲れていて遅くに目覚め。
でもなんにも動かないのも体によくないので、小川町、お茶の水の方まで散歩してきました。
外に出てみると思った以上に寒くて、折れそうになった心を必死に抑えつつ(笑)

このアプリはiTrailというiPhone用のアプリです。
通った道を記録してくれるので、散歩する時にはこれを使ってます。....旦那が。
あとは、途中で写した写真が経路上に載ってくれると嬉しいんですがね〜

途中で通った東京ガーデンパレスというホテルで、1月1日〜1月4日までランチバイキング 大人2,500円でやっているそうです。
お正月にはゆっくりいってみようかなぁー。
• • •

2008年12月14日日曜日

鍋パーティー

昨日、会社の同僚&その相方を呼んで8人で鍋パーティをしました。
場所は我が家。どうやら8人は全然OKっぽいです。机さえなんとかすれば10人いけるかも?!

勝手に冷蔵庫を空けて氷やビールとってきたり、ご飯ジャーから雑炊用のご飯持って来たりと、自分の家のように好き勝手やってもらえて助かりました。我が家にはそぅいぅ人が向いています♪

こういう自宅イベントは何回かやっているんですが、大好きです。
飲みの席というのは好きな方なんですが、なんせ私はお酒が飲めなくて食べる専門なんですが、お店を選ぶのって難しい。
でも自宅の場合は飲む人は勝手に飲み、食べる人はどんどん食って...って感じで自分が好きな様にできるので嬉しい。
時間を気にせず色んなおしゃべりできるし、普段では考えられない量の食料調達も楽しい。
んでもって、外食に比べて値段は半分以下ぐらいにはなります。

最後は本寝しちゃった人がいたりとグダグダでしたが楽しかったです。
今の会社は今年いっぱいで終わりなのですが、こういう楽しい会はまたやりたいなぁ。

そうそう、引越祝いでクリスマスツリーを貰いました!こぅいぅ手みやげってなんか大人っぽいですよねっ
• • •

2008年12月9日火曜日

Flex3.2+MacOSXでTextAreaにコピペで文字を貼付けると改行が入らない

Flex3.2(AIR1.5) + MacOSXでTextAreaにクリップボード経由でコピペで文字を貼付けると改行が入らないみたいで、悩んでます。

Flex3.2を使いMacOSXにてテキストエディタで改行を含んだ文字をコピー。
mx:TextArea上でペーストすると、見た目上は改行が入って貼付けされる。
でも、TextArea#textの文字列を見てみると、改行文字自体が入っていない。

現象としては、Flex3.2から発生していて、Windowsでは発生しないみたい。

・TextAreaの見た目上は改行されているが、TextArea#textの文字列には改行がない。
・Flex3.1(AIR1.0)であれば問題なし(=TextArea#textの文字列には改行が入っている)
・WindowsXPでは、問題なし
・コピペでなく、TextArea上でEnterキーで改行入れると問題なし
・テキストエディタからドラッグ&ドロップでコピーすると問題なし

改行文字が入っていない...というのは以下で試しました。

TextAreaにて "a" + 改行 + "b" をクリップボード経由で貼付けして、
var value:String = textArea.text;
for (var i:int = 0; i < value.length; i++) {
   trace(i + ":" + value.charCodeAt(i));
}
って感じで文字コードをみると、結果は
0:97
1:98
ってなります。

問題ないパターンの時には
0:97
1:13
2:98
と、13(CR)が含まれているんですけども。。

テキストエディタをCotEditorを使って、改行コードを CR, LF, CR+LF で試してみても現象は同じ。

TextAreaの見た目上では改行が入っているので、DELETEキーで改行部分を削除してみると、見た目上は改行が消える動きをする。
んー、ということは、TextArea#textのメソッドで何かやってるんやろうか。

これが解決できないと、文字列を改行で区切って文字列操作することが出来ないっ 困った。
...ということで、まだハマり中。何かご存知の方いらしたら教えてください。。
• • •

2008年12月8日月曜日

上野公園までお散歩



今日は天気もとても良かったので、上野公園まで散歩してきました。
経路はこんな感じ。

iPhoneを使い始めてから、散歩がとても楽しくなりました。
GoogleMap+GPSで迷子にもならないし、こぅいぅ経路を残してくれるアプリもあるんですね。

上野公園は始めて行ったのですが、鳥が凄い多い! 見てるだけで楽しくなりますねぇ〜
銀杏はちょうど季節だったので、黄色い絨毯が綺麗でした。あと、ぎんなん臭いにおいとwww
不忍池には枯れた草?木?がいっぱい生えてましたが、あれは蓮なのかな。あんな大量の蓮の花が咲いたらさぞかし圧巻でしょうねぇ。今度はぜひその季節に行ってみたいです。
• • •

2008年12月5日金曜日

頭で認識する前に反射的に体が動くということ

小学校の頃、そろばん塾に通っていました。

そろばんの腕前はお世辞にも良くなかった。正直、中の下くらいだったと思う。
周りのみんなが通い始めたから私も!という感じで通い始めたので、経験数もそんなに多くない。
でもなぜか、読み上げ算というのは得意だった。
そろばんなんてしない若い人には読み上げ算というのは分からないかもしれないですね。
読み上げ算というのは、先生が問題を読み上げて行って、最後に "ねがいましてはっ!"といったら計算が出来た人から手をあげるっていうもの。
そんな読み上げ算だけは、一番に手を挙げる事が凄く多い。

その原因は自分でも当時は良くわからなかったんですけども、先生が「aqubiさんは凄いねー」と言った一言、「どうしてaqubiが早いんだ?」という無言の目線を感じた途端、意識してしまって早く手が上げれなくなりました。

手を挙げるのが早かった理由というのは、そろばんが早いんじゃーなくて、"ねがいましてはっ!"というタイミングをチャッチして手を挙げるまでの速度が早かっただけだったんですよね。

意識する前は、何も考えずに反射的に手を挙げていたんですが、意識し始めてからは、頭で終わりだと認識してから手を挙げるようになってしまったため遅くなったんです。
そう分かってからは、常に意識するようになってしまって、もうそんなに早くは出来なくなってしまったんですよね。

これと似てるんかなぁ?って思う事はその後も多々ありました。

例えば。。。
部活でやってたブラスバンドの練習の時。
もう凄く眠くってウトウト状態だったんですよ。しかもパートが、パーカッション(打楽器)なので、出番がなかなか来ない。
ウトウト...ウトウト...はっ!と気づいた時には私の出番の所は過ぎ去っている事があったんですが、周りに聞いてみるとしっかり叩いてたっていうんですよね。寝てたはずなのに。

スロットを打っている時。
昔の4号機の時代では、ビタ押しすることによってメリットが出るような機種ってあったんですよ。
メリットは、メダルの獲得枚数が増える、演出が変わるなど色々ですが。
普通に何も考えずにバシバシ打っている時には、それなりにビタで来ていても、「ここでビタしないと!」と意識して構えてしまうとなかなか出来なくなっちゃぅ。
8回連続ビタが必要な場面なんて、もぅダメ。プレッシャーにも負けてww
でも、ある時これまでにないくらいビタが成功した時があったんですが、それもまた眠くてぼーっと打ってる時だったんですよね。
うーん、これはプレッシャーってやつだけかもしれないけど。

信号待ちをしている時。
青になったら歩き出すんですが、これも周りの人と比べて歩き始めるタイミングが早いのに気づいてしまった途端、意識してしまい今はみんなと普通のタイミングに。

プログラムを書いている時。
Sysまでうつと、勝手に System.out.println まで打っちゃう。

頭で考える前に体が反応するという事は、何度も経験してから身に付く事で、凄く早く処理が出来る状態。
今思うと、そろばん塾の周りの人の方がもっと多く経験しているはずなのですが、私の方が早かったという事は、人によってその状態になる回数、期間は違うという事もあるのかもしれない。

頭で認識したと感じる時は、目で見た事を頭で認識/理解して記憶するという経路を辿ってるんかなって思いますが、経験が多いと理解や記憶の部分を所をすっとばすことによって体の処理速度が上がるような感じ。

でも意識すると、その"すっとばし"ができないんですよね。多分。

人間って不思議だなぁ。上手く出来てるなぁ。というお話でした。
• • •

2008年12月4日木曜日

MacOSXにGit,GitHub,JGitをインストール

MacOSXにGit,JGitをインストールして、GitHubを使ってみました。
特にJGit...イマイチ良くわからず適当にやっているので、間違っているかもしれないが、一応記事でまとめてみたので、よければどーぞ。

aqubi+shin1 Git
・Gitをインストールする
・GitHubを使える状態にする
・JGitのEclipsePluginを入れる
の3部構成でっす。

wicketでサンプルアプリを作ろう!...あ、リポジトリは何処にしよう...GitHubっつーのにしてみる?Gitも使ってみたいし。

というのから始まったのですが、この寄り道でなんだか時間食っちまったよー。
• • •

2008年12月3日水曜日

SunTechDays 12/3に行って来た

SunTechDays 2008 in Tokyoに昨日に引き続き2日目に行ってきました。

ということで、本日の勝利品〜!

セッション毎に投げられるTシャツ一枚と、帰りにもらったdukeキーホルダー(LEDライト付き)と、VertialBoxという名の(多分)ティッシュ。

ずっとセッションに入っているのに、なかなかセッション毎に投げられるモノをGETできなくてですねぇ... でも本日も一つGETできて良かったです。

さて、2日目はやっぱり1日目に比べると人は少なめでしたね。
なんだか、日本のエンジニアはあんまり熱心じゃないみたいに思われちゃたんじゃないだろうか?となんとなく心配してみたり。。。
逆に言うと、海外では平日でやってもエンジニアが集まるんですかねー。海外のエンジニアの方が自分のスケジュールを自分で決めるぐらいの位置の人が多い...とか?

あと、セッション中に挙手を求める質問とかあるんですが、同時通訳を挿んでるからタイミングが客席の反応は結構遅れるんですよ。
「なんか、ぱらぱらと時間差で手が上がりましたねー」って苦笑いしている講師がいたけど、同時通訳だって事気づいてよー!
しかし、同時通訳って大変ですよね。英語と日本語って文章の出だしの単語が違うから、通訳も文の最後まで聞かないと日本語に変換しにくそうで..
しかも、セッションの時間が少なくなって講師が早口で飛ばしている場合なんて..そりゃもぉ大変でしょぅ。
あ、そういえば、普通に翻訳していた後に、"ちょっと落ち着けや.."と言う声が聞こえてプチっと一瞬翻訳が途切れた気がしたんですがww
あれは講師が言っていた翻訳だったんでしょうか? それとも翻訳者の本音?!?!
終わり頃になると、翻訳者のため息が聞こえたりもして...ちょっと笑っちゃいました。

では今回も各セッションを簡単に。

1-G-1
基調講演
予定していたMatt Thompsonがキャンセルということで、Solaris CTO の James Hughesの講演でした。内容は、Hardware,OS,Programのトレンド。
2004年〜 クロック数が横ばいで成長していないのをみて、ムーアの法則の時代が終わった?という人がいるけどそれは違う。
MultiThread,MultiCoreが進化している時代であって、ムーアの法則はまだ生き続けてる。
つまり、ThreadCount数が高くなっていく傾向がTrendであり、この先数年はこのまま成長して行くだろう。
そんな中、プログラマーはこの事を意識せずに アプリケーションを作成する=パラレル化できないようなアプリケーションを作成する のは良いはずがない。
アプリケーションで全くスケールできない というものは私が見た限りない。
...という話でした。
中で、Goldilocks Application という単語が出て来たんですが、このGoldilocksという言葉の横に3匹の熊の挿絵があって、「日本の方はこの話をご存知とお聞きしたので...」とスルーされてしまいました。皆知っているんですかねぇ?私は恥ずかしながら知らないんですが。
というので、ちょっと検索してみました。
多分本はコレ。
内容としては、Goldilocks(ゴルディロックス)の女の子が留守にしている熊の親子の家に迷い込んで、スープを飲んでみたら、お父さんのスープは、熱すぎて飲めず、お母さんのスープは、ぬるすぎて、子供のスープが丁度よく。美味しい。椅子やベットも子供のものが丁度いい。 ってものらしいです。つまり、「ちょうどいいってのがいい」って話。
どうやら、経済用語にもなっているらしく、有名なんですね。。おやまぁ。

インフレ(熱すぎる)ではなく、デフレ(冷たい)のではなく、適正(丁度いい)
ところをGloldilocks って言うらしいですよ。


2-j-1
Sun SPOTs:Toy for Geeks
Roger Meike
Sun SPOTsというのは、無線センサーデバイスです。
こういうセンサーを使って好きなものを作成するのって憧れません?私は憧れるんですよねー。自分で作成できるものがPCを抜け出せるのはいい!昔から好きなんですよ、工作がww
で、このSunSPOTsはJavaを知っていれば出来るそうで!すっごく楽しそうです。
自動車を運転するゲームをWiiみたいに端末を動かすことによって動かしたり、webcamでペットの犬を見て声かけて来てくれたら餌を与えるようなものを作ってみたり、Twitterへメッセージ投稿してみたり。
また、真面目なプロジェクトもいくつもやっているようで、塩田でダメになった土地をもとに戻すようなものも現在進行中だそうです。

サブタイトルの Toy for Geeks ってまさしくそう! んで気になって値段を見てみたら、Sun SPOT Java 開発キットベースステーション x1、ワイヤレスセンサーデバイス x2 つまり3台ついて 76,500 円 。
そうかぁ...おもちゃにしたら高いけど、買えなくもない微妙な値段www

なにはともあれ、この講演者がカッコいい! 思わず検索したけど、このRogerって人じゃないと思うんだけど。。若かったし、黒髪だったし。。
女性必見!って書こうとしたんだけど名前分からないよぉ。。ヤラレタ。


2-j-2
Lightning Talks
「Javaの世界で有名な方ばかり集まってます!」いう司会のもと始まりましたが、顔ぶれみると確かに知っている名前ばかり。
というか、JavaExpert#03に記事だしてるjava-jaの人が集まった!?
というか、それならば事前にこのメンバーの名前をセッションの予定に入れておけばいいのにー。もっと人集まっただろうに。
あ、YoshioriさんがMavenコマンドでJythonを使うプラグインを紹介されてましたよ。

2-j-3
AMD Technical Session:Achieving Better Performance For Your Java Application
AMD社の方のセッションでした。
なぜハードのメーカのAMDが?というのは、CodeAnalystというものは、そのEclipseのプラグインとかをオープンソースで提供しているからのようです。http://developer.amd.comから見れるようですよ。知らなかったですよ、存在も。

ハードの機能を最大限に引き出すソフトの開発は...って視点からの話でした。

ハードが弱い私として認識したのは、
・チューニングとか考えるんだったら、とりあえず最新のJDKを使っとけ!良く知らずにあれこれ触らない方がいい。特に、J2SE1.6以降ね
・深く知らない人がスレッドプールやキューを自作しちゃダメ。パフォーマンスに影響がでるから。
・ベンチマークの結果は、自分のアプリと関連のある内容の結果で無いと全く意味無し。
・適切なデータ構造を選択すること。Elementが固定数ならArrayとか。
・ParallelArray...JDK7より入った。基調講演の話も踏まえると使って慣れといた方が良さそう。
かな。


2-j-4
Developping Web Applications using Comet and Ajax
Cometについて...でした。私は思いっきり「コメット」と読んでますが、講師の人は 米!って感じの発音。
Cometは一番最初のトリガーはクライアントからになる。まぁ、プログラムテクニックの一つ。

クライアントからみて、非同期に勝手に動作してくれるように見えるものとしては、大きく分けて3つある。
  1. Ajax
    Ajaxで一定間隔でサーバに最新の情報をとりに行く。
    この場合のデメリットは、無駄に通信が発生してしまうこと、取得データはリアルタイムに最新にはならない。

  2. AjaxPush(Long Polling)
    一番最初のクライアントのアクセス時に非同期アクセスを行い、常にコネクションを張りっぱなしにしておく。データが更新されたらサーバからクライアントに送る。これにより、常に最新の状態になる。

  3. AjaxPush(Streaming)
    1GBなどの大量のデータをダウンロードする時には、少しずつ返す...時のパターン。
    Long Pollingと同じように常にコネクションを張りっぱなしの状態で使用。


下の2つがComet.

スケーリングできるのか?という問いには、NewIOのnon-blocking sockets.
Cometは、Tomcat/GlassFishで使える。
GrassFishでは Grizzly(グリズリー) comet Frameworkというものを使用する。

LongPollingを実装するためのベストプラクティスとしては、最初のアクセス=LongPollingを開始するアクセスは doGet で行ない、それ以降の処理は doPostで行なう。


2-j-5
Improving JavaPerformance
SunのJavaでのパフォーマンスチューニングをする時のお話でした。
JVMのオプションとして、StandardOptionの他に -X Option, -XX Optionがありますが、その中でチューニングの際に使えるものの説明でした。
ちなみに、-XX Optionは、JDK1.4の時には159個だったらしいんですが、J2SE6で410個、J2SE7では480個と、爆発的な追加が行なわれているようです。
説明中も大量のOptionが出て来て、ここに書ききれるような感じじゃないくらいww
中にはJ2SE5やJ2SE6では標準で設定されているようなものもあって、こぅいぅのを検討する前に最新のJDK使った方がまぁ安心だねって感じ。

ちょっとメモしたのを書いておきます。
(間違っていたら指摘してください〜 ちょっと自信なし)

MultiCore,MultiThreadで同じデータを扱う時に、各スレッドで同じポインタを参照していると競合して遅くなる場合がある。そこで別々のポインタにさせるのは
-XX:+UseTLAB。
Eden領域でのサイズ指定は
-XX:ResizeTLAB
-XX:TLABSize

Young領域
-XX:+UseSerialGC ... SerialCollectorを使う時。よほどでない限りこれで十分。
-XX:+UseParNewGC ... ParallelCopyCollector。並列でCopy作業してくれる。Java5以降はデフォルトで設定あり。
-XX:ParallelGCThread={n}...GCをするCPUの数。デフォルトではそのマシンのCPUの数。

Old領域
-XX:+UseParallelOldGC...ParallelCompactingCollector。Java5Update10で導入
Compactingはバラバラの位置にあるのを一つにまとめること。一つにすると、速度も早くなるし不具合も出にくくなる。でも一カ所にまとめるにはCopy作業が必要で、これはこれでコストはかかる。

-XX:+DisableExplicitGC...GCの実行を止める。


最後の方はもぅ集中力が保てなくて、メモるのを挫折。無念。
明日はいかないので、SunTechDaysは今日で終了。面白かったけど疲れたー。
普段こんなに講義を聞き続けることなんかなかったからなぁ。
• • •

2008年12月2日火曜日

SunTechDays 12/2に行って来た

SunTechDaysに行ってきました。
ほくほくの勝利品は以下。



基調講演に間に合うように会場について、dukeの時計をGET!
セッション毎に投げられるdukeのぬいぐるみとTシャツは...幸運なことにぬいぐるみをGET!
あとは、セッション終了後にくれた dukeどらやき(ほんのりとdukeの姿が焼き印されてる) と、最後のアンケートに答えて貰ったカバンです。
いやぁ〜dukeぬいぐるみ嬉しいっすっ!

喜びのあまり戦利品が先走ってしまいましたが、感想をば。

まずは来ていた人ですが...おじさま方が多かったように思います。
技術者向けのイベントにしたかったようなのですが、それだったら、そもそも平日にやる時点でズレてますよね。
私も、有給消化期間じゃなかったら行ってなかったでしょうしぃ。
おじさま方が多いイベント=開発者が少ないイベント は、女性の人も増える傾向があるような気がするんですが...今回もそこそこいたかな。30人くらいは...?

イベントの内容自体もなんか中途半端になっちゃってる感がありました。
開発者と、管理のおじさまと...両方とも分かるようなセッションにしたのか?という感じ。
難しいのは分かるけど、ちゃんと絞ってくれたほうが嬉しいんですけどもね。

さて。

まずは基調講演。
DemoShowcaseとしてJavaFXのライブコーディングや、3D眼鏡を使った3D体験、スクリーンを移動してもプロジェクターがスクリーンを追っていって常に投影してくれる(Wiiリモコンのセンサーを使ったもの)..とかがありました。
んでもって、Sun Country Manager Introductionでは、なんか出張中とかでビデオを見させられた。あらら。力入ってないのかしら?
んで、KeynoteではGosling登場。でも、あんまり元気がなかったように思うのは気のせい?
Gosは最後にねこび〜んのTシャツを貰い、emacsはSTOP!ゆーって去って行きました(笑)

各セッションの内容をかいつまんで。

1-M-1
JavaSE6 Update10 and Development
荻布 真也

JavaKernelでインストール時間の短縮を行なっている
始めのインストールはCore部分のみをDownloadして、アプリ起動。
それ以外のものはバックグラウンドでDownload/Installする。
これによって14Mが5Mになった。

DeploymentToolkit
JREの検出を行い必要に応じてインストールをしてくれる。
アプレットはブラウザプロセス内でのJVMではなく、別VMとして起動。
そのおかげで、1つのHTMLに複数のJVMを起動するようなものも作れちゃう。
アプレットをD&Dでブラウザの外に移動しても単体の画面として動作する。この状態でブラウザを落としてもOK!

組み込みJNLP
<applet>
<param name="jnlp-href"
value="my-applet.jnlp">
みたいな感じで、アプレットでJNLPのパスを書いて、詳細はJWSのJNLPファイルで記述ができる。
これらのおかげでアプレットの制限も少なくなり、Vistaの保護モードのIEでの制限の問題も解決し、JavaFXも動かせる。署名なしでもcrossdomain.xmlを公開しているWEBサービスも使える。

今後は、ビデオ/オーディオなどオーディオサポートを行なって行く。


1-J-2
Java Persistence APIs
Chuk-Munn Lee

fetchのlazyとeagerの説明と使いどころ。両方の良い所どり?のLEFT JOIN FETCHをおすすめしてた。

MERGEの話。親子だけでなく、孫、ひ孫...と続いて行くような階層構造の場合には、何処までMERGEにするかはバランスが重要。全部やろうとせず、手動でやる方が良い場合もある。

継承の話。
SINGLE_TABLE...一つのテーブルにまとめちゃう方法。Fetchも早くなるが、使わない項目では内容が空になってしまうのと、量が多いと、どでかいテーブルになっちゃう。ということで、必要に応じて使うべし。
JOINED...各テーブルに親のIDを持たせる方法。つまり正規化した方法。たくさんの継承、データがある時は処理コストがかかってしまうし、Queryが複雑になってしまうデメリットはあり。
TABLE_PER_CLASS...JPA1.0では正式対応ではない。。

EntityManagerの話。
スレッドセーフではないので、例えばServletのクラス変数としてEntityManagerを保持しておくのはダメよ。Factoryはいいけど。
doPostとかのメソッド内でEntityManagerを作成して、終わったら廃棄するべし。

Versionとロックの話。
@Versionでバージョン管理下になる。
em.lock(d1, WRITER);
em.flash();
をすれば、データは変更してなくてもバージョン番号を上げれる。
BulkUpdate...早いけど、Versionが効かない。だから、やるなら誰も触らない夜中にしな!
FashModeをCOMMITにすれば、コミットしたデータのみ取得できるよ。

SQLは値を式に埋め込まず、パラメータ化しようね。


1-J-3
Ajax and Frameworks
Joey Shen

jQuery,Dojoなどのライブラリの話。ということで省略。。(笑)


1-M-4
RIA using JavaFX
Sridhar Reddy

12/4(2日後)にリリース。
来年の春にはモバイル、来年の夏にはTVについて対応して行く予定。
デザイン系ソフトでよくある、合体、ぼかし、ミラーリング、Glow、Lightingなどの効果や動画作成時につかうKeyFrameやTimelineの説明....という事について説明が多く割かれていました。
冒頭に、デザイナーの方でも使える...とか、デザイニングソフトのように...とかって言葉が出て来たのですが、そっちの方に力を入れて行きたいって感じがひしひしと伝わってきました。


1-J-5
Social Computing using Zembly and SocialSite
Joey Shen

zemblyについての紹介でした。
このサービス、正直私は全然知らなかったです。
内容は、FaceBook,OpenSocial,Gadget,iPhoneなどのSocialApplicationを作成するための環境とホスティングサービスのようです。
WEBベースでIDEがあるようでコード補完もしてくれるらしい。
他の人のアプリをコピーして自分なりのカスタマイズをする...でみんなで開発しよー!って感じみたい。


1-J-6
NetBeans New and Cool
片貝 正紀

NetBeans6.5の新機能
・PHPサポート
・JSライブラリのデバッグ(IE,FireFox)
・DBエクスプローラー、SQLクエリ
  DBエクスプローラーのTABLEのSwingのJTable上にドラッグすると、
  JTableの列にテーブルの項目が設定され、Entityクラスが自動作成される。
・Eclipseプロジェクトインポート機能
・保存時にコンパイル、自動配備

最後におなじみの方々の写真が一同に!




さて、明日は15時くらいからいってきます〜。
• • •

2008年11月28日金曜日

WBS2.0

WBS2.0に参加してきました。

会場は銀座アップルストア3F。この会場は椅子がゆったり座れていい感じ〜!映画館みたいな感じで。また、画面とか音響とかもイベント用に作られているから見やすい&聞きやすい。違うイベントで何回か行きましたが結構好きです。
お値段高いのかなぁ??高くないのであれば、ぜひこの会場をつかったイベントを多くして欲しいですなぁ。

さて、会場に到着したのは10分前だったのですが、会場にはあまり人がいなく...あれ?時間間違えちゃったかしら?と思ったのですが、お聞きすると時間通り。
人が少なかったんですよね〜。始めて行ってみたのですが、いつもはどうなんだろう?でも...内容はそこそこ面白かったです。
技術系のイベントも確かに面白いんですが、ビジネス系のイベントって楽しいですよ。うん。

内容は、sprasiaの動画編集アプリと小川さんの会社で作られているmodiphiの紹介と、メインゲストであるもしもの実藤さんのトークでした。

modiphiは、フィードで大量の情報を配信するサービス。
競合となる製品はTechCrunch50で優勝したYammerとの事で...まぁこれでだいたい想像つくんじゃないかと。
Yammerのニュースを聞いた時は、丁度社内でもTwitterでコミュニケーションを...と言い始めた時だったので、時代だなぁ〜と感じました。
目の付けどころとしては、今時というか...ある意味誰でも考えた事がある? という所なんだあろうなぁと思いますが、本筋を見失わず製品にするのは大変だろうなぁ。
個人的に欲しいなぁと思うのは、現在使っているサービスはそのまま継続しつつ、情報は一元化、見やすく、探しやすくするようなもの。
新しく別の所に情報を格納していくのは嫌だなぁ....
でも、ビジネスモデルとして成り立つためには、お金がとれる仕組みも必要だし、囲い込みも必要だろうし。。。誰でも欲しいと思っているけども、ビジネスとしてやって行こうとすると容易に本筋から外れて意味の無いものになってしまいがちな気がします。

そうそう、中でswrulというサービスの話が少し出て来たのでためしてみました。
FriendFeedと似たようなものなんですが、Timelineの表示はちょっとおお!って感じでしたよ。
自分以外のアカウントのサービスも入れれるみたいだから、気になる人のものを登録してTimelineでみてもいいのかも。
でも無くていいのになって思うのが、ブログなどの記事の表示は、元記事にリンクするんじゃなくてこのサービスへコピーして表示させている件。
Timelineの表示の見せ方に特化して頑張ればいいのにな、このサービス。

もしものサービスはドロップシッピング。
もしもで提供されている商品について、自分の利益を上乗せして自分のサイトで販売するという形態。売れて始めてお金の流れが発生するのでリスクを持たないし、返品/クレームなどはもしもの方で受けるとの事。
こぅいぅ新しい形態を始めに考える人って凄いですよねぇ〜。
実藤さんという方は、ビジネスが大好き!なまだ20代の方でした。
なんだか圧倒されてしまいました。
お金を稼ぐって大変な事ですけども、自分のアイデアや実行力でどんどん成長させてしまう人みたい。でも、ぱっと見、普通のさわやか青年なんですよー。
経営者っつーのは、やっぱり素質ってのがあってそれは歳なんて関係ないんだなぁなんて改めて思いました。かっこ良いです。

比較的若い経営者って、自分の利益よりも皆が喜べるもの、地球にやさしいもの...という観点が強い人が多いような気がします。
元大阪に住んでいた私としては商人根性がでて、そんなんで商売やっていけるんかー?誰かに騙されちゃぅでー?なんて思ってしまいますが、もぅそんな考えは古いんかもしれなくて、そんな感覚の人は世の中にとって悪なんかもしれない。
お金が結びつく商売って、騙し騙されな所も出て来てしまいますが、その根底はお互いを知らない不信感があるからと思います。
みんなが情報発信や意見を言い合えるような環境がそろって来た今、そんな不信感が払拭されていくような世の中になるといいですねー。
この前ニュースでもやっていたけど、「正直者が馬鹿をみる」のはやっぱ違うんだろうし。

最後に会場を後にする時に、おじさんがぼそっと「なかなか面白いやん」ゆーて帰って行ったのが印象的でした(笑)

次回は、ITジャーナリストの林信行さんを迎えて、今年一年を振り返ってみるとの事。
興味ある方はどーぞー。
• • •

2008年11月25日火曜日

FlexUnitとfluint

FlexUnitとfluintを試してみました。
どちらもFlex,AS3のUnitテストフレームワークです。

FlexUnitはv0.9になって、テスト画面がちょっとCoolになりましたね。
fluintは始めて使ってみたのですが、TextInputの入力やButtonのクリックなど GUIのテストが出来るのは良いですね〜

という事で、簡単なモノだけですがwikiに書いてみました。
FlexUnitを試してみる
fluintを試してみる

AIR GEAR v1.0.1であれば直ぐに試せるプロジェクトのパッケージも添付してますので、よければどーぞー。

感想としてはですね...JavaのJUnitに慣れすぎいるのか、やっぱりモノたりない。
テストが書けて実行できるのはいいんですけども、エラーが発生した時に該当のソースに直ぐにJumpできて修正できるっていぅ...テンポのいい開発ってのがやっぱりしたい。
私はEclipse派なので、EclipseのJUnitプラグインのように、Eclipse内にpaneとしてテストの結果が出て来て、StackTraceはソースのリンクになっていて...ってのが良いなぁ。

今回はANTでの実行は試していないんですが、まぁこれで実際のプロジェクトでやるのであればGUIのテスト画面を表示するのはあんまり意味がないのでANTで実行で十分な感。

でも、ANT(もしくはMaven)でテストする というのと Elipse上でぱぱっとテストする というのは目的が違うと思うので両方欲しいですなぁー。

FlexBuilderはお試し期間切れのために試せてないのですが、どこまで出来るんだろう?

あとはデバッグ実行がやっぱり欲しいなぁ。んー。


あ、そうそう、エラー時のStackTraceですがコンパイルのオプションに -debug をつければ行番号もでるようになりますよー!
• • •

2008年11月24日月曜日

ここ数年で一番インパクトがあった電化製品

ここ数年で購入した電化製品のうち、一番インパクトがあったのは、断トツ ダイソン

私が購入したのはDB08というもの。
その当時は、ちょっとカッコいいCMをドンドン流していて、そんなに儲かっているのかぁーというイメージと、「吸引力の変わらないただひとつの掃除機」というキャッチコピー。

んで、値段をみてびっくり。普通の日本メーカの掃除機と比べて2倍くらいする。
でも価格.comでは、上位にランキングされている...

そんなにイイモノなのか?んじゃまー、掃除機なんてそぅそぅ買うものじゃないし、買うならイイモノ買うかー!と購入しました。

早速使ってみて、これまたびっくり。
凄い吸引力!
ラグマットは吸引力に負けて吸い付けられ、掃除が出来ないくらい。。
音も凄い。ぐおぉぉぉぉ〜!!!

掃除機にはよく、パワーの強弱を替えれるのがありますよね。
日本メーカ製だったら、何十年前からあるような機能。これがね。。。無いんですよ。ダイソンには。
唯一あるのが、途中に隙間を開けて吸引力を少し弱めるためのもの。めちゃめちゃ物理的!

すごい衝撃でした。
こんな掃除機があるのかっ!と。んでもって、今までの日本メーカーの掃除機は使いやすさを求めた機能が色々あったんだなぁ!と。

でもでもね、文句は出ないのですよ。確かに吸引力は凄いから。
(まぁ、私個人としての選択肢は間違えたな...とは思いますが。)

ここで、一般の方にどうですか?他に欲しい機能がありますか?と聞いたら、多分、
・パワーの強弱をつけれるようにしてほしい
・もう少し静かにしてほしい
・電力消費量を押さえてエコにしてほしい
とかってのは、出てくるんじゃないかなぁー?と思います。

でも、これらの声を抑え(?)、特徴である「吸引力」に注目し続けているから売れるんじゃないかなぁ?

音を静かにするというのと、パワーを強くするというのは、素人目からみても反対のベクトルを向いている。そこで、この2つを実現した!って言われたとしても、それはいい!と飛びつく事は多分ない。どっちも妥協しあった結果じゃないの〜?って思ってしまう。

この前、テレビでたまたま旅館で掃除機をかけている絵があったんですが、その掃除機はダイソンでした。
確かに、手早く&しっかり&でも排気は綺麗 という状態で掃除機をかけたい旅館だったら、ダイソンはバッチリだよな。音は静かである必要もない。

万人に好まれるように機能をいろいろ搭載してどれも中途半端になるよりも、本来の機能を追求したのが特徴 というのは結構長い間売れるものになるのかもしれない。

と、こんな事を考えていると、掃除機以外の世界でも一緒だよな〜と思ったり。
という訳で、これからは 「本来の機能に重点を置く=ダイソン的にいく」ということで(笑)

あ、でも、まぁ、やっぱり バランスが肝心ですがね(笑)
• • •

2008年11月22日土曜日

java-ja 第12回 Swingの実力

java-ja 第12回のイベントに行ってきました。
Swingネタをやるということなので、Swingを使って来た私としてはこれはいかねばぁー!と参戦して来たんですが、実はjava-jaのイベントに行くのは始めて。
一緒に行く予定だった旦那は仕事の関係上欠席ということで一人でドキドキしながら六本木へと向かう。

だって、java-jaのノリは...と噂には良く聞くので、不安いっぱい。
正直、怖かったよ。。

場所は六本木にあるグリーさんの所でした。綺麗な会議室!70名くらい集まったらしいんですが、まだ席も空きがあるくらいの余裕な広さ。さすが...すごいなぁ。ありがとうございます、グリーさん。

ということで、恒例の女性チェックしたかったんだけど、見渡すのも難しい!間違っているかもしれないけど、1,2人ぐらいだあったんかなぁ?

会場到着は15分遅れになっちゃったのですが、まだ始まってませんでした(笑)
yoshioriサンのトークで間を持たせている状態だったんですが、”java-ja始めての人〜?”という問いに対して手を挙げた方がそこそこいたので、ちょっと安心。

んが、その後の話の中で、「勉強会じゃないから」という発言が。
あれ...勉強会じゃーないんすか。勉強会のつもりで来ちゃってるよ、私。
ということで、始めにビールが配られる!
予定されていた内容が始まって行きましたが、確かに勉強会っぽくはない(笑)
なんといぅかー、仲良しのメンバーが集まって雑談しているぐらいのイメージ。良い意味でねっ

隣にいたのは、私同様、java-ja始めての方でした。
食べ物減るの早い...java-jaすげー!と一緒に共感できて心強かったです。
ですが、名刺交換をするのを忘れてしまい...残念ですぅ。またお会いできるといいんですが。

反対側の隣にはdisuke-mサンが! まさかそんな近くに知っている人がいるとは...声かけてもらった時にはマジびっくりしちゃいました。


一つ目は、太一サンの「SwingとSWTと.NET」
レイアウタと、Threadを題材にSwing,RCP,WindowsFormとで比較してみた結果について..でした。
リソースツリーが、左にあるjavaに対し右にある.NET。あー言われてみれば確かにそうですねぇ。
.NETは触った事がないのですが、自分が触るコードと、IDEが自動生成するクラスというのを分けて生成できるんですか。particial classってので。そういう心遣いはいいよねぇ。
レイアウタは、やっぱりWindowsの.NETがいい感じ。UIに慣れている会社って感がある。
Threadについては、RCPだとこんなにスマート! といいたかったんだあろうなぁと思いますが、その前に「この3つは、どれぐらいのファイルサイズになっているの?」という質問から、RCPのいけてない子が注目されてしまい...RCPがなんだかかわいそうな状態に(笑)


二つ目は、小野サンのSwingベースのDSLでした。
用事があって21時には帰らないと!という状態だったのですが、この時点で結構な時間に。
というか全て今日中に終わるのか?と不思議なペース〜 java-jaいつもこんな感じですか??

内容は、RoleObjectパターンについてでした。
IDEのようにSplitPaneなどでいろんなPaneがある状態の画面の場合、何かを変更したらそれと同期していろんなPaneの情報を切り替えたい! という事が良くある。
この場合はどんな実装する? 

1.Lisnterで実装する
Listenerでゴリゴリ実装...これしちゃうと大変。何か追加しようと思ったら何処に何を追加したらいいかもワカンなくなっちゃう。

2.Mediatorパターンで実装する
変更が必要なオブジェクトや発火イベントの受け取り口を用意したクラスを作って、そこに処理を固めてしまう。文字通り"調停役"
Listenerよりはいいけど、Paneの数が増えて行ったらこのMediatorクラスが膨大になっていっちゃう。

3.RoleObjectで実装する
Mediatorのような調停役に、各オブジェクトを登録する際に、クラス自体をKeyにRegistする。...この前提としては、基本は自分で拡張(継承)したクラスを使っていること。例えば、JListそのままは使っていない...
んで、自分のクラスにて必要な処理は、Role(役割)として記述する。
んで、Mediatorの方ではそのRoleを持っている場合はそのメソッドをCallする。
そうすると、自分の処理は、自分のクラス内や別のクラスとして書けるので、Mediatorはすっきりする。
合ってるかな?間違ってたらごめんなさい。

イメージ的には、EclipsePluginのgetAdapter(Class)のメソッドと一緒って事だと思います。多分。。

最後に、GUIのテストについて少し語られてましたが、マウスなどを動かしてテストするよりもまずはテストしやすいModelを作成して、そこでテストを書く...これは激しく同意。
自分の会社で、JFCUnitを拡張してマウスをグリグリ動かしてGUIのテストをするものを作成したんですが、そのせいで、自社の人はそぅいぅテストに集中してしまっているんじゃないかと凄く心配。
GUIを動かしてのテストは、頼りすぎてもいけない。全てをやろうとしてはいけない。と思います。その前にテストできる場所は多いはずで、テストすることを前提でクラス構成を考えるというのがトテモ重要と思いますです。

三つ目は、やまうらサンのレイアウトネタでした。
Swingでのレイアウトは大変。結局GridBagLayout使わないと思い通りに書けなかったりしますが、これも始めての人にはハードル高いですよね。。
そんな中、やまうらサンのレイアウタは、HTMLのテーブルタグでレイアウトを記述すればSwing上で表示できるものを作った!というものでした。
テーブルタグでレイアウトするなんて...CSSでやれよ!と言われいてる最近で、こぅいぅネタ出すのは...と謙遜(?)されていましたが、素晴らしいと思いました。
rowspanやcolspanも使えて、思い通り!
レイアウトで思い通りにイライラするよりも、自分の知っている事ですんなりできるというのは良い事ですよ。うん。
コードと、レイアウト情報が分離できるし。

といか、SwingもHTMLのCSSみたく、レイアウトは分離しちゃう方式にしたら良いよね。うん。

四つ目は、桜庭さんの「シンセサイザーのようなもの」
YMOの曲が流れ...何の話が始まるのか?という掴みから始まりました。この掴みはこぅいぅ場に慣れている人しか出来ないよなぁ。
んで、この前ふりの後には、L&FのSynthが本題でした。これってシンセって読むんですか?知らなかった。うふっ♪
XMLでL&Fの定義も書ける!ってものです。
SwingSet3も今までとは違ってカッコイイよ!しかも起動も今までと違って早い〜
"Swingいけるやん!"とみんなで盛り上がっていました。

五つ目は、岡崎さんの「JTableと方眼紙」
コンセプトも決まって無いけども、java-jaで発表することによって自分自身にハッパを書けるのが主目的ということで、控えめに始まりました(笑)

Excelの列を細かくして、方眼紙の状態にして使う...誰でも一度は見た事はあるもの。
ギークの方は嫌がるが、もぅこれはデファクトスタンダード。逃れられない。
んじゃー、方眼紙として扱う事を目的としたものを作れば良いんじゃない?
という発想とのこと。

どうして方眼紙のようにして使うのか...これは、思う所に文字が置ける!と、ソフトの機能をあまり知らなくても出来ちゃう 初心者に優しいインターフェースなんですね。

画面のハードコピーを送りますから...ログを送りますから...と言われて届いたメールに添付されているファイルの拡張子はなぜかxls。あるあるー!笑っちゃった。
でも私はExcel大好きですよぉ。ものすごく良く出来てるアプリと思う。

方眼紙は、3ミリが好き?5ミリが好き?7ミリが好き? この問いは岡崎さんならでわ。
頑張ってアプリつくってくださいー。

私的にはJTableのレンダラ/エディタの所...Excelみたいに初心者でも直感的に使えるような動きにしたものがあると良いと思うんだけどなぁ。
SwingのJTable使うと、
「IMがオンになっているとテーブル上で文字が入力できない」
ってクレームつく事とかありません?
この真相は、レンダラの状態になっている所で入力しようとしたが、IMオンになっているのでエディタ状態にならなくて、文字も反映されない って事なんですが。

これがSwingの動きっつーたらそうなんだけど、不親切ですよねぇ。
Excelのセルもレンダラ/エディタの状態ってあると思いますが、あまり気にせず使えてるんじゃないかと思います。SwingのJTableもあーなって欲しいーよー!

一回、根本的に、どうにかならんか?思ったんですが、んー。片手間にパパっとできるようなもんじゃなかったです。。

と、一通り終わったらもぅ余裕で11時過ぎ。
んでも皆余裕。終電っつー文字はあんまり無いんですかね??
私は心配だったので、そそくさ帰る組に。

そぅしたら、j5ik2oサンが!
一緒に仲良く帰らせて頂きました。おかげで駅にも無事に到着できて良かったぁ。
また 我が家にも来てくださいねー!土鍋とお水とカセットコンロだけ用意してお待ちしています〜

電車は終電。疲れました。。。
• • •

2008年11月19日水曜日

カヤックが語る制作会社のお仕事とAdobeAIR最新事例

カヤックが語る制作会社のお仕事とAdobeAIR最新事例に行ってきました。
カヤックからは、鈴木さん、瀬尾さん、オーガナイザーとして大重さん でイベントが開始!

参加者は...結構女性も多かった。年齢層も若い人が多かったように思います。
皆はカヤックに興味があったのか、AIRに興味があったのか...どっちだったんだろう?

前に参加したイベントで、ベンチャーの会社の社長達に、興味がある会社は?と聞かれ一番出て来た名前がカヤックでした。
皆で楽しい事をしている...けど、会社としてやって行けている というのが興味ある所ですよね。
「サイコロで給料を決める、サイコロ給」が有名だったりします。
その他..あ、これもなん?というのが、「gooの珊瑚プロジェクト」とかも。

まずはカヤックの説明から始まりました。
ポリシーは、「何をするかよりも誰とするか」「量が質を生む」
経営理念は「作る人を増やす」
褒め言葉は「それって漫画っぽい?」
...なるほどね。こぅやって公に口に出す事が大事なんだろうな、多分。

旅する支社として、ハワイやイタリアなどに3,4ヶ月事務所を借りて支社にするそうです。そこでする事は通常の業務らしい!
やっぱり、時差があるので会議とかはしにくい...という事でしたが、メリットは誰かが常に業務することによって24時間働ける!(笑)
まぁ、それは置いといて多分一番メリットとしては、モチベーションの向上だったり、社員同士の交流だったりという所なんでしょぅ。

「すぐにお金にならないもの」という事については、メリットとして
・技術力を顧客に見せれる
・モノがあると、"この技術を使ってこぅ変えれば" という話をしやすい
などがあるため、無駄じゃなぃ!という考えでやられているみたい。

確かにその通りではありますが、んじゃー真似して...と簡単に考えて出来る事じゃないとは思います。
何をすればいいのか? どんなモノであればインパクトがでるのか?など皆で考え、リスクも皆で負担する風土がないとまずは難しいと思う。
そぅいぅ風土を作るのって結構大変だと思うんですが、そぅいぅ部分をマンネリ化させないため、旅する支社とか、遊び場所とかあったりするんでしょうね。
あと、社員としても、社員の能力や個性を会社から大事にされている!という事を強く感じやすそう。そこから、自分たちで何かするんだ!って力の持続も続いているんだろうと思います。
...そして、一番凄いのがその風土を保ちつつ、会社として経営できている事。
「ギリギリで経営してますよ」と言われていましたが、存続できているのが凄いです。

さて..もう一つの話題としてのAdobeAIR。
カヤックで作成されたものでAIRを使っている所について紹介してもらいました。

まずは、「閃考会議室
これは主に2つの機能があるらしく、
 1.LEDを使った調光...空山水
 2.音声認識で発言内容をKeyにWEBで検索した関連Wordを机の上に表示...かげろい
この仕組みでの調光の設定部分や、机の上に表示する言葉などがAIRで作られたそうです。
そんなに時間をかけず、ぱぱっと作られたみたい。

サーバとXMLConnectionを使って常時接続をし、サーバからPushする形をしているそうです。

もう一つは、「今日の緑さん
これは、植物に流れる微量な電位を利用して、電位の大小で気分を表してみたものらしいです。
こちらの方は、緑さんの設定画面の方でAIRが使われているみたいです。
ちなみに、この緑さん。海外からの問い合わせの方が多いらしいです。海外の人の好みにHitした?!?!

...という事で、カヤックさんでは、AIRは率先して使われているのかもしれないですねー。

最後に、AdobeAIRはどうなるんでしょうかねぇーという話にもなったのですが、
”来年がどうなるかですねー。来年末まであれば、今後も行けるんでしょうかねぇー”
と話されていました。

私的にはAdobeAIR行って欲しい。カヤックさん頑張れ!

そぅいえば後一つ気になったのが、今後はどんな展開を?と質問された時の答えとして、「mixiを使って何かできないかなぁ」と言われていた事。
なぜ今、mixi? と思ったのですが、その理由の一つとしては、デスクトップアプリというものの伝播性のなさということなのな。と。

ブームを起こすのは、「人との繋がり」のものが多いですよね。
あの人が使っているのであれば、私も使ってみよー とか、ブログに貼付けて他人に見せる..ようにしてブームって広がるので、AIRのガジェットよりも、ブログに貼付けるブログパーツの方が人気がやっぱりあったりして。

んじゃーデスクトップアプリって何処に存在意義があるんだろう?という所ですが、我が家の今の結論としては、
「サービス自体はブラウザベースでネット上にある。そのサービスが良く、今後も使って行きたいものであれば、そのAPIを使った使い勝手のよいAIRアプリを使う」ってのがいいのかなと。
デスクトップにはいろんなものは起動できないので、色んなサービスをマージしても見やすい、使いやすいというものがあるといいのかも。
時には業務系アプリと、その他のサービスを連携したりというのもあるかも。

という事で...ブラウザベースでのサービスは無くならず今後も増えて行くんだろうな。
AIRのようなデスクトップアプリはその分野を置き換えるものにはならないと思うけども、一歩足りない所を助けてくれたりする所として....出てくるのか?出てこないのか?って感じですね。
• • •

2008年11月18日火曜日

不景気と単価

会社の人と先週末一緒にご飯を食べに行ったんですが、その中で不景気だねぇ〜話をしてきました。

どうやら、
 IT業界の仕事が減って来た→人手が余ってきた→プログラマの大安売り
という現象が多くなって来たらしい。

値段を聞くと、どうしてその値段で会社としてやっていけるのだろう?と思ってしまうような値段にも感じてしまう。
そこで削られているのはやっぱり給料なんかなぁ。年収200万以下層が増えたってニュースのアレですかね?

でも給料削ったとしても、そんな開発を続けていたら、優秀な人は去って行くだろうし...会社として成長するとは想像ができない。結局潰れるのがちょっと先に延びてしまうだけのような。。素人考えなんですけども。

「不景気こそ蓄え時!ということで、いい人材確保とかに走るべし!」って話は良く聞くけど、小さい会社では、そんなんで2,3年を耐えるのも難しい...

ここで、力のない小さい会社は潰れていくのかな って思うんだけど、"力"ってなんだろうなぁ?とも考えさせられる。

技術力? お得意様の量? 持っている現金の量?

最近思うのは、開発会社自体も他と差別化できるポリシーというか、特徴がないとダメなのかなぁと。
よく、プロダクト開発で言われるような、ターゲットを絞れ、一言で述べれる特徴を作れっていうのが会社にも必要なんじゃないかなぁ。もしくは、会社内のチームに。

...と、経営の事はあまり勉強していないので、大きな事は言えないのですが、そんな平社員の私でも考えさせる時代なのかなぁ〜と思いましたです。
• • •

2008年11月16日日曜日

AIR GEAR v1.0.1 リリース!

AIR GEARのv1.0.1をリリースしました!
ダウンロードはこちら

修正点は、そこそこあったりもしますが、大きくは
・Command(Ctrl) + / でコメントの有効/無効の切替
・プロパティにてリスト形式のものでも、テキストとして入力できるように変更
・Template機能の追加
なんかがあります。

個人的には、コメントの有効/無効が結構大きい。。
TemplateではActionScriptでの構文に加え、Bindableタグとかダイアログ表示(show dialog)なども追加してみました。
ApplicationDescriptorもバージョン毎にTemplateで登録するようにしているので、変える事もできるようになっています。

ステップ実行を実装したい...と見ていたのですが、Eclipseの方の機能が良くわからず今回のリリースには断念しました。
次には入れてみたいなぁ。

コード補完機能については、未だ実装できてません。
AXDTが上手くコード補完してくれるのであれば、連携できないかなぁ?と思って見ているんですが、コード補完してくれないんですよねぇ。
私のインストールの仕方が悪いんだろうか。んー。

後はやっぱり、フォーマッタの機能が欲しい。けど、これも未だ。
コード解析しないとフォーマッタって出来ないものねぇ。

AXDTに期待するか...DLTKやら使って自分でなんとか頑張るか...は悩みどころです。

これからも良くなるように修正していくので、ぜひ使ってみてくださいー
• • •

只今AIR GEAR v1.0.1リリースに向けて準備中

リリースに向けてパッケージをして動作確認をしている所なのですが、AIR GEARのプロジェクト以外にも、AIR ApplicationのLaunchShortcutが出て来てしまうのがどうしても気になって、調べていました。

ファイルの拡張子で判断して...という方法はすぐに見つけられたんですが、やっぱりAIR GEARのプロジェクトの時のみ表示させたい(Natureで判断したい)と思って調べていました。

shortcutの定義の下のenablement要素で結構いろんな事ができるもんなんですねー。
一応目的通りの事が実現できたので、wikiに書いてみました。
launchShortcutsを特定の条件下でのみ表示させる

ショートカットとか、メニューとかって、ちゃんと自分で作成したプロジェクトのNatureのみに表示させるのは...まぁ...礼儀ですよね。
テスト的に入れてみたプラグインが、違うプロジェクトにもショートカット出したりしているのを見て、邪魔!って思いますし。たまにありますよね。。そぅいぅの。

でも、こぅいぅ記事って少なくて大変です。うー。
• • •

2008年11月10日月曜日

引越ってさ...

新しい家、新しいカーテン、新しい部屋レイアウト、新しい周辺環境...!
あ〜どうして引越って、こぅ嬉しいんだあろうなぁ。

部屋は少し小さくなるんで、モノが捨てられない私もドンドン捨てました。
始めは捨てるのに抵抗あったりしたんですが、捨て始めると、なんだか気にならなくなる...というか、捨てるのがほぼ快感状態にもなったような。。。(すいません、エコじゃなくて)

スロット台も廃棄処分にすることになりました。初代シェイク、チムドンドン、ドラゴンクロス...さようなら〜!

小説も一気に処分。コーンウェル、ジェフリー・アーチャー、高村薫などを廃棄。
この人達の小説面白かったんだよねぇ〜。
パソコン関連の雑誌もどーんと捨てる。なつかしのJavaWorldがいっぱいありました。

んでもって、ソファーカバーをネットで購入してしまいました。
実は3万6千円もした。。。という事は、旦那には言っていない。
まぁ、自分のお金だから後ろめたい所は別にないんだけどさっ

ということで、明日とうとう引越当日になりました。
頑張ってきますっ!

新しい家は駅から少し近くなるので、また色んな人に来てほしいなぁ〜
• • •

2008年11月3日月曜日

足が痛い

今日は、家の植物たちを両手に抱えて引越し先に向かっていたのですが、途中で大転倒をかもし出しました〜

左足のジーンズが破れ、血が...

それから もう 足がズキズキいたいよぅ
何も考えられなくなり今日は何も出来なかった一日でした。
AIR GEARの次のリリース作業する予定だったんですけど。。。うー
• • •

2008年11月1日土曜日

CSSNiteビギナーズに行って来た

CSSNiteビギナーズ(東京)に行ってきました!
このイベントは、"CSSレイアウトをこれから始める人"向けの勉強会です。

私自身は、CSSはそこそこ書いてはいたのですが、まぁ...適当でやっていて、普通の人はどうやってやってるんだろぅ?と思っていた所だったので参加してきました。

全体として300人程度いたみたいで、結構な人数でした。
恒例の女性チェックですが...女性の方が多分多かったように思います。さすがぁ〜!
しかも、デザイナーの人も多いだろう(と思う)関係上、カッコイイ方も多々..
でも、女性トイレがババ混み〜(涙)

このイベントは有料だったんですが、テキストとして本が貰えました。

昨日刷り上がったホヤホヤだそうです。
私は...ですが、結構良い本と思います。基礎知識を学びたい!という人だけでなく、JavaやCのプログラマでもう少しCSSを詳しく知ってみたいなぁって人にも凄く良いと思いますっ!

今回のイベントでは、この本の内容のピックアップの内容を説明して頂く形式でした。
内容としては、私にぴったりのレベルでしたっ!
XHTML+CSSという内容だったせいもあるとは思うのですが、始めの方の話では、

XHTMLでは文書構造にあったものを使う=デザインのためのマークアップではない!

という事が話の節々にありました。
これは、もぅ何年前から思っていた事なので、そうだよねぇ〜 と素直に納得。
それとともに、CSSがすんなりと使える時代になって来たから、そぅいぅ理想が現実的にできるようになったんだなぁ〜と感じる。

サイトのトップページのH1の情報は、ロゴ画像にすることも現場ではよくある

という事も聞いて、へぇー と思いました。
トップページとしてのH1としてはサイト名かなぁーと思うのですが画像である事が多くて、そんなロゴ画像をH1にするのってどうなんだろぉ?と思っていたんですよ。
HTML書いている時、最初はH1のタグのものからはじめないと気持ち悪い気がしますしね〜。
あ、サブページでは、H1としたい内容はサイト名ではないので、見た目は同じ状態だとしてもH1にしないこともある との事でした。

右上に良く作る、サイトマップや検索窓についても、サブ情報であってH1やH2じゃないと思うんですが、CSSでflowなどを使ってレイアウトすると最初の方に書かないといけないよなぁーって思っていたんですが、positionってのがあるんですねー!知らなかった。
positionを使えば、好きな場所にレイアウトできるんだ。
...ということで、XHTMLではレイアウト時の事は考えず、正確な文書構造を書いて、プログラムから拾える状態にしておけばOKOKなんですねっ

話に良く出て来たのは、音声ブラウザでの話。
読み上げた時に邪魔にならないようにalt、title属性を考えるとか、リンクを画像にした時には、リンク文字の位置を見えない位置(text-indent -9999px)にするとか...あー普段の私ではあまり意識していなかったなぁ。。

あとは、CSSファイルをどんな形で分けると運用しやすいか?とか、各種ブラウザの差やハック方法とか、ライブラリ、PSP/Wii/iPhoneなどでの話とかもあって、一通りの事が聞けた気がします。

他人のソースで、「IEバグ対応」とコメントが打ってあるものについて、どぅいぅバグだったのかも分かるようになりました(笑)

そうそう、我が家で、ライブラリではjQueryが良さそうよねぇって話を以前にしていたのですが、講師の方は「これからはjQueryがいいっぽい」ような事を言ってました。
仕事内容が違う人同士でも、意見が合ったりするんだねぇー!

しかし、一昔前に比べると、いろんなブラウザが使われるようになり...メディアの種類も増えて...大変になりましたねぇ。

最後のQ&Aで、「CSSのフレームワークって、実際の現場では使われてますか?」という質問がプログラマの方からあったんですが、講師の方々の話では、「見てはいるけど使ってない。自分なりの構成を作る方がいい」というような話をされていました。
フレームワークを...という話を持ち出すのは、プログラマならではだなぁーと思ったのと、WEB作成の現場での2,3年後ではどうなってるんかなぁ?と思ってしまいました。

こぅいぅ話って、プログラムの現場の一昔前をなんだか思い出しまして。

「フレームワーク全盛」の時代がくる前は、個々人や企業内でそれなりに俺俺フレームワークやらライブラリやらあった訳ですが、今はそれが一般的なフレームワークやら、オープンソースのライブラリやらの方が多くなって来たと思います。
その理由としては、他人の...他企業の...ソースは読めない。作り直した方が早いってのもあったんじゃないかと思います。
まぁ、時代はぐるぐる回って、また俺俺フレームワーク時代がくるかもしれないけど。
さてさて、WEB作成の現場ではどうなるんでしょ?
• • •

2008年10月23日木曜日

掃除中に大変な事に。。

今日は引越のため、会社はお休みで家でお片づけしておりました。
冷蔵庫でも拭こう!と思って拭き始めたのですが...

汚れがズルズルとれる...こんな汚いの?!?!

しかし...途中で気づきました。
どうやら、冷蔵庫の模様まで拭き取っていることを...!

ぎゃー!!恐るべし。ジフパワー。

でも、もぅ後戻りはできない。っつーことで3ドアのこの1ドアだけでも拭き取ってしまおうと頑張ったんですが、シールが貼ってあった所は冷蔵庫の模様が拭き取れない!


↑上のドアが元の姿。下のドアが拭き取った後の姿。シールが貼ってあった所は四角く模様がのこってます。。
つー訳で、良くわからない冷蔵庫に変貌しました。くわぁーー
• • •

2008年10月20日月曜日

Shibuya.trac勉強会

Shibuya.trac勉強会に行ってきました。
Trac関連の勉強会なのですが、業務でTracは使っているけど、プラグインの作成なんてできればいいなぁ..と思っていたので参加してきました。

さてさて、恒例の女性チェックは...なんと!私一人でした(笑)
全員でも40数名だった..というのもあるとは思うのですが、一人っつーのも始めて。

内容ですが、相方が詳しく書いているのでちょっと省略して、感想を。

"まずは自分一人で試してみてから、社内に広めていく" という手順はみんな一緒なんですね。
そぅいぅ意味で、インストールが楽なTrac月、TracLightningを作ってくれたのは凄い普及に貢献していると思います。
私自身も、始めてTracを触り始めたのはTrac月でした。インストール楽だったら、気軽に試せるのが大きかった。
これがなかったら...Tracは試していなかったかも。RedMineぐらいで試してみたかも。

プラグインの作成については、「Python知らなくてもいじるだけだから簡単よー」という発表がいくつかあったので、作ってみようかなぁ〜と思わされました。
会場でも、"作ってみようと思った"と感じた人がほとんどだったみたい。

あと、感じたのは...スーツな人を納得させるために、グラフやExcel出力などを行なうためにプラグインを挑戦したりする人が結構多いのかなぁ?
確かに、グラフがでるとおおー!となるし、結局Excelで資料提出を求められるのであれば自動出力があるといい...とは思うんですが、個人的にはもっと"実際使っている人"にとって楽になるようなモノに力をいれてみたいなぁ。。

今回のセミナーではあまり話題に出なかったんですが、みんなどうしているんだろう?と思うのが、
  • チケットの粒度
  • 営業情報とのつながり
  • プロジェクトとしてカテゴリされていないタスク


営業情報とのつながり...ですが、営業としての情報とリンクしたい項目ってありますよね?
技術側からみたら、日程とか。営業側からみたら、現在の開発ステータスとか。
そんなんは、Tracでは管理しないのかな?別の所で管理して共有してる??

プロジェクトとしてカテゴリされていないタスク...は、例えば、上司に「これを調べといて」と言われたものとか。
自分としては、同じようにタスクとして登録したいんだけど、プロジェクトとしてある訳でもない。。RememberTheMilkとかに別途タスク登録となると、タスクが分散しちゃって見にくい!!
複数のプロジェクトをこなす場合でも一緒ですよね。たしか、Tracに複数のプロジェクト横断プラグインがあったような気もするけど、なんかイマイチだったような気もして。。

みんな、そんなタスク管理は、どうしてるんだろう??

そんなことを考えていると、Tracのプラグインというより、クライアントは自分で作って他のサービスのタスクとマージや、Filterするなどして、個人個人で見やすいものを作るのがいいのかなぁ。なんて。
TracはXML-RPCでのアクセスが出来ますしね。

いろんなサービスのタスクについて、Yahoo!Pipesみたいな感じで自分なりにカスタマイズしてみれるようなクライアントがあるといいのになぁー。
• • •

2008年10月19日日曜日

ドキュメント共有サイトのScribd

Scribdというサイトを始めて知りました。
ドキュメント共有サイト...という事で、紹介のページには "YouTubeのドキュメント版"という説明がよくされているようです。

これだけだったら、ふ〜ん って感じでしたが、見てみると洋書の技術書が多くてびっくり。
フリーのアカウントを作るとPDFにもDownloadできるし...これは...いいかも。

とりあえず、
SWT/JFace In Action , Eclipse In Action , AIR CheatsheetをPDFでDownloadしてみました。

こんな本の情報もあるなんて。。いいのか?

でも、Scribdのサイトをみている最中でFireBoxがフリーズしてしまう事件が何回か発生。
他のものは保存をした状態で、アクセスしてみてくださいね〜♪
• • •

2008年10月18日土曜日

JJUG Cross Community Conference 2008 Fall

JJUG Cross Community Conference 2008 Fallにいってきました。

恒例の女性チェックですが...少ないには少ないけど、そこそこ居た気がします。
でも、男女の連れか、一人って人が多いですよね。
女同士っていうのは今回のイベントに限らず少ないと思う。。。男同士は多いのにね。


13:10 - 14:00 A-1
DOMパフォーマンスチューニング入門

実は遅刻しちゃいまして、到着したのは13:30分過ぎくらいだったかなぁ。
パタパタと入って行ったら、もはや話が終わりの頃でした。
んーもったいない事しちゃいました。。
しかし、喋りはさすがに上手いですねぇ!私もあんな風に喋れるようになりたいなぁ。


16:25 - 17:15 A-4
YET ANOTHER GREEN IT

和田さんと、角谷さんとのペアプロを見せてもらいました。
題材は前のWEBDBの記事にあった、Restful世界時計。

「国の指定で、時刻を取得したい」という要望から始まって
  1. デフォルトの機能でないか調べる → なかった
  2. いいライブラリがないかどうか調べる → 出来そうな感じのものを発見
  3. ライブラリの機能を確認するためテストケースをまず書いて実行させていくことによりライブラリの使い方を確認していく。テストケースはドキュメントとして残して行く。

という流れで進んでいきました。
ライブラリの機能を把握するためにテストケースを!というのはいいですー!
調べた結果としてのテストケースは皆で共有できる仕組みあるといいのになぁ。。。と感じました。
使えそうなライブラリを試してみる...って結構やる事だけど、使えない...と判断することも多くて、時間かかったりしません?
そこにテストケースがあると、何が出来そうかというのも分かりやすいし...英語が読めなくてもコードなら読めるし!
自分が使った時間も、成果物であるテストケースがもし他の人の役にたてるのであれば、無駄にならなくて嬉しいし。

話をもとに戻して...今回は世界時計ということで時間がネタだったんですが、常に目的のテストケースが通るようにモックを作成されていました。
時間をネタにしたのは、そういう所も見せたかったからなんですねー!


17:45 - 20:00 BOFB-1
OpenSocialで作るソーシャルマッシュアップアプリケーション
CubbyでRESTfulなWebアプリを
エンジニアのためのキャッチコピーの作り方
100行で作る分散検索エンジン
Scalaらしいライブラリの作り方

presented by きしださんの枠だったんですね。
実は生きしださんを見たのは始めてでした。想像とちがってちょっとびっくりしました。
...もっとお年を召した方かと思っていました。ごめんなさい!
なんか、おしゃれな方でしたよ。

OpenSocialについては、記事は見ていたんですがあまり突っ込んでみてみた事はなかったモノの一つでした。
早く、日本でよく使われているサービスで対応してほしいですね。

Cubbyは、以前もお聞きしたのですが再び受講。
SpringやGuiceの対応も検討しているとの事でした。
終わった後に、縣さんに偶然にもお会いできましたっ 旦那も初紹介です♪
福岡のAIRセミナーでAIR GEARが...という話を聞いて感動です! 試して頂いた方がいらっしゃるんですねっ 嬉しいですよぉ〜
AS3のコード補完はまだ出来てないんですが、次のリリースを近々に出せるように頑張ります。
次のリリースでは、Ctl+/でのコメント化のトグルや、Propertyでリストで選択肢になっていた所を文字列で直接かけるように...などちょこちょこ溜めていた機能が入ってきます。
実際、ASlimTimerのAIRアプリを作成してみて、あーー!って思う所がいろいろ発見できたので。
ちなみに、現時点での修正点はこんな感じです。

エンジニアのためのキャッチコピーの作り方は、個人的にすごく為になりました!
講演者は偶然にも前日の「川口さん交流会」でお話させてもらった岡崎さんでした。
"表現を作り込むのではなく、発見する事が大事" ということで、表現を作り込むと、押し付けがましくなってしまい、そぅいぅ情報というのは聞き手は聞き慣れているため、スルーする能力がもうある。
...確かにそうかも。
よく、「時間は無くなっちゃったけど、この最後の一点はどうしても伝えておきたい」って話をされる方がいたりしますが、その一点...とくに心に残った記憶がない。というのを思い出したりしました。(講演者の方すいません。。)
じゃーどぅいぅ手順で考えるか?ですが、
  1. ターゲットを設定する
  2. 何を伝えたいのか?を整理する
  3. いっぱい考える(100個ぐらい!)
  4. "共感","インパクト","伝えたい内容"という観点をもとに選ぶ

との事。
そういや、干物女のドラマでも、100個ぐらいいっぱい考えるってのがあったなぁ。
途中で、
"JJUGのキャッチコピーを、みんなで考えてみよう!"となったんですが、出来上がった人がいなかったですねー。私もうーーん?うーーん?と考えて、コレ!というものが出なかったんですが、帰りの電車ではぼーっと、なにがいいかなぁとか考えている私がいました。

話はまったく変わるんですが、プレゼン資料の手書き風フォントかわいい!
しかも、見やすい。あのフォントなんだったんだろぅ。私も欲しいなぁ。。

100行で作る分散検索エンジンは、Hadoopと、Lucene(Javaで書かれた検索エンジン)を使って、分散検索エンジンを作る! という話でした。
事前の噂で、講演者の太田さんって方は、めちゃめちゃ頭が良い人という事を聞いていたんですが、んー、たしかに凄い頭良い人なんだろうなと感じさせられました。
MapReduceについては少しは知識あったんですけど、まぁそれぐらいの私だったのですが、分かりやすい説明でした。
100行では作り上げるのはムリがあるみたいだけど、結構少ないコードでかけるもんなんですねぇ。

Scalaについては、"標準ライブラリには偏りがあるので、Javaを使うことになるけど、Scalaの良さを生かす形でScalaのラッパーを作ろう" というものでした。
比較としてはJava7のクロージャのものがあってこれも分かりやすかった。
Scalaの良さと共に、Java7のクロージャーの良さも見えたし。
Scala...興味あるんですよねー。でも、具体的に何か作ってみないと見えないんだよな。
やっぱHelloWorldだけじゃ分かんない(笑)

...という事で終了〜。

旦那と一緒に行ったのですが、セミナーは全て別々の受講してました。
こぅいぅ時に、ダブルで聞けるのはいいですよ〜♪
• • •

2008年10月15日水曜日

オンライン引越一括見積

...ってのが良くあるので、やって見たらビックリ! 電話がじゃんじゃんかかって来て
「量を見ないとしっかりとした見積ができないのでお伺いします」ってのばっかり。
確かに、見積れないのは分かるけど そんなに沢山の見積に対応できないってば!
それを絞るためのオンライン見積のつもりだったのに。

これからオンライン一括見積しようとしている人は気を付けてくださいね。

で、4件の引越会社に来てもらったんですが 正直、大手ほど胡散くさい気がした。
即決なら...と半額位の料金が出てきて、そんなに違う料金だと最初は明かにボッタよねとおもわせたり
値引に廃棄物をタダにするというのが出てきたり...客としては廃棄物はマジメに廃棄して欲しいんですが、タダなんて違法放棄ちゃうよね?

あと、即決を求めるのがデフォルトになってるのってどうなんやろ。
会社じゃなくても、相見積もりとるのは 当たり前ちゃぅんかぁ?
確かに即決して貰った方が引越会社は嬉しいの分かるよ。でも、即決じゃないと割引値段=本当の価格を出さないのは、ちょっとバカにされてる気分になる。

あー、この見積の為に時間を結構使ってしまってもったいないでしたよぉ
• • •

2008年10月12日日曜日

パソナテックカンファレンス2008にいってきた

パソナテックカンファレンス2008に行ってきました。

恒例(?)の女性チェックは...結構女性多かったです。しかも綺麗なおねいさんチックな。パソナテックだから?

さて私が参加したのは午後からのセッション。午前は起きれませんでしたw

B-9 チームハックス![特別編]〜仕事が楽しくなるチームの作り方〜

パネラーには
シゴタノ! の高橋さん
カヤックの柳澤さん
エニグモの須田さん、田中さん
モデレータには、パソナテックの堀川さん
というメンバー。
楽しいチーム作りにするのは?ってテーマだったんですが、
高橋さんは、
 *マイナスの感情を表に出さないようにする。
  メールで発散できる内容を書いて、Draftに入れておく...
 *チームは怒ってくれる人がいるという所もいい。
 *2人で仕事をしているが、場所が離れているためシマリのない生活になりがち。そこで、決めた時間にSkypeで1分、新しく始めて見た事などを言うのを作ってみた。
柳澤さんは、
 *もともと一緒に仕事がしたいなぁーと思えるメンバーを入れるようにしている
 *楽しい!と思えるような仕事をしてもらっている
須田さん、田中さんは、
 *"ノリ"が合う人だと良いチームを組める。
 *一緒に仕事するには、その人の事を知るのが重要。知る為には...
*とりあえず一緒に飲む!
  *社内DJ制度=その日はある人の選曲で社内の音楽を決める
  *チーム内でTシャツを作る

印象としては...「一緒に仕事する人は自分達と合うかどうかを慎重にまず選ぶ」って事が経営者の立場からすると大きいのかなと思いました。

「仲良し倶楽部じゃないんだから、気の合わない人もいる。そんな人とも社会人として仕事をしていくもんだ」って感覚はありますよね。
私が社会人に成りたての時には、結構実感した事でもあります。
まぁ、これは間違っていないし、給料貰っているんであれば、まぁ当たり前だろうとは思っています。

でも「楽しいチーム」を作りたいと思うのであれば、人選というのは重要。
仲良くしている人であれば、"あーあの人の為ならば、やったるでー!"って気分にもなる。
やみくもに頭数を揃えるというチーム作りをしている場合、いいチームになってくれ というのは、結構ムリが生じるのも良くわかる。

自分の会社でも結構悩む時がありますもん。

"もうちょっと、セミナー参加したりブログやTwitterとかで情報発信したりして、外部の風をみんな感じよーよ"って問いかけてもあまり反応がなかったりします。
そこで、思う訳ですよ。。。確かに
"会社の歯車として指示された仕事をタンタンとこなすのがいい。自分からそんなリスクを背負うような行動や発言はしたくない。残業が増えても嫌だし。"
って人もいるんだろうなぁと。
それが悪って訳でもない。ただ、自分の仕事に対する価値観が違うだけなんだと。
そういう人に無理強いしても良くないんだろうなぁーと。
自社の社員は、みんな外注先にバラバラしているので一緒に飲みにいくタイミングもあまり作れないので...ほんと、本当の心が分からなくてなんとも難しいと感じている真っ最中。
この人は合う!というメンバーをある程度絞ってくれると、やりやすいのに。。って平社員の私は凄く思います。 そういや、"あまり考えずに人をどんどん取らないで"と社長に行った事もあったなぁ(笑)

もう一つ、話題として「個人プレイが好きな人は?」というのがあったんですが、個人プレイが好きな人でも、チームが嫌いな訳じゃない。楽しくやっているチームがあれば、"あー私も参加したい"って結構思っている。というのは皆さんの一致した意見でした。なるほどー。



B-10 技術をどう生かすの?〜企画屋と技術屋のコラボレーションの奇跡〜

gooラボのマーケティング担当の藤代さんの講演でした。
内容は、「ブログ通信簿」のサービスについてでした。
企画屋の方だったんですが...面白かったです!
企画屋の方からの目線でサービスの立ち上げの話だったんですが、企画屋の人は "あーこぅいぅ事を感じて、技術屋をホメつつ(笑) やってるんだなぁ"と。
今までは企画屋の人と一緒に仕事する機会が全くなかったので新鮮でしたww
そぅそぅ、最後の質問コーナーで、
"私は企画屋なんですが、最近は技術屋の中でも企画までできちゃう方がいてて...そんな時、企画屋でしか出来ない事とかってなんでしょうかね?"って質問がでてました。
ちょっとびっくり。そんな技術屋がいるんですか?!凄い。
企画やマーケティングの分野..ってのは楽しそう!興味がそそられます。。
企画屋の方とぜひお友達になりたい...


A-9 Webの未来を指し示す技術ベンチャー達の生語録〜収益は後からついてくるよね?〜

パネラーは
ハートレイルズ の上楽さん
サイジニア の吉井さん
超店舗検索 の柴山さん
プリファードインフラストラクチャー の西川さん
ロケットスタート の古川さん
でした。

さて、このディスカッションですが...何を導きだしたかったセッションだったのかがちょっと分からない状態でした。...正直、もう少し企画をしっかりたてるべきだったんでは?

"収益は後からついてくるよね?"というサブタイトルにちょっと引っかかって見に行ったんですが、"後からついてくると信じてやってます" って事だけで終わってたようにも思います。

皆さん、SaasやASPの事業で食っていきたいが、それだけではムリなので受託でなんとかお金を稼いでいる。でも今後は...って発想だったのかと。
人を集めた所で、収益を考えられるのは広告?機能を追加した有料版を作る?という発想になってしまいますが、他に収益になるようなビジネスモデルってないんかなぁ。んー?

あー、的を得た言い回しだなと思ったのは、確か、西川さんが言われていた、
「Webサービスは、技術を売るためのショーケースだ」ということ。
今の日本の現状としては、この状態ですよね。多分。



最後に、パソナテックの感想。パソナテック、金持ってますねー。
会場を借りるだけでも結構お金かかるだろうに、ドリンクは配ってるは、粗品はあるわ。。
というか、そんなに儲かっているなら、頑張っているベンチャーに色々投資したらどうですかねぇ?...なんて。
• • •

2008年10月9日木曜日

個人名刺の原稿作ってみる

名刺を渡す機会で...何より伝えたいのがtwitterのidになるここ最近。
ということで、個人名刺を作成したーぃ!

旦那が手書きで作ってくれました。

シンプルがかっこよぃ!
うさぎのラフ感もいい感じよねぇ。なにげに絵心があるのでちょっと嫉妬。

んで、これを真似て手元にあるFireworksで作ってみました。

ちょっと手書きの方が味があって良かった気もするが。。otz

...Illustratorでないと名刺の入稿って受け付けてくれないんですね。
FireworksにIllustrator7で保存するのがあったんですが、果たしてこれでいけるのかがよく分かんない。
出力したaiファイルが、Safariブラウザで表示できないし。。んー?
良くわからないので、名刺会社に問い合わせ中。作れそうだったら注文しちゃぉ。
• • •

2008年10月6日月曜日

各メディアで使われているメソッド

TV番組で使われている手法って いいなぁー って思う事が多いです。
長年&多数の人に向かって情報発信してきているメディアなので、洗練されているところも多いように思うので、真似してみるのは間違いがなくていいのかも。

まずは、「(みの)もんたメソッド
みのもんた さんの番組でよく使われている手法。
パネルに文章を書いて、その一部を隠しておいて...視聴者に考えさせてからめくる!

その他の番組でも、よくパネルに紙を張っておいて、順々にめくっていくのってありますよね。
説明している部分以外の所まで見えてしまうと、どこを説明しているのか分からないとか、説明を聞かずに先々文章を読んでしまいがちになるので、隠してもらう方が分かりやすい。
プレゼン資料には有効的に使えそうです!

もうひとつ気になるのが、
回答席に、回答を書くパネルorディスプレイがあって、一斉に答えを書くというやつ。
MCが全部の答えをみて、発表する順番を決めて表示していく。内容によっては、一斉に複数の人の回答をみせたり...ということもしたりして。
これって、会議の時にあると便利なんだけどなぁー。
全ての人の意見が聞けるし、時間短縮になるし。
Skype会議の時とかにあると、また効果抜群な気もするんですがねぇ。
擬似的にそんなことが出来るソフトあれば便利そうじゃーありません?どっかに無いかしら。

そんな事を思いつつTVをみていると、テロップも重要だなぁーって思います。
途中から見始めても、テロップがあるから今何を話しているのかが分かったりするし。
テロップの出す位置やフォント、サイズによって、重要度も分かったりする。
結構人間って、喋っている声よりも出てくる文字の方を優先してみていたりするんかな。

TVじゃーないけど、新聞や雑誌の段組みも洗練されているなぁーとも思う。
いろんなサイトを見る機会があるけど、”みやすいな”って思うものは結構新聞や雑誌の段組みに似ているものがある。
見慣れているから...というのもあるんだろうけど。

普段なにげなく見ているメディアでもそんな事を考えながらみていると、結構役立つことも多いですー。
• • •

2008年10月1日水曜日

auからのメールをiPhoneで受信すると文字化け

au(ezweb)からのメールをiPhoneで受信すると文字化けする現象がでてまして...
なぜか実家の家族がauが多いんですよね。
とはいえ、またもや携帯メールはGmailのメルアドに送って...って言い直すのも、あまり機械になれていない家族...特に父親...に言うのは気が引けて。

絵文字が入っていると文字化けするのは何となく経験上思ったいたんですが、iPhoneのファームウェアのバージョンアップをするとなんか現象も変わったような感じですが、やっぱり文字化けは発生してる。

で、調べてみると、auは文字コードをiso-2022-jpで処理しているのに対し、iPhoneではUTF8で処理しているために文字化けが発生しているとのこと。
au、UTF8に対応してくれよー

まぁーいずれにしても、送り直してもらうのもなんですしぃ文字化けメールを見たい訳ですよ。
で、見る事ができたのでその方法を一応ご紹介。

方法としては単純で「Thunderbardのメーラで取得して表示する」


  • 受信サーバの種類は IMAP を選ぶ

  • 受信サーバ名は imap.softbank.jp

  • ポートは 143(デフォルト)

  • 送信サーバ名は smtp.softbank.jp


にして、自分の携帯メールアドレス、パスワードを設定すればOKOK!

メールの仕組みってよく分かってなかったんですが、IMAPというのはPOPと違ってメールをサーバで管理しているんですね。
POPはメールボックスが自分のPCにあるのに対し、IMAPはサーバー上にメールボックスがあるイメージですかね?
なので、携帯で受信済みのメールであっても、サーバに残っているので、別のメーラから取得、表示できる...と。
一つ勉強になりましたです。

携帯メールを自分のPCでも見れるのは便利なので、Tunderbardはこのまま置いておこう。
• • •

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って何?」って人もゴロゴロいる.....

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

2008年8月27日水曜日

会社の人に読んでほしい本

”あー良い本だなぁー”って思うような考え方とか、取り組み方とかが書いてある本って、”自分の会社の人に読んで欲しいなぁー”って思ったりしますよね。

でも、そう思ってしまうことこと自体についてんーーっと考えてしまうこのごろ。

その人が今興味持っていることや、知識の量、タイミングによって、「ぐっ」とくる内容って多分違うんですよね。
今日読んだこの本...これも良い本だなぁーって思ったわけですが、この本を1年前に紹介されたら読んだのかなぁ?今日と同じように感動できたのかなぁ?と思うとちょっと分からない。

あと思うのは、
”周りの人に読んでほしい”と思ってしまう時点で、周りに頼ってしまっている...周りが変化して欲しいと望んでいる...って事の現れなのかなぁと。
言い換えると、自分自身のことを良く見れてない、見ようとしてないって事なんじゃないかなと。
これはちょっと反省。

自分自身が、おお!この本いい! とか この意見めっちゃよくない? とか出たときに、なんで周りは乗ってこないんだろう...と思ってしまうのは多分人間ならだれにでもあるエゴかな。
最高なのは自分と周りの人が同じタイミングにいること。
そうするには、仕事以外の雑談のコミュニケーションが豊富でないと難しいんですよね。

そうそう、もう一つ思った事。
会社内でのMLで何件かメールのやり取りがあったあと、社長のメールで、
「否定な意見だけではなくて、建設的な意見を求む」
ような言葉があったんですが、まぁこの言葉自体は変な言葉ではないですよね。
でも、その場の状況をふと冷静に考えてみると、
* 周りからは否定的な意見ばかり...という発言をしている人自身は別にそういうつもりで言っているんじゃない。
* 無関心の人よりは、よっぽど熱心に考えたから意見が出てきている。
* 否定的な意見だから建設的な意見を...と言ってしまう事時点でその人の考え、疑問、問いかけを全くゼロに戻してしまっている。それでいいのか?その人は無視されたと思うだろう。もうその人から意見は出ないかもしれない。
* それを見た人達は素朴な疑問や不安をぶつけることは出来なくなってメールが途絶える。
* 建設的ないい意見て、考える時間や、周りの人と話合うことをしないと出せないと思うが、そんな時間を作ってないんだから、すぐに出ないだろう
* メールは手軽で便利な道具だけど、文章として残ってしまうものであるので、簡単な意見って出しずらい。しかも場の雰囲気がそんなになってしまうと余計に....
* そして、経営者からみたら "どうしてうちの社員は消極的なんだろう"と多分悩むんだろう。

なんて思いました。
もっとざっくばらんな雰囲気な会社だったらいいんかもしれないけど。

そんな事を考えつつ、私個人と会社とのWinWinな関係ってなんだろう? 今まで通りに自分の意見をだらだらメールに書くのはどうなんだろう? とちょっと悩んでる日々。
• • •

2008年8月20日水曜日

AdobeAIRでのバージョンチェックと自動更新

AdobeAIRで作成した自作アプリケーションで最新バージョンをリリースしたら、旧バージョンの人に更新をしてほしいですよねー。
で、よく見かける方法として、アプリケーションで自動的にチェックして、「最新バージョンがあるけど更新しますか?」と促してあげる方法をASlimTimerでは使っています。

その方法を、AdobeAir-自動Updateに書いてみました。

方法としては、
自分で最新バージョンの情報をWEBに上げといて、それを読み込んで実行中のアプリケーションのバージョンとをチェック。
違っていたら、最新バージョンのモジュールをダウンロードして、後はflash.desktop.Updaterにお任せ です。

記事はコードもあって長文になってるんですが、やっていることは↑だけ。
しかもコードはASlimTimerのをそのままコピペ。しかも最後にはASlimTimerの宣伝付き(笑)

まぁ、それはさておいて、何か自作アプリをAIRで作る際には、始めから入れておくのをオススメ!
• • •

2008年8月18日月曜日

グーグルで人間はバカになる?

グーグルで人間はバカになる?という記事がCOURRiER Japonに載っていたのをお昼食事中に読みました。

記事の内容は、「最近、長文の文章や、本が読むのに耐えれられなくなった」ということ。

ネット上の情報を見るときは、大量の情報から目的のものを探し出すため、そんなに熟読はせずKeywordをささっと読んでいくことって多いんですが、頭がそれに慣れてしまって・・・というのが理由だろう・・・というお話。

日本でも「地頭力」という言葉は少し前に流行りましたが、同じようなことですよね。
みんな、少なからず実感として湧いてきた って状態だから、流行ったんでしょぅ。

脳の順応力ってすごく高いらしくて、「大量の情報から目的のものを探す」ことが多くなると、それに順応した脳になっていき・・・代わりに使われない機能(熟読)は低下していくらしい。
脳って凄いよねー。 そうでないと頭パンクして人間は変になっちゃぅんでしょぅ。

「大量の情報から目的のものを探す」というのは、重要な能力だし、そんなに機械的な作業ってわけでもないし・・・バカになるってほどでもないんちゃぅかなぁ?
今までの機械的な作業から解放されて新たな脳の働きが活性化! なんて。< SF小説読みすぎ

・・・まぁ、確かに、最近は何か新しいことしてみよぅ!と思っても、アイデアになるようなネタをネットサーフィンでGETしたりすることも多いし・・・少なからず脳はGoogle的になっちゃってるんかもしれないけど。

Googleでは、人工知能を本格的に検討している・・・という話の延長上に「2001年宇宙の旅」の話が出てました。
この映画は1965年に作成を開始したらしいのですが、現時点で再びみたら、また違う感覚で楽しいのかも? 今でも話題として出てくる映画ってすごいですよね。

「2001年宇宙の旅」のストーリーってほとんど覚えてないんですが、なんかまた見たくなったなぁ!
• • •

ASlimTimerの第一弾をリリース

SlimTimerのAirクライアントとして、ASlimTimerをリリースしてみました!

残念ながらオフライン対応は未だなんですが、オンラインでの通常の動作は行なえるようになっていると思います。

SlimTimerを使っている方は、ぜひ使ってみてください!

ダウンロードはこちらから。
ASlimTimer
• • •

2008年8月9日土曜日

スーパーごろ寝クッション

スーパーごろ寝クッションが届きました!全体像はこんな感じ。

使ってみるとこんな感じ。


なかなか快適でしたよ。あごをつけてるとアトが付きそうなので、タオルをひいて使用中です。
多分、中国製であろうこのクッションで、オリンピックの開会式もダラダラ見ました〜

付属の紙には

...と、シリアル番号なし!というのが笑えるっ
このクッション、約8,000円と安くはないのですが、我が家ではなんと!2台稼働中です。
試したい方は我が家にいらしてくださいぃ〜!
• • •

2008年8月8日金曜日

AirでのKeyEvent

作成中のSlimTimerにてKeyboardのショートカットを作るため、KeyEventの取得方法を色々みていました。
で、GoogleSiteに記事を登録しました。
Air画面でのKeyイベント
Contentsはこんな感じ
1. Keyイベントの登録方法
2. GUIコントロール部品でのKeyListener
3. 画面内でのKeyListener
3.1 mx:WindowedApplicationの場合
3.2 mx:Windowの場合
3.3 mx:TitleWindowの場合
4. Airアプリケーション全体へのKeyListener
5. 複数EventListenerを登録した場合の順序


サンプルをみていたら、KeyCodeの定数が使われていなくて直接数値が埋め込まれているのが多くて、えーありえへん!って思っていたんだけど、よくよくみると、Keyboardってクラスに定数があるのを発見。
そりゃそうよねー。気づいてよかった。
• • •

2008年8月7日木曜日

2008年8月6日水曜日

大きいものに巻かれてしまえ

...って最近思うんですよ。

ブログはBlogger使っているんですが、機能的には他のBlogの方がいいかもしれない。
つぶやきはTwitter使ってるんですが、他の似たようなサービスの方が機能が良くて、落ちにくいかもしれない。
メールはGmail使っているし、Google信者といわれても、「はい。そうですよ」と答えている。

これらを使っていると、いろんなサービスとの連携とか、ツールとか、対応してくれている可能性が高いんですよね。

API公開されているソフトというものもポイント高いですよね。
だって、API公開されていたら、本体の機能がしょぼくても誰かが良いもの作ってくれてるかもしれない。API公開されててメジャーのものならば、誰かが作ってる...って可能性は凄く大きい。

メジャーのものならば、更新も頻繁にやってくれる可能性も高い。
逆にマイナーのものは更新とまっちゃぅかもしれない。

メジャーのものを避けて、よさそうなマイナーのものを選びたくなる衝動はあるんですが、このご時世の場合、少々使い勝手が悪いぐらいであればメジャーのものを選ぶのが賢いですよ、多分。

んでもって、今は何が一番使われているのか...?をチェックしつつ、バシバシ乗り換えていくのがよさそう。

今はGoogleが強いし、一般ユーザにいろんなものを無料で提供してくれる(StreetViewも感動した)けど、もし力が弱くなった...とか...ほかのものが台頭してきたらどうするのか?

サクっと乗り換えてしまったらいいんですよ。簡単〜♪
何かにしがみついている理由もないしね。
• • •