hirax.net::Keywords::「Perl」のブログ



2004-04-25[n年前へ]

「辞書単語登録プログラミング」 面白一発芸 編 

「文字」も「画像」も自由自在だぁー

 Windows上で日本語を入力するためには、(Windowsに標準添付されているMS-IMEのような)IMEと呼ばれるソフトウェアを使わなければならない。前回、そんなIMEの一つであるジャストシステムのATOKから、さまざまなプログラムを呼び出すことのできるツール(AmetMulti)を作ってみた。ATOKから、(AMETと呼ばれる機能を使って)perlやawkといったコマンドライン上で動くプログラムを呼び出すことができるようにしてみたのである。
 しかし、そんなツールの使用例として前回紹介したのは数式処理だったり、日時処理だったり、文章整形だったり、と少しばかり一般受けしない内容だったように思う。便利ではあるのだが、何だか内容が少しばかり地味であったように思う。だから、実際「ホラホラ、このツール便利でしょう?」と周囲の人に自慢してみても、デモをして見せた相手の人達の反応がどうにも良くなかったのである。

 いや、面白がる人達もいるにはいるのだが、そんな人達は間違いなくATOKを使っていなかったり、そもそもWindowsを使っていないのである。マニアックなEmacs使いの変人であったりしたのである。
 だから、Windowsを使っていて、Windows上でATOKを使っている人は数式処理や文章整形にはこれぽっちも興味を示さないし、そんな内容に興味を示す人はWindowsもATOKも使っていないし、というなんともイマイチの状態だったのである。そのため、私の「他人に自慢したいココロ」はちっとも満たされず、欲求不満の毎日だったわけである。
 

AmetMultiの使用例
数式処理例時間処理例文章整形例
入力print sin(3)/5ねんがっぴ じこくぎょうばんごう
変換結果0.0282240016112004/4/12 0:18:16 0001: いろはにほへと 
0002: ちりぬるをわか 

 そこで、Windows上でATOKを使っているライト・ユーザー(偏見たっぷり)の興味を惹くために、そして私の「他人に自慢したいココロ」を満たすために、私はAmetMultiの機能を少しばかり(だけど見た目は大幅に)変えてみたのである。ATOK等の「IMEは文字入力をするためのもの」という先入観を捨てて、ATOKから画像を入出力することができるようにしたのである。つまり、文字を入力するとその文字に応じたプログラムが起動して、文字変換結果が画像となって出力されたりするようにしてみたのである。地味な数式処理や文章整形ではなくて、ド派手な画像でデモをすることにしたわけである。AmetMultiで画像入出力をしている様子 
 
 

 例えば、それはこんな感じだ。ワードパッド上で、私の辞書設定で「仲間由紀恵」と入力(AMET)変換すると仲間由紀恵の画像が出力されるのである。理由は簡単、私の「(ATOKではなく、AmetMultiの)辞書」には「仲間由紀恵」という単語に対して、「仲間由紀恵」の画像を出力するプログラムが登録されているからである。「仲間由紀恵」という文字が示す内容が、(機能アップされた)ATOKによってそのまま画像となって出現するわけである。


 そして、もちろんそれだけではなく、その後に「美人」なんて入力して(AMET)変換すると、アララビックリ美人化された仲間由紀恵の画像が出力されるのである。「仲間由紀恵」「美人化」という文字入力結果がこれまたそのまま、ワードパッドの文章上に「画像となって出現するのである。「辞書単語登録プログラミング」の思想の凄いところは、入力した文字を表すプログラムが呼ばれ、その結果単なる辞書変換では実現できない「単語を表す適切なもの」が出現するところにあるわけだ。今回の場合は、入力したユーザーの求めに応じて「美人化された仲間由紀恵」が何の苦労もなく出現するところなのである。
 もちろん、今回のモデルは仲間由紀恵なので、「美人化」するまでもなく十分美人であるわけだが、もしも「美人化」をしてもまだまだ「改良の余地有り」のお顔であるような場合は、すかさずさらに「美人化」「美人化」と連打・変換すれば良いだけなのである。画像処理プログラムを意識して使うこともなく、普通のワープロ上でそんな作業がデキルのである。(また、使う用途はほとんど無いとは思うが、「不細工」と入力し変換すれば画像の「不細工化」もできる)

 この右の例ではワードパッドを使ったが、もちろんATOKを使ってさえいれば良いのである。だから、それは別にMSWORDでもExcel上でも良いわけだ。単に画像を貼り付けることができるソフトウェアでありさえすれば、何でも良いのである。

 しかも、だ。もしも、画像を貼り付けることができないソフトウェア上であれば、ただこう入力すれば良いのである。「漢字アート」と。すると、アラアラ不思議、すると画像が漢字のアスキーアートとなって変換されるのだ。もちろん、アルファベットで画像を出力したければ、「アスキーアート」と入力変換すれば良いだけである。そうすれば、純粋なアルファベットからなるアスキーアートとして仲間由紀恵が出力されるわけだ。そう、文字で入力した結果が「ある時は画像」で、「またある時は文字」で、文字と画像を自由自在・縦横無尽に変換しまくることができるのである。こんな機能があれば、例えばメールに自分の顔を文字で描いた署名を付けるなんていうのも簡単に行うことができたりするのである。もちろん、その際にはその顔文字を出力するルーチンを「署名」という単語としてでも登録しておけば楽になるだろう。
 

 ところで、ここまではAmetMultiに標準添付されている機能(仲間由紀恵画像出力機能は標準添付ではないが)でできることを眺めてみた。しかし、便利に使うことができる色んなソフトを使えば、さらにAmetMultiの使い勝手はアップする。例えば、GnuPlotの機能を使えば、数式のグラフ出力がATOKを使って行うことができるようになったり、表をコピーしてその内容を自動でグラフに描画して変換出力することができたりする。

 あるいは、WinGraphVizでも使えば、これまた面白いことができる。例えば、マンガ・アニメの「名探偵コナン」の登場人物達の関係を説明する

