AppleScript名:要約(Summarize)のじっけん |
— Created 2016-11-15 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set piyoText to "githubで公開されているオープンソースのフレームワーク「HTTPServerKit」(By David Thorpe氏)を呼び出して、簡易http(Web)サーバー機能を起動するAppleScriptです。 AppleScriptとWeb CGIのつながりは割と昔(Classic Mac OS 7の時代)からあったのですが、Macの1U Server機(Xserve)が廃止になり、Mac OS X ServerがOSからツール集的な位置付けに後退。macOS 10.8ですでにMac OS Xの標準機能としての「Web共有」はGUI画面上から消えました。 MacをWebサーバーにするような使い方は、作っている方も使う方もあまり重視しなくなってきたともいえますが(WebObjectsで稼働し続けているiTunes Storeをのぞく)、局地的かつ限定された用途において、他のOSプラットフォームからMac内の機能を共有するようなケースでは、使えてほしいものです。 そうしたニーズを受けてか、github上で探してみるといろいろ「簡易Webサーバー」的なプロジェクトを見ることができます。本、HTTPServerKitもそのうちのひとつです。 スクリプトエディタ上で呼び出して処理が終わったら終了、というようなバッチ処理的なありがちなAppleScriptの運用スタイルとは相入れませんが、常駐アプレットとして運用する場合やXcode上で作成するCocoa-AppleScriptアプレットでは利用できるはずです。 本サンプルでは、ホームディレクトリ下の「サイト」(~/Sites)フォルダをDoc Rootに、8081をポート番号に指定してWebサーバー(thttpd)を起動し、60秒間httpのリクエストを受け付け、Webサーバーを終了させます。 すでに、「サイト」フォルダが存在していること、同フォルダ内に「index.html」ファイルが存在していることを前提にしているため、OS X 10.12をクリーンインストールした環境ではファイルが存在せずにうまく動かない可能性もあります(Sitesフォルダが存在しない場合には自動作成しています)。 注意すべき点は、起動したhttpサーバー(thttpd)は、明示的に終了(stop())を行わないと、どんどんプロセスが追加で起動されてしまい、AppleScript側に正しくログなどを返さないようになってしまうことです。毎回、こまめにstop()を呼び出しましょう。 実際にこうして呼び出して評価してみると、やや機能が素朴すぎるきらいがあり、このHTTPServerKitが決定版になるかと言われると、ちょっとつらい気もします。http経由でファイル転送なども行いたいですし、何らかのプログラム呼び出しインタフェースは欲しい気がします。 ただ、ラジオ番組を録音してmp3に変換し、LAN上でiPhoneなどにPodcastとして配信するような用途(ありがち)だと、このぐらいの機能レベルのソフトウェアが合っているようにも見えます。 また、AppleScriptでOAuth2.0の認証を行うような場合に、認証後に表示させるredirect URIについて、「http://localhost」などと指定させたりしますが、もっと気の利いた表示を行うために本Scriptを併用して指定のHTMLを強制表示させるような用途にも使えそうです(redirect_uri:”http://localhost:8081″ のように)。 LAN上の他のOSのマシンからMacを操作させることを目的として、簡易httpサーバーソフトウェアをいろいろと物色しています。ポート番号を指定する機能がないと、デフォルトで起動しているhttpdとコンフリクトを起こしてしまうので、ポート番号指定機能は必須の条件です。 なお、HTTPServerKit.frameworkのビルドは、githubからプロジェクトをダウンロードしてXcodeでいろいろ試しても、ビルドディレクトリを変更したり、日本語を含まないパス上にプロジェクトを移動させたりしても、エラー終了してしまいました(出来がよくない?)。 実際に試す場合には、ビルドされたバイナリをダウンロードするほかないと思われます。AppleScriptの実行前にフレームワークのバイナリを~/Library/Frameworksに入れておいてください。" set bText to summarizeInSpecifiedChars(piyoText, 400) on summarizeInSpecifiedChars(piyoText as string, aLimit as integer)if length of piyoText ≥ aLimit then set pLen to paragraphs of piyoText repeat with i from 1 to (length of pLen) by 1 set bCon to (summarize piyoText in i) as string set p2Len to length of bCon if p2Len ≥ aLimit then if i = 1 then set i to 1 else set i to i – 1 end if exit repeat end if end repeat return (summarize piyoText in i) else return piyoText end if end summarizeInSpecifiedChars |
要約(Summarize)のじっけん
(Visited 97 times, 1 visits today)
Recruit Tech Japanese Text Summarization API – AppleScriptの穴 says:
[…] AppleScript自体にも「summarize」という文章要約コマンドが標準装備されており、日本語の文章に対しても実行できますが、処理結果に100%納得できているわけではありません。半信半疑と […]