今日のJava Watch on the Xですが、実はJDirectで動くはずのプログラムが、どうやら10.1.1になって動かなくなったみたいです。準備ばっちりで後は書くだけだったのに…。それに、packageがソースにある場合、どうもコンパイラの挙動がおかしいような気がします。どうも、-J-Dfile.encoding=UTF8からみのトラブルじゃないのかと思います。javacで直接コンパイルすると、前記のオプションの生むで、エラーの出方が違います。package文があると、エラーが出たり出なかったりするのですが、その中にあるクラスが重複しているというエラーが出始めると、どうしようもならなくなります。そんなこんなで、何重にもはまってしまっての今日の記事です。とほほ…。
さて、今日の記事にもありますが、倉橋さんがWebObjectsのセミナーを行われます。そこで、MDOnlineの購読者の方々へは、5%引きでの受講ができるように取りはからっていただきました。MDOnline価格でのお申し込みは、以下のリンクをご利用ください。パラメータがちょいと入っていますので、それで、5%引いた価格がきちんと出るようになっています。ただ、Homework会員様はもっと割引率が高いですから、Homeworkとして申し込まれた方がいいですね。なお、以下のリンクは、MDOnlineの読者様ページ
「WebObjects - 実戦セミナー」
http://www.techpit.co.jp/cgi-bin/WebObjects/SemiApp.woa/wa/uketuke?agent=locusmd&plist=jissen
「WebObjectsトレーニングin京都」第1回
http://www.techpit.co.jp/cgi-bin/WebObjects/SemiApp.woa/wa/uketuke?agent=locusmd&plist=kyoto1
「WebObjectsトレーニングin京都」第2回
http://www.techpit.co.jp/cgi-bin/WebObjects/SemiApp.woa/wa/uketuke?agent=locusmd&plist=kyoto2
さて、明日から連休ではありますが、MDOnlineの発行スケジュールの定義とおりだと、明日にお休みをいただいても、土日月の出版があります。御存じの通り、感謝祭期間なので、アメリカは完全にオフになっていますから、明日はJava Watch on the Xの続きなどでMDOnline発行をして、土日月の発行をお休みさせていただきます。よろしくお願いします。
(新居雅行 msyk@mdonline.jp)
WebObjectsのコンサルティングや教材提供を行っているテクニカル・ピットは、中級上級者向けの「WebObjects実践セミナー」と、初心者を対象とした「WebObjectsトレーニング in 京都」を開催する。
「WebObjects実践セミナー」は、2002年1月22日(火)と23日(水曜)の2日間に渡って両日とも10:00〜17:00に行われる。場所は、東京・勝どきにある株式会社システム情報のセミナールームである。受講料は120,000円となっている。プラネットコンピュータの田畑英和氏と、テクニカル・ピットの倉橋浩一氏が講師をつとめる。受講対象者は、WebObjectsのプログラミング実務経験6か月以上、ないしはアップルコンピュータのセミナーであるWebObjects Developer #1修了者、ないしはテクニカルピットのHomework修了者となっている。受講者個別のカウンセリングにも対応する他、高生産性手法やEOFについての詳細、運用に関することなど、高度な話題も扱われる。受講者は1人に1台のPowerMac G4を利用できるが、自分でPowerBookを持ち込むことも可能となっている。WebObjects 5に対応した講義となる。
「WebObjectsトレーニング in 京都」はJavaおよびデータベースについての基本的な知識がある開発者に対して、WebObjectsの基本から講習する。テクニカル・ピットの倉橋浩一氏が講師であるが、同社のHomeworkやSimpleOrderといった自習用教材をベースに講義が行われる。2つの日程が組まれており、平日コースは2002年1月29日(火)〜31日(木)の10:00〜17:00で、3日間に渡って行われる。土日のコースとしては、2002年2月2日、3日の9:00〜18:00の日程で行われる。価格はいずれも150,000円となっている。場所は、京都駅前『ぱるるプラザKYOTO』研修室である。
なお、MDOnline購読者、ウイングネット会員、MOSA会員、Homeworkユーザついては特別価格が設定されている。
関連リンク:セミナー&トレーニングのページ
カテゴリ:WebObjects, イベント
【MDOnline読者様限定コンテンツ】
先に言い訳をしておこう。「いろいろやって実用的にならなかった」という悲しい結末を記事にしなければならないが、それはそれでなんとかしたい。要は、変なところにはまってしまって身動きがとれなくなったのだ。本当は、JavaでAppleScriptのプログラムを実行するということにしたかったのだが、これは次のテーマとして、今回は、いきなりJDirectである。
以前にも公開したことがあるが、Pure JavaからAppleScriptのプログラムを実行するというクラスをMac OSで稼働するようなものを作ったことがある。御存じの通り、Pure JavaではMac OSの機能の全てが使えない。そこで、あれこれ悩むことになる。「うまく動けば」という前ふりはあるけども、以外にうまくいってかつデバッグ等がしやすいのが、AppleScriptのプログラムをテキストで用意し、それをOpen Scripting Archtectureに用意されているAPIに渡して処理をすることである。結果も得られるので、たとえば、Javaのプログラムから、ファイルのコメントを設定したりということができたわけである。もちろん、AppleScriptが使えれば…という前提はあるものの、Javaの機能制限を突破する1つの手法であることは違いない。もっとも、クロスプラットフォームという点は一気にくずれるのは仕方ない。
同じような目的で、やっぱりMac OS XでもAppleScriptのプログラムをテキストで与えればそれが動くというものがあれば便利ではないかと考えた。そのためには、Mac OSと同様、OSAにあるAPIをたたくという方法がある。APIなのでC言語のインタフェースとなっているわけだが、MRJにはJDirectという仕掛けがあって、C言語のライブラリ(あるいはフレームワーク)の呼び出しが行える。Javaでのネイティブ呼び出しはJNIが標準としてあるが、JDirectは機能がシンプルな分、使いやすいとかパフォーマンスがいいということがある。もちろん、JDirectはMac OSあるいはMac OS Xでしか使えないが、その先のシステムコールに依存するわけで、そこまで標準にこだわることもないだろう。
ただ、JDirectについては、Mac OSとMac OS Xではバージョンが違っており、ポイントとなる部分にも違いがある。Technical Noteには、両互換のクラスを定義する方法が掲載されているが、いずれにしても、JDirectを使ったクラスは、Mac OSで作っていたものはMac OS Xでは修正しないといけないので、Mac OS Xにフォーカスしたクラスを作ることにする。
さて、結果としては、JDirectを使ってOSAのAPIを呼び出すプログラムは、どうも動かないのである。アプリケーションとして起動した場合、スクリプトの実行APIはエラーを戻す。スクリプトに記述されたプログラムのターゲットアプリケーションから辞書情報が得られないというエラーになり、一切実行されない。一方、コマンドラインから起動するアプリケーションでGUIのないものを作った場合、スクリプトの実行はされないわけではないが、AppleEventのタイムアウトになって、エラーになる。だから値を取り出せないし、時間もかかるので、ちょっと実用的ではない。おそらく、AppleEventの双方向のやりとりが何らかの形でうまくいかないのであると思われるが、これ以上の突っ込みはできなかった。したがって、「実用的じゃないJDirectのサンプル」程度のものしかできなかったのである。(ただ、このプログラムは、Mac OS X 10.1ではそれなりに動いていた。確証はないのだが、システムの修正に依存している可能性もある。)
一方、以前にも紹介したことがあるが、Mac OS Xには、osascriptというコマンドがあり、TerminalからコマンドをたたいてAppleScriptを実行させることが可能となっている。JavaからAppleScriptのプログラムを実行したい場合には、むしろ、このコマンドを呼び出す方がおそらくうまく動くだろう。日本語のファイル名はどうするのかなども興味あるところだが、実用的なAppleScript実行クラスはそちらで作ることにして、今回はいきなり深いテーマだがJDirectということになったのである。
JDirectについてのドキュメントは完全には揃っていないが、Mac OS時代のものと、いくつかの文書を見れば、いちおう情報は揃うはずだ。JDirectについて最初から勉強するには、MRJ 2.1向けのPDFがあるのでそれを調べるのが第一歩だ。ただしそちらは、Mac OS 9までのJDirect 2に関する文書となっている。そして、Technoteの2002番に、Mac OS Xに搭載されているJDirect 3についての解説が掲載されている。
◇MRJ 2.1のJDirect
http://devworld.apple.com/techpubs/java/MacOSandJava/JDirect/JDirect.html
◇TN2002: Compatibility between JDirect 2 and JDirect 3
http://developer.apple.com/technotes/tn/tn2002.html
JDirect2と3では、ライブラリのリンクを行う部分に違いがあるだけで、ネイティブメソッドの定義などは基本的に同じとなっている。上記のTechnoteに違いがきちんと示されている。
今回のプログラムは、以下のアドレスからダウンロードして参照していただきたい。プログラムを全部掲載することは行わない。プログラムは、Project Builderのプロジェクトとなっているが、プログラムを確認するだけなら、フォルダの中の該当するファイルを参照するのでかまわないだろう。
◇サンプルプログラム
http://mdonline.jp/figs/01/0039/MDOnline_02_DoAppleScript.sit
(この項続く)
カテゴリ:Java, Java Watch on the X
新しくなったAirMac BaseStationは「Dual Ethernetモデル」と呼ばれるようだ。このベースステーションに関する文書がKnowledge Baseに公開されている。
◇AirPort Base Station (Dual Ethernet): Factory Default Settings
http://www.info.apple.com/kbnum/n106597
ベースステーションの初期設定が記載されている。ネットワークの初期パスワードは最初に設定されているIPアドレスなどが分かるので、ネットワーク管理者には有益な情報だろう。
◇AirPort Base Station (Dual Ethernet): LED Behavior
http://www.info.apple.com/kbnum/n106596
ベースステーションのLEDの点灯パターンとその場合の状態についての一覧表が掲載されている。3つあるLEDの点灯パターンごとに応じた表になっており、セルフチェック中や接続ができなかった場合などの状態が分かるようになっている。
◇AirPort Base Station (Dual Ethernet): Technical Specifications
http://www.info.apple.com/kbnum/n106595
新しいベースステーションの技術仕様がまとめられている。
◇AirPort Base Station: About the Mounting Brackets
http://www.info.apple.com/kbnum/n60966
ベースステーションのマウントブラケット(引っ掛けるフック)の長さは、新しいものは以前のものより短くなっている。
カテゴリ:Knowledge Base(旧TIL), ネットワーク管理, ネットワーク
Knowledge Baseに、iPodに関する文書がいくつかまとめて公開されたので、紹介しておこう。
◇iPod: How to Connect to Your Home or Car Stereo
http://www.info.apple.com/kbnum/n60962
iPodをオーディオ装置に接続するには、ヘッドフォン端子から接続すればよい。ヘッドフォン端子は3.5ミリ径のステレオジャックである。カーステレオにつなぐには、同様な方法以外に、カセットアダプタを使う方法がある。こうしたパーツはカー用品点で購入できる。
◇iPod: Can Become Warm Under Normal Usage
http://www.info.apple.com/kbnum/n60963
iPodの本体が暖かくなるのは普通の状態であることが説明されている。
◇iPod: "Storage device was not properly put away" Alert when you disconnect FireWire Cable
http://www.info.apple.com/kbnum/n60961
iPodをFireWireモードで使用しているとき、そのままケーブルを抜くと、警告が出る。その場合は再接続を行って、ボリュームのマウント解除を行ってから、ケーブルを抜く。その方法が、Mac OS XとMac OS 9のそれぞれで記載されている。それぞれのOSで、ボリュームのアイコンを選択して、Mac OS 9ではCommand+Y、Mac OS XではCommand+Eのショートカットを使うのが手軽であるだろう。
カテゴリ:Knowledge Base(旧TIL), メディアプレイヤ