テキストエディター「Mery」ベータ版 Ver 3.5.9 を公開

テキストエディター「Mery」ベータ版 Ver 3.5.9 を公開

テキストエディター「Mery」をアップデートしました。今回の新機能は「あいまい検索」と「折り返しインデント」です。

まずは、あいまい検索。テキスト内で特定のキーワードやフレーズを、完全一致だけでなく、あいまいな検索でも見つけられる機能です。情報を見逃す心配を軽減し、効率的な編集をお手伝いいたします。

それから、折り返しインデントのサポートも追加されました。コードのブロックなど、右端で折り返されたときのインデントを自動で整えることができるので、より快適な編集作業が可能になりました。

新機能のお試し、ぜひ楽しんでいただければ幸いです。

スポンサーリンク

あいまい検索に対応

Microsoft Word でおなじみ、ひらがなとカタカナなどを区別せずに検索できる「あいまい検索」に対応しました。

Word だとデフォルトであいまい検索がオンになっているため不評を招くこともありますが、誤字やスペルミスを無視してほぼ一致する文字列を検索できる、簡単で便利な機能なんです。

あいまい検索の使用

  1. [検索] メニューから [検索] をクリックして [検索] ダイアログ ボックスを表示します。
  2. [あいまい検索] を選択します。
  3. 検索する語句を [検索する文字列] に入力して [検索] ボタンをクリックします。

あいまい検索の使用

あいまい検索の設定

  1. [検索] ダイアログ ボックスの [あいまい検索] の右にある [...] ボタンをクリックすると、[あいまい検索のオプション] ダイアログ ボックスが表示されます。
  2. このダイアログ ボックスであいまい検索の条件を設定して、[OK] ボタンをクリックします。

あいまい検索の設定

濁点、半濁点を無視する

濁点、半濁点を無視して検索します。などの違いは無視されます。たとえば、アボカドアボガドは一致します。

全角、半角を区別しない

全角、半角を区別せずに検索します。AAなどは区別されません。たとえば、ドリアンドリアンは一致します。

ひらがな、カタカナを区別しない

ひらがな、カタカナを区別せずに検索します。などは区別されません。たとえば、ばななバナナは一致します。[全角、半角を区別しない] と組み合わせると、なども一致します。

仮名の大小を区別しない

仮名の大小を区別せずに検索します。や、などは区別されません。たとえば、シークヮーサーシークワーサーは一致します。[全角、半角を区別しない]、[ひらがな、カタカナを区別しない] と組み合わせると、なども一致します。

異体字セレクタを無視する

異体字セレクタを無視して検索します。たとえば、

異体字セレクタを無視する 1

異体字セレクタを無視する 2

の違いは無視されます。

絵文字シーケンスを無視する

絵文字シーケンスを無視して検索します。たとえば、

絵文字シーケンスを無視する 1

絵文字シーケンスを無視する 2

の違いは無視されます。

空白文字を無視する

空白文字を無視して検索します。たとえば、パイナップルパ イ ナ ッ プ ルの違いは無視されます。具体的には、以下の空白文字が無視されます。

  • U+0009 (CHARACTER TABULATION)
  • U+000B (LINE TABULATION)
  • U+000C (FORM FEED)
  • U+0020 (SPACE)
  • U+00A0 (NO-BREAK SPACE)
  • U+1680 (OGHAM SPACE MARK)
  • U+2000 .. U+200A (EN QUAD .. HAIR SPACE)
  • U+202F (NARROW NO-BREAK SPACE)
  • U+205F (MEDIUM MATHEMATICAL SPACE)
  • U+3000 (IDEOGRAPHIC SPACE)
  • U+FEFF (ZERO WIDTH NO-BREAK SPACE)

改行文字を無視する

改行文字を無視して検索します。たとえば、

パイナップル
パ
イナ
ップル

の違いは無視されます。

類似する文字列に一致する

雰囲気の似ている文字列を検索します。たとえば、ふんいきふいんきは一致します。[類似度] と [最大編集距離] を設定することであいまいレベルを調整できます。

類似度

文字列がどれだけ類似しているかを指定します。たとえば、75% (3/4) を指定すると 4 文字に 1 文字、誤字があっても一致します。

