カーソル位置の一文字置換マクロリクエスNo.07419
白馬の王子様 さん 14/09/20 18:56
 
白馬の王子様です。
立て続けのマクロリクエストで恐縮です。
カーソル位置でそのマクロを起動すると、その位置の人文字に対する別の文字の候補
のリストがプルダウン式メニューに表示され、そこから選ぶと、その文字で置換され
る、というものです。
なぜ、このようなマクロが必要かというと、自炊でOCRで認識した結果の文字が、誤
読であった場合、それを正しい文字に変換したいからです。もちろんOCRのソフト自
体にそうした誤読結果修正機能はありますが、よほど人材に余裕がある場合は別です
が、個人レベルでは、まず誤読文字を逐次正しくして、その後で、内容を読む、とい
う時間的、労力的余裕はありません。OCRが作ったテキストファイルを読みながら、
誤読文字に気づいたところで、正しい文字に変換する…となると思います。
OCRの誤認識には一定のパターンがあり、例えば、「本」を「木」と誤読したりしま
す。しかし、そのパターンには幅があり、たまには「休」と認識したり、「ホ」とな
ったりします。その逆もあり、本来は「木」と認識すべき所を「本」と読んだりして
います。そこで、秀丸上でOCRでできたテキストファイルを読んでいて、本来「本」
と読むべき所を「木」となっているところにぶつかったとします。そこでこのマクロ
を起動すると、最初はまだ候補がないので、候補は表示されないので、「本」と入力
すると、それが候補として登録されると同時に、本文の「木」が「本」と置換されま
す。次にまた、「木」の箇所に来たときは、マクロを起動すると、候補として「本」
が現れるので、それを選ぶと本文の誤読文字は「本」に置換されます。さらに読み進
んだところで、今度は「休」と誤読されたところにきたら、「休」という字に対して、
新たな候補「本」を登録と同時に、本文の置換をします。
こうして、使えば使うほど、誤認識文字を正しい文字に置換する効率が上がってきま
す。
Boon Editorでもそれができたのですが、ただ難点は候補文字のリストのフォントが
小さすぎて非常に使いにくかったことです。私は目が悪いので秀丸の表示を20ポイン
ト前後にしていますが、そのくらいの大きなフォントで候補が5−10個単位で表示
されるとありがたいです。
言葉で説明すると非常に分かりづらいかもしれませんが、よろしくお願いします。

白馬の王子様

[ ]
RE:07419 カーソル位置の一文字置換マクロNo.07423
IKKI さん 14/09/20 20:13
 
こんばんは。ユーザーの IKKI です。
とりあえず末尾のようなマクロを書いてみましたが…標準のメニューを使っているの
で、文字サイズの問題は解決しません。
文字が読みにくいのであれば、秀丸ではなく、Windows の文字サイズを大きくするの
が先決だと思います。
参考: http://support.microsoft.com/kb/960737/ja

