2004-02-09[n年前へ]
■ビジュアルプログラミング
AutoMouseの元になっている「ビットマップに基づくビジュアル言語に関する研究」とか「ビットマップに基づくビジュアル言語」なんてとても面白い論文集。
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使い、という人がどれだけいるかは判らないが、一行プログラミングならぬ「辞書単語登録プログラミング」も面白いかも、と小さく呟いてみたいと思うのである(ちょっと弱気)。
2004-04-13[n年前へ]
■れっつ! 日本語(ひらがな)プログラミング(ATOKで…)
というわけで、ATOKでrubyでもawkでもperlでもなんでも使うことができるソフトウェアを作ってみたわけです。しかも、今度のバージョンはCONFIG.TXTに自分で定義した関数や置換ルールを決めておくことができるわけです(結局どちらもただの「辞書登録と同じ」置換ルールに過ぎませんが)。これで、ATOKの辞書登録は64文字までよルールに縛られずに済むわけです。「にちじ(日時)」でも「じこく(時刻)」でも何でもやり放題です。
で、このバージョンでは、そのCONFIG.TXTの定義次第で一見ヘンに見える色んなことができます。例えばCONFIG.TXTの作り方次第では
「0」のこさいんをしゅつりょくなんて入力して変換すると
perl -e "$param=0;$param=cos($param);print $param;"が実行されて、"1"という計算結果が表示されたり、
「でんたく」をきどうを入力・変換すると電卓が起動したり、
「かいぎょう」のかずをしゅつりょくをAMET変換すると、クリップボードに保存されている内容中に改行コードが何回出てくるかを出力したり、なんてことも簡単にできるわけです。もちろん、大阪弁や津軽弁のルールを決めておいて、お国言葉でプログラミングをしてみるのももちろんアリに違いありません。
というわけで、「レッツ!日本語(ひらがな)プログラミング」です。ATOKユーザーで何かのスクリプト言語や一般的なプログラミング言語を使う方なら、このソフトをインストールして、ぜひぜひCONFIG.TXTをテキトーに仕立ててみましょう。懐かしの「ぴゅう太日本語ベーシック」顔負けの、あなただけの「ひらがなプログラミング言語」を作ってみるのも面白いかも。えっ?全然面白くない…ですか?
2004-04-25[n年前へ]
■何でもかんでもSPAMフォルダへ
最近、受け取ったメールをなんでもかんでもSPAMフォルダに直行させています。例えば、メール中に"Hey,"なんて単語があったら、即SPAMフォルダに直行です。つまり、私からすると陽気なアメリカ人からのメールは全てSPAMです。もちろん、それだけでなくてメールの中に"ニイハオ"なんていう単語があってもやはりSPAM直行です。そう、私にとって中国人からのメールだって全てSPAMです。これには、少し私怨も混じってはいるのですけれども、とても失礼な話です。
さらには、各種言語で送られてくるViagra関連のSPAMに耐えかねたため、メールの中に"Vi*g*"なんて単語が入っていても、やはりSPAM直行です。たとえ、それが実は「酢」の売り込みだったとしても、私のメーラーはそれをバイアグラ売り込み関連のメールと判断して、SPAMフォルダに直行させてしまうのです。
というわけで、もし私宛に出した(〆切のある)メールへの返事が帰ってこない、という方がいらっしゃいましたら、お知らせ下さい。できましたら、"Hey,"とか"ニイハオ(の漢字)"とか"Vi*g*"なんていう単語が含まれていないメールでお知らせ頂くのがベターです。