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

タグ: 10.1savvy

Newt On Project〜Story Archive #13 Newtonを超えた~Now, “Newt On” is beyond the Newton.

Posted on 10月 4 by Takaaki Naganoya

iWeek Special 2002の「バカムービー研究会」ブースに異質な展示。無造作に貼られたNewt Onのチラシをめざとく見つけては、チラシを求めてくださった方が多数おられました。

100枚用意したチラシも、2日目の午前中には完全に消え、来場者の方々からさまざまな反応が得られました。

こうしたイベント会場でのフィードバックは、今後のNewt Onの開発に大きな弾みをつけてくれるものでしょう。

Newt Onコマンドインタプリタの進化

Newt Onはつねに進化し、オリジナル開発者の自分のコードだけでなく、途中から参加してくださっている有志のコードも統合されてきています。
その成果として最大級のものが、Newt Onコマンドインタプリタの進化でしょう。

これまでは、

  東京都の河原さんを検索。

といった形式のコマンドしか理解しなかったものが、

  東京都の河原さんの電話番号を検索。

と、より複雑な要素が入ってきても対処できるようになりました。また、目的語などについては、各コマンド処理ルーチンで共有できるような形でデータピックアップされるようになってきました。

ここまで来ると、コマンドインタプリタから呼び出される各種コマンドの仕様を外部公開し、外部コマンドの充実という方向にパワーを割ける感じでしょうか。

実際には、その一歩手前ぐらいだとは思うのですが(コンソールへの結果表示などをまだ集約していないので)、予想より遙かに速いスピードで成長しています。

ここで、メーリングリスト上の議論をふまえ、Newt Onがどういった方向を目指すべきか、将来的にどのようなものが必要かといった話をまとめておきましょう。
 

Newt On~真夜中は別の顔

Newt Onは主にユーザーからのリクエストによって各種コマンドを実行する、割と寡黙な存在ですが……

 毎週金曜日に河原さんに連絡。

のような繰り返し処理をスケジューリングして、指定時刻になるとNewt Onがバッチ動作するような仕様も検討しています。この種類の仕事で最も一般的なのは、Webの更新チェックなどでしょう。

内部的にジョブスケジューラーを持つか、それともEntourageなどの外部アプリケーションを利用するかについては、まだ検討中ですが……バックグラウンドで勝手に仕事をすすめてくれると非常に助かります。

データのバックアップなど、いちいち指示しなくても勝手にやっておいてほしい仕事などは、こうしたジョブスケジューリングの機能でサポートしたいところ。
 

バックグラウンド動作による文章作成支援

フロントエンドで文章を作っている途中で、ふと調べものをしたくなるときが多々あります。このような場合に、Newt Onに対して調べものをしておいてくれるように依頼できると、より仕事の効率が上がることでしょう。

仕事中、調べものに気をとられて、あちこちのサイトをふらふらと徘徊してしまうのは私だけではないはず。調べものだけを勝手に行ってくれると、すごくありがたく感じることでしょう。
 

ワークグループの統括~Newt Onサーバー

個人が管理する各種情報を効率的に管理・運用する、「個人用秘書」というのがNewt Onの位置づけ。もし、仕事場でそれぞれNewt Onをバラバラに使っていたら……AさんのNewt Onに入っている情報が、BさんのNewt Onには入っていないという状況が発生することでしょう。

住所録やスケジュールなどはお互いに参照できた方が便利なので(もちろん、個人的な事柄にはマスクできるようにして)ワークグループのメンバー間で情報を共有できる「Newt Onサーバー」とでも呼ぶべきものの必要性を感じています。

それが、一括管理するようなタイプなのか、ネットワーク上に自動的にNewt Onを検出してPeer To Peerで通信を行うようなものになるのか……次期Mac OS Xの機能を見ていると、Rendezvous(ランデブー)の存在が気になります。この機能はきっとAppleScriptからも利用できる筈なので(と、期待したい^-^;)、Peer To Peerで自動的にネットワーク内部のNewt Onを検出できると便利ですね。

職場のみならず、喫茶店などのホットスポットでAirMac経由でネットワークにつないでいる時に、ネットワーク内にNewt Onの端末があったら知らせてみたりすると、やや面白いかもしれません。

ネットワーク機能については、技術面から見た可能性や危険性などを議論し、「なるべく能動的にネットワークに働きかけるのはやめよう」といったところで方針が落ち着いています(メールによる住所録の自動データ収集機能なども検討したものの、ネットから閉め出されかねないのでボツ)。他のユーザーに迷惑をかけそうな機能は実装しないという方針です。
 

Jaguarで気になる機能たち

Rendezvousの話が出たついでに、次期Mac OS X・コードネーム「Jaguar」について、Newt Onと密接に関わってくる部分をクローズアップしてみましょう。

筆頭は、標準搭載の住所録データベース「Address Book」。どの程度フィールドを拡張できるのか、そもそも住所録以外にも汎用的に使えるのか、とか……Newt Onにとってはたいへん気になる存在です。

Entourageとの相互データシンクロの機構を用意するか、それともEntourageが自前でそのような機能を搭載してくるか、先の話になるので、読み切れないところ……実際にモノが出てきてから検討すべき事項かもしれませんが、楽しみな存在です。

次は、iChat。メッセージング・アプリケーションですが、Rendezvousとの組み合わせにより、通信可能範囲内にいるMac OS Xクライアントを自動認識する機能が実装されている可能性もあり、そのような場合、前述のPeer To Peer通信のきっかけをこのアプリケーションに任せることもできるわけです(検出したら、自動で名刺交換を促すとか)。

トリは、手書き文字認識の「InkWell」。Newt Onと組み合わせると、まんまNewton環境に化けてしまいそうな感じですが、残念ながら英語のみのサポートの様子。

ただ、こうしたNewtonの遺産をMac OS Xに搭載してくることは十分に予想されてきたこと。あまりにも素直にNewtonの機能を載せてきたことは、「ほかにもまだあるのではないか?」と想像をふくらませるのに十分な出来事です。

さらに、アシストの機能までアップルがOSに載せてきたら……?

Newt Onとしてはアップル純正の機能とバッティングする可能性もあるところですが……もし、アップル内で開発をすすめていたとしても、日本語に特化した形での実装は行っていないことが予想されます。

入り口であるInkWellの日本語化が行われていないことからも、それが伺い知れます。

ただし、USのAppleScript製品担当のSal Soghoianに対し、「(Newtonのアシスト機能を実現するような)研究はしていないのか?」と尋ねたところ、「コメントできない」という返事しかもらっていません。

意味的には、「やっているけど、詳細は明かせない」とも取れるわけですが……実際のところ、ほかのプロジェクトで彼のチームはてんてこまいの様子なので、そこまでの余力はないものと分析しています。

そうはいっても、Newt Onがアップル社内の仮想的な競合プロジェクトに負けないものに育つ必要性は感じます。そして、その鍵は「いかに多くのサードパーティ製ソフトウェアと連繋できるか」という1点にかかっているように思います。
 

Now, “Newt On” is beyond the Newton.

プロジェクト開始当初、Newtonはよき手本であり目標でした。

しかし……Newtonが敷いてくれていたレールは、超えてしまったようにも思えます。すでに、Newtonが実現していたアシスト機能は、そのほとんどについて実現の見通しが立ってしまったからです。

もし、Newtonがその後も順調に成長を遂げていたら、インターネットや現在のさまざまな製品と組み合わせて、どのような世界を実現していただろうか……そんな想像をめぐらしています。

Newt Onの初期ユーザーは、おそらく初心者ユーザーではなく、経験豊富なパワーユーザーの一部ということになるでしょう。情報の有効活用は、住所録などの情報を蓄積しているユーザーにこそ真に必要とされているものだからです。

Newtonを愛してやまないユーザーの方々に、ぜひNewt Onについての要望を寄せていただきたいと思っています。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #12 複数のコマンドを実装 メール出せます

Posted on 10月 4 by Takaaki Naganoya

iWeek Special 2002のサブステージで、えせNewtonこと「Newt On」のデモを4月28日15:20~15:40に行います(デモの詳細はこちら)。

実際に動くNewt Onをみたいという方は、ぜひご来場ください。

Newt On関連ではメーリングリストでいろいろな提案や基礎ルーチンが発表される一方、肝心の自分がほかのことで走り回っていて、なかなか新規機能の実装は進んでおりませんでした。

