このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

複数のデータベースの共存は可能?

発言者:菊地 弘祐
( Date Tuesday, January 07, 1997 20:18:50 )


はじめまして、菊地弘祐です。
FileMakerPro3.0をAppleScriptのCGIを使ってWebSTARと連携させ、検索と登録のデータベース
を作ろうと思い、スクリプトを書き始めたんですが、複数のデータベースを同時に使った場合、予定外の
ファイルに書き込んでしまう様な気がして過去ログを調べてみると同様な質問(Y mazdaさんの2つのフ
ァイルメーカーのDB)がありました。が、リプライにあったスクリプトを見ても安全なデータベースを
作れるとは思いません(アクティベートにしているだけだと思うんで...)。

複数のデータベースを安全に作っていく方法を考えてみたんですが、
1.完全に自作する(FileMakerを使った方が安全な気がします)
2.他のデータベースソフトを使う
3.実はFileMakerでデータベースを指定しその間書き込み等をさせなくできる
位しか考えつきませんでした。
そこで質問なんですが、なにかいいアイディアはないでしょうか?もしくは、この問題を解決している
ソフトはありますか?宜しくお願いします。予定しているデータは1000件です。

菊地 弘祐

田中求之 さんからのコメント
( Tuesday, January 07, 1997 22:41:32 )

データベースを操作する場合に、かならずデータベースを指定するようにしたら可能では
ありませんか?

Activate するだけでは確かに問題が起こりうるのですが、Activate することの
意味は、そのデータベースをカレント(デフォルト)のデータベースにすることで
オブジェクトの指定を省くことができる、ということですよね?

でしたら、activate に頼らない変わりに、ファイルメーカーでのデータ操作のスクリ
プトにおいて、必ずデータベース(データベースファイル)まで指定したスクリプトに
するというので、問題は回避できるのではないでしょうか。たとえば、新しいレコード
を作る場合には create を使いますが、このとき、かならず at パラメーターで
どのデータベースにレコードを作るのかを指定するわけです。

ファイルメーカーでテストする余裕がないので、単に思いつきではありますが、
Tango for FileMaker は、おそらくこの方法を用いているのではないかと
思っています。

稲垣@信州 さんからのコメント
( Wednesday, January 08, 1997 13:42:52 )

 いつもお世話になっています、稲垣です。

 私の所のサーバでは、ASとFMを使って、検索・登録用のデータベースを作っていますが、
検索用と登録用で二つファイルを作り、実際にCGIでは各々にファイルにアクセスするように
させています。今の所問題はなさそうです。

 ページのデータの中に、登録か検索かをラジオボタンで選んでもらい、それを元に、どの
ファイルにアクセスするかを決めています。

 たとえば、新規に登録してもらうときには、

tell application "ファイルメーカー Pro"
  Create New Record of Database "new_list" With Data myRecord
