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 #6 えせNewton、大地に立つ!

Posted on 10月 4 by Takaaki Naganoya

えせNewton(正式名称RX-78……ではなく「Newt On」)は、極秘裏に東京・中野にある秘密工場(どこが秘密じゃ!)で組み立て作業が進められていた。

「Macらしさ」と「UNIXのパワー」で適当に味付けしつつ、なんとなくそれっぽいインテリジェントな処理が行えることを目指す「えせNewton」は、「MacOS Xらしさ」の新たな定義をねらったプロジェクト。しかし、その途上には幾多の困難が待ち受けていた。

……時代の申し子か、悪魔の落とし子か、えせNewtonがついに記念すべき初起動を行う!!
 

勝手に漢字入力を確定しないで(T_T)

わけの分からない書き出しですが、とにかく「えせNewton」のプロトタイプ・コマンドシェルを作ってみました。

予告どおりMicrosoft Wordをシェルに、特定のコマンドのみ受け付ける機構を実装して、世間の反響をうかがいつつ 機能アップを図っていこうという考えです。

Wordのドキュメントに対して定期的に問い合わせを行い、文章の行が増えたら新規コマンドが追加されたと認識して、新規行のコマンド用キーワード(ミーティング、メールなど)を走査し、見つかったらさらに目的語などの緻密な走査を行うというものです。

最初のバージョンなので、まずは1秒間隔でWordのドキュメントに対して行数などを問い合わせてみました。ここで、予期せぬ事態が発生。問い合わせを行った瞬間に……なんと漢字変換中の文字列が確定されてしまう(ひらがな状態)ではありませんか。

アプリケーションの動作中に並行してアプリの状態を見るようなスクリプトを書いたのは(Finder以外では)初めてだったので、予想だにしなかった事態です。

日本語入力している最中に確定されてはたまらないので、なんとなくキリのいいところで5秒間隔でWordに問い合わせを行うことにしました。もしも、VB ScriptなどでWordの動きを拡張して、リターンをカラ打ちするとスクリプトを起動するとか、特定のコマンド(Command+何かのキー)の入力でスクリプトを起動するように、仕様を考えなくてはなりません。

それでも、5秒や10秒であれば、高速タイピング技による気合いと体力で乗り切れるに相違ありません。
 

テキストの照合に悩む(-ー;

Word文章のオブジェクト構造は割と簡単(標準的)で、大きなくくりの順番に、

 document (文章全体)

  paragraph(章)

   sentence(文)……だったか(^-^;;

    line(行)

     word(単語)

      character(文字)

となっています。ここでは、sentenceに注目し、この値が増えたら最新のsentenceを取得し、構成要素であるword(単語)を取り出してみることにします。

勢いで30行ほどのスクリプトを作ってしまいました。このプロトタイプでは、新規sentenceの最後のwordが「。」であれば新規コマンド入力として認識。さらに、該当するsentenceの中に「ミーティング」というwordが入っていれば、それを検出した旨アラート表示するようにします。
イベントを表示させながら動かしてみて……おかしいです。ログには新規Sentenceの検出とword切り分けが記録されているものの、それ以上先に処理が進みません。

内容的には、ぜんぜん凝ったことを書いてなかったので、こんなシンプルな状態でつまづくとさっぱり分かりません。文字列同士の比較演算ごときでつまづかれた日には、何も書けたものではありません。

MacOS X上のAppleScriptのバグでないかと疑い、簡単な文字列比較のスクリプトを書いて試し……おお、大丈夫のようです。問題に行き当たったら一番基礎レベルまで戻って検証を行う。一見遠回りに見えつつも、デバッグではこの手法が一番効果的です。

普通に文字列の比較を行って大丈夫なのに、sentenceから切り出したwordで比較を行うと、見た目はまったく同じなのに比較演算で同じであることを実証できない……。

「まさか、スタイル付きのテキストでwordが取得されているのでは?」

Microsoft Wordで基礎実験を行っていたときに、書式つきの文字列がイベントログに流れて驚いた記憶が脳裏をよぎりました。確かめてみるだけの価値はありそうです。

いつもの通り、デバッグ用サンプルコマンド文字列を入力。

   「河原さんとミーティング。」

処理の随所に音声で処理状況をレポートするよう、デバッグ用の追加コードを書き、処理の流れを追ってみました。

“counted”……word数のカウントを行って……

“detected period”……sentence末端に句読点を認識したようです

“word 1″,”word 2”,”word 3″……sentence内のwordに対して、コマンド文字列の走査を行っています

“word 4″……お、「ミーティング」まで走査しました

“You got it!”……成功を告げるメッセージが流れました。OKです

ついで、「ミーティングの件です」とダイアログが表示され、「えせNewton バージョン0.01」がここに完成したのでした。

AppleScriptとしては、数十行のちっぽけなものですが、ワープロ上に打ち込んだ日本語の文章を認識し、文書内のコマンドをピックアップすることに成功したのです。

「えせNewton、大地に立つ!」

私の脳裏には、起動音を響かせながら排気ダクトから排気しつつ立ち上がるえせNewtonの雄志が焼き付いていたのでした(BGM:燃え上がれ○ンダム)。
 

Newt On Ver.0.2に向けて

超簡単なデモが行えて、かしこい方々には十分に衝撃を与えられる内容になってきました。

しかし、これでは内容が高尚すぎて一般の方々に理解してもらえません(^-^;。

そこで実際にスケジュールの登録を行うよう、Entourageの用語辞書を見てみたところ……彼の辞書に「スケジュール登録」の文字はなかったのでした。なんてこったい。

Entourageでは、メール経由でスケジュールの登録を受け付けるようになっており、その文字列をAppleScript側で組み立てれば、メール経由でスケジュール登録を行うことは可能です。

しかし、たかがスケジュール登録ごときでメール送信を行うのも、おおげさな気がします。そこで、Entourage以外のMacOS X用スケジューラーを探したところ……まだβ版状態のPalm Desktopに白羽の矢が立ちました。というよりも、他にMacOS X用のスケジューラでスクリプタブルなものを知りません。

用語辞書の内容を見てみると、Entourageよりはるかにスケジュール関係の用語がそろっているようです。ただ、その一方で、

「この用語辞書はClaris Organizerから引き継いだものなので、ありのままの状態で提供しているものであってPalmはサポートしません。もし何か興味深い提案があれば、devsupp@palm.comまでメールにてお知らせください」

という一文も書かれておりました。 なんとなく不安を覚えつつも、次に超えるべきハードル「スケジュール登録」の山が見えてきたところでしょうか。

(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