2007年7月25日水曜日

富士フィルム2.0

富士フィルムさんが、実験サイトをオープンしたそうです。
Yahoo!ニュース

第1弾は、画像検索エンジン「TRIPIT(トリピット)」とのこと。今後3ヶ月程度のペースで新しい技術を公開していくそうです。素晴らしい。
同社の担当の部長さんの言葉。
「当社が開発した技術の中には、これまで社内では使い道が思いつかなかった技術もあるのではないか」
「実験サイトではユーザーの知恵を借りながら、こうした技術を次のフェイズに進められるようなことができればと考えている」
「Google MapsのAPIを活用したサービスが多数出ているように、APIを公開することでWin-Winの関係を築いていけるようにしたい」
まさしく2.0ですね。

自身の考えとして紹介されている「技術は使われなければ意味がなく、今回の実験サイトのようにポジティブな環境がなければ、将来的にインターネットのスピードに追いつけなくなる可能性がある」という言葉はグサリときました。


さて、ボクは営業のくせして先日(営業のために)JDIC使ってゴリゴリとプログラム書いたりしちゃって、せっかくIdbA上で動くブラウザコンポーネントを作ったので、富士フィルムさんのAPIも活用して何か作ってみようかなーとか思っています。まだアイデアないけど。

ところでJDICに関する日本語情報があまりに少なくて、基礎の基礎がわかってない人、手っ取り早く試したい人はツラそうなので、以下に入手方法とデモの実行方法をメモしておきます。

[入手方法]
以下から最新版をダウンロード。
https://jdic.dev.java.net/
にアクセスして、ページ内の「download」をクリックすると、バージョンごとに分けられたフォルダが表示されるので、最新版(現時点で0.9.3)をクリック。
右側にOS別にzipファイルへのリンクが表示されるので、自分の環境にあったものをクリックしてダウンロード。
とりあえずコレで入手は完了。

[デモの実行方法]
ダウンロードしたzipを解凍(eo等使ってる人は、「徹底解凍」はしないように!)。
解凍してできたフォルダの中に「demo」というフォルダがあり、ここにJDICの一連のコンポーネント用デモが入っています。
例えばブラウザのデモを実行したい場合は、Windowsならコマンドプロンプトで「demo」の下の「Browser」フォルダへ移動し、次のコマンドをたたくとブラウザコンポーネントが起動します。

java -classpath ..\..\jdic.jar;. -Djava.library.path=..\..\ Browser


以上、知ってる人が見たらバカにされてる気分になるようなメモでした。READMEに書いてる内容だから。
まぁそんなことはどうでもよくて、これが誰かの何かのお役に立てば幸い。

2007年7月18日水曜日

匿名さんへのお詫び

2ヶ月ほど前、5月30日のエントリーでLinuxコンソーシアムのパネルディスカッションについて、個人的意見をふんだんに盛り込んだレポートを書いていましたが、昨日コンソーシアム副会長から「運営委員のくせに何考えてんだ」とお叱りを受けまして(お叱りを受けてごもっともですが)、該当エントリーは削除することにしました。

同エントリーには、せっかくW社の元関係者の方から「匿名」ということでコメントをいただいていたのですが、エントリーを丸ごと削除したため、いただいたコメントも合わせて削除させていただきました。
匿名さんには、せっかくコメントを寄せていただいたのに、大変申し訳なく思っております。引き続き、ご意見ご感想等コメントいただければ幸いです。

というわけで、今後はきちんと「公の場」を意識したエントリーにしていきたいと思います。

ちなみに、このブログのPVが一気に通常時の50倍にまで跳ね上がりました…。げに恐ろしい。

2007年7月11日水曜日

JavaでDLL連携

先々週ぐらいの金曜日、Windowsネイティブなアプリケーション(DLL)を呼び出すIdbAのデモコンポーネントを作る必要があり、開発のプレイングマネージャー(PM)にお願いして作ってもらった。
IdbAから呼び出す、と言っても、このレベルの話だと即ち「Javaから呼び出す」ということになるので、Javaとネイティブアプリケーションを繋ぐためのJava標準ライブラリ「JNI」を使用して作成してもらった。
デモなのでお客さんに見せるわけだが、一番手っ取り早くDLLと連携していることをわかってもらうには何がいいだろう?と話し合ったところ、「Windowsのデスクトップ背景画像を変えるのが一番わかりやすいんじゃないか?」ってことで、Windows側で公開されている壁紙変更APIを呼び出すためのDLLをVCで作成し、それをJavaからJNIで呼び出すことにした。
このDLL作成自体は、ms2氏の協力のもあってサックリ出来た。
作成後、自分のPCで動作確認し、満を持してお客さん先へ行き、PCに入れて実際の動作検証。

動かない。

起動したコマンドプロンプトを見てみると、ワシャっと例外が発生している。
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります」

どうやらVCで作成した自前DLLがこのメッセージを出しているらしい。
なぜだ。他のPCではまず間違いなく動くのに、なぜ肝心のお客さん先のPCで動かないのだ。
違いといえば、お客さん先PCはWindows XPのServicePack 1を使っている、ということ。

とりあえず持ち帰り、PMにも伝え、調査開始。こんな調査をするのはプログラムを書いていた時以来。
先のDLLが出したメッセージ「このアプリケーションを~」というメッセージそのものでググってみると、かなり沢山ヒットして、どうやら多くの人々が悩むポイントらしきことはわかった。
で、その人たちの出してくれた情報(大抵は質問掲示板のやり取り)を丹念に読んでいくと、どうやらコンパイルオプションがネックらしい。Visual Stadioで作成したコードをバイナリにする際、どういった形式でバイナリにするかっていうのをオプションで指定できて、「/MDd(マルチスレッドデバッグ)」ではなく「/MD(マルチスレッド)」、つまりデバッグモードではなくリリースモードでDLLを作成しないと、作成した以外のPC環境では動かないようだ。
ところがそれをPMに伝えたところ、「確かにリリースモードで作成した」とのこと。

もはや悩んでいても仕方ない、実際のお客さんのPCと同じ環境を作って試してみよう、ということに。ただしWindows XP ServicePack 1の環境を作るのは、なかなか難しい。空いてるPCを探し、素のWindows XPを探し、ServicePack1のCDを探し。
各所を駆けずり回り、すべてゲットしてOSインストールから開始。
時刻は既に21時。でも、これを解決しないまま土日を過ごすのはイヤなので、根気よく環境の作成を続ける。途中でPMが、「どうやらServicePack1だと、/MDでもダメで、/MTじゃないとダメっていう情報を見つけた」と。それでDLLを作り直してもらい、ようやく環境が出来上がったところで、まずは以前までのDLLを動かしてみる。
バッチリお客さん先の環境と同じ内容でオチた。
DLLを、新バージョンに差し替えて再度実行。

動いたっ!
動いたー!!
動いたぞーーー!!!

思わずPMと熱く固い握手。
そして、心底みなぎり、湧き上がる充実感。

マイクロソフトの罠のせいで、久々にアツい夜を過ごせました。

参考リンク:VCのコンパイルオプションのわかりにくい説明

http://msdn2.microsoft.com/ja-jp/library/2kzt1wy3(VS.80).aspx