最大編集距離

[類似度] で指定した誤字の数の最大値を設定します。検索する文字列が長い場合は、ここで指定した値に制限されます。

[類似度]、[最大編集距離] などの言葉がやや難しいかもしれません。

これらの項目はレーベンシュタイン距離に基づいていますが、詳細については、この記事の最後に説明しますのでご興味のある方は [あいまい検索の詳細] を参照してください。

折り返しインデントに対応

従来は、タブまたは半角空白でインデントした行が折り返されている場合、折り返された 2 行目以降は左端から表示されていました。

折り返しインデントに対応 1

[表示] メニューの [インデント] から [折り返しインデント] を有効にすると、折り返された 2 行目以降もインデントして表示されるようになります。

折り返しインデントに対応 2

もちろん、2 行目以降にタブや半角空白が挿入されているわけではなく、インデントしているように見えるだけなのでご安心ください。

また、箇条書きなどで行頭に*-などの記号を付ける場合は、[ツール] メニューの [オプション] から [基本] カテゴリの [追加のインデント文字] に*-を指定します。

折り返しインデントに対応 3

すると、[追加のインデント文字] に指定した文字もインデントとして扱われるようになり、折り返されたときのインデント幅が調整されます。

折り返しインデントに対応 4

このように、[折り返しインデント] を使うことで、インデントした箇条書きや、インデントしたコードのブロックが折り返されたときの可読性が向上します。

インデント ガイドに対応

Visual Studio Code や Sublime Text などのモダンなコードエディターでは当然のようにデフォルトで表示される、なんかそれっぽい縦線です。

実はこれ、[インデント ガイド] という機能で、コードブロックや制御構造の可読性を向上させるためのガイドラインなんですね。

[表示] メニューの [記号] から [インデント ガイド] を有効にすると、タブや半角空白でインデントした場所に縦線が表示されます。

インデント ガイドに対応 1

Python のようにインデントが重要な言語ではもちろんのこと、その他の言語でも、たとえば、if 文や for 文の開始と終了がわかりやすくなったりもします。

インデント ガイドに対応 2

ぜひ、[インデント ガイド] をご活用いただき、他の開発者にも自慢できる、スッキリとしたコードを書いてみてくださいね。

変更ログ

本バージョンではいくつかの不具合修正や機能改善が含まれています。現在お使いのバージョンで問題がある場合はバージョンアップで改善されるかもしれません。

3.5.9 (2023-08-11)

  • [検索] で [インクリメンタル サーチ] と [選択した範囲のみ] がオンのとき、選択範囲を維持するようにした

    フォーラム 検索ダイアログで「選択した範囲のみ」+「インクリメンタルサーチ」のときの挙動について

  • プラグインで Editor_CustomBarOpen を呼び出したとき、EVENT_DPI_CHANGED を遅延送信するようにした

    Per Monitor v2 の特定の条件下で、アウトライン プラグインのフォント サイズが正しく設定されない問題の対策です。

    Ver 3.3.2 以降で、メイン ディスプレイとサブ ディスプレイのスケールが異なり、かつ Mery.exe をサブ ディスプレイで起動し、かつ Mery を起動したときのウィンドウがサブ ディスプレイに表示される場合、カスタム バーの開始時にプラグインに送信されるはずの DPI 変更のメッセージが正しく送信されていなかったようです。

  • プラグインの Editor_Info に MI_GET_FONT_HEIGHT を追加

    プラグインから本体の正しいフォント サイズを取得できるようになりました。

  • 本体のフォント サイズが .5 のとき、アウトライン プラグインのフォント サイズを同期できるようにした

    上記の機能追加に伴い、フォント サイズが 10.5 などに設定されているとき、アウトライン プラグインで正しいフォント サイズを同期できるようになりました。

  • [スペル チェック] でアポストロフィ (')、ハイフン (-)、ピリオド (.) を単語の一部として扱うようにした

    フォーラム スペルチェックの辞書書式や、短縮形の英単語のチェック方法について

  • [スペル チェック] ですべて大文字の単語は無視するようにした

    すべて大文字の単語を無視するアプリは、Word (オプションあり)、OpenOffice、Chrome、秀丸エディタさんなど。すべて大文字の単語を無視しないアプリは、LibreOffice、Firefox、EmEditor さんなど。

    なお、Mery.ini の[Spelling]セクションにIgnoreUpperCase=0を追記することで、従来の仕様に戻すこともできます。

  • [スペル チェック] で [辞書に追加] を実行したとき、すぐに Mery.dic を更新するようにした

    従来、Mery を終了したときに Mery.dic を更新していましたが、アプリがクラッシュした場合に備えてすぐに更新するようにしました。

    また、Mery を終了したときに Mery.dic を更新しないので、Mery を使って Mery.dic を編集できるようになりました。注意事項として、[辞書に追加] を実行すると Mery.dic は上書きされてしまいます。

    あと、Mery を使って Mery.dic を編集した場合、[スペル チェック] のオン/オフを切り替えるか、[辞書] から [en_US] などの辞書をもう一度選択すると、Mery.dic が適用されます。

  • [スペル チェック] のユーザー辞書で、既存の単語をモデルにできるようにした

    基本的にスペル チェック辞書は、辞書 (.dic) ファイルと接辞 (.aff) ファイルで構成されています。雑に言うと、辞書 (.dic) ファイルは単語のリスト、接辞 (.aff) ファイルはその単語の活用形の定義といったところでしょうか。

    外部 hunspell/man/hunspell.5

    ユーザー辞書 (Mery.dic) は、接辞 (.aff) ファイルとは結びついていないので、単語の登録のみとなっており、活用形は利用できませんでした。

    今回の機能追加によって、Mery.dic で次のように記述できるようになりました。

    foo
    Foo/Simpson
    

    fooFooの単語はスペル チェック辞書に登録されますが、Fooは en_US.dic に登録されているSimpsonの接辞を適用して、Foo'sなども認識されるようになります。

    もちろん、辞書 (.dic) ファイルと接辞 (.aff) ファイルを直接編集して単語を登録することもできますが、これらのファイルの仕様はなかなか複雑なので、気軽には手を出せません。

    そこで、簡単なユーザー辞書を使いつつ、その単語に似たような単語を辞書 (.dic) ファイルからモデルとして拾ってきて接辞 (活用形) として認識させる、といった感じです。

  • [トレイ アイコンを表示] がオンの状態ですべてのウィンドウを閉じたとき、スペル チェックの無視リストをクリアするようにした
  • ツール バー プラグインがインストールされている状態で、かつ特定の条件下で Windows をシャットダウンしたとき、「無効なポインタ操作」が Mery.log に出力されていたのを修正

    Ver 3.4.0 ~ 3.5.8 で、ツール バーを利用したプラグインを導入しているときに、特定の条件下で発生するようでした。プラグイン側での対応は必要ありません。

  • [改行を削除] と [行の結合] で、空の行を無視するようにした
  • eula.rtf を更新
  • その他、細かい修正

3.5.8 (2023-07-24)

  • 複数行を選択して 1 列目にカーソルがあるとき、その行を [逆インデント] しないようにした

    フォーラム 検索ヒット件数が数万件に渡る場合の「すべて検索」動作速度について

  • [選択範囲の変換] の [インデント] と [逆インデント] を選択範囲がないときも使用できるようにした
  • [選択範囲の変換] の [文字コードの切り替え] が [書き換え禁止] のときも有効になっていたのを修正
  • [選択範囲の変換] の [Base64 エンコード] が [書き換え禁止] のときも動作していたのを修正

3.5.7 (2023-07-23)

3.5.6 (2023-07-22)

  • [折り返しインデント] に対応

    フォーラム 【要望】折り返し行インデント

  • [インデント ガイド] に対応

    [折り返しインデント] に対応した副産物として、インデント幅の値を有効活用してみました。

  • タブの幅を半角空白の幅を基準に計算するようにした

    従来、タブの幅はフォントの平均幅を使用していましたが、プロポーショナル フォントで [インデント ガイド] を表示したときにずれることがあるので仕様変更しました。

    メモ帳の場合、Windows 10 まではフォントの平均幅が使用されていましたが、Windows 11 からは半角空白の幅に変更されているようです。また、Visual Studio Code や Sublime Text も同様に半角空白の幅を採用しているようです。

    なお、Mery.ini の[General]セクションにUseLegacyTabWidth=1を追記することで、従来の仕様に戻すこともできます。

  • [オプション] の [折り返し線を表示] と [カーソルのある行に水平罫線を表示] を [記号] カテゴリに移動

    [折り返しインデント] のオプションを追加したため、スペースの都合でこれらの項目はカテゴリを変更しました。

  • それに伴い、[表示] メニューの [記号] に [折り返し線] と [水平罫線] を追加
  • [印刷] で [禁則処理を行う] が常に有効になっていたのを修正
  • 何も選択していないとき、Shift + Tab キーで [逆インデント] できるようにした
  • [すべて検索] を高速化
  • マルチ カーソルで [選択範囲の変換] の動作速度を改善
  • マルチ カーソルで編集に時間がかかる場合、中断できるようにした

    フォーラム 検索ヒット件数が数万件に渡る場合の「すべて検索」動作速度について

  • [表示] メニューに [インデント] を追加

    [折り返しインデント] を素早く切り替えられるようにするためです。

  • [オプション] の [キーボード] で Alt キーとの組み合わせがボタンのアクセラレータ キーに横取りされていた問題の対策

    フォーラム ルーラーの表示

  • その他、細かい修正

    1 行が長いとき、[すべて置換] で [キャンセル] が効かないことがあった問題の対策や、カーソルの数が増えると描画速度が遅くなっていた問題の対策など。

3.5.5 (2023-07-02)

  • Ver 3.5.4 でリストビューにポップアップ メニューを表示するようにした副作用で、項目を編集中のショートカット キーが上書きされてしまったのを修正

    項目を編集中にもかかわらず、リストビューのポップアップ メニューのショートカット キーが優先されてました。

  • マーカー バーのポップアップ メニューから [マーカーの設定] を開いたときに該当項目を選択するようにした

    マクロ バー、プラグイン バー、外部ツール バーも同じように対応しておきました。

  • マーカー バーのポップアップ メニューに [グループを有効]、[グループを無効] を追加

    マーカーの [タイトル] の先頭に|を入力すると [グループの始まり] になります。マーカー バーで項目を右クリックすると、[グループを有効]、[グループを無効] を選択できます。

  • [マーカー バーにテキストを表示] がオフのときはヒントに [タイトル] を表示するようにした

    フォーラム マーカー バーへ表示用の別名を…

  • 空のファイルで [読み直し] の [自動選択] を実行したときにステータス バーのエンコーディング表示が [自動選択] になっていたのを修正

    フォーラム 要望

  • [改行の挿入]、[行の分割] で 1 行目が改行のみだったときに改行が消えていたのを修正

    20 年越しのバグを見つけました。

  • メニューの項目を選択した状態からの右クリックで [キーボード ショートカットの割り当て] をできるようにした
  • [ファイル] メニューの最近のファイルの一覧で項目を選択した状態からの右クリックで [開く]、[ピン留めする]、[ピン留めを外す]、[削除]、[このフォルダーから開く]、[エクスプローラーで開く]、[パスのコピー] をできるようにした

    今回の新機能、メニューの上にさらにポップアップ メニューを表示できるようになりました。

    これができてしまうと [フォント] の履歴や [検索] の履歴などもピン留めしたいといったご要望が予想されますが、[フォント] の履歴は仕組みが違うので対応は難しそうですし、[検索] の履歴はドロップダウン リストなので、今回の方法ではメニューを表示できませんでした。

  • タブの右クリックで [このフォルダーから開く]、[エクスプローラーで開く]、[パスのコピー] をできるようにした

    ついでに、タブのポップアップ メニューにも機能を追加しておきました。

  • [マクロ バー]、[プラグイン バー]、[外部ツール バー] のボタンのポップアップ メニューをシンプルにした
  • シェブロン メニューの項目を選択した状態からの右クリックでポップアップ メニューを表示できるようにした

    たとえば、マーカー バーで項目がバーからはみ出したとき、[>>] ボタンで表示したメニューの項目も右クリックで操作できるようになりました。

  • [検索する文字列] のドロップダウン リストを表示した状態でAlt+Deleteキーを押したときに選択した項目のみ削除するようにした

    フォーラム メリー要望 文字列検索のマドが大きすぎて使いづらいです

    従来はドロップダウン リストの内容をすべて削除していましたが、選択した項目のみ削除する仕様にしました。すべて削除は、Alt+Deleteキーを押しっぱなしです。

  • [Ctrl + ホイールでフォント サイズを変更] を無効にする隠しオプションを追加

    フォーラム 要望

    Mery.ini の[General]セクションにWheelFont=0を追記すると、[Ctrl + ホイールでフォント サイズを変更] が無効になります。とりあえず隠しオプションで実装してみましたが、今後、ご要望が多ければ標準のオプションにするかもしれません。

  • Windows 11 のダークモードで特定のリストビューに残像が出る問題の対策

    Windows 11 のみ発生する現象で、動作に支障はありませんが、気になったので対策してみました。

  • eula.rtf を更新

    フォーラム 使用許諾契約書について

  • その他、細かい修正

3.5.4 (2023-06-14)

  • マーカーに [タイトル] を指定できる機能を追加

    フォーラム マーカー バーへ表示用の別名を…

    Mery.ini の仕様変更がともないます。マーカーの設定は、初回バージョンアップの場合 (Ver 3.5.4 未満から 3.5.4 へ) は引き継ぎますが、バージョンダウンの場合 (Ver 3.5.4 から 3.5.4 未満へ) は引き継ぎません。

    また、Ver 3.5.4 未満で使用していた[Marker]セクションは残しているので、バージョンダウンすると Ver 3.5.4 未満のマーカーの設定を復元できます。

  • マーカーの [インポート]、[エクスポート] に対応

    マーカーのリストビューを右クリックしてポップアップ メニューから選択できます。

  • マーカー バーに複数行のテキストをドラッグアンドドロップできるようにした
  • ダークモードでマーカー バーのボタンをドラッグしたときの挿入マークを白っぽくした
  • Windows 11 のダークモードでリストビューがチラつくことがあった問題の対策
  • リストビューでポップアップ メニューを表示するようにした
  • リストビューのステートイメージを連続でクリックしたときの挙動を改善
  • [表示] メニューの [ツール バー] に [マーカー バーにテキストを表示] を追加

    マーカーに [タイトル] を指定できるようになりましたが、Windows のツールバーの仕様上、リスト表示 (ビットマップの右側にテキストを含むツールバー) は、テキストを空にしてもボタンの幅が横長になってしまいます。

    [マーカー バーにテキストを表示] をオフにすると、リスト表示が解除され、シンプルなボタン表示となります。なお、特定のボタンのみ、リスト表示といったことはできません。

  • [マクロ バーのラベルを表示] を [マクロ バーにテキストを表示] に変更
  • 32 ビット版の Windows で [外部ツール] の [Microsoft Edge] のパスを自動設定できるようにした
  • ダークモードで [Zen モード] を解除したときにタブのスクロールボタンの表示が崩れる問題の対策
  • ダークモードで [全画面表示]、[Zen モード] のときにマクロの Redraw プロパティを使用するとチラつくことがあった問題の対策

    フォーラム 全画面表示、Zenモードに関連する表示崩れなど

  • [選択した範囲のみ] オプションが [すべて検索して選択] にも適用されていたのを修正

    フォーラム マルチカーソルを使った置換操作を行ったあと、「すべて検索して選択」が正しく動作しなくなる

  • エディターウィンドウをクリックしてアクティブにしたときに一瞬だけ直前のカーソルが見えていたのを修正
  • Ctrl + Alt + ドラッグでルーラーより上部にドロップしたときにマルチカーソルの展開が動作しなかったのを修正

    フォーラム Ctrl+Alt+ドラッグ のときのマルチカーソル化がうまくいかないケース

  • [Google で検索]、[Wikipedia で検索] のリンク先を https に修正

  • Windows 7 で [マーカー バー] のシェブロンが表示されないことがあった問題の対策
  • その他、細かい修正

3.5.3 (2023-05-25)

3.5.2 (2023-05-11)

3.5.1 (2023-05-06)

  • [検索]、[置換]、[ファイルから検索]、[ファイルから置換] ダイアログのレイアウトを変更

    [検索] と [置換]、[ファイルから検索] と [ファイルから置換] ダイアログを切り替えたときに項目の位置がある程度固定されていたほうが視認性が向上しそう。あと、Ver 3.5.0 では [置換] ダイアログが縦長でダサかったので。

  • [検索] ダイアログの [すべて検索] で [選択範囲のみ] を検索できるようにした

    [検索] ダイアログの [すべて検索] で選択範囲の中から指定した文字列を選択状態にできるようになりました。選択範囲はマルチカーソルにも対応しています。

  • マクロのdocument.selection.Find()document.selection.Replace()のフラグにmeFindReplaceSelOnlyを追加。それに伴い、meReplaceSelOnlyは廃止予定

    [検索] に [選択した範囲のみ] を追加したので定数の名前を変更しました。下位互換性のためmeReplaceSelOnlyも使用できるようにしていますが、マクロで操作を記録した場合、[選択した範囲のみ] はmeFindReplaceSelOnlyで記録されるのでご注意ください。

  • [ファイルから置換] ダイアログから [ファイルから検索] ダイアログに戻れるようにした

    [<< 検索] ボタンで [ファイルから検索] ダイアログに戻れるようになりました。

  • 右側のペインを閉じたときにスクロールバーの跡が残ることがあった問題を修正
  • ウィンドウを分離した状態でタブを閉じたときにタイトル バーが更新されないことがあった問題を修正

    フォーラム タブを切り離したウインドウでタブを閉じてもウインドウのタイトルバーが更新されない

  • Ver 3.5.0 から [検索] ダイアログの [検索する文字列] のドロップダウンで Enter キーが利かなくなっていたのを修正
  • その他、細かい修正

3.5.0 (2023-04-29)

  • あいまい検索に対応
  • Ver 3.3.5 から [選択した範囲のみ] の置換で選択範囲の終端が行末とみなされなくなっていたのを修正

    Ver 3.3.5 の鬼雲がフリーズする問題の対策が原因でした。

  • [最近のファイル表示数] を減らしたときに Mery を終了するまでは履歴を保持するようにした

    フォーラム 最近のファイル表示数

  • マクロの ReadSettings、WriteSettings でキーボードの設定を読み書きしていたのを廃止
  • マクロの ReadSettings で引数に INI ファイルを指定できるようにしてみた

    editor.ReadSettings("Mery2.ini");のように指定した INI ファイルから設定を読み込むことができます。制限事項として、ウィンドウの位置やファイルの履歴、キーボードの設定など、一部の項目はサポートしていません。

    フォーラム オプション全般をセットとして切替

  • [置換後の文字列] に改行が含まれていたときに変更行の位置がずれていたのを修正

    フォーラム 検索、置換で改行を含む文章が選択できません

  • [オプション] の [履歴] カテゴリに [最近の検索の表示数] を追加

    ディスプレイの解像度が低い場合、検索ダイアログのドロップダウンの項目数が多いと、ドロップダウンが上方向に表示されてしまう問題の対策です。

    フォーラム 検索履歴ドロップダウンリストの幅

  • [ファイル] メニューの履歴が 8 個を超えた場合、サブメニューで表示するようにした

    [最近のファイル表示数] が多いと [ファイル] メニューが見づらくなってしまうので対策してみました。

  • [検索] ダイアログの [検索する文字列] でCtrl+Enterを押したときにビープ音が出ていたのを修正
  • [検索] ダイアログの [文末まで検索したら文頭に移動する] をメモ帳にあわせて [折り返しあり] に変更
  • [置換] ダイアログ に [折り返しあり] を追加
  • マーカー バーのポップアップメニューに [折り返しあり] を追加

    フォーラム マーカー機能につきまして

  • その他、細かい修正

ダウンロード

導入が簡単なインストーラー版、設定ファイルを外部に作成しないポータブル版、レジストリを一切使用しない ZIP 版を用意しています。

インストーラー版

解凍などの作業が必要なく簡単に使えるインストーラー版です。

Mery Ver 3.5.9 (64 ビット版) インストーラー Mery Ver 3.5.9 (32 ビット版) インストーラー
VirusTotal で誤検出されたり SmartScreen で保護されたりしますが、もちろんウイルスではありません。ご心配なかたは正式版が Vector さんか窓の杜さんで公開されるまでお待ちください。

ポータブル版

インストールは不要。通常の ZIP 版と異なり設定ファイルを外部に作成しないので USB メモリに保存して持ち歩けますし、PC 環境を汚すこともありません。

Mery Ver 3.5.9 (64 ビット版) ポータブル Mery Ver 3.5.9 (32 ビット版) ポータブル
ポータブル版は解凍したフォルダの中に、設定ファイルなどのすべてのデータを保存しますので、必ずアクセス権のあるフォルダに配置してください。

ZIP 版

アーカイブを解凍するだけですぐに使える ZIP 版です。

Mery Ver 3.5.9 (64 ビット版) ZIP Mery Ver 3.5.9 (32 ビット版) ZIP
ZIP 版はレジストリを汚したくないかた向けにインストーラー版の内容を ZIP アーカイブにしたものです。1 つの環境に複数の Mery を導入する場合は ZIP 版ではなくポータブル版をご利用ください。

おわりに

1 月末から開発していた「あいまい検索」ですが、レーベンシュタイン距離の計算が遅く、実用に耐える速度を確保できなかったため実装に 3 か月近くもかかってしまいました。

それでも、ファイルが大きい場合や [最大編集距離] の設定値が大きい場合は速度が遅くなってしまいますが…。

とはいえ、無料のテキストエディターであいまい検索をサポートしているものは少ないと思います。

表記ゆれや誤変換を吸収して検索できるので、小説の執筆やブログ記事のチェックなどにご活用ください。

【New】Echo Pop (エコーポップ) - コンパクトスマートスピーカー with Alexa|ラベンダー

【New】Echo Pop (エコーポップ) - コンパクトスマートスピーカー with Alexa|ラベンダー
Amazon
Alexa 搭載スマートスピーカーが新登場。コンパクトなのでキッチンや寝室にどうぞ。お手頃価格なので 2 台目の Echo デバイスとしてもアリですね。

広告

Mery の最新版を公開している当サイトや、マクロやプラグイン、構文ファイルやテーマなどをご投稿いただいて、みなさんで共有できるウィキシステム「MeryWiki 」は、現在 ColorfulBox というレンタルサーバーで運営しています。

あいまい検索の詳細

あいまい検索で [類似する文字列に一致する] を有効にした場合、誤字やスペルミスを無視して類似した文字列を検索できます。

2 つの文字列がどれくらい似ているかを求める方法として、Mery では、レーベンシュタイン距離というアルゴリズムを使用しています。

レーベンシュタイン距離とは

レーベンシュタイン距離というのは、簡単に言うと 2 つの異なる文字列を同じ文字列にするのに必要な、文字の挿入、削除、置換の回数のことで、編集距離とも呼ばれます。

たとえば、

エル・プサイ・コンガリィ

エル・プサイ・コングルゥ

なら、に置換、に置換、に置換の 3 回の操作が必要なので編集距離は 3 です。

リーディング・シュークリーム

リーディング・シュタイナー

なら、に置換、に置換、に置換、を削除の 4 回の操作が必要なので編集距離は 4 です。

[類似度] 、[最大編集距離] とは

レーベンシュタイン距離 (以下、編集距離) という言葉の説明が終わったところで、[あいまい検索のオプション] ダイアログ ボックスの [類似度] と [最大編集距離] を見ていきましょう。

類似度とは

2 つの文字列がどのくらい異なっているかは編集距離で表せるということが分かりましたが、それなら項目は [最大編集距離] だけで良いのでは?と思われるかもしれません。

[類似度] がなかった場合を考えてみます。

たとえば、

キンキンに冷えたノンカロリーのドクペ

キンキンに冷えたノンカロリーのコーラ

は編集距離が 3 で、似ている文字列と言えそうです。

それでは、

ドクペ

コーラ

はどうでしょう?

こちらも編集距離は 3 ですが、似ている文字列とは言えません。

そこで、類似度として1 - 編集距離 ÷ 文字数を使用します。

キンキンに冷えたノンカロリーのドクペキンキンに冷えたノンカロリーのコーラなら、1 - 3 ÷ 18 = 0.83333... で類似度は 83%、似ている文字列と判断できます。

ドクペコーラなら、1 - 3 ÷ 3 = 0 で類似度は 0、似ていない文字列と判断できます。

最大編集距離とは

それなら [類似度] だけで良いのでは?と思われるかもしれません。

[最大編集距離] がなかった場合を考えてみます。

[類似度] を 2/3 (66%) に設定してドクペの 3 文字で検索する場合、許容される編集距離は 1 までとなります。

そうすると、検索する文字列が 6 文字なら編集距離は 2 まで、9 文字なら編集距離は 3 まで、99 文字なら編集距離は 33 までと、どんどん増えていってしまいます。

レーベンシュタイン距離は許容する編集距離が大きくなると低速になる傾向があるため、[最大編集距離] で上限を設ける必要があるというわけです。

ダメラウ・レーベンシュタイン距離とは

ところで、Mery では制限ダメラウ・レーベンシュタイン距離というものを使用しています。

ダメラウ・レーベンシュタイン距離では、文字の挿入、削除、置換に加えて、転置、つまり、隣り合う文字の入れ替えを 1 回の操作として数えます。

たとえば、

ふいんき

ふんいき

は、レーベンシュタイン距離を使用すると、に置換、に置換の 2 回の操作が必要なので編集距離は 2、類似度は 50% となり、似ているとも似ていないとも言えません。

そこで、ダメラウ・レーベンシュタイン距離を使用すると、いんの転置 (隣り合う文字の入れ替え) で済むので編集距離は 1、類似度は 75% となり、似ている文字列と判断できるわけです。

制限ダメラウ・レーベンシュタイン距離とは

ダメラウ・レーベンシュタイン距離には、制限ダメラウ・レーベンシュタイン距離と (非制限) ダメラウ・レーベンシュタイン距離というものがあります。

制限ダメラウ・レーベンシュタイン距離では、文字列を 2 回以上編集する操作は許容されません。

たとえば、ぽぬぬるぽにする場合、ぽぬからを削除してとなり、を挿入してぬるとなり、を挿入してぬるぽとなるので、編集距離は 3 です。

しかしながら、(非制限) ダメラウ・レーベンシュタイン距離では、文字列を 2 回以上編集する操作を許容します。

ぽぬを転置してぬぽとなり、を挿入してぬるぽとなるので、編集距離は 2 です。

Mery では速度を優先して、制限ダメラウ・レーベンシュタイン距離を使用しています。

仕様上の制限

あいまい検索に関する仕様、および制限を記載しておきます。

  • [あいまい検索] は [正規表現を使用する] と同時に有効にすることはできません。
  • [大文字と小文字を区別する] は [検索] ダイアログ ボックスの設定が適用されます。
  • 文字を無視する検索では、無視する文字のみの検索はできません。たとえば、[濁点、半濁点を無視する] を有効にするとのみを検索することはできなくなります。
  • 編集距離は全角、半角、サロゲートペアにかかわらず 1 文字として数えます。
  • 改行文字をまたいだ検索文字列の強調表示は 1 行目のみとなります。

おわりに

1 月末から開発していた「あいまい検索」ですが、レーベンシュタイン距離の計算が遅く、実用に耐える速度を確保できなかったため実装に 3 か月近くもかかってしまいました。

それでも、ファイルが大きい場合や [最大編集距離] の設定値が大きい場合は速度が遅くなってしまいますが…。

とはいえ、無料のテキストエディターであいまい検索をサポートしているものは少ないと思います。

表記ゆれや誤変換を吸収して検索できるので、小説の執筆やブログ記事のチェックなどにご活用ください。

時をかける少女 &#091;Blu-ray&#093;

時をかける少女 [Blu-ray]
角川エンタテインメント
って、おまえ、タイムリープしてね?
Amazon で探す 楽天市場で探す

広告

Mery の最新版を公開している当サイトや、マクロやプラグイン、構文ファイルやテーマなどをご投稿いただいて、みなさんで共有できるウィキ システム「MeryWiki 」は、現在 ColorfulBox というレンタル サーバーで運営しています。

スポンサーリンク

関連する記事

フォローする