コナンは蘭を好き
蘭は新一を好き
コナンは新一に戻れない
なんて文章を入力した上で、その内容をクリップ・ボードにコピーしてみよう。そして、例えば「関係」だなんて入力・変換すると、その三人(コナン・蘭・新一)の関係が図になって変換出力されるわけである。これは、マンガの登場人物の例だが、例えば入力する内容を職場の人間関係や恋の悩みに置き換えてみると、色んな面白いことができるわけである。曖昧模糊とした人間関係を豹変する言葉を入力・変換すると、その曖昧模糊とした関係が見事なまでに表現された図を手に入れたりすることができるわけである。
 
 
 
GnuPlotを使った例WinGraphVizを使った例
入力語句「sin(x)*sin(y/2)」のグラフコナンは蘭を好き
蘭は新一を好き
コナンは新一に戻れない
(上の文字を入力コピー後)関係
変換結果

 AmetMutiやその他のツールによりパワーアップされたATOKを使えば、適当に入力した文字(数式)の内容が表現された様々な形の結果を得ることができる。「辞書単語プログラミング」により、文章の内容を「それを表現する適切な文字」のみならず「それを表現する適切な画像」に変換したりすることもできるようになったのである。「辞書単語登録プログラミング」の新たな世界を勝手に作ってみたわけなのである。
 

 で、当然私は「他人に自慢したいココロ」を満たすために、周りの人に上のようなデモを色々としてみた。この面白一発芸風のデモを見せれば、必ずや「辞書単語登録プログラミングの面白さ」が伝わるに違いない、と信じてデモをしてみたわけである。前回の数式処理・時間処理・文章整形なんかのデモと違って、派手で面白さも伝わるに違いない、と考えて必死にデモをしてみたわけである。
 しかし、結果は散々なものだった。「へぇ~、面白いね~、その漢字アートってぇ」 とか、「そー、そー、こんな人間関係とか、恋の悩みってあるよねー」「これって使えるかもー」という風に今度はそのサンプル・アプリケーションにばかり聴衆の興味は集中して、誰も「辞書単語登録プログラミング」に興味はこれっぽっちも持ってはくれなかったのである。誰も「辞書単語登録プログラミング」なんて言葉を口にすることもなく、私の「他人に自慢したいココロ」はやはり満たされぬままに終わってしまったのである。「辞書単語登録プログラミング」の新たな世界を開くハズが、単なる面白一発芸で終わってしまったのである。Windows上でATOKを使っているライト・ユーザー(偏見たっぷり)のココロを掴むのは実に難しいのである。

 しかし、である。私はあきらめない。「辞書単語登録プログラミング」動画表示編(アスキーアートでパラパラ動画)や、「辞書単語登録プログラミング」エミュレータ編(ATOKからMS-IMEを使ってみよう編)など、できる限りの力を尽くし世間の役に立ちまくりのアプリケーションを作ることで、「辞書単語登録プログラミング」の可能性を広めていきたいと誓うのである(大ウソ)。一回作ったからには、放置プレイにしたりはしないと誓うのである(100%の確率で大ウソ)。