しかし、iWeekを目前にしてたまたまCATVプロバイダがメンテナンス日(おそろしいことに、メンテ時間になるとバッサリとアクセスが切られる……常時接続とはいえない)だったので、MacOS X上でコーディングに励んでみました。すると、なぜかすぐにバグが取れて、新しい機能が実装できました。
 

メール作成コマンドを実装

これまでのバージョンのNewt Onは、「検索」コマンドだけを受け付けるものでしたが、コマンドインタプリタに手を加えて、複数のコマンドに対応するようにしました。

MacWorld Expoでデモを行ったものは、本当に「検索」だけを行うために間に合わせで作ったものなので、そこから考えればちょっとした進歩です(本当に「ちょっと」だけなのが恥ずかしいところですが……)。

NewtonのWebを見て回って、メールコマンドの存在を目にしていたので、Entourageでメールを作成するコマンドを追加、すでに使えるようになっています。
 

 
このように、検索コマンドも実行できますし、

河原さんにメール。

と打てば、住所録データベース(Names)から「河原」さんのデータを検索し、該当件数が1件であればメールの作成を行います。

メール作成コマンドは、あえて検索コマンドとは表示する顔文字を変えてみました。このあたりは、最終的には顔文字の一元管理を行って、顔文字で擬似的に感情表現を行いたいところです。

そして、自動的にEntourageが起動し、
 

 
メールの本文も自動で組み立てられます。「河原」さんのメールアドレスを「To」の欄に入れるようになっています。本文については、

  『●●様
  いつもお世話になっております。■■です。』

という簡単なものを入れることにしました。メールを指定して、それに対する返信をインテリジェントに行うような処理も、ゆくゆくは追加したいところです。
 

 
あとは、Entourageに文章を打ち込んでメールを出すことになるわけです。メールに関してはだいたい、オリジナルのNewtonと同程度の機能を実装できたことになります。

ただし、Newt Onがこのレベルに甘んじるというわけではなく、Newt Onコンソールにメール本文を書き込めば、それがメールとして送信されるというスタイルを想定しています。特定のキーワード(「編集終了」など)が来るまでは本文とみなし、Entourageを操作せずに送信することとなります。

この「対話モード」動作は、ほかのコマンドでも利用する重要なアクションなので、よく考えて実装していきたいところです。

ここで記入した本文はすべて履歴データベースにストアされ、あとで参照できるようにしておきます(現時点では未実装)。
 

続々とクリアされる問題点

Entourageのスクリプティングについて、スケジュール系やコンタクト系は用語辞書からでは実際の用例は把握すべくもありませんでした。

しかし、メーリングリストの有志によって集められてきた情報やサンプルコードを見てみたら、当初考えていたレベル(スケジュールのインテリジェントな予約)は、楽勝でクリアできる感じになってきました。

1人で調べていたらこの進み方はありえなかったでしょう。

iWeekだけでなく、さまざまなところでデモを行って、いろんな人に意見を聞いている状況ですが、誰もが「無理」、「不可能」と思っていたこの勝負、案外いいところまで行けそうな手応えが出てきました。

もう、未来はすぐそこまで……角のコンビニにある公衆電話で電話をかけているぐらいの距離にまで迫ってきた感じがします。

この圧倒的な「未来感」を、ぜひ1人でも多くのMacintoshユーザーの方々と共有できたら幸いです。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #11 えせNewton、Mac界に激震をもたらす?

Posted on 10月 4 by Takaaki Naganoya

MacWorld Expo/TokyoのUsers Groupブースで、ついにNewt Onのデモを実施。

本プロジェクトの成果が、アップルのブースではなく、Users Groupのブースで世界に先駆けて公開されました。

メーカー主導ではなくユーザー主導で新たな時代が切り拓かれていく……そんなことを予感させるような出来事でした。

USのマイクロソフトMacintosh Bussiness Unitの開発チームや、海外の旧NeXT系の開発者にもNewt Onを披露。誰もがその存在を目の当たりにしました。Newt Onがこの世に確実に存在し、胎動していること、そして大きな可能性を持っていることに、多くの人々が共感を寄せてくださいました。

皆にNewt Onを見せて感じたのは、「誰もがみな同じようなことをやりたいと考えていた」ということです。

ただ、それを実現するには、もっと手間がかかって大変な作業になると思われていたようで。まさか、100行そこそのこプログラムで可能になるとは……!

メーカー(アップル)に何かを期待してただひたすら待ち続けるような、いわゆるメーカーへの精神的従属の時代は終焉の時を迎え、Macの利用方法を根底からくつがえすような概念や利用方法が、ユーザー側から提示されるに至った……と言ったら言い過ぎでしょうか。

新機種が出ないからといって不満を口にしたり、目新しい発表がなかったからといって落胆する必要はないのです。

なぜなら、いま、未来は私たちユーザーとともにあるのですから……。

Expoで行ったデモから

(Expoのステージで行ったデモから抜粋しています)

今日は、せっかくExpoに来ていただいたのですから、ちょっとだけ「未来」をお見せしたいと思います。おそらく、このデモは世界初のものです。 USから来ているアップルの担当者が見ても、腰を抜かすレベルでしょう。

みなさん、この機械をご存じですか? そう、Newtonですね。Newtonは、製品がディスコンになって4年を経た今でも根強い人気があるマシンで……私もいじくってみましたが、いいですよ、これは(笑)。

Newtonの本質は、ペンで操作できることでも、持ち歩けることでもなくて、人間の行動をインテリジェントに補助する……アシストすることにあるんです。

「Meet takamatsu Saturday」

と入力すると、「Meet」で「スケジュールの予約なんだなー」、「Takamatsu」で住所録からその名前の人をひっぱって、「Saturday」で来週の土曜日なんだなー、とNewtonが解釈して検索を実行してくれます。

これとほぼ同じものを、MacOS X上にAppleScriptで作ってみました。

これは、Microsoft Wordの文章です。 このWordのウィンドウに、日本語で文章を打ち込むと……後ろにいるAppleScriptが日本語の文章を認識して、 ファイルメーカーProのデータベースに問い合わせて、 結果をWordの文章に返してくれます。

MacOS Xだからこそできる、このスムーズな並列処理。 そして、インターフェース用に使っているアプリケーションがWord。

ViaVoice※注のMacOS X版がどのようなものになるか、USのAppleのWebで掲載されているとおりになるか、 そのあたりは現時点では分かりませんが……ViaVoiceのSpeakPadにある「Microsoft Wordに転送」のコマンドが使えれば、勝手にWord上で検索文字列を認識!

※注:ViaVoiceを用いてさまざまなアプリケーションをコントロールするデモの一環として本デモは実施されました。

Macintosh上で、音声だけでデータが検索できる日が、もう、すぐそこまで来ている……はずです。

また、ATOKであれば手書き入力も可能なので……タブレットをつなげば、Newtonライクにペン入力が可能になります。しかも、日本語のダイレクトペン入力は、Newtonの実機でも行えなかったことです。

(ExpoのUsers Groupブースで、デモをご覧いただいた多数の方に感謝申し上げます)
 

他のUsers Groupの反応

このシステムの進化を一番喜んでくれたのは、他ならぬNewton系Users Group、Newton Japanの皆様でした。

「Webで見たときには、よく分からなかったが……実物を見てよく分かった。これは面白い!!」

思わず、Newton Japanのステージに呼ばれて、実機のNewtonにまじって「Newt On」までデモを行うという一幕も。すっかり、Newtonファミリーの一員であるかのように扱っていただきました(MP 2100を買ったら真のファミリーだ、という声も^-^;)。

AppleScript系Users Group、「ASUG」のメンバーも、それぞれにNewt Onへの期待を語ってくださいました。

意外だったのは、NeXT系Users GroupのNeXuSのかたがた。このNewt Onのデモに大きな可能性を感じられたのでしょうか、わざわざExpo終了後の身内の技術ミーティングの場に呼んでいただきました。

そこには、なんと米FRONTBASE社の首脳陣が。

「ここにあるのは、AppleScriptから制御できて、しかもOracleより高速なマルチメディア・データベースだ」

見せていただいて、非常に感激しました。ファイルシステム上に一度落とすこともなく、QuickTime Playerとデータベース間で直接ストリーミングの通信を行い、その場でDBから直接ムービーを再生して見せたのです。

NeXuSの代表である竹尾さんからは、

「ScriptableなCocoaアプリ作るからさ、ぜひ声かけてね!」

