Macintosh Developer Online (MDOnline)


2000年8月4日発行号 - ファイルメーカーProのプラグイン作成



今日のFileMaker Developer 5のレビューではプログラムを示そうかと思ったのですが、ソースを公開する場合、もとのTemplateにあるものがほとんどみたいになるので、著作権上問題かと思いとりあえずは言葉で説明をしました(ライセンスの条文にではダメだと解釈できます)。ただ、Templateの実物を見ていないとちょっと分かりづらいかと思いますが、なんとかポイントを説明するところで逃れたというところです。逆にこれ以上の詳しいことをレビューしても仕方がないので、やはり詳細は製品を見て下さいという流れにしました。あとは、来週にJava関連のレビューをしますが、これはソースをばんばん出したいと思います。それから、Developer版にはCDMLについての説明もあり、考え方としてはドキュメントが付属するDeveloper版の範疇ではありますが、XMLが出てきた現在ではやや過去形になりつつあるかなということもあり、あえてレビューはしないことにします。
レンタルサーバですが、読者の方からもアドバイスがあり、月額が富山NOCだと19000円東京NOCだと29000円というサービスがあちらこちらにあって、そのどれかの会社を使うことが有力になってきました。フランチャイズなんでしょうね。他にはコバルトQubeを使ったハウジングだと、月に6000円というところもありました。だけど、Qubeってちょい高いですよね。あちらこちらに問い合わせをして様子をうかがっているのですが、全然返事がありません。迅速に返事が来たところに決めようという気が強いのですけどねぇ…。
先日お知らせしたように、この土日月は休刊として、次の発行は来週の火曜日、8月8日となります。よろしくお願いします。
(新居雅行 msyk@mdonline.jp


リレーショナルデータベースOpenBase 6のベータ7がリリース、バグ修正が中心

リレーショナルデータベースのOpenBaseの次期バージョンVer.6のベータ7がリリースされている。2000年秋に正式版が出荷される予定だ。OpenBaseはMac OS X Server、Mac OS X、Windows NT/2000で稼動するデータベースエンジンで、WebObjectsにはそのLite版が組み込まれている。製品版も開発のライセンスは無償となっており、稼動させる場合にライセンス料を払う形式だ。OpenBaseはCocoa対応のアプリケーションであるベータ7での変更点はバグ修正などとなっている。ベータ版の変更点は、OpenBase社のサイトでDownloadのページに移動し、Instractionのボタンをクリックすると参照できる。
◇OpenBase
 http://www.openbase.com/

関連リンク:K’s Room
カテゴリ:データベース


FileMaker Developer 5を使う:プラグイン関数を作成する

ファイルメーカーProでは、プラグインとして別途ソフトウエアを供給することで、機能を付け加えることができる。Webコンパニオンも実はプラグインで供給されているのだが、CあるいはC++言語でプログラミングした機能をプラグインとしてファイルメーカーProに追加することができるのである。1つの典型的な利用方法は、External関数を使ってプラグインに組み込んだプログラムを呼び出すことである。フィールド定義の式で、External関数を使って、自分でプログラムした処理を呼び出して計算処理に利用できると考えればよいだろう。また、アイドル時間中にもプラグインとして作ったプログラムを呼び出すこともできるので、単に拡張関数以外の用途にもプラグインは使えるはずだ。
FileMaker Developer 5では、このプラグインを作成するためのひな形となるものが提供されている。また、マニュアルにも1つの章を使ってプラグイン作成について記載されている。Macntosh版のDeveloperには、CodeWarriorのプロジェクトファイル、ヘッダファイル、ソースファイルが添付しており、Templateというほとんど機能が組み込まれていないスケルトンと、ある程度の機能を組み込んだサンプルという位置付けのFull Exampleが含まれている。いずれも、CodeWarrior Pro2向けのプロジェクトであるが、Pro5でもプロジェクトを変換すれば、即座にコンパイルできてプラグインが生成できる。68kおよびFAT、さらにx86向けのバイナリも、CodeWarriorを正しくセットアップしていればコンパイルできる。つまり、Macintosh版でWindows版のプラグインも生成はできるということだ。ある程度知識を得た上で、これらのソースを見れば、プラグインをどのように作っていけばよいかは判断できるだろう。また、自分で作る場合には、Templateをもとに作成を行えばよい。

プラグインは1つのファイルとして作成される。この1つのファイルを構成するために、いろいろなリソースやあるいはC言語かC++で作成されたプログラムを作ることになるが、詳細については、Developer版を購入してもらうとして、ここではポイントになることをまとめておこう。まず、プラグインのプログラムは、ファイルメーカーProの中から呼び出されることになり、いわばコールバックされるものであって、一般的なアプリケーションなどとは若干環境が違う。そうした部分は非常にややこしく面倒なところではあるのだが、付属のTemplateなどのプロジェクトをもとにすれば、ファイルメーカーProからプラグインへの引き渡しのプログラム部分はほとんど出来上がっている。だから、プログラマはとにかくプログラムの中身だけを作ればいいように準備されているのである。
ファイルメーカーProからプラグインへは、パラメータブロックを用いてパラメータの引き渡しが行われる。実際にファイルメーカーProからプラグインを呼び出すタイミングは5種類ある。それぞれ、ファイルメーカー起動時、ファイルメーカー終了時、そしてアイドル時、プレファレンスでの[設定]ボタンを押した時、そして、外部関数Externalで呼び出した時である。これらの場面ごとにパラメータブロックのメンバに異なる定数が入るので、それに応じてswitch文で分岐すればいいが、やはりその部分もすでにTemplateで作ってくれている。
起動時や終了時の呼び出しは、たとえば特定のハードウエアがないと機能しないような外部関数で、初期化や接続チェック、あるいはメモリの解放などを行うような時に使う。常に状態をチェックしながら作業したい場合には、アイドル時に処理を組み込むことになるだろう。そして、プラグインの動作の設定をユーザにさせたいような場合には、プレファレンス呼び出しを利用する。設定結果は適当にファイルを作ってもかまわないが、Mac OSで稼動させる分にはプラグインファイルのリソースフォークを使えるように、データが引き渡される。だから、設定値をリソースに保存しておいてもかまわない。プリファレンス呼び出しでは、通常はダイアログボックスが表示されるが、そのダイアログボックスはリソースに定義を行い、それを表示して処理されるようにプログラムを組む必要がある。つまり、普通にダイアログボックス処理プログラムをかかないといけない。
外部関数のExternalで呼び出しを行う部分がいちばんよく使われているかもしれない。Externalでは、引数を2つ取る。というか、2つの引数しかサポートしていないため、たとえば3つ引数を取りたいと思ってもそれはできない。また、2つは言っても、1つは呼び出す関数名を指定する。プラグインで、たとえば「MyFunc」という関数を定義したとする。それを式から呼び出すには「External("MyFunc",引数)」のように記述するため、つまりは関数に実際にデータとして与えることができる引数は1つに限られるということだ。また、Externalの第一引数では、プログラムの関数名を直接記述するのではない。STR#リソースにExternalの引数に記述する関数名を定義しておく。そうすることで、プラグインが呼び出された時に、STR#の定義の何番目の関数名で呼び出されたかをプログラムに通知する仕組みになっている。プログラムの側でswitch文で分岐するということが必要になる。1つのプラグインでは複数の関数を定義することができる。
引数が1つしか与えられないというのはある意味では非常に不便だが、サンプルにもあるように、通常は2つ目や3つ目の引数で与えるような情報を、プリファレンスのダイアログボックスで指定しておくということもできる。サンプルでは、数値に書式設定を行うというような関数があるが、書式を指定する文字列はプリファレンスで指定するという具合である。また、複数の関数呼び出しを組み合わせて、いくつかの引数をプログラムに渡すという手法も考えられるだろう。
関数の処理結果を戻すには、呼び出された時のパラメータブロックの戻り値のメンバに適切な値を設定すればよい。

以上がポイントになるので、こうした仕様に従って、作成するプラグインの設計を行い、プログラムを書くことになる。もちろん、リソースの作り方など細かいところは、ソースを見たり、ドキュメントの解説を見るなどして適切に設定しなければならない。設定項目がたくさんあるので、無計画に行き当たりばったりでやるのは効率が悪いだろう。ドキュメントに目を通して、必要な準備を整えてから、ソースをいじるのがいいというのは当たり前だがプラグイン作成にも通じる。Templateの中にはメッセージ表示などいくつかのサービスルーチンはあるが、重要なのはハンドルの取得などメモリ関連の処理はToolbox関数をそのまま使うのではなく、FMX_NewHandleなど、FMExtern.hファイルで定義されている関数名を使うことだ。このファイルは、最初から付属しており修正しないでプロジェクトに含めるように指示されている。どのような関数が用意されているのかをチェックしておく必要があるだろう。Webコンパニオンのようなプラグインを作るとすると、アイドル時の処理でポートをリッスンするという方法が考えられるが、加えてデータベースの中身を取り出してクライアントに戻すという機能を組み込む必要があると考えられる。サンプルやマニュアルを見る限りは、プラグイン中でデータベースのデータを取り出したり設計情報を取り出す方法は説明されていない。
必ずしもすべての開発者がプラグインを開発するということはないかもしれない。また、有償のものも含めて、さまざまなプラグインがあるので、そうした素材が利用できるかを検討することもあるだろう。どうしても解決できないことがある場合、プラグインを作ることになる。特定のアプリケーション環境のプラグインを作るとなると、仕様などを1から調べないといけないのでプログラマとしては気が重いと感じるところだろう。だが、Developer版に付属するTemplateやサンプルのプロジェクトは開いてメイクすればとりあえずプラグインが作られるほど、準備周到なのである。後はドキュメントに目を通すことになるので、状況を把握するのに1日あれば十分と言えるだろう。思った程複雑な世界ではないという印象だ。

カテゴリ:ライブラリ, データベース


TIL-JにMac OS X Server関連の文書が公開、QTSSの情報をWebブラウザで参照

日本語での技術情報を提供するTech Info Library-Jにおいて、Mac OS X Server関連の文書が翻訳されて公開されている。以下は、そのアドレスと要約である。

◇60209JN:Mac OS X Server:「Starting name server」表示後、サーバコンピュータが起動しない
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60209
内蔵ネットワークカードのアドレスを0.0.0.0にするとこのような現象になる。シングルユーザモードで起動して、IPアドレスを設定しなおす方法が説明されている。

◇73011JN:Mac OS X Server: QuickTime Streaming Server の“リモート管理”機能
 http://til.info.apple.co.jp/cgi-bin/artnum?id=73011
サーバの状況や統計などをWebブラウザから参照する機能がある。NetInfoManagerでNetInfoのエントリーを書き換えて再起動することで、この機能が利用できるようになる。その方法が記載されている。

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, QuickTime, Mac OS X Server


TIL-JにPowerBook/iBook関連文書が公開、トラブルシューティングなど

日本語での技術情報を提供するTech Info Library-Jにおいて、iBook、PowerBook関連の文書が翻訳されて公開されている。以下は、そのアドレスと要約である。

◇58385JN:PowerBook と iBook: コンピュータが故障した場合の対処方法
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58385
故障した場合(起動しなくなった場合?)のトラブルシューティングが記載されている。パワーマネージャのリセットや電源を入れる方法などが説明されている。

◇58450JC:iBook: バッテリで動作しないときは、どうすればよいのでしょうか?
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58450
ACアダプタで動作するのにバッテリで動作しない場合の対処法が記載されている。バッテリのチェック方法やパワーマネージャのリセットについて説明されている。

◇25083JN:PowerBook G3 Series (Bronze keyboard): スリープ解除後に起こるプリントの問題
 http://til.info.apple.co.jp/cgi-bin/artnum?id=25083
USB-パラレル変換器を使ってプリンタに接続している場合、スリープ後にプリンタを認識しなかったり、あるいはフリーズすることがある。原因については調査中で、これを避けるには印刷するときだけケーブルをつなぐなどの方法で対処しておく。

◇45055JN:PowerBook:「拡張ベイモジュール」の正しい交換方法(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=45055
◇58391JC:PowerBook G3 Series (Bronze keyboard): USB ポートからの電源供給が利用可能(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58391

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, iBook, PowerBook


TIL-JにPower Mac G4関連の文書が公開

日本語での技術情報を提供するTech Info Library-Jにおいて、Power Mac G4およびCube関連の文書が翻訳されて公開されている。以下は、そのアドレスと要約である。

◇58680JN:Power Mac G4 Cube: CD または DVD ディスクの挿入方法
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58680
G4 Cubeは上からディスクを差し込むが、レーベル面を手前にして挿入する。つまり、データ面が向こう側になるようにして挿入する必要がある。間違えると自動的に排出される。

◇58681JN:Power Mac G4 Cube: 接続可能なモニタとディスプレイ
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58681
ADC搭載のディスプレイあるいはVGAディスプレイ。

◇58434JC:Power Mac G4: 技術仕様
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58434
2000年7月発表のPower Mac G4の技術仕様説明。

◇58519JN:Power Mac G4:「アクセサリキット」に含まれる“ネジ”の使用目的
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58519
ハードディスクを本体内部に取り付ける時に必要になるもの。

◇58435JC:Power Mac G4: 詳細(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58435

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, Power Mac


TIL-JにFinal Cut Pro、iMovieの文書が公開

日本語での技術情報を提供するTech Info Library-Jにおいて、ビデオ編集ソフト関連の文書が翻訳されて公開されている。以下は、そのアドレスと要約である。

◇100400JO:iMovie 1.0.2 について
 http://til.info.apple.co.jp/cgi-bin/artnum?id=100400
iMovie 1.0.2の日本語文書で、インストール方法や利用上の注意などが書かれている。

◇60368JN:Final Cut Pro: 複数のデスクトップ上でウインドウを表示させる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60368
タイムラインウインドウの幅はデフォルトモニタの幅よりは広くはできない。いろいろなウインドウをそれぞれ別のウインドウに表示するような使い方は便利になる。

◇24991JC:Final Cut Pro: 互換性のある構成(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=24991

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J, ビデオ編集


2000年8月3日にTIL-Jで公開されたその他の文書

日本語での技術情報を提供するTech Info Library-Jにおいて、別掲の記事以外に2000年8月3日に以下の文書が公開されている。アドレスと要約を記載する。

◇58512JN:Firmware Updates:「インタラプトボタン」の使用について
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58512
ファームウエアのアップデートのときにインタラプトボタンを押すように指示があるが、そのボタンについての説明。

◇88002JN:Network Assistant: チェックボックスが選択されていないのに、「監視の目」が表示される
 http://til.info.apple.co.jp/cgi-bin/artnum?id=88002
初期設定ファイルの問題で、タイトルのような状況にクライアント側でなってしまうことがある。対処方法が書いてある。

◇26168JN:どのような“Sherlock”プラグインがアップルから入手できますか?
 http://til.info.apple.co.jp/cgi-bin/artnum?id=26168
アップルのサイト向けのプラグインと、プラグインディレクトリへのリンクがある。

◇60526JN:Mac OS 9: マルチユ−ザ - 「声紋パスワード」が認識されなくなる
 http://til.info.apple.co.jp/cgi-bin/artnum?id=60526
そういうこともある。認識しないのなら、録音しなおす。

◇58641JN:iMac (Slot Loading): 一般的ではない形状のディスクは使用しないでください
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58641
スロットローディングでCDやDVDを挿入するタイプのドライブ(iMacやG4 Cube)では、円形でないCDは利用できない。使用できない形状のCDの写真がある。

◇25000JN:Apple DVD Player:「ディスクに汚れやキズがついている」のエラーメッセージ(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=25000
◇58183JN:起動時のセルフテストでのビープ音について - Part 1(更新)
 http://til.info.apple.co.jp/cgi-bin/artnum?id=58183

関連リンク:Tech Info Library - Japan
カテゴリ:Tech Info Library-J