バッドノウハウカンファレンス 2004 

 (遠くから)その題名にはとても興味を持って眺めつつも、渋谷は遠いし、街は騒がしそうだし、perlは別世界の魔術だし、なんていう風に思っていたりもしたけれど、何かの縁ということもあるわけで、とりあえずバッドノウハウカンファレンス 2004に参加してみることにしよう。「バッド」でも「グッド」でも何にせよ「ノウハウ」なんて持ち合わせていないから、話す内容は「オッパイ星人とバッドノウハウ(仮題)」とでもしておこうかな、と。

2004-04-27[n年前へ]

今日の神さま 

 AmetPerl(AmetMulti)のインストール方法。参考になります。うぅ、ありがたや…。

 そういえば、私の実験室には「エクセルは敵だ!」という標語がホワイトボードに大きく書いてあります(本当)。で、「マウスクリックは一日百回まで」という、標語も小さく(残念ながらこれも本当)書いてあります(だけど、こっちはさすがに無理だった)。で、少し前に今年の新人くんからはExcelを取り上げて、代わりにPerlやら、GnuPlotやら、ghostscriptやら、そこら辺のソフトをインストールさせました。で、何も知らない新人くんに、まさにパワーハラスメントで「みんな、Atokでワンライナーだよ。AtokでGnuPlotだよー。PSは手書きだよー。みーんな、そーだよ。それが社会人の常識だよ。えー知らないのー?」と教えました。いや、教えたというよりは、力ずくでそう言い放ったわけです。

 ふと、昨日その新人くんに「**くんコンピュータって好き?」って聞いてみたわけです。すると、小さな声で「…もともと苦手だったのですけど、ますます好きじゃなくなりました…」と呟きました。彼にこれまでに課した(実験の片手間で、コンピュータなんか使わない部署の割には)凄まじいコンピュータ地獄を考えると、そりゃ、そーだよなー、と思ったわけです。何しろ、彼はこれまで「あのね、実は明日トラックにイッパイのアレが来るの。しかも、三度に分けて。だからさ、明後日までにFlashMob I位のこと完成させてね。あっ、でも悪いけどFlashMob Iと違って全て一人でね」なんていう地獄を考えると、まぁ当たり前なわけです。

 彼がWEBで日記書いたら面白いかもなぁ…。あまりに、不幸で…。

2004-05-07[n年前へ]

祝!初のライトユーザー応募 編 

 Ametumultiのライトユーザー募集をしてみても…。ATOKユーザー自体が少ないのか、Windows上でATOKを使っていてEmacsなんて使わないライト・ユーザだけどスクリプト言語を使いたい人なんてそもそも存在しない(可能性高し)のか、と悩む今日この頃です。

 しかし、初のライトユーザー応募がありました。私の中の「オレ定義」ではWindows上でATOKを使っているライト・ユーザがRubyを使ったりはしないような気がするのですが、何はともあれありがたいことです。いや、そもそも不親切の作りっぱなし放置プレイばかりの私ですが、よろしくお願いいたします。

