hirax.net::Keywords::AMET

「AMET」について

「AMET」のブログ

AMETとは?

概要

ATOKの変換機能を使ってperl (ruby, awk, その他各種プログラム等)のコマンドを使うことができるソフトウェア。扱うデータはテキストでも画像でも何でもOKです。

使用中の画面動画は

動作環境

ATOKがWindowsにインストールされていること。また、perl, ruby, awk, sed etc.等があるとさらに便利。

ダウンロード

ネットワーク上での再配布は今のところは止めておいて下さい。

インストール

設定方法・使い方

CONFIG.TXTの書き方

CONFIG.TXTは奇数行目の文字列が次の行の文字列で置換されます。また、入力文字列の頭には"PREFACE_"という文字列が付加され、末尾には"POSTPOS_"という文字列が付加されています。デフォルトはDOSコマンド用のものになってます。

DOSコマンド用の例

したがって、例えばDOSコマンド用としては

PREFACE_

POSTPOS_ 

漢字アート
CURRENT_PATH_kanjiart.exe 40 10 LUT.TXT UseCtrlV
CURRENT_PATH_
C:\\Datum\\hiraxnet\\projects\\AmetMulti2\\

なんていう感じです。この場合、DOSコマンドがそのまま実行されるわけです。また、引数の最後にはクリップボードの中身のファイルがつけられます。

最後の行はAmetMulti.exeのあるディレクトリの別名を設定しています。特に必要はありませんが、こうでもしておくと便利でしょう。

perl用の例

したがって、例えばperl用として

PREFACE_
perl -e "
POSTPOS_
" 

というCONFIG.TXTを使った場合に、"print sin(3)"という文字列を変換すると、

perl -e "print sin(3)"

という命令が実行されることになります。また、この命令の後にクリップボードの内容が保存されたファイルが引数で渡されます。

 次の例は「じこく」「ねんがっぴ」という単語でスクリプトを登録したものです。

じこく
($s,$m,$h,$d,$o,$y,$w,$i)=localtime(time);printf qq/%02d:%02d:%02d/, $h, $m, $s;
ねんがっぴ
($s,$m,$h,$d,$o,$y,$w,$i)=localtime;$y+=1900;$o++;printf qq/%04d\/%02d\/%02d/, $y, $o, $d;

 次の例は、「ぎょうばんごう」という単語でスクリプトを登録したものです。

ぎょうばんごう
$i=1;while(<>){printf qq/%05d: $_/, $i;$i++}UseCtrlV

スクリプト中に"UseCtrlV"というキーワードを埋め込むと、通常の文字入力でなく、クリップボード経由でCtrl+Vを投げつけることにより、入力が行われます。64文字以上もしくはテキスト以外の入力を行う際は、UseCtrlVを使う必要があります。

 また、クリップボード中の画像もスクリプトには引数として渡されますので、

かんじあーと
system(qq/C:\\Datum\\hiraxnet\\projects\\AmetMulti2\\kanjiart.exe $ARGV[0] 80 40/);UseCtrlV
びじん
system(qq/C:\\Datum\\hiraxnet\\projects\\AmetMulti2\\bijin.exe $ARGV[0]/);UseCtrlV

なんていう使い方もできます。前者はクリップボード中の画像を「漢字アスキーアート」で出力し、後者は前者はクリップボード中の画像を「美人フィルタ」をかけて出力を行います。スクリプト中のパスは各自環境に合わせて修正して下さい。

http://www.hirax.net/diary_image/2004041803s.jpg

 ちなみに、スクリプト側がBITMAP_IS_という文字列を先頭に付けて出力を行うと、その後に付けられた文字列をBitmapファイル名としてAmetPerl?がファイルを読み込んで出力を行う、という仕組みになっています。

*WinGraphViz?を使った例

例えば、WinGraphViz?をインストールした状態で、こんな単語登録(perlのソースは改行をなくしてワンライナーに変更して下さい)をしてみます。

関係
use Win32::OLE;
$gif=qq/$ARGV[0].gif/;
$bmp=qq/$ARGV[0].bmp/;
while(<>){chomp($_);
s/に/は/;
s/を/は/;
@data = split(/は/, $_);
$param = $param . qq/@data[0] -> @data[1] [label = @data[2]] \;/;};
$objDOT = new Win32::OLE qq/WinGraphviz.DOT/;
$strCMD = qq/digraph G {$param}/;
$objGIF = $objDOT->ToGIF($strCMD);
$objGIF->Save($gif);
system(qq/C:\\ImageMagick-6.0.0-Q8\\convert.exe $gif $bmp/);
print qq/BITMAP_IS_$bmp/;
UseCtrlV

*GnuPlot?を使った例

 これまた適当に作った、GnuPlot?で数式グラフを描く例です。実際には、改行コードを入れて、ワンライナーにして下さい。

「
$param=qq/
」
/;
のぐらふ
$param=qq/sin(x)/;
$config = qq/$ARGV[0].gp/;
$Image = qq/$ARGV[0].eps/;
$ConvertImage = qq/$ARGV[0].bmp/;
open (OUT, qq/>$config/) or die /$!/;
print OUT qq/set term postscript eps enhanced color\n/;
print OUT qq/set output '$Image'\n/;
print OUT qq/set pm3d at b\n/;
print OUT qq/splot $param\n/;
close (OUT);
system(qq/C:\\gnuplot\\pgnuplot.exe $config/);
system(qq/C:\\ImageMagick-6.0.0-Q8\\convert.exe ps:$Image bmp:$ConvertImage/);
print qq/BITMAP_IS_$ConvertImage/;
UseCtrlV

*ImageMagick?を使う例

実際には、ワンライナーにして下さい。

縁取り
use File::Copy;
$bmp0=$ARGV[0].qq/0.bmp/;
copy($ARGV[0],$bmp0);
$bmp=$ARGV[0].qq/.bmp/;
system(qq/C:\\ImageMagick-6.0.0-Q8\\convert.exe  -frame 12x12+4+4 -mattecolor #8080ff $bmp0 $bmp/);
print qq/BITMAP_IS_$bmp/;UseCtrlV

ruby用の例

次の例はruby用です

PREFACE_
ruby -Ks -e "
POSTPOS_
" 

この場合、"print Math.sin(3)"という文字列を変換すると、

ruby -Ks -e "print Math.sin(3)"

という命令が実行されることになります。また、この命令の後にクリップボードの内容が保存されたファイルが引数で渡されます。

awk用の例

次の例はawk用です

PREFACE_
awk "
POSTPOS_
" 

CONFIG.TXTの応用

CONFIG.TXTは奇数行目の文字列が次の行の文字列で置換されます。ということはさまざまな一行関数を「辞書追加」するのと同じ感覚で追加できるということになります。 ATOKの辞書は64文字までという制限がありましたが、このCONFIG.TXTではそんな制限はありません。

したがって、例えばperlを使って例を作ってみると

PREFACE_
perl -e "
POSTPOS_
" 
ねんがっぴ
($s,$m,$h,$d,$o,$y,$w,$i)=localtime;$y+=1900;$o++;print qq/$y\/$o\/$d/;

なんていう記述をCONFIG.TXTに追加しておけば、"ねんがっぴ"と入力してAMET変換を行うと

perl -e "($s,$m,$h,$d,$o,$y,$w,$i)=localtime;$y+=1900;$o++;print qq/$y\/$o\/$d/;"

という命令が実行されることになります。試しにやってみると、2004/4/13なんていう風に年月日が自動入力されることになります。

 さらに、例えば

「
$param=
」
;
のこさいん
$param=cos(param);
をいんじ
print $param;

なんていう記述を追加しておけば、"「0」のこさいんをいんじ"と入力して変換すると

perl -e "$param=0;$param=cos($param);print $param;"

という命令が実行され"1"という結果が返されることになります。

 こんな感じで、クリップボードにコピーされた内容から

「キーワード」がでてくるかいすう

なんていう風に、クリップボードにコピーされた内容から「キーワード」が出てくる回数を計算して出力するなんていうことも簡単にできるわけです。

説明 or サンプル

ようこそ「辞書単語登録プログラミング」の世界へ - ATOKではじめるperlスクリプト -

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

長い出力結果の時には"&"を末尾につける

ATOKはおそらく64文字までの単語変換しかサポートしていません。そのため、このソフトでは長い出力結果の時には、"&"を末尾につけることで以下の動作をします。

  • クリップボードに出力結果を吐く
  • アプリケーションに"Ctrl + V"のキー・イベントを投げる

したがって、「貼り付け」作業が"Ctrl + V"でないアプリケーション上だと、長い出力結果の時に"&"を末尾につけても「貼り付け」が行われない、だろうと思います(テストしてない)。

辞書単語登録へのFAQ

単語登録ができない

ATOKでは辞書に登録できる単語長は64文字までという仕様に注意して下さい。

古い情報・履歴

「AMET」を含む記事

このページ上部へ