連載[5-3] プロと素人のスクリプトはどこが違うか
|
《 AppleScriptでホストを操作しちゃう
》
|
|
|
」
|
ところで先生、もう1つ今月のテーマがありましたよね。 |
|
先生
|
えっ、何だっけ? |
|
」
|
ほらほら、AppleScriptでホスト・コンピューターのデータベースを操作しちゃうとかいう。 |
|
先生
|
おぉ、「DataScript」だね。 |
|
・
|
いろいろなSQLサーバーにAppleScriptでアクセスできるっておっしゃいましたよね。 |
|
」
|
それって、もしかしたらすごいことなんですか? |
|
・
|
だって、ホストにアクセスするのってすごく大変なのよ! |
|
」
|
へーぇ。でっ、そのDataScriptって何なんですか。 |
|
先生
|
下のような命令を持ったマックのアプリケーションさ(詳細はフォーサイト まで直接お問い合わせ下さい)。 |
![]() |
|
|
」
|
これでどうやってホストにアクセスするんですか。 |
|
先生
|
リレーショナル・データベースをアクセスするための「SQL」という業界標準の一種の問い合わせ言語があるんだが、その命令文を上のようなAppleScriptの命令でDataScriptに渡してやると、DataScriptがホストのデータベースにそれを送って結果を取り出してくれるんだ。つまり、AppleScriptとホストのデータベースの間に入ってくれる中間ソフト(ミドルウエア)なんだね。例えば「Oracle」というSQLデータベースで検索を実行するには、図5のようにスクリプトを書けばいいんだ。 |
|
図5 Oracleでデータベース検索を行うスクリプト
![]() |
|
|
先生
|
ここでは検索結果をaResultという変数に格納しているが、得られたデータは以下のようなリストとなる。 |
|
」
|
あのぅ〜、SQLってAppleScriptとどう違うんですか。 |
|
先生
|
全然別物だ。4行目の
"SELECT empno, ename, job, sal FROM emp" という部分がいわゆるSQLの検索文なんだね。まぁ、意味は分からんでもよろしい。要するにこうした命令文をホストに送ると,ホストがデータを返してくるんだ。 |
|
」
|
それでどんなメリットがあるんですか。 |
|
先生
|
おやおや、まだ分かってないのかね。ポイントは、ホストに送るんじゃなくてDataScriptに命令するだけでいいってところだ。DataScriptへの命令は「スクリプト編集プログラム」(漢字Talk 7.5には標準装備)でできるからね。 |
![]() |
|
|
《 プログラム手段より先にソリューションを考えよう
》
|
|
|
」
|
と言うことはつまり… |
|
先生
|
取ってきたデータの加工が自由自在なんだ。前回は何らかの手段で既にホストから取ってきてあるデータをファイルメーカーProで処理する話だったけれど、DataSctriptを使えばホストのデータベース自体で検索を済ませてからファイルメーカーProに取り込むことも可能になる。サブルーチン形式で書いてみると図6のようになるかな。 |
|
・
|
これを前回のスクリプトに応用すれば、ホストからデータを取り出す段階も含めてAppleScriptで自動化できますね。 |
|
先生
|
だから前回も言ったろう。プロはそうしたことも含めて全体のソリューションから考えていくんだ。プログラミング・テクニックなんて二の次さ。君達がDataScriptでSQL文を送るスクリプトを書くのは難しいだろうけど、そうしたソリューションもあるってことだけは覚えておくといいね。 |
|
図6 Oracleで検索したデータをファイルメーカーProに格納するスクリプト
![]() |
|
|
」
|
そのセリフ、うちのシステム部にも言ってください。 |
|
・
|
でも先生、ホストにアクセスするならHyperCardなどでも可能ですが、それに比べてどんなアドバンテージがあるんでしょうか。 |
|
先生
|
それはSQL文をどうやってデータベースに送るかの違いだろうね。XCMDで送るかそれともAppleScript、というよりOSA(Open Scripting Architecture)に準拠した方法を取るか、ということだよね。表面上は大差はないかも知れないが、OSAには汎用性が飛躍的に高くなるっていう圧倒的な利点がある。 |
|
」
|
?? |
|
先生
|
何しろ、検索結果がAppleScriptの変数に入っちゃうんだから、後はファイルメーカーProだろうがMicrosoft Excelだろうがどんなアプリケーションにも持って行ける。マックのアプリケーションすべてがフロントエンドとして利用できることになるんだ。 |
|
・
|
アクセス速度とかはどうなんでしょうか? |
|
先生
|
確かにAppleScript自体では、処理によってはちょっとばかり重い場合もありますね。まぁ「UserLand Frontier」とか、もっと処理速度が速いOSA対応のツールもあるし、後は君らのシステム部の奮闘に期待しよう。 |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp