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

Macperlの中でApplescriptを使う

発言者:寺港みやび
( Date Sunday, July 01, 2001 20:45:15 )


MacPerlの中でApplescriptをつかおうと思っています。

理由はMacPerlのCGIでメール送信を行うさいに
今はsmtpソケットを使っているんですが
処理中に中断されるとCGIが「さよなら」してしまう事に気付き
これはマズイということで以前からきになっていた
田中先生のUVJ_Mailerをつかってみようと思ったのです。

ただし個人的にCGI関係はMacPerlだけでやっているので
できればCGIとしてAppleScriptにとりくむのはマタにしたい。
という気持ちがありまして・・・汗

でサーバーマシンでない端末(OS8.1)で
MacPerlを編集しました。
---
MacPerl::DoAppleScript << "EOS";
tell application "UVJ Mailer PPC"
    send mail "本文" to "uke@test.jp" from "okuri@test.jp"  subject "test"
end tell
EOS
---
すんなりうまくいきました。メールも送信されて
UVJ Mailerのかわいいウインドのアニメを楽しめました。

ところがこれをサーバーマシン(OS7.6.1)にもっていくと
MacPerlとしては正しく終了するのですが
UVJ Mailerが動作しません。
おかしいのでゴミ箱を開閉するだけの
AppleScriptをためしても、ダメでした。
どうやらAppleScriptが動いてないようです。

そこで念のためサーバーマシンで
さっきのゴミ箱開閉のスクリプトから
AppleScriptだけを抜き取ってAppleScript単体で
動かしてみると問題なく蓋が開いて閉まりました。

ということでどうやらこのサーバーマシンでは
MacPerlにAppleScriptを記述する事について
なにか問題があるようなのです。

なにか前提条件とかありましたでしょうか?
こんな事してる人は多くはないとは思うのですが
なにか情報がありましたらお願いします。

田中求之 さんからのコメント
( Sunday, July 01, 2001 21:45:30 )

MacPerl については良く分らないのですが…

Perl に AppleScript を埋め込む場合、実行の度に AppleScript のコンパイルが
行われることになるはずなので、その分、処理に時間がかかるはずです。

AppleEvent で処理を組み立てれば、AS のコンパイルの処理が無くなる分、
早くなると思いますよ。

もっとも、MacPerl 中で AS を組み立てるのは、たぶん、けっこう面倒な
記述が必要になるんではないかと思いますが(REALbasic でもそうなんですが、
AppleEvent を生で扱うのって、面倒なところがありますので)

寺港みやび さんからのコメント
( Monday, July 02, 2001 11:35:27 )

田中先生いつもご親切にありがとうございます。
AppleEventを直接という選択肢が「そうします」
と言えればいいのですが・・・汗

昨夜からMacを相手に自白強要のごとく
なぜだ、なぜたとしつこく調べていて
サーバーマシンでMacPerlからAppleScriptが
使えない理由がわかりました!

原因はサーバーマシンの「スクリプト編集プログラム」の
書式が「日本語」になっていたからでした・・・

分かった時うれしくてしかたない問題解決もありますが
今回のはおもいきり落胆しました(笑)
という事でMacPerlからAppleScriptを使う皆さんは
動作させるマシンの書式を「英語」にするように
注意してください。はあ・・・

これでMacPerlからUVJ_Mailerが使わせてもらえます。

寺港みやび さんからのコメント
( Monday, July 02, 2001 11:55:43 )

smtpソケットからUVJ_Mailerに切り替えました。
とても便利で感動しています!
長期間の運用に支障が報告されているようですので
これからも様子をみながら運用させていただきますが
この感激を伝えたくて意味もなく投函しました。
田中先生素敵なツールをありがとうございます。

田中求之 さんからのコメント
( Monday, July 02, 2001 13:16:56 )

あ、そうか、ちょっと前のシステムではスクリプト言語の日本語の問題があり
ましたね。わたしもすっかり忘れていました (^_^;;


>長期間の運用に支障が報告されているようですので

この問題は 2.1 では直っていると思います。まぁ、様子を見るのにこしたことは
ないのですが。使っていて気がついたことなどあれば、遠慮なくおっしゃって
ください。

また、MacPerl で AppleEvent を組み立てる場合には、パラメータのクラス名
などの情報が必要になるはずですが、もし必要でしたら、情報は流します。

たまちゃん さんからのコメント
( Monday, July 02, 2001 20:30:24 )

>>長期間の運用に支障が報告されているようですので
>
>この問題は 2.1 では直っていると思います。

報告が遅れました。当方の環境では15日間連続運転の後,止まっ
てしまいました。

現在は以前と同じく,週1度再起動させています。

田中求之 さんからのコメント
( Monday, July 02, 2001 21:01:55 )

あ〜、とまってしまいましたか。う〜ん。まぁ、これだけはなんともしがたい
ので、そういうもんだと思って使っていただくしかないですね。

寺港みやび さんからのコメント
( Tuesday, July 03, 2001 17:51:39 )

>MacPerl で AppleEvent を組み立てる場合には、パラメータのクラス名
ありがとうございます。その時はよろしくお願いいたします。

ところで、、今はUVJ_Mailerは5時間で終了するようにしてみました。
時間に根拠はありません。しかしもしも終了していても
MacPerl(の中のAppleScript)が呼び出す都度
UVJ_Mailerは自動的に起動して処理をしてくれていますので
この運用方法なら周知の問題については大丈夫かな?と思っています。