> Windows上でATOKを使っているライト・ユーザです。> 「ATOKを使ってて、ATOKから便利ソフトを使ってみたい> 初心者(ライトユーザ)さん」を募集、> の成り行きを興味深く見ていたのですが、誰も名乗りを上げないようなので、> 私で良ければ、ぜひとも手も足もリードして頂きたく思います。私の中の「オレ定義」ではWindows上でATOKを使っているライト・ユーザがRubyを使ったりはしないような気がする(それをいったら一体どんな人が使うというのか…)のですが、ぜひよろしくお願いいたします。むしろ逆にリードして頂きたいです。> AmetMultiへの希望です。> 1. UseCtrlCが欲しい。> 2. 変数に値を渡す方法が改良されて欲しい。> 3. 「こんな風に使いたい」> 1. UseCtrlCが欲しい。> コピー機能があると便利だと思います。> http://opal.s8.xrea.com/tmp/linenum.swf.html> を見て頂けるでしょうか。以下の流れになっています。> 1. 加工したい箇所を選択> 2. Ctrl-Cで選択範囲をクリップボードにコピー> 3. "linenum"入力> 4. Ctrl-9で、設定したAmetMultiを呼び出す> 5. 選択範囲が、AmetMultiの出力に置き換わる> この2の操作を、4に入れられたら楽だ、> 次のように書きたい、ということなのです。> linenum> UseCtrlC;while gets;printf %Q(%2d:%s),$.,$_;end;UseCtrlV> #IME入力前の動作はAmetの範囲外ですかね? うぅ、それは普通に考えるとATOKの範囲外でしょうが、上手い抜け道はないものでしょうかねぇ…。> 2. 変数に値を渡す方法が改良されて欲しい。> +> $param=%Q(> > );while gets;print %Q(#{$param}#{$_});end;UseCtrlV -< $param=%Q(> >> );while gets;print $_.sub(/^#{$param}/,'');end;UseCtrlV> と、ruby用CONFIG.TXTにコメントイン・アウトを書きました。> 今は+と-<>でイン・アウトを設定していますが、> +と-で書ければすっきりします。どうも、> -> $param=%Q(> > );while gets;print $_.sub(/^#{$param}/,'');end;UseCtrlV> と書くと、+のが先にひっかかってしまうようですね。確かに今は単なる置換ルールでやってますから、現状ではそういう動作になってしまいますね。AtokMulti自身の「辞書ファイル(CONFIG.TXT)」をどう変えようかは結構(いえホントはたまに)思案しているところです。CONFIG.TXTによる単純置換でなくて、1. ATOKから受け取った内容をRubyなりPerlなりで処理する2. さらにその内容をスクリプトとして処理するなんていう風にしてみましょうか。これなら、私には手抜きで楽そうですから。とはいえ、これまた魔の巣窟になるでしょうし…。> 3. 「こんな風に使いたい」> googleイメージ検索と連携しましょう。> 一枚だけでなく、何枚も取得できればなお楽しです。これはぜひやってみたいですよねぇ。複数画像の貼り付け方をちょっと考えてみます。実は「一発芸編」の時にデモ用のアプリとして、一枚だけ画像をGoogleから入手するアプリはGuruguru Imagehttp://hirax.net/dekirukana5/googleimage/index.htmlをテキトーに変えて作っておいたのです。ただ、話が散漫になりそうだったので、話の中では触れませんでした。とりあえずそれを添付させておきましょうか。

2004-05-08[n年前へ]

ピザを注文するコマンドラインプログラム 

 トッピングもカスタマイズ自由自在のピザを注文するコマンドラインプログラム。

pizza_party -p -m 1 medium thin
という感じ。使用方法のデモ動画も確かにとても面白い。perlで書かれているから、「米国に住んでて、Windows使ってて、Atok使ってて、ピザが好き」なんていう人がいたら、Ametmultiから使ってみるのも面白いかも。 from スラッシュドットジャパン~
 「エキスパートCプログラミング—知られざるCの深層」と「吉野家牛丼注文プロトコル」も面白そう。



■Powered by yagm.net