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でperlだけじゃなくて、rubyやawk(その他大勢)を使ってみよう!
ようこそ「辞書単語登録プログラミング」の世界へで ATOKでperlスクリプトを使うことのできるソフトウェアを作ってみたわけです。すると、お笑いパソコン日誌のchicさんに
だったら awk版も欲しいとかいいだしたり(いまのマシンは充分に速いので、awkでも勝負になる)Ruby がとか、sed がといった声も出たりして。がはは。なんて書かれていたわけです。awk使いのATOKユーザーなんてこの世界に実在しているとはとても思えません。rubyユーザーでATOK使いだって、そんなにいそうにありません。いや、そもそもperl使いのATOK & Windowsユーザーだって、何人もいるとは思えないわけです。ですから、そんな「声」が出るとは思えません。
が、chicさんの「ひとこと」で気が変わったので、作りました。「chicさんのためだけに」ATOKでrubyでもawkでもperlでもなんでもござれのバージョンを作ってみました。というわけで、ATOKでrubyでもawkでもperlでも何でも使い放題です。ハイ。
さぁ、あなたがruby使いなら、ATOK上でprint Math.cos(0)とでもタイプしてみましょうか、いやそれどころかそれどころか…(次の項目に続く)。
■れっつ! 日本語(ひらがな)プログラミング(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-14[n年前へ]
■ATOKでperl(やその他大勢)プラグインを作った理由
麗美さんに
わはは。12日のぷらぷら日記に書いたことが聞こえたみたい(笑い)とツっコまれていました。当然ながら、それは聞こえていて、そのぷらぷら日記の影響も大きいです。ところが、実はATOKでperl(その他大勢)プラグインを作った理由への一つが、そもそも麗美さんたちの影響が大きいです。何故かというと、それはそもそもpukiwikiのプラグインに影響されているからです。
仕事用のメモや日誌はpukiwikiに書いているのですが、そんな時にはnow?とか#contentsとか#commentとかのプラグインがとても便利で使いまくるわけです。そしてそんな環境に慣れてしまうと、普通のエディタやその他のアプリケーションで作業していても、同じようなコマンドが使えないとどうにもストレスが溜まってしまうようになります。そこで、ATOKにその機能を持たせることにしたわけです。つまり、pukiwikiの作業環境をいつも使いたいから作ったのです。
最近、私の仕事周りでは各自のノートPCではもちろんpukiwikiが動いていますし、もちろんグループ用のサーバーでも動いているわけです。色んなアイデアメモや作業日誌やエトセトラ・エトセトラが色んなpukiwikiで記録され続けています。もう、使う人の数よりpukiwikiの数の方が多いくらいです。いや、人の数よりタスクの数が多いような環境下では実際そんな感じになってます。もう、pukiwiki無しでは仕事の作業効率が下がりまくりになるに違いありません(じゃぁ、そんなpukiwikiくん達が公認されているか、というのは実に残念ながら別問題なのですが…)。というわけで、各種開発者やドキュメント作成者の方々には感謝感謝の日々なのでした。
2004-04-16[n年前へ]
■画像入出力にも対応の「ATOK Perlプラグイン(ruby,awk,その他大勢)」
ATOKからperlを始めruby, awkなど色んなスクリプトやコマンドを実行できる、Amet Perlを少し手直ししました。変更点は「インストール時の動きの手直し」と「文字だけでなく画像にも対応した」ことです。「文字だけでなく画像にも対応した」サンプルとして、参考までに「漢字アート(アスキーアート)化」と「美人フィルタ」のコマンド・プログラムとそれを呼ぶスクリプトを付けておきました。perlやスクリプトを使うつもりがない方も、このサンプルソフトだけでも結構遊べるのではないか、とも思います。
使い方は、例えばクリップボードに画像がコピーされている状態で、エディターで「かんじあーと」なんて入力しAMET変換するとなんど(漢字の)アスキーアートが出力されます。ということは、メールに「漢字アート」の「誰かの顔」を貼り付けるなんて言うことも超簡単です。何かのプログラムを(意識して)操作したりする必要はありません。
あるいは、クリップボードに誰かの顔画像がコピーされている状態で、ノートパッドなどで「びじん」と入力してAMET変換してみましょう。ハイ、そうです、その人の顔がもう少し美人になった結果が画像でちゃんと貼り付けられます。それでも足りなければ、もう一回「びじん」と入力してAMET変換してみましょう。ハイ、そうです、もう一段「美人化」されて画像で貼り付けられます。必要な分だけ何段階でも、「美人化」させてみましょうか。えっ?失礼ですか…。
そう、もう画像処理だってATOKからできるわけです。どんなソフトを使っていても(画像貼り付けができさえすれば)できるわけです。もし、画像貼り付けができないソフトであれば、さらに「漢字アート化」してしまえば良いのです。いや、そこまで行くと、「できるかな?」的だとは思うのですがちょっとヘンかもしれないですね。
ここに貼り付けた画像はワードパッドで作業中の様子です。データ加工のためにソフトを切り替えたりはしていません。ただただATOKからの普通の入力だけで、画像を取得したり、その画像に画像処理をして結果を貼り付けたり、それを「漢字アート」にしたり、それをさらに文字整形して出力したり…、なんていうことが簡単にできるわけです。 …えっ?「仲間由紀恵」の画像をどうやって貼り付けたかって言うんですか?それは、私のAmetPerlには「なかまゆきえ」というコマンドが登録されていて、ちゃんと仲間由紀恵の画像を返してくれるんですよ。ね、便利でしょう?えっ、どうでもいいでしょうか、そんなことは?
という具合に、これからは、GnuPlotやGraphVizの出力だって、ATOKからソフトに簡単に貼り付けることがWindowsのほとんどのソフト上でできます。ATOK(とAmetPerl)を使ってさえいれば、どんなソフトウェア上でも、どんなテキストや画像でも自由に取り扱うことができます。と、書いても使い方が少しイメージしづらいかもしれませんから、使い方などは少しづつ書いていくことにしましょうか。もちろん、奇特にも使ってみたくて、「こんな風に使いたい」なんていう面白い希望があればもちろん「言ってみるが吉」です。