Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

Newt On Project〜Story Archive #4 ついに姿を現したえせNewton

Posted on 10月 4 by Takaaki Naganoya

ほとんど「机上の空論」、「ベイパーウェア」の域を出ていなかった「えせNewton」が、構成部品の相次ぐ登場によってにわかに現実味を帯びてきました。

そこで、現時点でそろっている部品、いない部品を使って「えせNewton」を実現したらどうなるか、モックアップよろしくイメージレベルのものを作ってみました。

仮に実装してみた姿から、幾分の軌道修正なども行ってみることとしましょう。

Wordをシェルに割り当てる

前回の検証の結果、Wordの日本語パーサー機能がAppleScript側でまともに利用できることが分かりました。

そこで、文字入力ベースのコマンド受け付けプログラム……言葉がふさわしいかどうか疑問ですが、この「コマンドシェル」をWordにやらせてしまいましょう。

コマンド解釈プログラムは別に常駐していて、一定間隔(1秒インタバル?)でフロントエンドにあるWordの文章を走査します。

Wordは単に文字入力と「えせNewton」プログラム本体の出力メッセージを表示するだけです。

VBScriptでWordのメニューに大幅に手を加え、最低限の機能以外はメニューからアクセスできないように手を加えることも検討しています。そういう意味では、Wordは非常にシェルにしやすいプログラムといえるかもしれません。

ユーザーからのコマンド入力と「えせNewton」からのメッセージ出力は色分けして表示することにしてみましょう。

だんだん、チャットのようなイメージで作動する雰囲気になってきました。いっそのこと、「えせNewton」システムからのメッセージ出力は「Mac:」のようにチャット風に表示してみるとよいかもしれません。メッセージに顔文字を入れると、さらに「それっぽい」感じがするかもしれません。

では、その内容をシミュレートしてみましょう。

Mac:えせNewtonシステムVersion 0.98(Build 1P17)が起動しました。MARoさん、命令をよろしくどうぞ。
河原課長と来週火曜日にミーティング。
Mac:開始時刻と終了時刻を教えてください。
午後3時から4時まで。
Mac:場所は前回と同じ「オペラシティ48階」でよろしいですか?
おっけー。
Mac:Entourageにスケジュールを登録しました。1時間前にお知らせします。
新着メールを10件表示。
Mac:別ウィンドウに表示しました。うち、高松様からの急ぎのメールが1通来ています。
急ぎのメールを要約して表示。
高松様より:先日の電話の件で至急連絡されたし。
「了解しました、戻り次第お電話します」と返信。
Mac:Eudoraで送信しました。
新着メールをプリンタに印刷。
Mac:いつものプリンタに印刷しました。
今日のスケジュールを表示。
Mac:午後3時からシステムの打ち合わせです。ほかにはありません。
「MACお宝鑑定団」を要約。
Mac:まだ更新されていないようです。
石井さんに電話。
Mac:○○社(東京都港区)の石井△▲さんでよろしいですか?
おっけー。
Mac:電話をおつなぎします。会話内容はファイルに録音しておきます。電話が終わったら教えてください。
録音後、テキストにして。
Mac:受けたまわりました。電話が終わったら教えてください。
録音後、テキストにして。
Mac:その件であれば、すでに承っておりますが……?
わかった。

調子に乗って書いてみました。本当にこんなのができるのか、少々不安になってきましたが、仕様的に無理なところを解消していけば問題は解決されていくでしょう。
 
河原課長と来週火曜日にミーティング。

Mac:開始時刻と終了時刻を教えてください。

午後3時から4時まで。

Mac:場所は前回と同じ「オペラシティ48階」でよろしいですか?

おっけー。

Mac:Entourageにスケジュールを登録しました。1時間前にお知らせします。

1行目の「ミーティング」というコマンドで、この命令がミーティング設定のためのリクエストであることを認識します。

次に、「河原」という人をコンタクトリストDBから検索し、過去にも会っているフラグと過去1か月以内にコンタクトしているフラグを確認し、複数の「河原」氏がいれば、重み付けでソートを行い最優先のものを対象とします。

「来週火曜日」という日付を特定する文字列を検出し、スケジュール設定の日付をカレンダーアプリケーションで確認します(休みの日にぶつからないか、という確認もここで行われます)。

しかし、ここで場所と時刻の指定がないため、順次ユーザーに聞くことになります。「午後3時から4時まで」といったラフな記述を受け付けられるのか微妙ですが、まあよしとしましょう(短縮記述もサポートしないとキレる人たちも出てきそうですが)。

ちなみに、コマンドは句読点「。」までを1行とし、複数のコマンドを1行に納めることは考慮していません。

場所の確認に対し了解の意を伝えるフレーズは、それぞれユーザー定義できるよう考えています。「おっけー」という、くだけた調子になっていますが、入力のキーストロークが少ないものがよいと判断したからです。

「えせNewton」システムは、各種アプリケーションをAppleScriptで駆動させて動くものなので、最後の行のようにメッセージ送信先のアプリケーション名を明示してユーザーに返すようになっています。このあたりは、Newtonのスマートさとはかけ離れた世界ですが……普通のMacOS Xアプリを完全に隠蔽するレベルは考えていないので、こんなものでよいでしょう。

ほかにも、メールの要約やWebからの情報収集などを短いフレーズで行うことを考えてみました。Webの情報収集については、ブックマークをデータベースに常時取り込んで重み付けを行ったり、Webブラウザの履歴から「毎日見ているサイト」といった優先順位を自動判別するとインテリジェントな感じがするでしょうか。
 