end tell

 としてあります。データベース(ファイル)の指定は、 Database "new_list" でしています。

 と書きましたが、実際にはここで田中先生に教えてもらったことです。(^^;

 お役に立つでしょうか?もしご希望なら私の使っているものをお送りしますが。


菊地 弘祐 さんからのコメント
( Monday, January 13, 1997 10:48:06 )

稲垣@信州さん、田中求之さん、コメントありがとうございます。

田中求之さん:
>at パラメーターでどのデータベースにレコードを作るのかを指定
>するわけです
僕の書き方が悪いんでしょうが、at をつけてファイルを指定するとうまく
動作しませんでした。

いろいろやってみたんですが、
1.CGIでFormのデータをファイルに保存しておく
2.定期的にFileMakerに取り込んでデータベースにする
3.FileMekerから検索用のデータベースを書き出す
4.検索はすべてPerlで行う
という方法にしました。どうして検索はPerlかというと、Perlで作った検索
の方が圧倒的に速そうだったからです(サンプルで作ってみた状態では、
FileMakerがアクティブになる時間で検索が終わってしまうような状態でし
た)。FileMakerを噛ませてあるのは、メンテが楽だろうという推測のもと
面倒な手順を踏むことにしました。

また質問なんですが、Formにチェックボックスがある時、送られてくるデー
タ数が同じではないようなので、「ACME parse args」を使って必要回数ルー
プさせてデータだけをリストにするといった面倒な方法を取りましたが、
Formの名前と同じ名前のローカル変数に直接データ部分を入れてくれるよう
なOSAXはないんでしょうか?

田中求之 さんからのコメント
( Monday, January 13, 1997 17:31:16 )

>「ACME parse args」を使って必要回数ルー
>プさせてデータだけをリストにするといった面倒な方法を取りましたが、

ACME parse args でしたら、duplicates combined を true にしておくと
チェックボックスからのデータを一つの項目にまとめてくれますよ。これを使うのが
簡単だと思います。

>Formの名前と同じ名前のローカル変数に直接データ部分を入れてくれるよう
>なOSAXはないんでしょうか?

osax の中でローカル変数を生成することはできないと思いますので、osax ではない
と思います(私が知らないだけかもしれませんが)。



菊地 弘祐 さんからのコメント
( Monday, January 13, 1997 19:29:24 )

田中求之さん、いつも素早い回答ありがとうございます。

>CME parse args でしたら、duplicates combined を true にしておくと
>チェックボックスからのデータを一つの項目にまとめてくれますよ。
すごく良さそうですね。明日実験してみます。

>osax の中でローカル変数を生成することはできないと思いますので、osax 
>ではないと思います(私が知らないだけかもしれませんが)。
set namae to getFormData(post_args)
みたいな書き方なら可能かなっと思います。しばらくはAppleScript漬け
なので、OSAXの勉強でもしてみようと思ってます(でも、OSAXをつくる
っていった日本語の本は見たことないなぁ)。

田中求之 さんからのコメント
( Monday, January 13, 1997 19:47:29 )

>(でも、OSAXをつくる
>っていった日本語の本は見たことないなぁ)。

かろうじて1冊だけ、osax について触れている本の翻訳があります。

Macintosh プロフェッショナル プログラミング だったかな? 書名は今は
正確に覚えていないので、自宅に帰ってからあらためてコメントしますが、この
本の最後の方に、osax の作り方(ソース)が書いてあります。

私の場合は、これだけを頼りに、あとは Inside Macintosh をあちこち読みながら
osax を作りました。

AppleEvent を使ってデータを操作するコードリソースを作ればいいのだ、という
ことが分かってからは XCMD のソースなどを流用できるようになったので楽に
なりましたが、それでも、AppleEvent でデータを操作するコードの書き方が
分かるまでは、クラッシュの嵐でした (^_^;

osax の入出力のデータの処理はすべて AppleEvent の処理になりますので、Inside
Macintosh の Inter-application communication は必要になります。
(これはまだ翻訳されていなかったと思います)。

もっとも、私の場合は、旧 Inside Macintosh Vol.VI の翻訳を持っているので、
これで大まかなことを調べておき、念のため Toolbox Assistant で確認を取り
ながらコードを書くという方法で開発を進めています。

…と書くと、いかにもスラスラと開発ができたように聞こえるかもしれませんが、
HyperTalk で開発を行っているということもあって、かなり試行錯誤が続き
ましたし、今でも続いています(いまだに解決できない問題も抱えています)。


資料が少ないのが、osax を開発する場合の最大のネックかもしれませんね。

田中求之 さんからのコメント
( Monday, January 13, 1997 22:31:53 )

>Macintosh プロフェッショナル プログラミング だったかな? 書名は今は
>正確に覚えていないので、自宅に帰ってからあらためてコメントしますが、この
>本の最後の方に、osax の作り方(ソース)が書いてあります。

『Macintosh プロフェッショナル・プログラミング』
 デーブ・マーク著 滝沢・牧野訳
 トッパン
 ISBN4-8101-8941-4
 定価\5,800-

です。

Ultimate Mac Programming の翻訳です

前薗 健一 さんからのコメント
( Tuesday, January 14, 1997 00:04:48 )

この本は AppleEvent の Bible ですよ。

菊地 弘祐 さんからのコメント
( Tuesday, January 14, 1997 11:11:28 )

田中求之さん:
>『Macintosh プロフェッショナル・プログラミング』
前薗 健一さん:
>この本は AppleEvent の Bible ですよ。
うっ、持ってました。AppleEventの部分は複雑なのでほとんど読んでません
でした。今、手元に本がないんで、明日、家で読んでみます。
ありがとうございました。


→  TidBITS-J#360/06-Jan-97

前薗 健一 さんからのコメント
( Tuesday, January 14, 1997 18:08:38 )

OSAX を C で書くのであれば、チャック・サットン氏の DecodeURL,
EncodeURL あたりのソースコードを解析するのがいいと思います。
OSAX のインターフェイスがよくわかりますよ。

僕も最初はこれでした。 (^^;;

田中求之 さんからのコメント
( Tuesday, January 14, 1997 19:29:25 )

Chuck さんの Decode URL のソースは、確かにサンプルとして分かりやすいですね。
Info-mac にも登録されていたはずですから、まず手に入れて見てみるのがいいかも
しれません。


菊地 弘祐 さんからのコメント
( Thursday, January 16, 1997 11:28:47 )

コメント有り難うございます。
いろいろ捜してみたんですが、Decode URLのソースは見つかりませんでした。
Info-mac(MIT)も引っかかりませんでした。
何処にあるんでしょう?

#度々、すいません。

田中求之 さんからのコメント
( Thursday, January 16, 1997 13:38:54 )

以下の URL でダウンロードできます。

Info-mac にはないようですね(すみません)


→  Decode URL

菊地 弘祐 さんからのコメント
( Thursday, January 16, 1997 14:52:01 )

ありがとうございます。入手できました。
#短いんですね。