// godoku.mac
begingroupundo;
$dic = currentmacrodirectory + "\\誤読辞書.txt";
if (!selecting) {
 beginsel;
 if (code > 32) right;
 endsel;
}
$org = gettext(seltopx, seltopy, selendx, selendy, true);
if ($org == "") {
 escape;
 endmacro;
}
$list = getinistr($dic, "候補", $org);
$menu[0] = "登録...";
if ($list != "") {
 while (#i < wcslen($list)) {
  $menu[#i + 1] = wcsmidstr($list, #i, 1);
  #i = #i + 1;
 }
 menuarray $menu, #i + 1;
 #res = result - 1;
}
if (#res) {
 insert $menu[#res];
} else {
 $add = input("「" + $org + "」に対する修正候補を登録します", "");
 if (wcsstrstr($list, $add) < 0) {
  writeinistr $dic, "候補", $org, $list + $add;
 }
}
endgroupundo;

[ ]
RE:07423 カーソル位置の一文字置換マクロNo.07426
白馬の王子様 さん 14/09/20 21:04
 
IKKIさん、
またまた、お世話になります。
一日に2つのマクロとは!!!私のような素人には超人、驚異の技とした思えません。

>文字が読みにくいのであれば、秀丸ではなく、Windows の文字サイズを大きくする
>のが先決だと思います。
>参考: http://support.microsoft.com/kb/960737/ja
有益な情報、ありがとうございました。やはりWindows全体(Windows自体)の文字サ
イズを変えるしかありませんか…。落ち着いたらやってみます。
 さて、godoku.mac、早速試用してみました。
そうそう、こんな感じです。ただ、正しい変換文字を登録した際、辞書に登録される
だけでなく、その箇所の誤読文字自体も同時に正しい変換文字に置換されるようにな
ると、1操作で登録と、その箇所の誤読文字が正しい文字に置換されるという2つの
結果が得られて快適になると思います。
 もう一つ、現状では、候補はマウスで選択となっていますが、マウスだけでなく、
キーボードによるカーソル移動で選択もできると便利です。そして、候補文字には、
0, 1, 2…といった数字を振って、数字で選択も可能になると便利です。10候補目以
下は、候補表示のページを買えて2ページ目以下に表示できればと思います。
あと、先ほどのリクエストで書き落としたのですが、変換候補文字は、仮名漢字変換
辞書などと同じように、先回利用した文字が最優先(最上欄)に表示されると効率が
上がると思います。
 よろしくお願いします。

白馬の王子様

[ ]
RE:07426 カーソル位置の一文字置換マクロNo.07427
白馬の王子様 さん 14/09/20 21:12
 
自己投稿訂正です。
複数の候補があるとき、カーソル移動でも選択できていました。失礼しました。

[ ]
RE:07427 カーソル位置の一文字置換マクロNo.07428
白馬の王子様 さん 14/09/20 21:21
 
再度の自己コメントです。
親の介護の都合で、今晩はもうパソコンをいじれなくなりました。
明日朝一番にこの部屋を訪れることにします。
今日は本当にありがとうございました。
ひとまず、今晩はこれで失礼します。
お休みなさい。

白馬の王子様

[ ]
RE:07423 カーソル位置の一文字置換マクロNo.07430
白馬の王子様 さん 14/09/21 10:57
 
白馬の王子様です。
昨晩の私の最後の投稿は、本来ならこの07423番のIKKIさんの投稿へのコメントとし
て投稿すべきでした。まだこの部屋に慣れていないので間違えてしまいました。失礼
しました。
昨晩はマクロで手一杯で余裕がなかったのでできなかったのですが、

>文字が読みにくいのであれば、秀丸ではなく、Windows の文字サイズを大きくする
>のが先決だと思います。
>参考: http://support.microsoft.com/kb/960737/ja
を手がかりに文字サイズを125%に拡大してみました。
見やすいこと、見やすいこと!!
今までこれを知らなかったので、随分損をしてしまった気分です。
思いもかけないありがたい情報、本当にありがとうございました!

白馬の王子様

[ ]
RE:07426 カーソル位置の一文字置換マクロNo.07431
IKKI さん 14/09/21 12:51
 
白馬の王子様さん、こんにちは。
改良版のマクロが末尾にあります。

・候補にショートカットキーを付与 (40個を超えたら循環)
・採用した候補をリストの先頭に移動
・修正候補の一括登録 (登録画面で「千干チ」と入力したら「千」「干」「チ」がそ
れぞれ登録される)
・登録と同時に置換 (一括登録時は先頭の1文字を採用)

「5〜10個ずつページ分け」は、可能ですが、面倒だったので作っていません。(必要
なら挑戦してみてください)

今のマクロの設計だと「n文字→1文字」の置換にしか対応していませんが、それは良
いのでしょうか?
 「王→玉」…可
 「魚有→鮪」…可 (置換対象を範囲選択してマクロ実行)
 「仁→イニ」…不可
将来もし3番目のような置換をしたくなった場合、データ構造の見直しが必要になっ
て、辞書を引き継げなくなります。


// godoku.mac
$dic = currentmacrodirectory + "\\誤読辞書.txt";
$sec = "候補";
$keys = "1234567890QWERTYUIOPASDFGHJKL;ZXCVBNM<>/";
begingroupundo;
call Main;
endgroupundo;
endmacro;

Main:
if (multiselecting || rectselecting || seltoplineno != selendlineno) return;
if (!selecting) {
 if (code <= 32) return;
 right;
 beginsel;
 left;
 endsel;
}
message "OK";
$$org = gettext(seltopx, seltopy, selendx, selendy, true);
if ($$org == "") return;
$$list = getinistr($dic, $sec, $$org);
$$menu[0] = "登録...";
while (##i < wcslen($$list)) {
 $$key = "(&" + midstr($keys, ##i % strlen($keys), 1) + ")";
 $$menu[##i + 1] = wcsmidstr($$list, ##i, 1) + $$key;
 ##i = ##i + 1;
}
if (##i > 0) {
 menuarray $$menu, ##i + 1;
 ##ans = result - 1;
}
if (##ans < 0) return;
if (##ans > 0) {
 $$fix = wcsmidstr($$list, ##ans - 1, 1);
 insert $$fix;
 $$list = $$fix + wcsleftstr($$list, ##ans - 1) + wcsmidstr($$list, ##ans);
} else {
 $$adds = input("「" + $$org + "」に対する修正候補を登録します", "");
 if ($$adds == "") return;
 insert wcsleftstr($$adds, 1);
 $$list = $$adds + $$list;
}
writeinistr $dic, $sec, $$org, $$list;
return;
// ここまで

[ ]
RE:07431 カーソル位置の一文字置換マクロNo.07432
IKKI さん 14/09/21 13:38
 
あっ、デバッグ用の文が残っていました。
「message "OK";」という行を削除してください。

[ ]
RE:07431 カーソル位置の一文字置換マクロNo.07433
白馬の王子様 さん 14/09/21 14:36
 
IKKIさん、こんにちは。
改良版、ありがとうございました。(デバッグ用の行は、ご指示通り削除してから試
用しました。)
以下、試用の感想などです。

>・候補にショートカットキーを付与 (40個を超えたら循環)
まだ、使用時間が短いので、たくさんの候補を登録するまでに至ってないですが、マ
クロの$keysの右にずらりと並んだショートカットキーを拝見して、これはいいなと
思いました。40個を超えたら循環、ということは、誤読文字1文字当たり、候補文
字は40文字まで登録可能、ということでしょうか?やってみれば分かるでしょうが、
40候補、画面に収まりきるかしら?
あと、感銘を受けたのは、ショートカットキーが候補の右に配置されていること。多
くの候補リストは、ショートカットキーが候補の左ですよね。あれだと、視線は通常
の画面の左から右へという動きに反して、(ごく僅かですが)右から左へ、となって、
人間工学的に(大げさですが)ちょっと変だな、と常々思っていたからです。
 
>・採用した候補をリストの先頭に移動
この感じです。とても使いやすいです。

>・修正候補の一括登録 (登録画面で「千干チ」と入力したら「千」「干」「チ」が
>それぞれ登録される)
一括登録とは、素晴らしい機能ですね。(Boon Editorのマクロではそうした機能は
ありませんでした。というか、私が思いつかず、リクエストしなかったからですが。)

>・登録と同時に置換 (一括登録時は先頭の1文字を採用)
これ、快適です。さっと、行きますね。

>「5〜10個ずつページ分け」は、可能ですが、面倒だったので作っていません。(必
>要なら挑戦してみてください)
これ、必ずしも必要ありません。今まで使っていたマクロがそういう仕様だったので、
それを叩き台に…と思っただけです。むしろ、最大40候補が一望できるほうが実用
的かもしれません。

>今のマクロの設計だと「n文字→1文字」の置換にしか対応していませんが、それは
>良いのでしょうか?
> 「王→玉」…可
> 「魚有→鮪」…可 (置換対象を範囲選択してマクロ実行)
この泣き別れ誤読文字を1文字にまとめる機能、というのも初めてです。素晴らし
い!確かに、ときどきありますよね。

> 「仁→イニ」…不可
>将来もし3番目のような置換をしたくなった場合、データ構造の見直しが必要になっ
>て、辞書を引き継げなくなります。
こうした例は普通にはまずないです。現状の「不可」で何ら支障はありません。

それにしても、IKKIさんは、OCRの誤読についてもお詳しいのですね。改めて脱帽です。
 ということで、この特殊なマクロも、早くも完成ですね。
長期にわたって使用していると何か改良要望点が出てくるかもしれませんが、今のと
ころ、これ以上望むところはありません。これも、ライブラリーに登録されれば、便
利に思うユーザーが現れるのではないでしょうか?
 本当にありがとうございました。抜き書きマクロと併せて、末永く使わせていただ
きます。

白馬の王子様

[ ]
RE:07433 カーソル位置の一文字置換マクロNo.07434
IKKI さん 14/09/21 20:22
 
白馬の王子様さん、こんばんは。
例によって改良版のマクロが末尾にあります。

・エラーメッセージ追加
・複数行を範囲選択した直後に実行すると何も起こらないバグ修正
・登録ウィンドウに登録済みの候補リストを表示し、編集可能にする
・重複候補を排除する

>誤読文字1文字当たり、候補文字は40文字まで登録可能、ということでしょうか?
言葉足らずでした。「ショートカットキーが」循環します。つまり、第41候補のシ
ョートカットキーは第1候補のショートカットキーと同じになります。
候補数の上限は、今試してみたところ、399でした。(秀丸マクロのメニューが最大40
0項目という仕様になっているようです)

>今のところ、これ以上望むところはありません。
ひとつ思いつくのは、逆置換候補の同時登録ですね。
つまり、「土→士」という候補を登録したら、同時に「士→土」という候補も登録さ
れるという。
…作りかけてみてちょっと長くなりそうなのでやめましたが、必要があれば作れます。

>これも、ライブラリーに登録されれば、便利に思うユーザーが現れるのではないで
>しょうか?
うーん、説明文を万人向けにうまく書く自信がないです…。
もし白馬の王子様さんが説明文を書いてくださるのであれば、公開するにやぶさかで
ありません。(^^;


そもそも、これは (仰るように) かなり特殊な、用途の限られたマクロなので、一般
公開する価値があるものやら…???
一般に考えられる用途、たとえば学生の書いてきた原稿の誤字を直すような用途であ
れば、「以外→意外」のように単語単位で文章全体を置換するでしょう。
文字単位で1か所ずつ目視確認しながら置換するような用途となると、やはりOCRぐら
いしか思い当たらないわけで…。

そして本来、OCRの誤認識修正はOCRソフト上で行うべきものだと思います。
OCRソフトには、そのためにチューニングされた専用辞書と、使いやすい操作画面が
備わっているはずですし、文脈から可能性の高い単語を推測するような高度な処理も
行われているはずです。
そうした技術の積み重ねを一顧だにせず、辞書をゼロから自作してまで、テキストエ
ディタ上で人間が1字ずつ修正することにこだわる…というのは、やはり非常に特殊
なニーズだと思います。

もし、お使いのOCRソフトが低機能だったり使いにくかったりするのであれば、誤字
を含むテキストをワープロソフト (Word とか一太郎とか) に貼り付けて、文章校正
をさせてみてはいかがでしょうか。


// godoku.mac
$dic = currentmacrodirectory + "\\誤読辞書.txt";
$sec = "候補";
$keys = "1234567890QWERTYUIOPASDFGHJKL;ZXCVBNM<>/";
begingroupundo;
call Main;
if ($$return != "") message currentmacrobasename + ":\n" + $$return;
endgroupundo;
endmacro;

Main:
if (!selecting) {
 if (code <= 32) return "修正したい文字にカーソルを置いて実行してください";
 right;
 beginsel;
 left;
 endsel;
} else if (multiselecting || rectselecting || seltoplineno != selendlineno) {
 return "複数範囲、BOX範囲、改行を含む範囲は処理できません";
}
$$org = gettext(seltopx, seltopy, selendx, selendy, true);
if ($$org == "") return "修正対象文字が空でんがな";
if ($$org == "=") return "「=」は処理できませんわ";
$$list = getinistr($dic, $sec, $$org);
$$menu[0] = "登録...";
while (##i < wcslen($$list)) {
 $$key = " (&" + midstr($keys, ##i % strlen($keys), 1) + ")";
 $$menu[##i + 1] = wcsmidstr($$list, ##i, 1) + $$key;
 ##i = ##i + 1;
}
if (##i > 0) {
 menuarray $$menu, ##i + 1;
 ##ans = result - 1;
}
if (##ans < 0) return;
if (##ans > 0) {
 $$x = wcsmidstr($$list, ##ans - 1, 1);
 insert $$x;
 $$list = $$x + wcsleftstr($$list, ##ans - 1) + wcsmidstr($$list, ##ans);
} else {
 $$adds = input("「" + $$org + "」に対する修正候補を登録します", $$list);
 if ($$adds == "") return;
 insert wcsleftstr($$adds, 1);
 $$list = $$adds + $$list;
}
while (##j < wcslen($$list)) {
 $$x = wcsmidstr($$list, ##j, 1);
 if (wcsstrstr($$uniq, $$x) < 0) $$uniq = $$uniq + $$x;
 ##j = ##j + 1;
}
writeinistr $dic, $sec, $$org, $$uniq;
return;
// ここまで

[ ]
RE:07434 カーソル位置の一文字置換マクロNo.07435
IKKI さん 14/09/21 21:27
 
すみません、ちょっと言葉が過ぎた箇所があったようです。
# 夕飯を作りながら書いていたので… (関係ない)

>そうした技術の積み重ねを一顧だにせず、
この表現は撤回します。
OCRソフトに搭載された技術を活用した上で、それでもなお残ってしまう誤字を、や
むを得ずテキストエディタで修正しているのですよね。
失礼しました。
そういう意味では、これはニッチながら正当な需要のあるマクロなのかなと思います。

[ ]
RE:07434 カーソル位置の一文字置換マクロNo.07436
白馬の王子様 さん 14/09/22 15:40
 
IKKIさん、こんにちは。
白馬の王子様です。
先刻、詳しいお返事を書き終えて、「OK」ボタンを押したとたん、フォーラム入室
ページに飛んで、書いたものは一瞬で消えてしまいました。がっかり。
そこで今度は、全文を秀丸上にコピーして、書き直します。

実は、改良版、まだ試用していません。お返事を書きたい気持ちの方が先立ってしま
って…。
まず、リクエストした私が「完成」と見なしたマクロを、さらに見直して改良して下
さるとは!本当にプロ中のプロでもなかなかできることではないと、心底感心してし
まいました。(大げさに聞こえるかもしれませんが、日本もまだまだ捨てたものじゃ
ないな…と。)

さて、
>・エラーメッセージ追加
これはマクロ自体を覗いてみて分かりました。細かなご配慮、ありがとうございます。

>・複数行を範囲選択した直後に実行すると何も起こらないバグ修正
2文字を1文字に置換するという特殊なケース以外ではまず考えられないところまで
気を配っていただき、ありがとうございます。

>・登録ウィンドウに登録済みの候補リストを表示し、編集可能にする
>・重複候補を排除する
これら2機能は、これまでのBoonEditorのマクロにはなかった機能で、早く試用して
みたいです。

>>誤読文字1文字当たり、候補文字は40文字まで登録可能、ということでしょうか?
>言葉足らずでした。「ショートカットキーが」循環します。つまり、第41候補のシ
>ョートカットキーは第1候補のショートカットキーと同じになります。
なるほど。ということは、第41候補を選択しようとしてショートカットキーの「1」
を押すと、第1候補が選択され、第41候補はリストの後ろの方にあるため、選択され
ない、ということになりそうな気がしますが。

>候補数の上限は、今試してみたところ、399でした。(秀丸マクロのメニューが最大4
>00項目という仕様になっているようです)
わざわざ400文字も登録して試して下さって、申し訳ないです。BoonEditorのマク
ロでは最大255でしたから、余裕ですね。(もっとも実用上、数十を超えると、候補
を探す手間暇の方が、直接仮名漢字変換による入力と元の誤字を削除という手間を超
えてしまいますがね。


>>今のところ、これ以上望むところはありません。
>ひとつ思いつくのは、逆置換候補の同時登録ですね。
>つまり、「土→士」という候補を登録したら、同時に「士→土」という候補も登録
>されるという。
うわっ!何と魅力的な機能でしょう!確かに、「士」を「土」と誤読するのなら、同
じテキスト中に、「土」を「士」誤読した箇所が出てくる可能性は非常に高く、もし
ご提案いただいた機能があれば、作業効率が倍加しますね。

>…作りかけてみてちょっと長くなりそうなのでやめましたが、必要があれば作れます。
急ぎませんから、いずれお願いします。(IKKIさんには(御指名で)マクロのリクエ
ストが他の人からも届くでしょうから、私が独占していては叱られてしまいそう…)

>>これも、ライブラリーに登録されれば、便利に思うユーザーが現れるのではないで
>しょうか?
>うーん、説明文を万人向けにうまく書く自信がないです…。
>もし白馬の王子様さんが説明文を書いてくださるのであれば、公開するにやぶさか
>でありません。(^^;
実は、私がリクエスト文を書いたとき、ご理解いただけるか内心不安でした。ところ
がIKKIさんが、一発で意図をくみ取って下さったばかりか、思い通り以上のマクロに
仕上げて下さったので、本当にびっくりしたのです。
確かに万人向けの説明文は難しいですね。ライブラリーに上げる場合、説明文の長さ
の制約とかあるのでしょうか?こんなに便利なマクロなので、お時間をいただいて説
明文を考えてみようかとも思っているのですが。

>そもそも、これは (仰るように) かなり特殊な、用途の限られたマクロなので、一
>般公開する価値があるものやら…???
>一般に考えられる用途、たとえば学生の書いてきた原稿の誤字を直すような用途で
>あれば、「以外→意外」のように単語単位で文章全体を置換するでしょう。
>文字単位で1か所ずつ目視確認しながら置換するような用途となると、やはりOCRぐ
>らいしか思い当たらないわけで…。
>
>そして本来、OCRの誤認識修正はOCRソフト上で行うべきものだと思います。
>OCRソフトには、そのためにチューニングされた専用辞書と、使いやすい操作画面が
>備わっているはずですし、文脈から可能性の高い単語を推測するような高度な処理
>も行われているはずです。
>そうした技術の積み重ねを一顧だにせず、辞書をゼロから自作してまで、テキスト
>エディタ上で人間が1字ずつ修正することにこだわる…というのは、やはり非常に特
>殊なニーズだと思います。
おっしゃること、よく分かります。ただ、OCRの誤読修正機能は、それに特化されて
いて、テキストを読みながら、抜き書きしながら(ここでnukigaki.macが活躍するわ
けです!)進む、ということができません。どうしても、修正は修正、読書は読書と
二段構えになってしまうのです。
しかも、私の場合、godoku.macにより単文字修正だけに頼っているわけではありませ
ん。数ページ分も読むと、例えば、そのテキストで「特徴」という単語が「待徴」と
誤読される傾向がある、といったことに気づきます。そうしたら、秀丸の一括置換機
能で、一気に文書全体を修正してしまいます。この二刀流で思いの外、簡単に全体の
修正ができます。
>もし、お使いのOCRソフトが低機能だったり使いにくかったりするのであれば、誤字
>を含むテキストをワープロソフト (Word とか一太郎とか) に貼り付けて、文章校正
>をさせてみてはいかがでしょうか。
なるほど。それは気づきませんでした。godoku.mac+一括置換+校正機能という三段
構えが最強かもしれませんね。

白馬の王子様

[ ]
RE:07435 カーソル位置の一文字置換マクロNo.07437
白馬の王子様 さん 14/09/22 15:47
 
IKKIさん、
わざわざ訂正コメントまで、ご丁寧に、かえって恐縮です。

>OCRソフトに搭載された技術を活用した上で、それでもなお残ってしまう誤字を、や
>むを得ずテキストエディタで修正しているのですよね。
>失礼しました。
善意に解釈していただき、ありがとうございます。陳謝していただく必要は毛頭あり
ませんよ。

>そういう意味では、これはニッチながら正当な需要のあるマクロなのかなと思います。
超ニッチであることは間違いないですが、テキスト校正係を雇えるリッチなユーザー
は別として、私のようなニッチなユーザーにはありがたくて仕方ないものだと思うの
ですがね。
なお、これまでBoonEditorのマクロで登録した誤読文字の辞書がちょっと手を加えれ
ばそのままgodoku.mac用の「誤読辞書.txt」になりそうだと分かりました!

白馬の王子様

[ ]
RE:07434 カーソル位置の一文字置換マクロNo.07438
白馬の王子様 さん 14/09/22 18:48
 
IKKIさん、こんばんは。
白馬の王子様です。
07437の私の投稿で、BoonEditorのマクロで蓄積してきた誤読文字に対する候補文字
リストのファイルが、秀丸用godoku.mac用の誤読辞書.txtファイルに転用できそうだ
と書きました。
できます!ただし、各行の冒頭1文字の後に半角の「=」が挿入できればの話です。
既存のファイルは、463行あります。つまり、463文字の誤読文字に対する候補が登録
済みということになります。手作業で「=」を挿入してもよいのですが、腱鞘炎にな
りそう。
昔の私なら、awkで何とか処理できたのですが、今や私のPCにはawkさえ入っていない
(涙)。
こういう「各行の指定の位置に希望の文字(列)を挿入する」というマクロは既存の
ような気がするのですが、何か有名なのがあればご教示ください。

白馬の王子様

[ ]
RE:07438 カーソル位置の一文字置換マクロNo.07439
IKKI さん 14/09/22 18:59
 
正規表現置換でできます。

検索: ^(.)
置換: \1=
正規表現: ON

別の方法としては、幅ゼロのBOX選択をして「=」キーを押してもできます。
《→その他 - 動作環境 - 上級者向け設定 - 編集 - 高度な編集1 - BOX選択中に
キーを押すとその文字を各行に挿入する》

取り急ぎ。

[ ]
RE:07439 カーソル位置の一文字置換マクロNo.07440
白馬の王子様 さん 14/09/22 19:11
 
IKKIさん、できました!
あっという間に!
それにしても、秀丸の置換機能って、凄いんですね。「正規表現置換」なんてのがあ
るのですか!?
正規表現を勉強し直すと、いろいろ面白そうですね。

家内が夕飯ができたと呼んでいるので、取り急ぎ。

白馬の王子様

[ ]
RE:07439 カーソル位置の一文字置換マクロNo.07441
白馬の王子様 さん 14/09/22 20:12
 
IKKIさん、引き継いだ辞書を元に、ちゃんと機能するかどうか調べたところ、奇妙な
動作に気づきました。

窓=惹意章恣総懇統絆畔料態藤縛繹曖簾穣峡忠怒絡慾科恵想恋愁草程渡恐

という行がリストにあるのですが、「窓」を置換しようとしても、候補としては
「恣」までしか表示されません。他に類例がないか調査中ですが、なぜでしょうね?

白馬の王子様

[ ]
RE:07441 カーソル位置の一文字置換マクロNo.07442
白馬の王子様 さん 14/09/22 20:23
 
理由、分かりました!
BoonEditorのマクロの辞書ファイルは、同じ誤読文字に対して、なぜか別の候補群
(行)を許していたらしいのです。(今まで気づきませんでした。)
実は、辞書の124行目に、
窓=悲惹恣
とあり、226行目に、
窓=惹意章恣総懇統絆畔料態藤縛繹曖簾穣峡忠怒絡慾科恵想恋愁草程渡恐
とあったのです。よくよく見れば、226行目の候補でないということは分かったはず
ですが。
失礼しました。

白馬の王子様

[ ]
RE:07433 カーソル位置の一文字置換マクロNo.07443
白馬の王子様 さん 14/09/22 20:32
 
既存の辞書が引き継げたお陰で、たくさんの候補があるとき、画面に収まりきらない
のではないか、という私の懸念は、実験してみて、杞憂に過ぎなかったことを確認し
ました!
ちゃんと右へ折り返して複数列にわたって表示され、一望できるのですね。素晴らし
いです。

白馬の王子様

[ ]
RE:07436 カーソル位置の一文字置換マクロNo.07444
白馬の王子様 さん 14/09/22 20:47
 
自己コメントです。
>>言葉足らずでした。「ショートカットキーが」循環します。つまり、第41候補のシ
>ョートカットキーは第1候補のショートカットキーと同じになります。
>なるほど。ということは、第41候補を選択しようとしてショートカットキーの「1」
>を押すと、第1候補が選択され、第41候補はリストの後ろの方にあるため、選択され
>ない、ということになりそうな気がしますが。
実験して、分かりました。最初「1」を押すと、第1候補が、次に「1」を押すと、第4
1候補が…という風になるのですね。うまくできてるなぁ。そして、トグルする、と。

白馬の王子様

[ ]
RE:07434 カーソル位置の一文字置換マクロNo.07445
白馬の王子様 さん 14/09/23 09:27
 
IKKIさん、お早うございます。
誤読辞書で不思議な現象が生じたのでお知らせします。
例のBoonEditorからの辞書引き継ぎの中で、以下の辺りが、登録文字が既にあるにも
かかわらず、候補が一つも表示されず、新候補登録画面が表示されるのです。

申=中巾牛再
祝=視硯
親=観
半=羊
強=弾揮輝

白馬の王子様

[ ]
RE:07445 カーソル位置の一文字置換マクロNo.07446
白馬の王子様 さん 14/09/23 09:44
 
自己レスです。
実験用に下記の行を誤読辞書.txtに登録したところ、先頭行に[候補]という行を書き
忘れていたことに気づき、[候補]を入れたら、ちゃんと表示されました。
ところが、元の400行を超える誤読辞書だと、先頭行に[候補]があっても、候補が表
示されません。辞書の先行部分の環境のせいかと思い、255行目以下を抜粋します。

M=》
音=宵昔営晋蒼苦言首背皆普習書
《=み公災偽次炊灸久冬淡ゐるのふ炎嫌内な
》=彩影杉彰妙沙核伊そぞジシ珍蚊泌汐券亥をな易&&汝没た
講=論
見=兄
フ=プ
ア=ァ
[=[
]=]−
ノ=/
申=中巾牛再
祝=視硯
親=観
半=羊
強=弾揮輝

先頭行に[候補]を忘れないようにして、この内容で誤読辞書を作ったところ、やはり、
「申」以下、候補が表示されません。何か先行行にいけない要素があるようです。

[ ]
RE:07446 カーソル位置の一文字置換マクロNo.07447
白馬の王子様 さん 14/09/23 09:49
 
済みません。再度の自己レスです。
07446番の投稿で、
>実験用に下記の行を誤読辞書.txtに登録したところ、先頭行に[候補]という行を書
>き忘れていたことに気づき、[候補]を入れたら、ちゃんと表示されました。
とある、「下記の行」とは、07445番の投稿内にある行のことです。混乱する書き方
で失礼しました。

白馬の王子様

[ ]
RE:07446 カーソル位置の一文字置換マクロNo.07448
山紫水明 さん 14/09/23 10:17
 
 白馬の王子様さん,

 横から失礼します。

>先頭行に[候補]を忘れないようにして、この内容で誤読辞書を作ったところ、
>やはり、「申」以下、候補が表示されません。何か先行行にいけない要素があ
>るようです。

「申」以下の行を先頭に持ってきたら,どうなりますか?

                    山紫水明
                    SANSHISUIMEI

[ ]
RE:07448 カーソル位置の一文字置換マクロNo.07449
白馬の王子様 さん 14/09/23 10:37
 
山紫水明さん、初めまして。
関心をお持ちいただき、ありがとうございます。

>「申」以下の行を先頭に持ってきたら,どうなりますか?

[候補]
申=中巾牛再
祝=視硯
親=観
半=羊
強=弾揮輝

とすれば、正常に機能します。

白馬の王子様

[ ]
RE:07446 カーソル位置の一文字置換マクロNo.07450
IKKI さん 14/09/23 13:09
 
白馬の王子様さん、こんにちは。

今回のマクロはINIファイル形式を使っている関係で、半角角括弧「[」と半角イコー
ル「=」を扱うことができません。
23行目の下に

if ($$org == "[") return "「[」は処理できませんぜ";

を追加しておいてください。
「[」「=」を扱えるようにするには、ちょっと汚い手を使う必要があります (考えて
みてください)。

[ ]
RE:07436 カーソル位置の一文字置換マクロNo.07451
IKKI さん 14/09/23 13:31
 
白馬の王子様さん、こんばんは。

>ライブラリーに上げる場合、説明文の長さの制約とかあるのでしょうか?
面倒なので確認していませんが、たしか25行以内だったような…。
その代わり1行の長さは無制限だったような…。
まあ、だからと言って長文を書いても誰も読まないでしょうけれど…。
もし書くのであれば、マクロ名を見て「これは?」と思ってページを開いた人が、説
明文を読んで、そのマクロが自身の目的に合うか否かを15秒以内に判断できると良い
ですね。

---- 以下雑談 ----

これは私の印象ですが、秀丸のコミュニティでは「マクロは自分で作るもの」という
意識が暗黙のうちに共有されているように思われます。
この会議室でも

「△△の目的を達成するマクロを作ってください (自分では作れません)」

という趣旨の投稿はあまり見かけませんし、返信するユーザーも多くありません。
今回はたまたま私が本業の論文執筆を終えて清々しているところに面白そうな課題が
転がり込んできたので茶を沸かす間の手慰みに解いてみたというレアケースでして、
いっそ偶然の産物とお考えいただいた方がよろしいでしょう。
実際のところ、この会議室は主にマクロ作者同士の技術的な情報交換のために使われ
ていて、たとえば

「△△の目的でマクロを作ろうとしているのですが、○○という動作を意図して (例
示) のマクロ文を書いたところ、××のような結果になってしまいました。どこが間
違っているのでしょうか」

とか

「△△の目的を達成したいのですが、マクロでは××を実現できないので困っていま
す。代替案はありませんか」

のような投稿が多く見られます。
ですので、白馬の王子様さんも「自分でマクロを作りたい/改造したい」というスタ
ンスで投稿なさった方が、今後的確な返答が得られやすいのではないかと思います。


個人的な考えとしては、今回のような

「ある目的のためにマクロが必要だが、自分で開発するには(時間|気力|余命)が足り
ない」

というニーズが満たされないのは惜しいことだと思っています。
何が言いたいかというと、マクロ開発を有償委託できるような仕組みがあってもいい
んじゃないかと。
それって要するにクラウドソーシングなわけですが、秀丸マクロという括りではあま
りにもパイが小さすぎて、既存のクラウドソーシングサービスではマッチングが成立
する気がしない…。
かといって個人間で相対取引しようとすると、少額決済を (できれば匿名で) 行う手
段が日本にはあまりないという問題が。
たとえばサイトー企画が間に入って決済を代行してくれたりすれば、手空きの時に受
託してもいいかなと思ったりはするんですけどね。

[ ]
RE:07436 カーソル位置の一文字置換マクロNo.07452
IKKI さん 14/09/23 13:33
 
このスレッドをお読みになった方へ:
さきほど
> IKKIさんには(御指名で)マクロのリクエストが他の人からも届くでしょう
という書き込みがありましたが、
私は業として秀丸マクロの受託開発を行っているわけではありません。
指名されても対応いたしかねますので、誤解なきようお願いします。

[ ]
RE:07450 カーソル位置の一文字置換マクロNo.07453
白馬の王子様 さん 14/09/23 14:16
 
IKKIさん、こんにちは。
さらなるサポート、ありがとうございます。

>今回のマクロはINIファイル形式を使っている関係で、半角角括弧「[」と半角イ
>コール「=」を扱うことができません。
なるほど。そういうことでしたか。

>23行目の下に
>
>if ($$org == "[") return "「[」は処理できませんぜ";
>
>を追加しておいてください。
追加しました。
で、継承辞書の中から、誤読文字と候補文字の中から、半角角括弧「[」と半角イ
コール「=」を削除したところ、「申」や「強」など、問題があったところもすべて
正常に機能するようになりました!感謝、感謝です。

>「[」「=」を扱えるようにするには、ちょっと汚い手を使う必要があります (考え
>てみてください)。
いえ、これらは扱えなくても、実際上、何の問題もありません。そもそも「きれいな
手」さえ使えない私ですので、「汚い手」などはなおさら無理です。(笑)

白馬の王子様

[ ]
RE:07451 カーソル位置の一文字置換マクロNo.07454
白馬の王子様 さん 14/09/23 14:32
 

IKKIさん、こちらでもこんにちは。

>>ライブラリーに上げる場合、説明文の長さの制約とかあるのでしょうか?
>面倒なので確認していませんが、たしか25行以内だったような…。
>その代わり1行の長さは無制限だったような…。
なるほど。
>まあ、だからと言って長文を書いても誰も読まないでしょうけれど…。
ですよね。

>もし書くのであれば、マクロ名を見て「これは?」と思ってページを開いた人が、説
>明文を読んで、そのマクロが自身の目的に合うか否かを15秒以内に判断できると良
>いですね。
確かに。
今回のマクロの便利さを一瞬で理解してもらう説明文を書くのは至難の業ですね。そ
もそも、OCRの誤読混じりのテキストを読むのに、OCR付属の誤字訂正機能ではなぜ駄
目かという、既にお話しした状況説明から必要ですものね。

>これは私の印象ですが、秀丸のコミュニティでは「マクロは自分で作るもの」とい
>う意識が暗黙のうちに共有されているように思われます。
なるほど。そうでしたか。

>この会議室でも
>
>「△△の目的を達成するマクロを作ってください (自分では作れません)」
>
>という趣旨の投稿はあまり見かけませんし、返信するユーザーも多くありません。
>今回はたまたま私が本業の論文執筆を終えて清々しているところに面白そうな課題
>が転がり込んできたので茶を沸かす間の手慰みに解いてみたというレアケースでし
>て、いっそ偶然の産物とお考えいただいた方がよろしいでしょう。
分かりました。私にとって運がよかっただけだったのですね。
それにしても、「お茶を沸かす間の手慰み」に、nukigaki.macやgodoku.macを作り上
げてしまう技能をお持ちとは、何とも羨ましい限りです。

>実際のところ、この会議室は主にマクロ作者同士の技術的な情報交換のために使わ
>れていて、(以下中略)
>ですので、白馬の王子様さんも「自分でマクロを作りたい/改造したい」というス
>タンスで投稿なさった方が、今後的確な返答が得られやすいのではないかと思います。
アドバイス、ありがとうございます。

>個人的な考えとしては、今回のような
>
>「ある目的のためにマクロが必要だが、自分で開発するには(時間|気力|余命)が足
>りない」
>
>というニーズが満たされないのは惜しいことだと思っています。
>何が言いたいかというと、マクロ開発を有償委託できるような仕組みがあってもい
>いんじゃないかと。
大賛成です!!

>それって要するにクラウドソーシングなわけですが、秀丸マクロという括りではあ
>まりにもパイが小さすぎて、既存のクラウドソーシングサービスではマッチングが
>成立する気がしない…。
「クラウドソーシング」という言葉と概念を初めて知りました。

>かといって個人間で相対取引しようとすると、少額決済を (できれば匿名で) 行う
>手段が日本にはあまりないという問題が。
>たとえばサイトー企画が間に入って決済を代行してくれたりすれば、手空きの時に
>受託してもいいかなと思ったりはするんですけどね。
今後のことも思うと、是非、そういうシステムを考えていただきたいですね。
ともあれ、今回は本当にお世話になりました。厚く御礼申し上げます。

白馬の王子様

[ ]
RE:07451 カーソル位置の一文字置換マクロNo.07455
山紫水明 さん 14/09/23 18:16
 
 IKKIさん,

>これは私の印象ですが、秀丸のコミュニティでは「マクロは自分で作るもの」
>という意識が暗黙のうちに共有されているように思われます。

 必ずしもそうではないようです。かつて会議室の趣旨についてちょっとした議
論がありました。
http://www.maruo.co.jp/hidesoft/1/x00431_.html#00431

                    山紫水明
                    SANSHISUIMEI

[ ]
RE:07455 カーソル位置の一文字置換マクロNo.07456
IKKI さん 14/09/24 13:04
 
山紫水明さん、コメントありがとうございます。

ご指摘のスレッドは、この掲示板が

・マクロを作る上で分からないことがあったら質問/要望する場として設けられた
・サイトー企画のサポート拠点であるが、ユーザー同士の話で解決しそうな場合はサ
イトー企画は顔を出さない

という話ですね。私もそのように理解しています。

「マクロは自分で作るもの」云々という話は、それとは直交する話で、下記のスレッ
ドを念頭に置いて発言しました。
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_4/x06536.html
「マクロを自分で作(ら|れ)ない」という制約を持つユーザーにとって問題解決の糸
口がない、という状況は今でも変わっていないと思います。

[ ]
RE:07456 カーソル位置の一文字置換マクロNo.07457
山紫水明 さん 14/09/24 22:05
 
 IKKIさん,

>「マクロを自分で作(ら|れ)ない」という制約を持つユーザーにとって問題解決
>の糸口がない、という状況は今でも変わっていないと思います。

 うーん,ちょっと私と認識が違うような気がします。

秀まるおさんの発言,
(1)ご指摘のスレッド
「先ほどのような超簡単なマクロの例程度でしたら、うちのサポート業務の範囲
内で無料で対応出来るとは思います。」
(2)私が紹介したスレッド
「今後はちゃんと見るようにしますが、そこはそこで常連ユーザーさんにかなり
助けてもらわないとやっていけない気がするので、とりあえずユーザーさん同士
の話で解決しそうな場合は僕は顔を出さないでおこうと思います。」

 これらから私は,マクロを自分で作れない人は,この会議室でマクロ制作の要
望を出してもらって結構である,その場合,ボランティアのユーザーも発言もあ
る,と解釈しています。
 しかし解釈の違いを生みだすというのは,会議室の名称がわかりにくい,趣旨
がきちんと明示されていないということでしょうね。
 ともあれ,これは主宰者が決めることのようです。

→ 秀まるおさん

                  山紫水明

[ ]
RE:07457 カーソル位置の一文字置換マクロNo.07458
IKKI さん 14/09/25 02:35
 
山紫水明さん、こんばんは。
# メタな話題を引っ張ってしまってすみません > All

> うーん,ちょっと私と認識が違うような気がします。
私と山紫水明さんの認識は基本的に違っていなくて、ただ、どこまでボランティアで
対応可能か? という程度問題で視野が重なっていないだけな気がします。

> これらから私は,マクロを自分で作れない人は,この会議室でマクロ制作の要
>望を出してもらって結構である,その場合,ボランティアのユーザーも発言もあ
>る,と解釈しています。
私もそのように解釈しています。しかし現実的には次のような問題があります。

(1) ボランティアが少ない。彼らの興味を引かないものはサイトー企画で対応するこ
とになる。
(2) 「超簡単なマクロの例程度」に収まらない大規模なものはサイトー企画でも対応
できない。
(3) 金儲け目的など、無償のボランティアによる開発に向かない性質のものがある。

例として、過去に次のような案件がありました。
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x25124.html
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x25414.html
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_4/x05767.html

上記(3)は、「創作物によって利益を得たのなら、その利益の一部は創作者に還元さ
れるべきである」という私の社会観に基づく見解です。
異論もあるかもしれませんが、営業目的の/大規模な/ボランティアの興味を引かな
いソフトウェアの有償受託開発はビジネスとして普通に行われていることと思います。
問題は、秀丸マクロはパイがとても小さいので、有償開発向きの需要が生じても受け
皿がなく、そのような案件が (無償開発を旨とする) 会議室に流入してしまうことで
す。
ここに需給ギャップ≒ビジネスチャンスがあるのではないか? ということを私は言っ
ています。
山紫水明さんをはじめとするボランティアの皆さんが果たしている役割を否定してい
るわけではありません。

> しかし解釈の違いを生みだすというのは,会議室の名称がわかりにくい,趣旨
>がきちんと明示されていないということでしょうね。
私の意図としては、そこを問題提起するつもりはありませんでした。
もしお手数をおかけしたら申し訳ありません。> 秀まるおさん

[ ]
RE:07434 カーソル位置の一文字置換マクロNo.07461
白馬の王子様 さん 14/09/26 19:50
 
IKKIさん、今晩は。
白馬の王子様です。ご無沙汰していました。
便利に使わせていただいているgodoku.macで一つ気づいたことがあるので、お尋ねし
ます。
アクセント記号の付いたフランス語独特のaを英語の通常の「a」と誤読してあるのを
見つけて、本来のフランス語独特の文字を登録したのですが、登録時は正しくテキス
トが置換されたのに、二度目からはリストに英語の通常のaしか出てこないので、誤
読辞書を調べたところ、「a=a」となっていました。これは仕様で、しようがないの
でしょうか?

白馬の王子様

[ ]
RE:07461 カーソル位置の一文字置換マクロNo.07462
IKKI さん 14/09/27 16:31
 
白馬の王子様さん、こんにちは。

Unicode を扱えるようにした改良版が末尾にあります。
マクロを使う前に2つの準備作業が必要です。

準備1: ht_tools.dll をインストールします。
http://homepage3.nifty.com/_htom/macro/macro_dll.html#label-13
このページから「開発版」をダウンロードし、解凍して出てきた ht_tools.dll を g
odoku.mac と同じフォルダに置きます。

準備2: 誤読辞書.txt を秀丸エディタで開き、UTF-16 で保存し直します。
《→ファイル - 名前を付けて保存 - エンコード》

これでアクセント付きアルファベットなども扱えるようになるはずです。
フランス語とドイツ語だけならこれで困らないと思いますが、ひとたび Unicode に
対応すると複雑な問題が次々に湧いてきます:

(1) サロゲートペア (日本語、中国語など)
「&#135741;」など一部の漢字は内部的に2文字として扱われます。
サロゲートペアの文字を修正候補として登録すると、メニュー上では不可視の候補が
2個あるように見えます。

(2) 結合文字 (ヒンディー語、タイ語など)
例えばデーヴァナーガリーの「&#2325;&#2368;」は使用者の感覚では1文字ですが、
内部的には2文字として扱われます。
これを修正候補として登録すると、メニュー上では「&#2325;」と「&#2368;」という
2つの候補が現れます。
アイヌ語の「セ&#12442;」なども同様に、「セ」と半濁点に分解されてしまいます。

(3) 書字方向 (アラビア語、ヘブライ語など)
右から左へ書く言語での動作は、私に適否を判断できる知識がないため、試していま
せん。

サロゲートペアや結合文字にきちんと対応するためには、根本的に「修正候補は1文
字」という基本設計を見直さなければなりません。
もしライブラリに公開するとなると、このへんをきちんと対応しなければならないで
しょうね。


// godoku.mac
$dic = currentmacrodirectory + "\\誤読辞書.txt";
$sec = "候補";
$keys = "1234567890QWERTYUIOPASDFGHJKL;ZXCVBNM<>/";
loaddll currentmacrodirectory + "\\ht_tools.dll";
if (!result) {
 message "ht_tools.dll を " + currentmacrobasename + " と同じフォルダに置い
てください";
 endmacro;
}
begingroupundo;
call Main;
if ($$return != "") message currentmacrobasename + ":\n" + $$return;
endgroupundo;
freedll;
endmacro;

Main:
if (!selecting) {
 if (unicode <= 32) return "修正したい文字にカーソルを置いて実行してください";
 right;
 beginsel;
 left;
 endsel;
} else if (multiselecting || rectselecting || seltoplineno != selendlineno) {
 return "複数範囲、BOX範囲、改行を含む範囲は処理できません";
}
$$org = gettext(seltopx, seltopy, selendx, selendy, true);
if ($$org == "") return "修正対象文字が空でんがな";
if ($$org == "=") return "「=」は処理できませんわ";
if ($$org == "[") return "「[」は処理できませんぜ";
$$list = dllfuncstrw("GetIniStrW", $dic, $sec, $$org);
$$menu[0] = "登録...";
while (##i < wcslen($$list)) {
 $$key = " (&" + midstr($keys, ##i % strlen($keys), 1) + ")";
 $$menu[##i + 1] = wcsmidstr($$list, ##i, 1) + $$key;
 ##i = ##i + 1;
}
if (##i > 0) {
 menuarray $$menu, ##i + 1;
 ##ans = result - 1;
}
if (##ans < 0) return;
if (##ans > 0) {
 $$x = wcsmidstr($$list, ##ans - 1, 1);
 insert $$x;
 $$list = $$x + wcsleftstr($$list, ##ans - 1) + wcsmidstr($$list, ##ans);
} else {
 $$adds = input("「" + $$org + "」に対する修正候補を登録します", $$list);
 if ($$adds == "") return;
 insert wcsleftstr($$adds, 1);
 $$list = $$adds + $$list;
}
while (##j < wcslen($$list)) {
 $$x = wcsmidstr($$list, ##j, 1);
 if (wcsstrstr($$uniq, $$x) < 0) $$uniq = $$uniq + $$x;
 ##j = ##j + 1;
}
##_ = dllfuncw("WriteIniStrW", $dic, $sec, $$org, $$uniq);
return;

[ ]
RE:07462 カーソル位置の一文字置換マクロNo.07464
白馬の王子様 さん 14/09/27 18:04
 
IKKIさん、こんにちは。
「準備」から始まって、詳しいご説明、ありがとうございました。
できました!見事にできました!!
秀シリーズサポートフォーラム/秀丸エディタ&関連ソフトサポート会議室で、山紫
水明さんに作っていただいた、文字パレットから仏独特殊文字を選択入力するマクロ
で、まず入力して、それをコピーしておき、godoku.macの登録画面でペーストしたと
ころ、誤読辞書.txtにもちゃんと登録されていました。

>これでアクセント付きアルファベットなども扱えるようになるはずです。
>フランス語とドイツ語だけならこれで困らないと思いますが、
はい、私の場合、これ以上、何を望みましょう!

>(1) サロゲートペア (日本語、中国語など)
>「&#135741;」など一部の漢字は内部的に2文字として扱われます。
>サロゲートペアの文字を修正候補として登録すると、メニュー上では不可視の候補
>が2個あるように見えます。
体験していないので、よく分かりませんが、通常の日本文を扱うのであれば、あまり
気にしないでいいのでしょう?そういう変な文字は、godoku.macを使わず、直接手入
力で対応する、ということで…?

>(2) 結合文字 (ヒンディー語、タイ語など)
>例えばデーヴァナーガリーの「&#2325;&#2368;」は使用者の感覚では1文字ですが、
>内部的には2文字として扱われます。
>これを修正候補として登録すると、メニュー上では「&#2325;」と「&#2368;」とい
>う2つの候補が現れます。
>アイヌ語の「セ&#12442;」なども同様に、「セ」と半濁点に分解されてしまいます。
これらの特殊言語は、私には縁がないので、大丈夫です。
それにしてもIKKIさん、マクロ言語だけでなく、世界の言語にお詳しいのですね!

>(3) 書字方向 (アラビア語、ヘブライ語など)
>右から左へ書く言語での動作は、私に適否を判断できる知識がないため、試してい
>ません。
そこまでになると、必要なユーザーが名乗りを上げたとき、その人から教わりながら
考える…ということでいいでしょう。

>サロゲートペアや結合文字にきちんと対応するためには、根本的に「修正候補は1文
>字」という基本設計を見直さなければなりません。
>もしライブラリに公開するとなると、このへんをきちんと対応しなければならない
>でしょうね。
IKKIさんは、完璧主義者ですね。降参です。(笑)
ライブラリーに公開の際は、ご指摘の制約を明記して、それを承知の上で使っていた
だく、ということで問題ないような気がしますが、それは甘いですかね?現状だけで
も、ものすごく実用的なものに仕上がっていると思うのですが。

白馬の王子様

[ ]
RE:07464 カーソル位置の一文字置換マクロNo.07465
IKKI さん 14/09/28 23:57
 
白馬の王子様さん、こんばんは。

>体験していないので、よく分かりませんが、通常の日本文を扱うのであれば、あま
>り気にしないでいいのでしょう?
サロゲートペアを必要とする漢字の一覧は、「サロゲートペア 漢字」で Google 検
索するとすぐに見つかります。
それらの漢字を扱わないのであれば問題ありません。

>そういう変な文字は、godoku.macを使わず、直接手入力で対応する、ということで…?
もちろん、それでOKです。

>そこまでになると、必要なユーザーが名乗りを上げたとき、その人から教わりなが
>ら考える…ということでいいでしょう。
そうですね。

>ライブラリーに公開の際は、ご指摘の制約を明記して、それを承知の上で使ってい
>ただく、ということで問題ないような気がしますが、それは甘いですかね?
甘くないと思います。

>IKKIさんは、完璧主義者ですね。降参です。(笑)
すみません。ヒンディー語に「対応しなければならない」と言ったのは私なりの冗談
でした。(笑)

…というのは冗談で。

実はこのマクロ、マクロ製作上の基本的なテクニックとノウハウが盛り込まれた良い
サンプルになっています (そうなることを意図して書いています)。
57行という短いコードですが、解説文を付ければチュートリアルとして十分使えるん
じゃないかと思います。
なので、(白馬の王子様さんのためというよりも) 今後この会議室を読む人のために、
あるいは今後私が秀丸マクロの本を書くときのために、マクロで Unicode を扱う際
に留意すべきことを忘れないように記しておいたのでした。

[ ]
RE:07465 カーソル位置の一文字置換マクロNo.07466
白馬の王子様 さん 14/09/29 08:04
 
IKKIさん、お早うございます。
ほとんどお返事を必要としない、薄っぺらな投稿に、わざわざ丁寧なお返事を恐縮で
す。

>サロゲートペアを必要とする漢字の一覧は、「サロゲートペア 漢字」で Google 検
>索するとすぐに見つかります。
これから早速調べてみます。情報、ありがとうございました。
>それらの漢字を扱わないのであれば問題ありません。
ほっとしました。

>>そういう変な文字は、godoku.macを使わず、直接手入力で対応する、ということで
>…?
>もちろん、それでOKです。
よかった。

>>そこまでになると、必要なユーザーが名乗りを上げたとき、その人から教わりなが
>ら考える…ということでいいでしょう。
>そうですね。
この件も一件落着、と。

>>ライブラリーに公開の際は、ご指摘の制約を明記して、それを承知の上で使ってい
>ただく、ということで問題ないような気がしますが、それは甘いですかね?
>甘くないと思います。
IKKIさんのお墨付きが得られたということで、これも一安心。

>>IKKIさんは、完璧主義者ですね。降参です。(笑)
>すみません。ヒンディー語に「対応しなければならない」と言ったのは私なりの冗
>談でした。(笑)
よかった…、近寄りがたい、途方もない完璧主義者でなくて(笑)。

>実はこのマクロ、マクロ製作上の基本的なテクニックとノウハウが盛り込まれた良
>いサンプルになっています (そうなることを意図して書いています)。
>57行という短いコードですが、解説文を付ければチュートリアルとして十分使える
>んじゃないかと思います。
あ、そうだったんですか。

>なので、(白馬の王子様さんのためというよりも) 今後この会議室を読む人のために、
>あるいは今後私が秀丸マクロの本を書くときのために、マクロで Unicode を扱う際
>に留意すべきことを忘れないように記しておいたのでした。
IKKIさんのその姿勢、非常に尊敬します。こうした公の場をお借りする以上、一人だ
けのため、その場限りというのでなく、後から訪れる不特定多数の方々のために…と
いうのは、この上なく大切だと思います。
あのマクロがお手本なら、私も老骨にむち打って、マクロの勉強、始めるかも……。

白馬の王子様

[ ]