Macintosh Developer Online (MDOnline)


2001年6月14日発行号 - OpenBaseで日本語を使う



Project Builder 1.0.1がADCサイトでダウンロード可能になっている、ということをMacinTouchで見たと言うことにしますが(笑)、そういうことです。WebObjects 5のトライアル版もアップロードされている、そうです。つまり、WWDC 2001で配られたDeveloper ToolsのCD-ROMの内容が、ダウンロードできるようになった、というように論理的には判断できます。ただ、Appleのサイトのオープンなところに、こうしたことがいっさい書かれていませんので、念のため、記事にはしないことにしましょう。
さて、広文社さんより、書籍をプレゼント用にいただきました。今回も競争率は高いかもしれません。くじ引きシステムを作ろうとしながら実はまだ作っていませんので、また、あみだをするかもしれません。もし、既存のCGIとかサービスとかでこの種のくじ引きシステムをご存じの方がいらっしゃったら、ご一報いただければと思います。

==================プレゼント
「Mac OS Xプログラミング入門 Objective-C」(広文社) 2冊
―――――――――――――――――――――
申し込み方法:<msyk@mdonline.jp>宛にメールをする
 メールのタイトル:【Objective-C本】を希望
 メールの本文には、名前、住所、郵便番号、当選時の公表名、を記載
 メールは、MDOnlineに登録のメールアドレスから送付してください
   有償での購読者、MOSA会員としての購読者、ヘリオグラフ顧客様
   としての購読者の方々に応募の権利があります。
 締め切り:2001年6月9日(土曜日)中までに到着メール