モードの問題

シミュレーションを行ってみて、少々アタマを抱えてしまったのが「モード」の問題です。

プログラムでは人間が何を考えてどのようなアクションを起こそうとしているのか、知る手だてがないので(マウスカーソルの座標から判断するというアイデアはなくもないですが)、一続きの意味の会話を行っている時には「スケジュール予約中の会話である」といった明確なモード設定・認識が必要になります(Macの世界ではモーダルな動作は極力行わないことをアプリケーションおよびシステムに課していますが、Windowsの世界ではいまだにモーダルなアプリケーションのオンパレードですね……)。

しかし、シミュレーションレベルの「えせNewton」ではモード分けについてどこにも明確な設定がありません。

前回受け付けたコマンドからの時間を計測して、一定以上の時間が経過したらモードを解除する……といったことも考えなくもなかったのですが、そうした反応の違いは個人差が非常に大きい部分なので、時間ベースのモード判断はあまり得策ではないと思われます。

そこで思いついたのが、別ウィンドウを開いて「スケジュール設定」ならそれ関連のコマンドのやりとりを行わせるように明示的にGUIで(この場合はWord)表示すればよいのではないか、ということでした。

複数のコマンドが別々のウィンドウで解釈・実行されれば、スケジュールの話とメールの確認の話がごっちゃになってプログラムが混乱することも少なくなるでしょう。

ありもののWordアプリケーションを使うことで、ウィンドウの管理などもWordまかせ。Wordが同時に開けるウィンドウ(文章)の数に限界がないか、そのあたりは未知数ですが……それほどハードな使用を行わないことを、初期「えせNewton」の実行条件と考えています。簡単なデモが行えれば、それで十分でしょう。
 

現時点で存在していないソリューション

過去においては、Macintosh自体を留守番電話にする「GeoPortテレコムアダプター」(と、海外で添付されていたMacPhoneというソフト?)のような革新的なソリューションも存在したのですが、現時点でそれに近いソリューションは……探しているものの、日本語環境できちんと動作が確認されているものはほとんどないようです。

http://www.pure-mac.com/telephony.html

のあたりをチェックしていますが、どれも日本で販売されているものはありません。内蔵モデムを使って留守番電話ができたら、けっこう凄い感じです。簡易CTIのシステムは組んだことがあるので、コンタクトリストに登録のある人からのメッセージを「○○さんからのメッセージを読み上げます」といったように、明示的にユーザーに返せると「かしこぃ」雰囲気がすることでしょう。

また、録音した音声をテキストにしてくれるプログラム(自動レベル補正をしながら認識エンジンに渡すような)も、やがて必要となるものでしょう。現時点ではViaVoiceが一番近いところにいる感じでしょうか。

ユーザーのリアルタイムの音声を限られた時間内で認識するというのがViaVoiceの真骨頂ですが、電話のような音声レベルがある程度しっかりした音源から録音し、あとでバックグラウンドで音声認識して自動変換するようなソリューションも画期的かつ魅力的なものとなるでしょう。

市場規模がどの程度あるか分かりませんが、そういう認識技術とか文章の要約技術(すでにOSに実装されていますが)というのも、徐々に生活のあちこちで見かけられるように?
 

一番のポイントは「学習」

先の、スケジュール予約の例で見られるように、過去の履歴から行動パターンを類推して、純粋に統計処理によってアシストを行うというのが、現時点で考えている「学習」のレベルです。

行動履歴データはファイルメーカーProのデータベースに納めることを考えていますが、これとて無尽蔵にふくらむデータをため込めば動作速度の低下を招きますし、まして「えせNewton」はデータベースへの問い合わせが非常に多くなるシステムなので、なるべく余分なデータは参照しないようにしたいものです。

純粋な行動履歴データは1日ないしは1週間単位でデータベース上からパージしてしまい、そのかわりに履歴データから評価値を計算し、「○○さんへのコンタクト可能性は50パーセント」、「スケジュールが重複した場合に優先するコンタクト先はここ」といった形で評価テーブルに値を戻すのが理想的です。

効果的な学習と適当な忘却。このあたりが、使っていてしっくりなじむかどうかの大きなポイントでしょう。Newtonの偉大なる思想、いまだ遠く追いつけずといったところでしょうか。

(Visited 1 times, 1 visits today)
Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • Numbersで選択範囲のセルの前後の空白を削除
  • macOS 26, Tahoe
  • macOS 15でも変化したText to Speech環境
  • KagiのWebブラウザ、Orion
  • Script Debuggerの開発と販売が2025年に終了
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • macOS 15 リモートApple Eventsにバグ?
  • NSObjectのクラス名を取得 v2.1
  • 2024年に書いた価値あるAppleScript
  • 有害ではなくなっていたSpaces
  • macOS 15:スクリプトエディタのAppleScript用語辞書を確認できない
  • Pixelmator Proがv3.6.8でHDR画像をサポート
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • (確認中)AppleScript Dropletのバグっぽい動作が解消?
  • AVSpeechSynthesizerで読み上げテスト
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • 指定フォルダ以下の画像のMD5チェックサムを求めて、重複しているものをピックアップ
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Numbersで選択中の2列のセルを比較して並べ直して書き戻す v2
  • Script DebuggerがmacOS 15.x上で起動せず→起動

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (151) CotEditor (66) Finder (52) Keynote (119) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (56) Pixelmator Pro (20) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Newt On Project
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC