Keijiweb ver 6.24 - Unicode版Charu3で「コンソールアプリ起動プラグイン」を使う。

ちょこっと通信:Geographica、雨かしら?、立体録音部などを開発、公開中!使ってみてね。

Charu3 / ジオグラフィカ / DIY GPS / Here.info / 速攻乗換案内 / 雨かしら?
 
サバイバルゲーム(25) / コラム 2010〜20年(53) / デイリーポータルZ  はっけんの水曜日(184) / iPhoneの充電について考えるスレ(9) / 映画を観たよ(37) / 企画モノ(32) / iPhoneアプリ開発日記(41) / 山スレ(23) / 毎日の駄文2006年12月(14) / Charu3の使い方講座(13)

全てのスレッドを表示する...

 
1位 18650電池使用の中華充電器を買ったのでiPhoneなどで試した! 2位 PSP-1000のアナログスティック修理 3位 密造酒の作り方。その2。 4位 東京マルイの電動サブマシンガン MP7A1を購入 5位 MacOSXでカシミール3Dを使う最も簡単な方法 6位 初代iPadをWindowsPCのサブディスプレイにしてみた 7位 何も知らない人向けサバゲー講座 第7回「Li-Poバッテリーについて」 8位 何も知らない人向けサバゲー講座 第3回「どの銃を買ったらいいか?」 9位 電動USPをカスタムしてサブマシンガンにしてみた 10位 密造酒の作り方。その3。 11位 「渡辺篤史の建もの探訪」で最も面白かった回。 12位 サイレンサー(サプレッサー)特集 13位 東京マルイM933コマンドー 近代化改修(マグプルカスタム) 14位 18650電池使用の中華充電器を買ったのでiPhone3GSで試した!その2 15位 何も知らない人向けサバゲー講座 第1回「サバゲーってなに?」 16位 マツモトケイジのプロフィール 17位 書籍電子化時に斜めに取り込まれるので色々調べてみた 18位 古いスマホを防水省エネな登山用GPSとして利用する方法 19位 何も知らない人向けサバゲー講座 第4回「銃に装着する光学器機について」 20位 何も知らない人向けサバゲー講座 第8回「動力による銃の種類」


■Charu3の使い方講座 Charu3の使い方を判りやすく解説します。[URL]
姉妹スレッド 企画モノ(32) / 僕もきのこ部(18) / デイリーポータルZ  はっけんの水曜日(184) / 妄想ガラクタ小説(32)

■ Unicode版Charu3で「コンソールアプリ起動プラグイン」を使う。 2007年10月25日
<前の記事 | 最古の記事 | 最新の記事 | 次の記事>

 今回は、Charu3のUnicode版でうっちーさん作の「コンソールアプリ起動プラグイン」を使う方法を解説します。S-JIS版は簡単に使えるのですが、Unicode版は文字コードの関係でちょっとだけ工夫がいります。

 うっちーさん作成のドキュメントにも方法は書かれていますが、一部情報が抜けていてちょっとだけ試行錯誤したので今回は誰でも使えるように詳しく書いてみようと思います。Perlとコマンドラインの使い方が判ってれば、大体理解できると思います。多分。


1.前提と環境作成について

 まず、前提としてActivePerlがインストールされていること(サンプルがPerlだからなので、実際に使う時はPerlに限らずPHPなど別のスクリプト環境で構いません)。そして、コンソールアプリ起動プラグインが導入されていること。Perlの導入とプラグインの導入は、ぽっとの陽だまり研究所さんの説明が判りやすいです。

[リンク]Life Hack - ブログやHTMLの入力を楽にする方法(その3)

charu3及びプラグインのダウンロードはコチラ
http://keijiweb.com/software.html

さて。


2.nkf(文字コード変換プログラム)の導入

 ActivePerlのインストールと、Charu3ExecEx_Uni.dllをpluginフォルダにコピーする所までは出来ているでしょうか。では、次に「nkf.exe」を導入します。導入は簡単です。ファイルコピーだけ。

1.nkf.exe nkf32.dll Windows用からnkfをダウンロードしてください(下のDownloadボタン)。
2.ファイルを解凍してください。
3.\nkfwin\2080\win\nkf.exeをCharu3のインストールフォルダ(Charu3.exeと同じフォルダ)にコピーして下さい。


3.nkfとはなんだ?

 nkfとは文字コードを変換するプログラムです。コンソールアプリ起動プラグインはshell起動したプログラムに標準入出力でテキストを渡して、出力された物を受け取る事で様々な処理を行っています。

 この時、Unicode版のCharu3にS-JISのテキストを渡したり、S-JISで動いてるプログラムにUniocdeのテキストを渡したりすると、文字コードの不一致で文字化けしてしまいます。それを防ぐために、起動するプログラムによっては文字コードを合わせてやらないとダメなんです。

