Macintosh Developer Online (MDOnline)


2001年2月7日発行号 - Cocoaでプログラムしてみました



今日はあまりニュースがないので、ひととおり記事を書いた後、ふと思い立ってプログラムを始めました。Mac OSデベロッパーセミナーをMacworldの時に開催することはしつこく(笑)アナウンスしていますけど、おかげさまでいろいろなところからプレゼント品が集まっています。その抽選をしないといけないわけですが、コーシンさんの「トトマック」があるだろうと思ってなにげに買ったものの、実はゆっくり抽選するということしかできないことを開発者の方に教わり、セミナーの終了後に手際よく抽選することは難しいことがわかりました。抽選とは言っても、たとえば、1〜60の番号をランダムに出せば言い訳で、それほどプログラムは難しくはないはずですが…。で、Cocoaで作ってみました。以前に【今から始めるCocoaプログラミング】で記述しただけの知識でだいたい1時間もあればそこそこ動くものができました。慣れた人ならもっと早いかもしれません。見栄えや動作の改良などを含めて1.5時間程度です。この話は、いずれまた記事にしたいとは思いますが、書いたプログラムも数十行程度ですし、Project Builderではあっさりと稼動するバイナリを作ってくれるので、とにかく素早く作業が終わりました。Interface Builderでの、オブジェクト間を線で結ぶというやり方の効率の高さは確かに実感できるところです。で、欲を出して、NSTableView(表形式の表示コンポーネント)を使ってみたのですが、結論としてはうまくいかず、そこであれこれはまってしまいました(苦笑)。で、こんな時間になり、また、今日もヘトヘトです…。記事で詳しく書きますが、Objective-CをJavaでラップしているという影響が出ているのではないかと思います。このプログラムはソースごとフリーソフトとして公開しようと思っています。
(新居雅行 msyk@mdonline.jp


【WindowsオフィスでWebObjects】インストール後の作業とAccessの準備

WebObjectsをインストールする時に、IME Supportを必ず組み込むというのが1つの重要なポイントであることを説明した。そして、インストール後、さらに手作業でファイルを1つ組み込まなければならない。たとえば、Cドライブにインストールしたのであれば、C:\Apple\Library\Frameworks\Foundation.Framework\Resourcesという奥深いところに1つだけテキストファイルを作る。たとえば、Windowsのエクスプローラを使って、そのフォルダを開いて作業をすればよい。もちろん、テキストファイルであれば、やり方はどうやってもいいのだが、以下のように作業するとよいだろう。ここで、ファイルの拡張子は必ず表示するように、表示オプションを設定しておくのが良い。Windowsの初期状態では、拡張子とアプリケーションが対応付けられたものの場合、拡張子は表示されないようになっているが、開発やサイト関連構築などを行う場合には支障が出る。エクスプローラのウインドウで「ツール」メニューから「表示オプション」を選択し、「表示」のタブを選択して詳細設定にある「登録されているファイルの拡張子は表示しない」のチェックをはずしておこう。
まずは、テキストファイルを作ってしまう。エクスプローラ等でResourcesフォルダを開いたら、フォルダの中身を表示しているウインドウを右クリックする。するとメニューが表示されるので、「新規作成」から「テキストドキュメント」を選択する。すると、「新規テキストドキュメント.txt」というテキストファイルが作成される。通常は「メモ帳」が関連づけられていて、ダブルクリックすれば開くはずだ。

◇新しくテキストファイルを作成する
 

作成された「新規テキストドキュメント.txt」をダブルクリックして開き、単に「8」という半角文字の数字をキータイプする。そして保存しておく。この8とういのは、NSShiftJISStringEncodingということを意味するそうで、文字のエンコードでシフトJISを使うということを設定することになる。

◇テキストファイルの中身は「8」だけでよい
 

保存をして、「メモ帳」を終了する。そして、ファイル名を「CStringEncoding」にする。ここで、.txtの拡張子は削除されることになり警告が表示されるがかまわず、このファイル名に変更をする。

◇ファイル名を「CStringEncoding」に変えておく
 

この準備は、インストール後に1回行うだけでよい。

実はこの後、実にさまざまなパターンで、Accessのデータベースを利用できるような、WebObjects Applicationを作った。そこでとにかくこうすれば稼動するというパターンは何とか見つかったという状態だ。最初悩まされたのは、Accessのデータベースのテーブル名やフィールド名が、2バイトコードの場合、Project Builderでの作業中に文字化けするということだ。しかし、理由が定かでないのだが、2バイト文字でも問題はないようだ。インストールの状態が何かでうまくいかなかったのかもしれない。フィールド名などは1バイトコードで記述するのが基本と言えるのかもしれない。だが、Direct to Webではフィールド名そのものが初期状態では一覧の見出しになるので、日本語で扱いたいとも考えるところだ。
次は、Accessのデータベースでの考え方と、EOModelerの考え方が微妙に違う点があることだ。Direct to WebでEOModelerによるデータベースのモデルを生成するのだが、ウィザードの途中で主キーをフィールド一覧から選択して指定をする必要がどうもあるようだ。主キーを指定しないで進めた場合、実際にアプリケーションはきちんとは動かない。Accessのテーブルは、フィールドに対する主キーはあらかじめ設定されているので、そこのところは自動的に取得してやってくれないのかと思ったのだが、どうしてもそうはいかなかった。ウィザードの途中で主キーを設定することで、とりあえずは検索などはうまく動くようになったので、これは必須なのだろう。だが、Webブラウザからのレコード追加を解析してみた結果、Accessのオートナンバー型フィールドと、EOFのモデルとのからみがうまく行っていないような気がする。これについては回を改めて記載しよう。参照だけでいいのなら、オートナンバー型フィールドでもいいのだが、Webブラウザからレコードを追加を行うには、データベースの修正も含めて、あちらこちらを変更しなければならない。
それから、これもけっこう悩んだのだが、テキスト型のフィールドの扱いだ。Accessのテキスト型フィールドでは255バイトの長さまで設定できる。ただし、255バイトに設定していると、モデルを作るときに正しく認識がされないようで、EOModelerで設定内容を見ると、正しい設定になっているとは思えない。ただ、たとえば50バイトのテキストフィールドは、EOModelerでの長さは100になっている。UNICODEということなのだと思うがちょっと釈然とはしない。いずれにしても、長さが254バイトなら問題はないようなので、255バイトのテキスト型フィールドの長さを詰めておこう。テキスト型フィールドにぎりぎり文字を入れることも滅多にないと思われるので、多くの場合はこれで問題はないはずだ。
いずれにしても、ODBCだからなのか、やはりAccessをデータベースに使うのは立て板に水というようにはいかないのである。Accessを使うことでわざわざ悩み、時間を食うとなれば、本末転倒になる場合もあるだろう。常にチェックをしながら作業をすすめることが肝心だと思う。

カテゴリ:Windows, WebObjects


New CIDフォントが正しく印刷されない場合の対処方法が公開

Mac OS 8.5以降で、モリサワのNew CIDフォントが正しく印刷されない場合の対処について、Tech Info Libraryに掲載されている。Mac OS 8.5以降は、使用フォントについてはOpen Font Architecture(OFA)に基づいて処理されているが、New CIDフォントの名前の取得がうまくいかず、正しくないフォント名をプリンタに伝えることになる。こうした症状の出るフォントの一覧表も掲載されている。対処方法としては、ATMフォントを使うことや、AdobePSドライバを使うこと、PDFあるいはPSファイルにしてから印刷すること、用紙設定での特定の設定を行うことなどが記載されている。

関連リンク:Mac OS: Adobe Morisawa New CID Font Issue
カテゴリ:Knowledge Base(旧TIL), Mac OS 9


REALbasic 3はVer.1からのアップデートができず、Ver.2からのアップデートのみ

Carbon対応しMac OS Xでも稼動するREALbasic 3の発売が近付いているが、アスキーより、Ver.1からVer.3へのアップデートができなくなったことがお知らせとして掲載された。当初はそのサービスも行う予定だったが、開発元のREAL software社での方針が変更されたことで、REALbasic 3のリリース後は、Ver.2からVer.3へのアップデートのみとなった。ただし、現在、Ver.1のライセンスは、Ver.3の発売までにVer.2へのアップデートを行うことで、Ver.3への無償アップデートが可能となる。つまり、無償アップデートキャンペーンの対象となっている。Ver.3の登場を待ってアップデートしようとしていた人も、早めにVer.2にアップデートしておくことで、大きな不利益はないと言えるだろう。

関連リンク:REALbasic日本語版
カテゴリ:REALbasic