(新居雅行 msyk@mdonline.jp


WebObjects 5のOpenBaseで日本語を含めたデータを扱う方法

WebObjects 5が発売されたが、WWDC 2001でのトライアル版をすでに利用している方もいるだろう。WebObjectsには、データベースエンジンとしてOpenBase SQLが添付されている。OpenBase SQLはアプリケーションの稼働ではライセンス料が発生するが、Developer版はフリーで利用できる。WebObjects 5には開発で利用するOpenBase SQLが最初から付属していると考えればよいだろう。
WebObjects 5に添付されているOpenBase SQLのバージョンは6.5.1とやや古い。また、日本語の扱いについても様々な問題が指摘され、その後に改良が加えられているため、最新版をダウンロードすする必要がある。また、どういった設定が必要かということも開発者としては知りたいところだろう。以下の情報は、OpenBase SQLの日本での発売もとであるヘリオグラフより公開されたもので、WebObject 5とOpenBase SQLで日本語のデータを扱うアプリケーションを作るための設定方法である。WebObjects 5でOpenBase SQLを使う場合には、とにかくこの手順を追う必要があるだろう。

まず、OpenBase 6.5.6 Mac OS Xをダウンロードするが、併せて、最新のJDBCドライバもダウンロードしておく。JDBCドライバは同じページにあるOpenBase Accessariesのカテゴリにある。

◇OpenBase Downloads
http://www.openbase.com/download

もちろん、OpenBase SQL 6.5.6が稼働するようにインストールの作業を行う。JDBCドライバは、WebObjectsを稼働させるマシンの/Library/Java/Home/lib/ext/に入れておくのが基本だ。

そして、OpenBaseのInternal EncodingをShift JISもしくは、EUC Japaneseに設定する。これは、システムが英語環境、日本語環境にかかわらずこの設定にする。EUC Japaneseの設定は、 OpenBase Managerのポップアップメニューから設定可能だ。Shift JISに設定する場合には、まず、OpenBase SQLからデータベースを定義作成し、/Library/OpenBase/Databases/の中にある「作成したデータベース名.db」のフォルダを確認し、さらにそのフォルダーにあるencodingというファイルを修正する。ファイルの中に、NSShiftJISStringEncodingとだけ書き込んで保存しておく。これで指定したデー
タベースの Internal EncodingがShift JISに設定される。

WebObjects 5のEOModelerからOpenBase SQLへの接続に関しての設定は次の通り行う。まず、URLとしては、次のような形式で記述する。もちろん、利用しているマシンや使うデータベースに合わせて記述しなければならない。

jdbc:openbase://hostipaddress/databasename

 hostipaddress→OpenBaseが稼働しているマシンのIPアドレス
 databasename→接続するデータベース名

次に、Driverの部分には次のように記述を行う。

com.openbase.jdbc.ObDriver

Userの部分にはデータベースで設定したUserを、Loginの部分にはデータベースで設定したLoginを入力する。設定していない場合にはブランクのままにしておく。以上で、 WebObjects5.0からOpenBase SQLへの接続が可能になります。

なお、Import Tabular Dataを実行する場合には、英語環境で、Shift JIS の設定が安定し
ているとのことである。

関連リンク:ヘリオグラフ-OpenBase
カテゴリ:データベース, WebObjects


小池邦人のプログラミング日記》2001/6/13<Metrowerks CodeWarrior 7.0EAを使う>

今年のWWDCでは、Metrowerks CodeWarrior 7.0 Early Access(開発リリース)が参加者すべてにお土産として配布されました。今回は、WWDCでMetrowerks社が単独で行ったセッションの内容と、CodeWarrior 7 .0EAを使いMach-OベースのCarbonアプリケーションを作ってみた感想を書いてみます。

CodeWarriorの話しに入る前に、WWDCで購入してきたResorcerer 2.4について言及しておきます。値段は$256(笑)実は、私は日本語版ユーザなのですが、日本語化されるのを待っているといつになるか分からないので、さっさと購入してしまいました。この開発ツール、WWDC内のショップでも大人気で、かなり早い時期に売り切れてしまったようです。偶然、Resorcererを日本語化している某社の某社長にパーティで会ったので「早く日本語化してね!」とお願いしてみたところ「ここへ来て2.4が出てることを初めて知った...。」(オイオイ)と、とぼけた事を言っていました(笑)。日本語版のユーザの方は期待して(ついでに圧力かけて)待つことにしましょう!

Resorcerer 2.4には、Mac OS 9用とは別に、Mac OS X用Carbonアプリケーションも付属しています。このバージョンから、128ピクセルアイコンを含んだ‘icns’リソースの編集や、データフォークへのリソースの書き出しにも対応しました。これにより、我々デベロッパーも、Mac OS X上で快適にリソースファイルを編集できるようになったわけです。英語版で日本語リソースを編集するのには、ちょっとした下準備が必要です。まず、ResorcererをResEditでオープンし(笑)、2つの‘vers’リソースの国別コード(Country Code)を日本(Japan)に変えます。

 

これでアプリケーションフォントが変わり、ウィンドウタイトルなどの文字化けが直ります。続いて日本語リソース(例えば’STR#’リソースなど)の編集用ウィンドウをオープンしたら、Displayメニューから「Set Text Style...」を選び、フォントをOsakなどに変更してください。これで、ほぼ支障なく日本語が入力&表示できるようになります。

 

さて、WWDC 2001では、MetroWorks社が独自にCodeWarriorの将来的な機能についてのセッションを用意していました。セッションの開始前には、プレゼントをエサに(1等賞はPS2だった)、参加したデベロッパーに次期CodeWarriorに望むことを調査するためのアンケートが配られました。Apple社が、Mac OS XにProjectBuilderやInterfaceBuilderの開発環境をバンドルし始めたので、MetroWorks社も悠長に構えていられなくなったわけです。既存ユーザをしっかり捕まえておくためにも、ユーザからの要望を的確&迅速に反映する努力が必要です。この点はユーザにとっては大きなメリットですね。当然、セッションは純正開発環境を意識した内容となり、ユーザが欲しいと考えている新機能をガンガン付けていくと強調していました。

Mach-OやCoCoa対応は当たり前、InterfaceBuilderとの連携や、APIリファレンスやドキュメントとの連携、エディター、コンパイラー、リンカー、ディバッガーの強化などなど...。上げたら切りがありません。CodeWarrior 7.0の正式版の発売は10月ごろを予定しているそうですが、とりあえず今回の7.0EAで、自作CarbonアプリケーションをMach-Oベースに作り直してみることにしました。まず、CFMベースで開発していたプロジェクトをオープンし、ライブラリやプリコンパイルヘッダーの検索パスを調整します。Fileメニューを見ると「Convert Traget to Mach-O」という機能があるので、これを使い既存プロジェクトをコンバートしてみました。作業が終了するとプロイジェクト名称の後に「proj-M」とついたMach-O用のTargetが出来上がりました。プロジェクトウィンドウにQuickTime Frameworkを追加し、各種エラーレベルなどを調整したところ、なんとかコンパイルとリンクを通すことができました。

ところが、肝心のアプリケーションが保存されません? 今回はアプリケーションパッケージを生成する方法を取っているので、その設定に問題があるのだろうと予想しました。しかし、こんな所であまり深く考えても無駄ですので、とりあえす、テンプレート(ひな形)プロジェクトを作り、その中のソースやリソースファイルを差し替える方法に切り替えてみました。Fileメニューから「New...」を選択し、テンプレートを選ぶダイアログの指示に従い新しいプロジェクトを作ります。

 

CodeWarrior 7.0EAでは、の作業により「SimpleAlert」というアプリケーションパッケージが用意されます。このプロジェクトに、自作アプリのソースとリソースファイル、そしてプリコンパイルヘッダーやQuickTime Framewrokを加えてオリジナルのプロジェクトへと変貌させます。

 

この状態でMakeしてみると、今度は無事にアプリケーションが保存されることが確認できました。

ただし、このままではアプリケーション名が「SimpleAlert」のままで、アプリ自身のシグネイチャーもオープン可能なファイルタイプも未定義です。そこで、プロジェクトのPreferenceダイアログをオープンし、空欄となっている設定項目や、生成物の検索パスやファイル名を見直してみました。すると、自力で直す所が最低でも3箇所ありました。「Target Settings」の「OutPut Directry」(以下の最初の図)、続いて「PPC Mach-O Target」の「Creator 」と「Output Resource to Separete Flattened File」(以下の2番目の図)、最後に「Mac OS Packager」の「Use Mac OS Packager」と「Create PkgInfo File」(以下の3番目の図)です。

 
 
 

プロジェクトの種類によっては、他にも変更する箇所があるかもしれません。パッケージに関わる設定は少々煩雑なのですが、まあ開発中バージョンですので仕方がないでしょう。より洗練されることを望みたいと思います。

次に、完成したアプリケーションパッケージ上で、Contextualメニューから「パッケージの内容を表示」を選択し、その中のInfo.plistやInfoPlist.string(アプリケーション情報が書き込まれている)といったテキストファイルを編集します。

 

InfoPlist.stringはCodeWarriorのエディターで簡単に編集できますが、Info.plistの方はXMLで記載されていますので、Develper Tools CD-ROMに含まれている「PropertyList Editor」を使うと便利です。

 

どんな具合に編集するかは、Mac OS Xに含まれている他のアプリケーションパッケージ(Previewなど)のInfo.plistを参考にすると良いでしょう。これで、アプリケーションパッケージにちゃんとオリジナルアイコンが付き、Finder上での対応ファイルのドラッグ&ドロップで、それをオープンすることが可能となります。

今回の動作テストは、あくまでも開発途中のCodeWarrior 7.0によるものですので、その点をご了承ください。正式版では多くの不都合も取れ、立派な大人に成長していることでしょう。Linkerも、現在はAppleが提供している物をそのまま利用しているそうですが、製品版にはMetrowerks独自の高速バージョンが搭載される予定だそうです。とにかく、今年の秋に入手できるだろうCodeWarrior 7.0製品版が待ち遠しいかぎりです。これからも、Metrowerks社のガンバリに大いに期待したいと思います。

次回は、WWDC関連の話題により中断していたNavigation Service 3.0の話しを再開します。新方式のファイルオープンや保存ダイアログルーチンについて解説する予定です。
[小池邦人/オッティモ]

関連リンク:オッティモ
カテゴリ:開発ツール, Carbon/CF, 小池邦人のプログラミング日記


Objective-Cの基本をしっかり勉強できるプログラミング本を広文社が出版

広文社より「Mac OS Xプログラミング入門 Objective-C」が出版された。価格は\4500で、460ページあまりの大作だ。筆者は、神戸大学大学院自然科学研究科助教授の荻原剛志氏だ。C言語の知識をベースにして、Objective-Cの解説を行うのが本書の大きな目的だ。オブジェクト指向やあるいはObjective-Cでのメモリ管理などに加えて、CocoaフレームワークのFoundationについての解説が行われている。文字列や配列など、Objective-CでCocoa向けのプログラミングを行うときには必ず使うようなクラス群がFoundationだ。さらに、カテゴリや抽象クラス、プロトコル、デリゲートや通知と続き、より高度なオブジェクト指向プログラミング関連の話題を説明している。カードゲームや、画像ビューアといったサンプルも示している。さらに、例外処理やスレッド、分散処理といった内容も含まれている。一方で、Interface Builderを使ったGUI制作については他の書籍に譲るとして、この本では触れられていない。Objective-Cの基本はCocoaプログラミングの基本でもある。「入門」という書籍タイトルではあるが、むしろ基本をみっちりやるという意味で本格的な書籍と言えるだろう。いずれにしても、Mac OS Xでのプログラミングをやる人にとっては必携の書籍になるだろう。

関連リンク:株式会社広文社
カテゴリ:雑誌、書籍, Cocoa


WebObjects用のフリーのライブラリと汎用のJava文字列処理ライブラリが公開

GammaStream Technologies社から、WebObjects 5向けのフレームワークと、Javaの汎用ライブラリがフリーで公開されている。WebObjects 5向けのフレームワークである「WOBox 1.0.2」は、日付や時刻をポップアップメニューで指定するようなユーザインタフェースを作る機能や、HTML文字列をフォントや色などさまざまな属性を指定して表示できる機能、あるいはボックスに文字列やグラフィックスなどを表示するような機能がコンポーネントとして利用できるようになっている。ドキュメントがあまりしっかりないので、簡単に使い方を説明しておこう。ダウンロードしたフォルダには、WOBoxExamplesとWOBoxの2つのフォルダがある。まず、WOBoxの方を開いてプロジェクトファイルを開く単にビルドすると、buildフォルダにWOBox.frameworkというフォルダができるので、これがフレームワークとなる。これをどこかにインストールして使うことになるが、たとえば、/Library/Frameworksフォルダにコピーすると良いだろう。そして、WOBoxExamplesでとりあえずサンプルを見るということになると思うが、このフォルダにあるプロジェクトのWOBox.frameworkの参照パスは正しくない(というか、開発者のシステムに依存したパスではないかと思う)。だから、左側でFrameworksのグループを開き、WOBox.frameworkの項目を選択して、Command+Iを押して、プロパティを表示する。そこに「パスを変更」というポップアップメニューがあるので、そこから「パスを設定」を選択し、さきほどインストールした/Library/Frameworks/WOBox.frameworkフォルダを選択すればよい。これで、WOBoxExamplesを実際にWebObjects 5のWebアプリケーションとして実行できるようになる。もちろん、フレームワーク自体は稼働環境に合わせてインストールすれば良く、ここでの説明はあくまで一例である。ドキュメントはないものの、フレームワークのソースや設定ファイルが公開されているので、WebObjectsに慣れていればそれほど難しいものではないだろう。
さらに、もう1つ公開されている「GammaCore 1.0.0」というライブラリは、JARファイル形式で提供されている純粋なJavaのライブラリである。GammaCoreはWOBoxには含まれていて、内部的な処理を行っている。文字列や配列の処理といった基本的なデータ処理を行うユーティリティクラスである。いろいろな機能があるが、ざっと見たところでは、文字列の中身を置き換える機能や、Vector型のリストの内容をつないだ文字列を作るなど、Stringクラスでは組み込まれていないような機能をメソッド一発で使えるようで、プログラミングの効率化に貢献しそうである。

関連リンク:GammaStream Technologies
カテゴリ:ライブラリ, Java, WebObjects


CarbonLib 1.4のSDKのバージョンが1.4a4にバージョンアップ

CarbonLib 1.4a4 SDKが、ADC(Apple Developer Connection)のメンバーに対して公開された。Carbonは、Mac OSとMac OS Xでの共通なAPIを提供するフレームワークで、両方のOS環境に対応するアプリケーションを作る場合の選択肢の1つである。また、過去のMac OS向けのプログラムを最低限の修正でMac OS Xネイティブアプリケーションにするということも可能である。CarbonLibは、Mac OS 8/9において、Carbonの機能を実現するシステム拡張である。一般ユーザ向けにはVer.1.3.1が配布されている。

関連リンク:Carbon
カテゴリ:Carbon/CF


HID ManagerのgetNextEventの戻り値についての解釈を示したQ&A

HID ManagerのgetNextEventを呼び出したときにkIOReturnUnderrunというエラーが戻ることについてのTechnical Q&Aの文書が掲載された。HID Managerは、ジョイスティックなどのUSBデバイスとのやりとりをアプリケーションから行うためのシステムサービスだ。これはイベントがないことを示しており、得られたデータも確定したものではないことを意味する。サンプルプログラムも掲載されている。

関連リンク:QA1038:HID Manager Event Data Underruns
カテゴリ:Technical Q&A, 周辺機器