と、難しい話はこの辺にして。例を挙げましょう。


4.ipconfigの結果をCharu3でペーストさせてみる

↓これはCharu3ExecEx_Uni.dllを起動するという意味のマクロです。これをCharu3のデータに登録します。
$PLUG-IN<.\plugin\Charu3ExecEx_Uni.dll,>$PLUG-IN

上の内容だけだと何も起こりませんので、拡張マクロの部分に以下の呪文を書き込みます。

ExecCmd=cmd /c ipconfig | nkf -w16L0

 これは、「cmd /c」の上で「ipconfig」を起動して、その結果を「nkf -w16L0」でコード変換する、という意味です。nkfってのはさっき導入した文字コード変換プログラムです。ipconfigが出力する文字コードはunicodeじゃないので「-w16L0」でUnicodeの形式を指定して変換しているわけです。

 さて、では実際に動かしてみましょう。上の例を自分で入力するのも面倒でしょうから、インポート用にデータを作りました。下のファイルをダウンロードして、Charu3でインポートして下さい。

ipconfig.c3d

インポートについては「Lesson5 インポートとエクスポート」をどうぞ。

nkfとCharu3ExecEx_Uni.dllの導入が上手くいっていれば、実行すると自分のPCのネットワーク設定がペーストされるはずで。環境によっては数秒かかる場合もあるので注意して下さい。

拡張マクロは"ExecCmd"だけじゃなくて"Prefix"や"Suffix"があります。これは、ExecCmdの前後に付けるコマンドラインのイメージです。例えば以下のように書くと、実際に実行するコマンドはダイアログで入力して、その前後に文字コードを変換するという動作になります。

Prefix=cmd /c nkf -s|
Suffix=|nkf -w16L0

 これがたまらん程便利です。ダイアログに"dir c:\"とか打ち込んで実行すると、エディタにdirコマンドの結果がペーストされます。その結果からストックモードでファイル名だけ抜き出していくとか、かなり使い甲斐のある機能です。よく考えられてます。

commandline.c3d
コマンドライン機能のインポートデータ。コマンドラインは履歴が取られています。これもまた便利!


では、実際にスクリプトを呼び出して処理する方法を書いていきましょう。


5.Perlスクリプトでテキストを処理して結果を受け取る

 では、次にUnicode版のCharu3でPerlスクリプトを使ってみましょう。まずは例から。下の内容例は前述のパターンとほぼ同じですが、プラグインに渡すテキストとして$SELを指定しています。これは、選択したテキストです(エディタなどで色が反転している状態)。

$PLUG-IN<.\plugin\Charu3ExecEx_Uni.dll,$SEL>$PLUG-IN

拡張マクロは以下のようになっています。

ExecCmd=cmd /c nkf -e | perl .\plugin\scripts\head_cap.pl | nkf -w16L0

 まず、nkfでPerlに渡されるテキストの文字コードをEUC(-e)にしています。それをPerlスクリプトに渡して処理し、最後にipconfigの時と同じUnicodeにしています。「|」の記号はパイプと言いますが、プログラムからプログラムにテキストを渡すという動作をします。このようにプログラムを繋げていくことで、色々な応用が出来るわけです。

「.\plugin\scripts\head_cap.pl」には、以下のようなスクリプトが書かれています。

#先頭文字を大文字にする
@lines = <>;
foreach my $line (@lines) {
  $line =~ s/(^.)/uc($1)/egi;
  print $line;
}
exit;

渡されたテキストの、行の先頭1文字を小文字から大文字にするという処理です。

これもファイルを用意しましたので、試してみて下さい。

scripts
例で使ったスクリプトファイル。解凍したらpluginフォルダにscriptsフォルダごとコピーして下さい。「charu3\plugin\scripts\head_cap.pl」というパスになればOKです。

top_uc.c3d
Charu3でインポートして下さい。環境設定が上手くいっていれば、エディタで選択したテキストの頭1文字だけを大文字にする処理が動きます。

abcdefg
hijklmn
opqrstu

Abcdefg
Hijklmn
Opqrstu

こんな処理です。


6.まとめ

 このhead_cap.plのファイル名や内容を適当に書き換えてスクリプトを用意していくと、面倒くさいコンパイルなどなしでCharu3の機能をどんどん追加していけるわけです。改めて書くと、うっちーさんのコンソールアプリ起動プラグインがいかに凄いか判りますな。感動的機能です。

 というわけで、Unicode版のCharu3を使ってる多くのお友達も、簡単に使えるPerlとかその他スクリプトを使ってCharu3に色んな機能を追加しようぜ!定型的なテキスト処理は片っ端から自動化できるので、テキスト編集とかプログラム書きなんかは相当楽になると思うよ。


では、今回はこの辺で。さようならー。


スレッドのトップへ移動
ページのトップへ移動