2004-04-12[n年前へ]
■ようこそ「辞書単語登録プログラミング」の世界へ
ATOKではじめるperlスクリプト
日本語を使う日本人として、PCを使っていて不便を感じることは多い。例えば、URLを入力するときには半角英文字入力モードに切り替えてキーをタイプしなければならないのに、その一方メールを書くときにはATOKの全角ひらがな入力モードに切り替えてキーをタイプし日本語を入力しなければならない。そして、そのメールを書いている途中にアルファベットのフレーズが出てくるようであれば、また文字入力のモードを切り替えなければならない。基本的にアルファベットだけを使うラテン語系の言語と違い、日本語のような多くの文字を入力するためにIMEなどのプログラムを使わなければならないとなると、どうにも不便を感じることが多い。そんな時、アルファベット文化圏に生まれなかったことを少し残念に思ったりする。
しかし、短所と長所は紙一重の表裏一体のものである。短所と長所が表裏一体というからには、どんな視点から眺めるかで、その表と裏は短所にもなれば長所にもなるハズである。IMEなどの日本語入力システムを使わなければならない不便さも、少し考え方を変えてみればきっと何かの便利さにも姿を変えるハズである。例えば、「グーグル」なんていう言葉を"
www.google.com"と辞書に単語登録してさえおけば、入力の手間を少し省くことができる。つまりは、日本語入力システムがブックマーク代わりになったりもする。つまり、日本語入力システムを単なる「よみ→漢字」という変換を行うデータベースにしておくのではなくて、「名前→URL」という変換を行うデータベース代わりに使うと便利であったりする。
そんな考えをさらに進めて、少し前にATOK数式処理プラグインなんていうものを作ってみた。JUSTSYSTEMの日本語入力システムATOKに数式処理機能を追加することで、数式計算を日本語入力と同じような感覚でできるようにしてしまうというツールを作ってみたのである。つまり、日本語入力システムを使えば「ひらがなの読みを入力すれば漢字が表示される」のと同じように、「数式を入力すればその計算結果が表示される」というものを作ってみたわけだ。日本語入力システムを使わなければならない不便さを、それを使えば、「どんなに算数が苦手な人であっても、誰もが天才算数少年になることができてしまう」という短所・長所変換システムを作ってみたのであった。
もう少し言い換えると、「有限の『よみ』を有限の『漢字』に対応させる」といったような「有限のデータベース」だけではなくて、「(色んな無限のパターンがある)数式→(色んな無限のパターンがある)計算結果」という無限のデータベースに日本語入力システムを変えてみたわけである。今回はそんな考えをさらにさらに押し進めて、ATOKの機能を必要以上にムダに機能拡張してみたい。
というわけで、今回は「数式」ではなく「perlスクリプト」プラグインを仕立ててみた(最新バージョンはperlだけでなく、ruby,awk,何でもござれバージョンになっています)。「数式」も「perlスクリプト」も結局は「プログラム言語」であって何ら違いはない(ATOK数式処理プラグインではクリップボードを変数として使うこともできる関数でもあった)わけだが、色々なことを実現しようとするならばperlの方が高機能であるに違いない。そこで、Windowsにインストールされたperlの機能をATOKから使うことができるプラグインを作ってみた。「そんなもの何の役に立つ?」「無意味にムダじゃないの?」と思う人が多いだろうし、その疑いは必ずしも外れてはいないのだが、とりあえず少し使い方の説明をしてみることにする。
例えば、まずは「perlスクリプト・プラグイン(最新バージョンはperlだけでなく、ruby,awk,何でもござれバージョンになっています)」を使って、これまでの「数式処理プラグイン」と同じようなことをしてみることにしよう。ソフトウェアをインストールした後でATOK上で半角英数で入力中に、まずは
print sin(3)/5 |
と入力して「AMET変換」すると、
0.0282240016119734 |
という風に計算を行った結果が出力される。もちろん、これまと同じように入力語句の末尾に"="を付けて
print sin(3)/5= |
と入力して「AMET変換」すると、
print sin(3)/5 = 0.0282240016119734 |
というように、入力スクリプトとその実行結果(計算結果)が共に出力される。なんと、これでATOKユーザーならばperlの数式処理機能を全て文字入力中に使うことができるわけである(perlがインストールされていれば)。
また、クリップボードにテキスト形式のデータが入っていれば、その内容が入力されたファイルがperlスクリプトに引数として渡される。だから、例えばクリップボードに
いろはにほへと ちりぬるをわか よたれそつねな らむうゐのおく やまけふこえて あさきゆめみし ゑひもせす |
なんていうデータが入っている時に、ATOKの文字入力で
$i=1;while(<>){print qq/$i: $_/;$i++}& |
と入力(末尾の&は出力結果が長くなるときのおまじない)して変換すると、クリップボードにコピーされていたデータを
1: いろはにほへと 2: ちりぬるをわか 3: よたれそつねな 4: らむうゐのおく 5: やまけふこえて 6: あさきゆめみし 7: ゑひもせす |
と行番号付きで出力することができる。
つまり、ATOKを使う限りにおいては、どんなアプリケーションであってもperlの機能を使うことができるわけだ。上の行番号を出力した例のように、メモ帳からでもあるいはノートパッドからでもperlの機能を使った機能拡張をすることができるわけだ。メモ帳ですら、perlの正規表現を駆使した整形処理をすることができるようになるのである。
えっ?こんな「perlスクリプト」を入力するのはメンドくさい?こんな"$i=1;while(<>){printqq/$i: $_/;$i++}&"なんていうプログラムを毎回毎回入力できるハズがない? うーん…何のためのATOK、何のための辞書変換、何のための日本語入力システムだろうか? …そう、こんな「perlスクリプト」はただ辞書に単語登録しておけば良い。「ぎょうばんごう」なんていう「読み」で"$i=1;while(<>){printqq/$i: $_/;$i++}&"という文字を登録しておけば済むのである。すると、最近のATOKであれば予測入力すらできてしまうから、二回目からは「ぎょう」という辺りまで入力したときにはすでに「perlスクリプト」が表示されているハズなのである。これがATOKではじめる「辞書単語登録プログラミング」なのである。これからの時代は「入力予測システム」「プログラム・データベース」「クリップボードを用いたファイル不要のプログラミング」という実にお気楽環境なのである。
そのお気楽プログラミングでどんな便利が手にはいるかというと、例えば「じこく」という「読み」に
($s,$m,$h,$d,$o,$y,$w,$i)=localtime;print qq/$h:$m:$s/; |
というような、文字を登録しておけば、「じこく」でAMET変換すると
0:18:16 |
という風に時刻を表示させることもできるし、例えば
ねん = "($s,$m,$h,$d,$o,$y,$w,$i)=localtime;$y+=1900;print qq/$y\//;" がっぴ = "$s,$m,$h,$d,$o,$y,$w,$i)=localtime;$o++;print qq/$o\/$d/;" じかん = "$now=localtime;print qq/ $now /;" |
なんていう風に登録しておけば「ねん+がっぴ」を変換すれば
2004/4/12 |
になるし、「じかん」であれば
Mon Apr 12 00:22:27 2004 |
というように自動入力することだってできるのである。
もちろん、system関数だって使えるわけだから、他のプログラムの機能を使うことだってできる。もちろん、他のプログラムの機能を使うまで行かなくても、他のプログラムを起動だけさせるなんてことだって簡単にできる。例えば、「でんたく」なんていう読みには"system(calc)"というような文字を辞書登録しておけば、「でんたく」と入力しperlスクリプトを表示させた後に変換を行うと、電卓が起動するようになる。
上に挙げたものは、とても簡単なサンプルに過ぎない。おそらく、perlを使いこなす人たちであれば、色んなperlスクリプトで色んな機能をATOKに追加していくことができるに違いない。
というわけで、今回はこんな「ATOKperlスクリプト・プラグイン」のご紹介をすることで、ATOKではじめる「辞書単語登録プログラミング」の世界へようこそと宣言をしてみたい、と思う。Windows上でATOKを使っていて、perl使い、という人がどれだけいるかは判らないが、一行プログラミングならぬ「辞書単語登録プログラミング」も面白いかも、と小さく呟いてみたいと思うのである(ちょっと弱気)。
2006-10-31[n年前へ]
■「時間と場所をわきまえた(TPO)予測入力変換」「わからないこと」「 B級タレントが身近にいたら」
「時間と場所をわきまえた(TPO)」予測変換入力システム・「AmetMulti + 携帯GPSデータ」「わからないこと」 from n年前へ.
「わからないこと」を無理してわかろうとしない方が良いんだ「わからないこと」というのはたいていどこかおかしい
同じユーザであっても違う時間にいるなら、それは違うユーザと考えた方が良いこともあるし、(その同じユーザが)違う場所にいればそれも違うユーザと捉えた方が(そして違う文字を予測した方が)良いこともある
「最後は自分がどうするかなんだぞ」っていうのを常に言われたんです。自分がどうするか決めた一球っていうのは、誰にも文句を言われる筋合いはないって、そういう話ばっかりするんですよ。
2007-12-14[n年前へ]
2010-03-13[n年前へ]
■「時間と場所をわきまえた(TPO)」予測(日本語)変換入力システム (初出:2005年11月01日)
下の記事を書いたのは、もう5年近く前のことになります。この記事を書いた時には、1,2年もしないうちに、文字入力システムは、この記事で書いたような”「時間と場所をわきまえた(TPO)」予測変換入力システム”になっているだろう、と思っていました。しかし、現実には、そういう製品を未だ見かけていないのが、私には少し解せません。そういう未来にならなかった理由は、文字入力に必用な速度を実現できないと言った実装上の、問題なのでしょうか。それとも、そもそもそういったニーズがない、というようなことだったのでしょうか・・・それとも、こういう考え方がそもそも間違っていたのでしょうか。
先月、独立行政法人産業技術総合研究所の増井俊之氏が「携帯端末での文字入力インタフェースの POBox(Predictive Operation Based On eXample)」で第4回ドコモ・モバイル・サイエンス賞」先端技術部門 優秀賞を受賞した。 POBox のようなシステムは、過去に入力した単語・文字の繋がりから、次に入力する文を自動で予測・表示・入力してくれる。つまり、POBoxのようなシステムは「(他の誰でもなく)そのユーザ自身の過去の動作」にもとづいて、「現在・未来に入力する文章を予測」するわけだ。
類似の文字入力システムは、私の携帯電話にも搭載されており、私もとても重宝している。例えば、私の携帯電話では「も」という文字を入力しただけで、「申し訳ありません」と出てくる。もちろん、「ま」という文字ならば、「誠に申し訳ありません」である。あるいは、それが「い」ならば、「今から送付いたします」である。その「過去に入力した単語・文字の繋がりが謝罪ばかり」という点は実に情けない話のだが、その予測文字を毎回使うというところもさらに情けない。 つまりは、あまりにワンパターンの動作を私はいつもしているわけだ。
先日、増井氏の「携帯から位置情報を利用」というUNIX MAGAZINEの記事(PDF)に影響されて、自分用に「 (au)携帯電話GPSス位置追跡ページ」を作った。そして、自分が「いつ」「どの場所にいるか」のデータベースを作り始めた。作った理由はいろいろあるのだが、その一つが携帯電話の文字入力をもっと楽にするために、自分用に(自分の時間やいろ場所やその瞬間に書いたメールを把握することで)「時間と場所をわきまえた(TPO)」予測(日本語)変換入力システムを作りたかったのである。時と場所に応じて、書く文章というのは違うのだから、それを考慮した予測(日本語)変換システム(TPO式POBox = TPOBox)が欲しかった、ということである。
たとえば、8:00 A.M に「お」と私が入力したら、たいていの場合次に続く文字は「おはようございます。」である。そして、9:00 A.M ~7:00 P.M.の間は「遅れて申し訳ありません。」が多い。7:00 P.M.過ぎは「お疲れ様です」という感じだ。つまり、メールを書く時間によって、同じ文字から始まっても「違う文章」を書くことが多い。つまり、(同じ私という人間であっても)それほど「ワンパターン」ではないのである。
そして、それは場所によっても同じだ。例えば、平日の9:00 A.M.に品川近辺にいる場合、それは打ち合わせ場所に向かう状況が多いので、「い」という文字を入力した場合に次に続く文章は「今、品川におりますので、あと30分ほどで到着します。」という感じのものが多い。そして、それが平日の8:00 A.M.に東京近辺にいる場合には、違う出張先へ行く場合が多いので、「今、東京に着きました。そちらには9:45に到着予定です。」という感じが多い。つまり、時間と場所によって、入力する内容が自動的に決まる、入力する内容は時間や場所に依存しているのが普通だと思う。
先ほど、「(他の誰でもなく)そのユーザ自身の過去の動作」と書いたが、「同じユーザであっても違う時間にいるなら、それは違うユーザと考えた方が良いこともあるし、(その同じユーザが)違う場所にいればそれも違うユーザと捉えた方が(そして違う文字を予測した方が)良いこともある」ということだ。そして、そんな「時間と場所に応じたユーザの過去の行い」を学習し、「時間と場所をわきまえた(TPO)」予測(日本語)変換入力システムが携帯電話に搭載されたあかつきには、きっと入力がとても楽になるに違いない、と想像している。つまりは、それは「TPOも考えるならば、すごくワンパターンの行い・繰り返しをユーザがしている可能性が高い」という、現実を示すことになってしまうのだが…。