実に心強いお言葉をいただきました。これが打ち上げの場の酒の勢いでなければ、きっと大きな力になってくださることでしょう(^-^;。

余波はこれにとどまりません。身内のバカムービー研究会からは、「コマンドを強化してiWeekに持って行ってデモすべきです!」との意見が寄せられ、さらにUsers Groupの外部のAppleScript書きの方からも、

「ぜひNewt Onプロジェクトに参加したい。先日Newt OnプロジェクトをOn The AirのHPで見て、『これだ!!』と思った」

このタイミングでAppleScript書きの方から援軍を得られるとは、夢にも思っていなかったので(もう少し成果が出てからだと思っていました)、たいへん嬉しく思いました。

自分は、アイデアやアーキテクチャを考える方が好きなので、このプロジェクトが本格始動したら、コードは別の人が書いたほうがプロジェクト自体うまく行くだろうと思っていた矢先の出来事です。参加したい方はぜひに(^-^;
 

えせNewtonが実現するべき未来像とは?

ここまで大きな反響があって、これから先このプロジェクトはどこに行くべきなのか。私がこのプロジェクトをどのような方向に導くべきなのか……。少々考えてみる必要がありそうです。

Newt Onのえせインテリジェント・シェルも、基本的な構造はUNIXやDOSと変わりないので、コマンドを入れればどんどん機能が増えるけれど……そのようなひたすらコマンドを増やし続ける無限地獄でいいのかどうか。

最低限、スケジュール予約やメールのインテリジェントな整理といったことは行いたいもの。それも、最低限の方法論が確立したいまとなっては、実現するのも時間の問題といったところでしょう。

ただし、善意でコマンドを作ってくれるであろう将来の人たちに、まったく見返りがなければプロジェクト自体が先細りになってしまいます。

ポータルサイト上に便利なコマンドが並んでいて、その中から自分に合ったものをダウンロード。何回かは無料で試すことができて、一定回数以上利用すると、シェアウェアのメッセージが出るとか……。

あるいは、スターターキットをCDで販売して、そのキットをインストールしたマシンからは、便利な拡張コマンドをポータルサイトからダウンロードできるとか。

また、オープンソース化の問題もあります。本プロジェクトのミソは、ほんの少しのアイデアとひらめきだけ。同じことをアベレージレベルのAppleScript書きが作ろうと思えば、余裕で作れてしまうものです。

だから、LinuxやGNUのような完全オープンソースというよりも……男と男の鉄の信頼でつながっている(女性もOKです^-^;)仲間の間にはソース公開とか。

どなたか、よいアイデアがあったら教えてください(^-^ また、Newt Onプロジェクトのメーリングリストも作成したので、我こそは! という方はぜひご参加を。

(Photo:さんそ~@HMUG、MACお宝鑑定団)

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #10 ついに疑似対話が可能に

Posted on 10月 4 by Takaaki Naganoya

えせNewtonこと「Newt On」の機能を実装していて痛感するのは、この元になったNewtonという製品の偉大さです。

本プロジェクトを人に説明すると、「それってNewtonのエミュレータ?」と、勘違いされることが多いのですが……そういう後ろ向きなベクトルではなく、 最新の環境の上でその特性を最大限に活かして、新たな世代の「Macらしさ」を追求するプロジェクトなのだと説明しています。そのエッセンスとしてNewtonでもたらされた知的処理の概念は欠くべからざるもの。

元Newtonの開発者を多数抱えるPalm社のPDA・「Palm」(およびその互換機)は、誰にでも持ち運べるサイズで、安価に買えるハードウェアの上に、ペンベースの使用環境をもたらすことを最大の目的とし、かなり割り切った(必要不可欠な機能以外は削った)仕様になっています。

あれもこれも、と欲張らなかったからPalmは一定の商業的な成功をおさめた……とはいうものの、Newtonの美徳とされた知的処理が、ごっそり削られたことは残念なかぎりです。今後、Palm OSが強化されても、単にムービーデータや音楽データを持ち歩ける「入れ物」として進化するだけのこと。

同じく、PDAといってもWindows CEでは画面インタフェースの統一すらおぼつかない状況で、お世辞にも「使いたい」、「便利」、「かっこいい!」と言えるシロモノではありません。

Newtonも、元をただせば「ナレッジナビゲータ」思想から端を発したもの。えせNewtonことNewt Onも、昔夢見たナレッジナビゲータのデモムービーに多大なる影響を受けています。

数多くのGUIアプリケーション同士をAppleScriptで連繋させて利用できるのは、MacOSが持つ他のOSにない強力なメリットです。ただ、AppleScriptを習得しないとそのような利便性を享受できないのでは、せっかくの強みもなかなか活かされません。

AppleScriptでなく日本語で命令することで、AppleScriptユーザーが享受しているメリットを一般ユーザーにも開放する……「ナレッジナビゲータ」のことを思い出していたら、そういう目的も本プロジェクトにはあるのかもしれない、と思ったのでした。
 

Wordへの結果出力が可能に

Newt On(MacOS X版)がさらに新たなステージに到達しました。

従来のバージョンでは、日本語による検索コマンドを受け付け、日本語を解析して検索を行ってくれました。そのさい、各アプリケーション内でそれぞれ結果が表示される状態でした。

これが現段階のバージョンでは、(コマンド入力を行っている)Wordのウィンドウに直接結果を返せるようになったのです。

USのAppleScriptのMLの過去ログをあさってみたところ、Wordの文書末尾に文字列を入れる(追加する)には、


 tell application "Microsoft Word"

  tell document 1

   set end to "ほげほげ"

  end tell

 end tell


のように記述。他のアプリケーションで、「end」という予約語にお目にかかったことはありません。かーーなりクセの強い仕様ですが、まあ……分かってしまえばどうということはありません。

そこで、現在実装している「検索」コマンドをひとつのスタディケースとして、結果をWordに戻す機能を実装して検証してみましょう。

実際にNewt Onが実現されたときの姿は、チャットに近いかたちになるものと考えています。Wordのウィンドウ内にユーザーの入力したコマンドが記入されるほか、Newt Onからのメッセージも表示されます。つまり、「誰が」そのメッセージを表示したのかを示すために、

 Mac:コマンドを受け付けました

といったようにコロン(「:」)付きで名前を表示させます。これなら分かりやすいでしょう。

ここでは「Mac」という名前をコンピュータに付けていますが、

 えるざ:コマンドを受け付けましたわん

のように、名前や文末部分の文字列を適宜変更できるとよいでしょう。
 

顔文字を併用し、より分かりやすいインタフェースを

システム・メッセージの重要度を「なんとなく」「適当に」表現する手法として「顔文字」を併用したいところ。現段階では、雰囲気(mood)を数値で表現することは考えていません(そういう学問的なことはひとまず置いといて、実用性と親しみやすさに開発のウェイトを置いています)。顔文字表示の統一データベースを作るようなことはせず、各コマンドの実行ルーチン側で固定で表示させる程度とします。

  おさる:コマンドを受け付けましたでおさるー(^ー^)

これで、かなり親しみやすさが向上しました。プログラムが返す顔文字も、(最終的には)固定で返さずにデータベースから引っ張ってくるとよいでしょう。だんだん、飲み屋で女の子に見せびらかすと自慢できそうな感じになってきました(これはたいへん重要なことです)。

住所録データベースの検索では、

 Mac:全部で3件のデータがあります(^。^)

 Mac:住所録には登録されていないようです(^_^;

といったように、顔文字で状況を表現させてみましょう(現段階では固定出力)。

検索結果が大量に返ってきた場合、Wordの文章上にそのまま返したのでは、情報量が多すぎて人間が目で追うのが大変です。必要に応じて表示する情報量をコントロールし、結果が大量になる場合には、結果をそのままには返さないほうがよいでしょう。

目安は5件。これを超える場合には、

 Mac:該当するデータが何件かあります(10件ぐらい?)

 Mac:該当するデータがけっこうあります(100件ぐらい?)

 Mac:該当するデータが相当あります(500件ぐらい?)

 Mac:該当するデータがものすごくあります(1000件ぐらい?)

 Mac:該当するデータが信じられないほどあります(10000件ぐらい?)

といったように、程度が「なんとなく」分かるように表示させるとよいでしょう。

こう表示されたら、ユーザーの側で、「渋谷区の河原さんを検索」のように、さらに詳細な条件つきのコマンドを与えて再検索を行うというところ。擬似的に対話しながら検索する「雰囲気」を演出できるはずです。だんだん知的な感じがしてきました。

以上の機能を現行のNewt On(バージョン0.31)に実装し、Wordのみで情報の検索・表示が行えるようにしてみました。



ユーザーコマンドとNewt Onの出力メッセージをWord上に出力
まさか、こんなものがMicrosoft Wordなんてたかがワープロ(失礼!)
の上で動いているとは思えないでしょう……


素っ気ないことこの上ないMacOS X環境、パレットをすべて消したら、
これがWordのウィンドウであることなど、気が付かないでしょう。
 

Word文章の色を本物のNewtonの画面の色に似せてみました。
でも……やっぱりただのWordの文章なんです、これ。
 


実際に、コマンドを自動解釈して検索を実施し、
検索結果をWord上に返す様子を見ていると、
この段階でも十分に実用性を感じるものです。
 
なかなかいい感じです。

Newt Onからの結果表示については、(ユーザーのコマンド入力の文字とは)明示的に文字色を変えたほうが雰囲気が出てよいと思うものの……AppleScriptでそのように記述するサンプルが見あたらなかったので、今後の検討課題です。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #9 MacOS 9への挑戦

Posted on 10月 4 by Takaaki Naganoya

MacOS X 10.1.3上で開発が進んでいるNewt On。日本語の文章でNewtonっぽい、それらしい検索ができるようになりました。

MacOS Xでとまどうソフト間の切り換えはいっさい必要なし。いろいろなソフトを切り換えずともフロントにいるWordに入力するだけで検索OKです。

たしかに、MacOS X 10.1.3上であれば問題なくサクサク動きます。しかし、まだ大多数のユーザーが使っていると思われるMacOS 9.x環境に移した場合にどうなるのか……。

ViaVoiceのMacOS 9版とのコンビネーション技でどの程度のパフォーマンスを発揮できるのか……。いろいろ試してみるしかなさそうです。

変更なしで動いた……が

特別な命令も何も使っていないし、MacOS X版とはいえWordもファイルメーカーProも、AppleScriptから見ればMacOS 9版と何も変わりません。しいていえば、「ファイルメーカー Pro」(MacOS 9版)、「ファイルメーカーPro」(MacOS X版)と微妙に名前が半角スペース1つぶん違うぐらいです。

スクリプトも、MacOS Xのものを別パーティーション上にあるMacOS 9の環境に持ってきたら、何の問題もなく認識されました。下位互換性もたいしたものです。

試しに実行してみると……初回だけ、名前が合わないためか「ファイルメーカーProはどこにありますか?」と聞かれてきたものの、2度目以降は聞かれません。AppleScriptがアプリ名の違いを勝手に吸収してくれる仕組みだからです。このあたりがMacっぽい機構ですね。

おもむろにスクリプトを実行……とくにエラーは起きないようです。1行も書き換えないでそのまま動いてしまいました。Wordを前面に出して、検索文字列を入力。しかし、

検索してくれません(汗)

あわててスクリプト編集プログラムを前面に出すと……その瞬間に検索が実行されました。同時に幾つものアプリケーションを動かして、その間をスクリプトで制御するような処理は、やはりMacOS Xの方が圧倒的にうまく動くようです。

さらにこの上に、超弩級的重アプリケーションであるViaVoiceのSpeakPadを持ってくると、とてもではありませんが、後ろで立ち上がっているアプリケーションに処理が回るとは思えません。

少々めまいがしてしまいました。たしかに、MacOS 9上でAppleScriptの処理を行う場合には、処理対象のアプリケーションを最前面に出したり、スクリプト自身を最前面に出したり、割とこまかく実行速度のチューニングしています。

おまけに、この実験を行ったのはPowerMac G4/733、デモに使えるのはいいところiBook 500。このパワーの差を勘案すると、さらに過酷な環境になりそうです。
 

早くも、たちこめる暗雲

とりあえず、delayコマンドで時間かせぎを行っている(waitしている)部分を削ってみました。

そのとたんに、あちこちで「変数が定義されていないよ」というエラーが頻発、どうもMacOS 9.2.2上のAppleScript 1.7の痛いところばかりつついてしまっているようです。前例にならって、AppleScript 1.8.2β3に差し替えて試してみることに。

……しかし、1.8.2β3に切り換えても状況は好転しません。とりあえず、この現象についてはUSのAppleに直接問題をフィードバックしてみるしかないようです。

最悪の場合には、MacOS 9側(音声受け付け専用)から、プログラムリンクでネットワークごしにMacOS X上のNewt Onを操作することも、まぁ考えないではないのですが……逆にこのあたりはMacOS X側のAppleScriptの実装が不完全で、連繋しづらい(現時点では事実上できない)部分です。

では、MacOS 9のマシンを2台使って連繋させてみてはどうでしょう? 音声入力用のマシンA上でViaVoiceとWordを稼働。このA上のWordの情報を、DB検索用のマシンBが監視。MacOS 9同士なら、ネットワークごしのプログラムリンク(MacOSのリモートプロシージャ・コール)も大丈夫です。

とはいえ、実験してみないと分からない部分なので……追試で実験してみるのみです。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #8 コマンド、目的語、サブキーを認識

Posted on 10月 4 by Takaaki Naganoya

かなり「えせNewton」あらため「Newt On」の実装研究も進んできました。次の目標は、一般向けのデモが可能で一般ユーザーのウケがとれるレベルです。

ViaVoiceのMacOS X版がどの程度のパフォーマンスなのか、どの程度の新機軸を盛り込んでくるのか(こないのか)、現段階ではまだ未知数ですが、前回問題になったコマンド認識のインタバルは、少々長め(20 秒程度?)にするか、あるいはコマンド認識部の起動を明示的に行うようなことを考えるべきでしょう。

とりあえず、前回の続きをうけてデモ可能なレベルのものを仕上げてみることにします。
 

住所録「Names」の検索

普段使っているファイルメーカーProの住所録を、Newt Onから検索できるように考えてみました。基準となる検索キーワードは、

  河原さんを検索。

です。これで、住所録データベースに対して「河原」という名前で検索できるようになれば大丈夫でしょう。これをMicrosoft Word(以下、Word)で文節ごとに区切ると、

  --> {"河原", "さん", "を", "検索", "。"}

となります。いい感じですね♪

まずは、「検索」が入っているかどうかをチェックし、「検索アクション」であることを認識。次いで、目的語である「河原」を検出するために「さん」の位置(この場合だと2番目)をチェック。「さん」より前にあるワードはすべて検索対象の文字列とします。

あくまでこの基準用キーワードであれば、名前の途中で切れることなく、いっぱつで認識してくれますが、ちょっと長い名前……たとえば「長野谷」を与えて文節区切りをWordにやらせると……

  --> {"長野", "谷", "さん", "を", "検索","。"}

となってしまいます。そこで、「さん」より前にある語はすべて連結して検索対象にしてしまいましょう。

--目的語を検出/連結(人名が複数のwordにparseされるパターンに対応)

set objText to items headPos thru (resNum1 - 1) of bpText

set objText to objText as text --連結

だいたいの方針は固まってきました。コードもすぐに書けてしまいましたが、これだけで済むわけがありません。
データベース上に複数の「河原」さんがいたら困るので、最低限「どこの」河原さんなのかを指定したいところです。

そこで、「○○の」という言葉が「○○を」の前に存在したら(当然、ない場合もあるわけで)、サブキーとして認識させることにしました。

  東京都の河原さんを検索。

これで、データベースから氏名と住所で検索してくれます。実は、「○○の」という部分は、単にそのままうしろに「*」を付けて「東京都*」のようにして住所フィールドに突っ込んで検索しているだけなので、

  東京都渋谷区の河原さんを検索。

とか、

  東京都渋谷区初台の河原さんを検索。

のように、どんどん条件を長めに与えれば、データの絞り込み検索を行えることになります。
 

ある程度の呼称の「ゆらぎ」に対応

住所で検索できるわけですから、その部分をちょっといじくって、「男性の」、「女性の」というサブキーも強引に受け付けるようにしてみました。

if subKey is not equal to "" then

  if subKey is equal to "男性" then set cell "性別" of request 1 to "♂"

  if subKey is equal to "女性" then set cell "性別" of request 1 to "♀"

else

  set cell "会社住所" of request 1 to (subKey & "*")

end if

普通に住所で検索する前に、目的語自体を調べて処理を分岐させています。

  男性の河原さんを検索。

複数の河原さんの中から男性の人だけをピックアップします。これで一段落。

一息入れたあと、さらにコードを見直してみると、この目的語をピックアップする基準ワードが「さん」で固定されているので、

set resNum1 to searchItem(bpText, "さん") of me

処理自体をサブルーチン化して、「さん」の記述部分を変数に置き換え、

set resNum1 to searchItem(bpText, keishouText) of me

引数として基準キーワードを与え、柔軟に呼称(ここでは、目的語をピックアップするための目印)を変えられるよう、バージョンアップしてみました。

set kList to {{"さん", "姓"}, {"ちゃん", "名よみがな"}, {"課長", "姓"},
{"部長", "姓"}, {"社長", "姓"}, {"君", "姓"}, {"くん", "姓"}, {"様", "姓"}}



repeat with aKey in kList

 set gRes to stdDBserch(bpText, item 1 of aKey, item 2 of aKey) of me

 if gRes is not equal to "NG" then exit repeat

end repeat

「さん」、「ちゃん」、「課長」、「部長」、「社長」、「君」、「様」……と、一通り柔軟に対応。また、呼称の違いに応じて……

  河原さんを検索。→「姓」フィールドを検索
  みちおちゃんを検索。→「名よみがな」フィールドを検索

のように、検索対象フィールドを動的に変更できるようにしてみました。動的に変更しつつ、設定してあるキーワードで目的語を検出して検索を行います。条件でヒットしなかったら、次のキーワードを(総当たりで)試すことになります。

しかし、ここで問題発生!!

ヒットした件数を数えるのに、(↑)のような単純なコードを書いてみたところ、「オブジェクトが見つからない」エラーが発生。しかし普通、この程度でエラーが出るわけがありません。

そこで、ものは試しとデベロッパー向けに配布開始されたAppleScript 1.8.2β3を入れてみたところ……なにごともなかったかのように、きちんと動くようになりました。

まだ、完熟途上にあるMacOS X上のAppleScript……デモを行う場合には、こうしたこまかなバージョンの違いが大きく響いてくることを肝に銘じておかなければならないでしょう(汗)。

とりあえず、ダウンロードできるものを用意して
みました。試せる環境のある方は、お試しを(67K)
 
 

ハードルを超えたら次の問題……

これで、もしViaVoiceからの文字入力をMicrosoft Wordに行って、コマンド解釈プログラムをキックすれば、その内容に従ってデータベースの検索を行ってくれます。検索だけでなく、メールの組み立てさえも、すぐに実現できることでしょう。

しかし、ここで問題が2つあります。

1つは、ViaVoiceで入力を行うため……キーボードからの入力にくらべて(聞き取りミスの訂正などで)入力に時間がかかる可能性があるということです。

定期的にWordの文章に問い合わせを行うようなスタイルは合わないことでしょう。最悪の場合には、Wordが単独でクラッシュするかもしれません(MacOS Xになって、何か不具合が起きても該当するアプリケーションが落ちるだけなので……安定性とひきかえに、スクリプト側でつぶさにプロセスの存在チェックを行う必要が出てきて、なかなかたいへんです)。

キーボードからキックしてもよいのですが、まだMacOS 9.xのようにショートカットを強引にメニューに加えるようなプログラムが(あるにはあるものの)安定して利用できるか分からないので、ショートカットでは呼び出せません。

とりあえず考えているのは、グリフィンテクノロジーの「PowerMate」をUSBポートに取り付けて、このドライバでクリック時のアクションにAppleScriptの実行を割り付け、実行をキックさせようというものです。

もうひとつの問題は……こちらのほうが、テーマとしては大きく……データベースで複数のデータがヒットした場合に、その結果表示なり選択肢なりを、コンソールであるMicrosoft Wordにメッセージとして返す必要があるということです。

Microsoft Wordからデータを抜き出す(正確にいえばコピーしてくる)AppleScriptは割と簡単ですが、書き戻すコードは少々考えなくてはなりません。
 
とはいえ、本プロジェクトが始動したとき、誰がこのレベルまで到達することを想像しえたでしょうか? 技術的な検討課題を抱えながらも、第1段階のNewt Onとしてはほぼ評価に値する機能レベルに到達してきました。セッティングさえミスしなければ、デモを行っても十分によい反応が得られることでしょう。

入力された日本語のテキストから、コマンドを検出して……そのアクションを具体的にどのように行うかの装飾語句を検出。データベースの検索を行えるようになりました。

最終的な仕上がりを考えたときには、住所録データベース(Newtonに準じて「Names」と命名)にまだ検索履歴を付けていないので、この履歴処理のあたりも考えてみる必要があることでしょう。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #7 えせNewton 改良強化新型の系譜

Posted on 10月 4 by Takaaki Naganoya

えせNewtonこと「Newt On」のコンセプトおよび初期試作は、その筋の方々に「たいへん面白い」と好意的な意見で迎えられました。

→ 「えせNewtonプロジェクト」プレゼンPowerPoint資料(192Kバイト)

擬似的な(えせ)インテリジェント処理と、そこそこの実用性。まだ「モノになる」には基礎研究を続ける必要があるものの、将来展望に希望を持てるレベルです。

とはいえ、現状のままでは一般向けにデモを行うには問題があります。大々的に、Macintosh上の処理のパワフルさと柔軟性を実感してもらうための「えせNewton」なのに、実装が未熟な現状では、下手をすれば石を投げられかねません。

「何をやっているのか分からない」、「デモの内容が素っ気なさすぎる」

一般公開したときの手応えのなさが、いまから容易に想像できます。……では逆に、「デモ用」にチューニングしたバージョンを作成してみてはどうでしょうか?

ここはひとつ、逆転の発想でえせNewtonの改良強化新型バージョンを検討してみることにしましょう。
 

MacOS 9.x版

MacOS X上で開発を進めている「えせNewton」ですが、まだまだMacOS X上のAppleScriptはバグ持ちで、アプリケーションの充実もこれからです(日本語解析エンジン、Carbon由来系、URL Access Scriptingなどなどなどなど……!)。

MacOS 9.x上であれば、AppleScript対応アプリケーションも豊富で、AppleScriptの処理系自体も枯れているため、スクリプトを書く環境としては目下最高! 仕事でAppleScriptを書いている人間のほとんどは、MacOS 9.xやMacOS 8.x系のOSで仕事をしているのが現状です。

そこで、なにげなくMacOS 9.2.2上のMicrosoft Wordに対して、同様のスクリプトを実行してみたところ……強力な日本語解析能力がMacOS X版Wordの専売特許でないことが分かりました。

とりあえず、コマンド解釈+実行部分(シェル)にWordとの並列動作は行わず、明示的な操作で解釈・実行を行わせるようにすれば、安定した動作が期待できます。MacOS 9.x版の実現の可能性も、なかなかのものでしょう(先進的、未来的なトーンがダウンしてしまう危険性をはらみつつ)。
 

UNIX系アプリ応用評価版

AppleScriptから叩けるのは、なにもMacOS上のアプリケーションだけではありません。MacOS Xでは、土台にあるUNIX(BSD)の世界のアプリケーションも叩けるようになりました(結果も取ってこれるし)。えせNewtonの初期評価版を見た方々の声の中に、

「Word非依存にできないか?」
「単語切り出しにUNIXのchasenやkakasiなどを使ってみてはどうか?」

というものがありました(Namazuを使ってみては? という声もありましたが、なぜに全文検索エンジンを使う必要が? ーー;)。

個人的にUNIXの世界のアプリは……インストールや設定や運用のわずらわしさがゆえに嫌いです(昔、UNIXの雑誌編集に携わって、UNIXアレルギーになっているとか :-)。私はコンピュータを使って手短にアイデアを実現したいのであって、不毛なインストール労働で貴重な時間をつぶしたいわけではないのです。

あくまで私見ですが、BSDレイヤーのアプリを呼び出すオーバーヘッドはけっこう大きなものになると踏んでいます。MacOS X全体として見れば……余ったCPUパワーは最大限に最前面のプロセスに割り振るポリシーになっており(このあたりが、一般のUNIXと違う?)、バックグラウンド・プロセスの実行速度には(あまり)期待していません。

とはいえ、UNIX系アプリを利用した場合のオーバーヘッドがどの程度のものになるのか、実際に検証してみないと定量的・客観的な判断ができません。

コマンドパラメータをいちいちテキストファイル(しかも改行がLF)に書き出し、フルパスでUNIXのアプリに渡すあたりが超間抜けな感じ(AppleScriptの処理のエレガントさが損なわれる)。かなり気乗りしませんが、実験する価値はあるでしょう。
 

ViaVoiceの補助アプリケーション版

去年発売されたViaVoice Premium for Macintoshは、Mac史上に残る名作ソフト。日本語の音声によるコマンド操作環境が、1994年から苦節8年。ようやくMacintosh上に実現されました。

「English Epeech Recognition」の日本語版ともいえる「スクリプトクライアント」の存在が出色です。しかも、日本のユーザーからのリクエストをUSの本社にフィードバックし、いきなり製品版に突っ込んでしまうなど、日本の担当者の男気におしみない拍手を送りたいところです。

しかし、この傑作ソフト「スクリプトクライアント」にも、おのずと限界が存在します。音声コマンドが使えれば、データベースの検索を音声で行いたいのが人情というもの。ここに落とし穴があるのです。

ファイルメーカーProなどのデータベースに対し、本来であれば「河原さんを検索」といった「コマンド+パラメータ」式の音声コマンドを実行させたいところです。

しかし、さすがのスクリプトクライアントでも「特定話者の特定語認識」のレベルを実現しているに過ぎません。つまり、音声コマンドはひととおり固定のものを定義しておく必要があり、リクエストのたびに変わるパラメータには対応できないのです。

ところが、ここに「えせNewton」のテクノロジーを投下すれば……文章入力(コマンド入力)と、コマンド実行のフェーズを分離し、入力された文章を別のAppleScriptで解析。パラメータとコマンドをそれぞれ別個に認識できることになります。

実に目からウロコ、作っている本人でも気が付かなかった応用分野。SpeakPadに音声でコマンド入力し、Wordに入力したテキストをコマンドで転送させれば……あとは、勝手に「えせNewton」のコマンド・インタプリタが解釈して、コマンドを実行してくれるという寸法です。

そんなことを考えているうちに、状況は「えせNewton」に有利に動いてきました。

英語版ViaVoiceのMacOS X版は音声入力部分がSpeakPadと分離され、さまざまなアプリケーションに音声入力サービスを提供すると報じられたのです。

日本語版でも(高い確度で)同じ形式が採用されるでしょう。WordにViaVoiceから直接音声入力を行って、そこでコマンドを解釈させればよいことになります。

ただ……日本IBM(+USのIBM本社)が、ありあまる超絶的な開発力にモノを言わせ、自前でパラメータ認識機能つきのAppleScriptコマンド実行機能を載せてくる可能性もなきにしもあらずですが……その時には、おしみない拍手を送りましょう。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

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までメールにてお知らせください」

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

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #5 えせNewtonの正式名称が決定

Posted on 10月 4 by Takaaki Naganoya

ひたすら地味にひたすら地道に、実現の可能性と実装形態の検証を行ってきた、本「えせNewtonプロジェクト」ですが、「生誕之巻」こと最初の第1段階はすでに超えた感があります。

しかし、第2段階の「生長之巻」に突入するにあたって、まず最初に行うべきことがあります。

……それは、この怪しげな「えせNewton」というプロジェクトに、正式な名前を与えるという、実に重要かつ責任重大な儀式です。

プロジェクトの成否は、いかに「ウケを取れる名前」や「キャッチーな名前」を命名できるかにかかっているからです。

 

えせNewton改め・・・?

「えせNewton」という名前には、個人的に思い入れもあるので、とくに変更する必要性もなさそうですが……困ったことに、これでは海外でそのまま通用しません。

しかも、日本国内・海外を問わず、ワールドワイドに「ぁゃしぃ」「ばったもん的」な雰囲気漂うものが「理想的」です。

考えに考えた結果、ちょうどよいものが見つかりました。Newtonを起源とし、誰でも見た瞬間にNewtonだと分かり、しかもNewtonそのものではないのでAppleから商標についてうるさく言われる心配のないネーミング……

発表いたします。「えせNewton」改め……

Newt On

(ニュート・オン)を、正式名称とします。なんと、実にあっさり決まってしまいました。

Newtonを途中で切って、「Newt」「on」。これなら世界中どこでも、本ソフトが「Newtonのパロディ」であることを分かってもらえることでしょう。

意味はまったく考えていなかったのですが、「Newt」で「ニュートラル」(中立)といった意味を狙えるかと思ったのですが、辞書を引くと「ヤモリ」という意味があるようです。Newtonの筐体からヤモリが出てくるような絵柄があると、より分かりやすさが強調されることでしょう(えっ? 昔のNetscape社のロゴが似ている?)。
 

アイコンのグラフィック

いついかなるアプリケーションであっても、ウケを狙わなくては真のMac使いとはいえません(本当か?!)。そこで、最初に候補に上がったのは……アップルの歴代Newton担当者の顔写真入りのアイコン。

  O宮本部長
  K原氏(Users Group担当)

のお2人が(全然、伏せ字になっていないような)、仲良くNewtonの画面におさまっているアイコンなら、その筋の方々のウケを狙えるのではないかと考えました。

幸いなことに、アップルでも露出の多い両氏のこと、写真のネタには事欠きません。

……しかし、それではほとんど「指名手配の人相書き」や「ダウンロード式の始末書」になってしまいそうです。ただでさえ、厚振湖観光協会(appleco.jp)などのドメイン取得でAppleの法務部からにらまれている可能性があるので、余計な挑発は避けておきたいところです(そんなおバカなものを監視しているとは思いたくないのですが)。

Newtonの写真を自分で撮って、それを元にイラスト化する程度が限界でしょうか。Newtonのロゴマーク自体は、おそらく現在のところは使用許諾が下りないことでしょう。
 

Newt On Ver.0.1に向けて

とにかく、簡単なデモが行えるレベルの「Newt On Ver.0.1」をさっさと作ってしまいましょう。

Newt On ver.0.1は、

  MacOS X 10.1.3以降

  office v.X

  ファイルメーカーPro 5.5

を必要とします。本来であれば、ここにIBMの「ViaVoice」を加えたいところですが……まだMac OS X版が登場していないため、リストアップしていません。ただし、登場は時間の問題といったところでしょう。

Mac OS X上にAppleScript対応度の高いアプリケーションが登場すればするほど、えせNewtonこと「Newt On」の機能が豊富になり、作成が楽になるのでありました。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

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の偉大なる思想、いまだ遠く追いつけずといったところでしょうか。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #3 Wordに見るインテリジェント処理の可能性

Posted on 10月 4 by Takaaki Naganoya

現時点におけるNewtonへの評価は、「旧世紀の遺物」、「何が好きであんな重いPDAを」などという陰口でしょうか?

それはおそらく正しくありません。

一般的には、「なにそれ? どこで売ってるの?」というものになるはず。よほどのマニアでないかぎり、それがかつてアップルから発売されていたPDAであることなど、知るよしもないでしょう。時の流れに埋もれ、風化しつつある現実がそこに横たわっているのみです。

しかし、Newtonに流れている設計思想はほんの4年や5年で風化するものではなく、むしろまだあまたのメジャーなOSが追いついていない先進的なものととらえるべきもの。

不幸なことに、NewtonのOSはNewton Message Padおよび学校教育用のeMateでしか稼働しませんでした。もしこれがMacintosh上で動いていたらと思うと不憫でなりません。そのインテリジェントな処理への指向は、今日においても高く評価されるべきものだからです。

ゆえに、再度問いたいのです。「Macitosh上でそのような環境は作れないのだろうか?」と。

……どうやら、その可能性が意外なところから見えてきたような雰囲気です。
 

office v.X見参!

最近、ようやくメインマシンでMacOS Xを使うようになりました。Classic上のアプリケーションが予想外に快適に動作したり、いままででは考えられなかったような並列処理ができるようになったのが、そのきっかけ。

バックグラウンドでQuickTime PlayerによりSorensonでビデオ圧縮しながら、フォアグラウンドで各種アプリケーションをAppleScriptから操作しても問題なく動く! これほど重い処理と並行して(AppleScriptのような)システム的に優先度の高い処理をこなせることに驚きました。

そして、超メジャーなアプリケーションである「office」のMacOS X版がついに登場。その評価を行ってみる機会に恵まれました。もちろん、真っ先にやったのはexcelで表を作ることでも、wordで文章を作るでもなく、Script EditorでこれらのアプリケーションのAppleScript用語辞書の内容を確認すること。

 

Wordの用語辞書を見てみましょう。どのアプリケーションでも受け付ける「quit」や「print」などの基礎的な命令群から構成される「Core Suites」。アプリケーション本体の主要な命令を含む「Miscellaneous Standards」。テキスト関連の命令を含む「Text Suites」、そして表作成に関する「Table Suites」から構成されています。


 
Excelでもだいたい構成は同じです。 グラフ関連の「Charting Suites」(薄い水色の部分)の存在が独特でしょうか。



Entourageは、一般的なメール送受信関連命令群である「Entourage Mail and News Suites」の充実が伺えます。また、グラフの黄色い部分にあたる「Entourage Contact Suites」が特徴的。Contact Suitesは、Entourageのコンタクトリストにアクセスする命令群……のはずですが、思い切り変わり種の命令が入っています。「lookup jpostalcode」というのがそれで、



たった3行で(書き方を変えれば1行で)7桁の郵便番号から都道府県名と市区町村名をリスト形式で得ることができます。実際にデモを行ったら、マイクロソフトの製品担当が驚いていたぐらいですから(^^; ……よほど「隠し命令」的なフィーチャーなんでしょう。好きですね、こういうMacintoshらしい隠しフィーチャー。
 

officeの最強アプリケーション、それは……

office v.Xの各アプリケーションについて、自分ではざっくりと、



のように評価していました。レコーダブルであり、操作した手順をすべて記録できるExcelの対応度が抜きんでています。Wordに対する評価は、それほど高くない……むしろ「実際に使い物になる命令はさほどない」というのが自分の認識でした。

しかし……後になって、それがとんでもない誤りであったことに気づくことになります。

Wordこそが、この「えせNewtonプロジェクト」における超重要なアプリケーションだったのです。



なにげにこんな(↑)文章を打ち込んで、この文章における単語をリストで取り出そうとコーディング。記述したリストはたったの5行だけ(↓)。



信じられない結果が返ってきました。

「こ、これは理想的なパーシング……」

ちなみに、MacOS Xで普通にテキストに対してこのような処理を行うと、



と、こんな感じになります。これでは使いものになりませんが、wordでパースしたものは、そのままでコマンド識別用に使えそうな雰囲気です。

おそるべし……日本語のパーサーとして使えるWord。

おそるべし……マイクロソフト。こんなに有用性の高い処理ルーチンを、たかがワープロに投入しているなんて(当たり前といえば当たり前なのかもしれません)。

しかし、これで「えせNewton」実現のための重要なピースが決まりました。

日本語解析=word
 

履歴処理、各種情報検索処理=FileMaker Pro
 

そして、
  
郵便番号検索=Entourage(^-^;



とりあえず、あとはカレンダーがらみの処理だけなんとかすれば、プロジェクトはかなり前進しそうです。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #2 インテリジェントな環境を構築するもうひとつの要素~SOAP

Posted on 10月 4 by Takaaki Naganoya

Newtonの環境は単なる電子手帳のレベルではなく、アプリケーションやデータファイルを抽象化して、ユーザーに存在を意識させないことを指向したものでした。



Newtonの開発がすべてキャンセルされ、販売が終了して数年が経過した今となっても、その思想を超える環境はいまだなく、MacOS Xへの統合が果たされることを夢見ているユーザーも少なくはないことでしょう。



しかし、Appleの開発チームはMacOS X環境の構築に予想よりも手こずりました。最初に登場したMacOS X 10.0では十分な完成度を持たせられず、MacOS X 10.1でようやく「MacOSらしさ」と「UNIXのファンクション」のバランスがハーモニーを奏でるレベルになってきました。実際のところ、使ってみるとかなりいい感じです。



しかし、「MacOS Xらしさ」という意味では、まだその片鱗が垣間見えてきたというレベルでしょうか。MacOSらしい使い勝手とUNIXらしい強靱な足回り。では、その先にあるべき「MacOS Xらしさ」とは何でしょう?

 

既存のメタファーを真似るだけの「まねっこマシン」として振る舞うだけでなく、それを超える何かが欲しいところです。はさみツールで画像を切り抜くがごとく、1つの命令で1つのアクションをこなす「文房具」的な動作ではなく、1つの指示で100でも1000万でも命令をこなすような「インテリジェントな」動作を行ってほしい。


……そこに加わるべき「インテリジェントなエッセンス」こそ「Newton」のフレーバーではないかと、「えせNewtonプロジェクトチーム」は考えています。


怪人Sal Soghoain、2年前に思わせぶりなセリフを残す

えせNewtonの構成要素のひとつが、AppleScriptと周辺アプリケーションであることは前回に説明しました。

MacOS標準搭載の言語解析エンジンをパーサーとして、命令とパラメータを認識。必要な命令を補助アプリケーションに投げて実行させれば、Newtonもどきな環境は作れるのではないだろうか、というのがその内容でした。



実は、AppleScript製品担当のSal Soghoianが2年前に来日したときに、直接本人に聞いたことがあります。



Piyomaru:言語解析エンジンを介して、簡単な文章を認識し、AppleScriptのリクエストをオンザフライで自動生成し、擬似的にインテリジェントな環境は作れるように見える。そういう研究はしていないのか?



Sal:Newtonのような環境のことを言っているのだろうが、具体的なことは答えられない。ただし、AppleScriptの自動生成については研究をしている。



……悩ましいお返事(^-^; また、彼はこのようにも言っていました。



Sal:MacOS XのAppleScript環境では、MacOS以外の機器をコントロールできるようになる

……

このときには、家電コントロールのX-10を標準採用(現在はサードパーティのOSAXが必要)する程度かと考えていたものです。しかし、その種明かしは2001年7月のMacWorld Expo NYで唐突に行われました。


怪人Sal Soghoian、Seybold Seminorsで「SOAP!」と吠える

それが、MacOS Xで採用された非同期分散オブジェクト環境「SOAP」(Simple Object Access Protocol)。

アプリケーションへのイベントを投げる際に、MacであればAppleEventの形で「特定のアプリケーション」の「特定のオブジェクト」に対して「特定のリクエスト」が発行されます。これをAppleTalkもしくはAppleTalk over TCP/IPで他のMacに投げるわけですが、オフィスの他のマシンであっても地球の裏にいるマシンであっても非常に簡単にリクエストを投げられるものの、その相手はあくまでMacに限られてしまいます。

これを、MacOS以外のマシンに対して環境を問わずに行えるよう規格化したのがSOAP。AppleTalkではなくオープンなTCP/IPを用いて、イベントの内容はXMLで投げます。

「Salが言っていたのは、これのことだったのか! 

しかし、なんで基調講演のステージでイエーとかウオーとか叫びまくってんだこの人は!!(^-^;」

Seyboldの基調講演では、実際にMacOS X 10.1のAppleScriptを用いて、SOAP経由でサーバーにリクエストを投げて、気象条件に基づいてIllustrator上に作られた全米の地図を色分けするデモがSal Soghoianによって行われ、来場者の拍手喝采を浴びていました。



以後、SOAP関連のドキュメントを漁り、情報収集にいそしむ毎日。そして、このSOAPが「えせNewton」実現のためのキーとなるテクノロジーのひとつになることを確信しつつあります。

MacOSに載っていないアプリケーションについては、他のOS上に実装されているアプリケーションを利用。非インテリジェントなアプリケーションを組み合わせてインテリジェントな環境を擬似的に作れる(かもしれない)SOAPの思想は、AppleScriptをその源流に持つだけあってMacユーザー(というよりも、AppleScriptユーザー)にはなじみやすいでしょう。



誤解を恐れずに言ってしまえば、「 バカを100人集めて組織化することで1人の天才以上の力を発揮させるという発想」といえば分かりやすいでしょうか。……なんかちがうか、、、 


現在のSOAPに欠けている要素

しかし、SOAPの規格を調べれば調べるほどに、まだこの規格が「使いもの」になるレベルに達するには幾年かの熟成が必要であることが分かってきました。



イベントを投げる相手がどのようなアプリケーションを用いるかについては抽象化されているので、それがDB2であろうとORACLEであろうとINFORMIXであろうと別に構わない。しかし、そのデータなりアプリケーションがどこにあるかを「明示的に」示さなくてはならない。これがやっかいです。



「どこに何があるか」を集中的に管理するサービスが不在なので、これをまとめて管理する必要が早晩生じるでしょう。

また、その「何」を指し示す際には言語(英語とか日本語とか)の差異を吸収できる仕組みが必要。

リクエストを行うXMLの中に言語タイプが指定できるので、それを基にパラメータを翻訳して渡すとか。

 DNSのような分散データベースであっても、Sherlockのようなクライアント側で複数のサーバーに対して串刺しリクエストを行うタイプであってもよいが、リクエストを投げる相手自体を抽象化できるとうれしい。



そして、SOAPによるリクエストをうまくキューイングして負荷分散を行う仕組みも必要となってくるでしょう。大規模なシステムでXMLベースのリクエストを大量に流した場合の検証はまだまだこれからといったところ(IBMやMicrosoftやHPがすでに実験を行っている可能性はある)?



また、広域にユーザー認証できるシステムも必要。リクエストがどこかのサーバーのSOAPベースアプリケーションを通るたびにユーザー名とパスワードをキーボードから入力させられてはたまらないですから(そんな風に実装するとは思えませんが、一応)。



ただし、これらの仕組みが出来上がれば、エージェント的な動作が非インテリジェントなアプリケーションの組み合わせで実現できることでしょう。


えせNewtonの実現した姿は……?

えせNewtonを実現するのに現代のありとあらゆるテクノロジーを動員するのは、いささか大げさと取られるかもしれません。

しかし、実際のところNewtonにこめられた思想を「本気で」実現するにはまだまだ不足気味です。



おそらく、初期のえせNewtonは、インターネットに常時接続されたPowerMac G4の上に、一般的なアプリケーションを組み合わせて実現されるでしょう(ViaVoiceでコントロールしているかもしれない)。

そして、それを見たデベロッパーが着想を得て、もっと小振りなアプリケーションで再構成し、iBookやPowerBookでも使いものになるレベルに達するに違いありません(?)。



しかし、それでも小型の持ち運びできるデバイスにその環境を集約できるかどうかは定かではありません。

AppleがPowerBookをさらに小型化することは考えにくいので……下手をすると、フロントエンドの部分はPalmか何かのデバイスを用いて、これがインターネット経由で自宅に置いてあるPowerMacにリクエストを投げ、PowerMacが処理を行って結果だけ返す形になるかもしれません。



ちょっとだけ風呂敷を広げてみましたが、実際のところは着実に「できること」から手を付けていくのが正しいのでしょう。

とにかく、スクリプタブルなアプリケーションのうち「欠けているもの」を補っていくことが最優先課題であろうかと。



ただ、それがひじょうに地味で地道な作業であるだけに、このようなロードマップを書いておくことが肝要と思っている次第(^-^;。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive #1 始動

Posted on 10月 4 by Takaaki Naganoya

Appleが世界に先駆けて商品化したPDA(Personal Digital Assistant)、「Newton」(ニュートン)。

市場の評価は悪くはなかったものの、会社の方針転換で販売終了となり、いまでは中古でしか入手できません。

Newtonに採用された技術はなかなかのもので、一度さわってみると「なぜこの使用感をMacOSに取り入れない?」と疑問に思ってしまうほど。

Newtonのクールでナイスな操作感覚

Newtonで「すげーなー」と感心させられるのは、スケジュールの予約。「Meet Takamatu Saturday」と入力して(どこぞのPDAのように升目に入力なんていわず、画面全部を使って入力。漢のPDAといえるでしょう)、アシストボタンを押すと……

 Meet……スケジュール予約なんだな

 Takamatu……住所録からTakamatu氏を検索して

 Saturday……こんどの土曜日かー

と、勝手に解釈してスケジュール予約をしてくれます。時間と場所が抜けていれば、それをどうするかも聞いてきます。
すばらしい。ペン入力はこのさいどうでもいいので、このようなインテリジェントかつアバウトなクエリーを受け付けるソフトを作れないものか……そう考えた人は少なくないはずです。

Newton復活の要素はすでにある?!

よくよく考えてみると……個別のパーツはすでに身の回りに転がっていることに気付きます。

アプリケーションの間を取り持つグルー(糊)言語であるAppleScript。MacOS標準登載の言語解析エンジン、AppleScriptから操作可能なスケジューラー、あと抜けているのは……曜日を計算する「カレンダー計算機」とでも呼ぶものだけです。

仕事柄、Info-macのCD-ROMをすべてひっくり返したり、世界中のダウンロードサイトからダウンロードしまくって、スクリプタブルな(AppleScriptから操作可能な)アプリケーションの調査を行っています。

たまに、とんでもないソフトがスクリプタブルだったりして(モールス信号の解読プログラムとか、PDP-11のエミュレータとか)、腰を抜かすこともあるのですが……その一方で、「なぜ、このジャンルでスクリプタブルなものが存在しないのだ?」と、首をひねってしまうことも。

そうした意味で、よくよく調べてみたら……「カレンダー」にスクリプタブルなものが存在しないことが分かりました。Newtonライクなソフト「なんちゃってNewton」を作るための要ともいえるソフトが世界中さがしてもないということです。なんてこったい!

スクリプタブルなカレンダーを作っちゃえ!

Office:mac付属のEntourageはスクリプタブルじゃないか! という指摘はあるかもしれません。しかし、あれは単にスケジュールとか住所録とかメールの機能だけで、カレンダーとして期待するような機能はいっさい実装されていないのが現状です。マイクロソフトさん、そこんとこひとつよろしくぅ!(^ー^;

それでは、スクリプタブルなカレンダーというものに、どういう機能が実装さるべきかを考えてみることにしましょう。

基本的には、カレンダーがらみの「計算」を行ってくれるもの、ということがいえましょう。

next Saturday……次の土曜日の日付けを返す。もちろん、月曜日から日曜日まで指定可能
10 days after……(今日から)10日後の日付けを返す。afterとbeforeの日付けの相対指定
today in next year……来年の今日の情報を得る。33年前の自分の誕生日の情報を得たりもできる
left in this month……今月の残り日数を得る
left in this month in business……営業日で今月の残り日数を得る。公的な休日や会社や個人の休日については、別ファイルに記述しておく。「in business」オプションは、その他の相対日時指定にも使用可能
get calendar in this month……指定月のカレンダーをテキスト形式で取得
age from "1968/8/8" to today……指定日からの年令(期間)計算。

といったところでしょうか。

強力な助っ人、強力な製品!

……ということを友人のありたゆきお氏に話したら「えっ、そんなもんでいいの?」ということに。くぅー作れる人間は言うことが違う! さらに、IBMがViaVoiceの新版を発売。えせNewtonプロジェクトも急に盛り上がりを見せてきました。

……そんなわけで、ペン入力でなく音声入力でNewtonライクなことができないかというプロジェクトが本格的に始動しつつあります。途中でコケても、その成果物はそれなりに意味がある?!

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

Newt On Project〜Story Archive 0

Posted on 10月 4 by Takaaki Naganoya

2002年にAppleScriptで、現在のSiriのようなシステムを作ってデモを行っていました。

そもそも、本Blog「AppleScriptの穴」は、このNewt On Projectで作った膨大なAppleScirptを分解して掲載し、macOSのアップデート時の差異から動作しなくなることを防ぐべく、一般に公開することで動作しない場合のレポートによりメンテナンスすることを目的として設立したものです。そのために、初期からカレンダー計算系のScriptが異様に充実していたのです。

このNewt On Projectの件については、国内外で紹介してきましたが、MacScripter.netの管理人から「その時代にAppleScript Studioは登場していない。あんたは嘘つきだ!」となじられました。

たいへんに失礼な話であり、自分の知識のなさと想像力の欠如と技術力のなさを棚に上げて「嘘つき」呼ばわりとはたいしたものです。当時、AppleやMicrosoftの人間やら、一般のMacユーザーの前で何度もデモを行なってきているので、それをなかったことにしようとは。

さらに、ムービーに映っているメニュー左上には「Word」と表示されているのがわかります。目が見えていればそれも認識できることでしょう。このScriptはMicrosoft Wordをフロントエンドとして、Microsoft Wordの機能を活用して動作していました。

現在、2002〜2003年ごろに書いたNewt On Projectの記事アーカイブについてはWeb上に残されていません。そのため、そうした心無い人々が「嘘だ」と言ったとしても、実際に動くバイナリとYouTube上のムービーしか残っていない状態です(ちょっと前にedama2さんが実際に動かして遊んで驚いていました)。

そのため、過去の記事ではありますが、Newt On Projectの成り立ちや実際のデモ風景などをまとめた記事アーカイブを掲載しておくことにしました。

Posted in Natural Language Processing Newt On Project | Tagged 10.1savvy | Leave a comment

電子書籍(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