EmEditor v21.6.0 を公開しました (テクニカル レビューを含む)。

本日、EmEditor v21.6.0 を公開いたしました。

以前のバージョンの EmEditor では、特定の文字の可視化が可能になりましたが、[指定範囲] オプションを選択した場合、文字範囲を文字コード値で指定する必要がありました。これは、関心のある文字コード値が Unicode 表のあちらこちらに散りばめられている場合、退屈な仕事になります。新バージョンでは、Unicode 用字Unicode 一般カテゴリを使用して文字範囲を指定できるようになりました。例えば、ラテン文字のテキストのみを書く場合、Latin (Latn) と Common (Zyyy) 用字を選択し、[指定範囲文字のみの文字を許可する] オプションを設定すると良いでしょう。Unicode 用字と Unicode 一般カテゴリを組み合わせることもできます。例えば、

"Latn,Zyyy,Ll,Lu"

と指定して、ラテン (Latn) または共通 (Zyyy) 用字、かつ小文字 (Ll) または 大文字 (Lu) と設定することもできます。

この機能を可能にするため、EECommon.dll ライブラリに含まれている Uniocde データベースを更新して、Unicode 用字と Unicode 一般カテゴリにより文字範囲を指定できるようにしました。この新しい情報は、[文字コード値] コマンドを選択したときに表示されるダイアログ ボックスにも含まれます。EECommon.dll ライブラリは、情報が要求されるまでメモリーにロードされないため、この機能の追加により EmEditor のロード時間は影響を受けません。EECommon.dll ライブラリは、最初、江村誠により開発されました。

EmEditor v21.1 は、絵文字シーケンス絵文字 ZWJ シーケンスのすべての絵文字をサポートしていましたが、完全という訳ではなく、将来新しい絵文字シーケンスが現れた場合に時代遅れになってしまう可能性がありました。EmEditor の新バージョンでは、Unicode Technical Standard #51 – Unicode Emoji で指定された定義を使用してすべての可能な絵文字をサポートすることにしました。絵文字のサポートとは、フォントによりサポートされている限り、これらの絵文字を正しく表示して、絵文字のまわりのカーソルの移動が正しいことを意味します。これらの変更の作業を行うと同時に、Unicode データベースを最新バージョン (Unicode v14.0.0) に更新しました。

あるお客様は、テキスト ファイル内の様々な日付の形式をある 1つの日付の形式に変換できないか質問されました。EmEditor v21.3 では、数字範囲に日付/時刻の形式をサポートしました。この機能は、日付/時刻の範囲を検索/フィルターするのに便利でしたが、それらを 1つの日付/時刻の形式に変換することはできませんでした。そこで、新バージョンでは、\D と \T を置換表示構文に追加しました。例えば、次のように様々な形式の日付を含むテキスト ファイルがあったとします:

3/23/2022
03/23/2022
March 23,2022
Mar 23,2022
23-Mar-2022
2022-03-23
2022年3月23日

そして、これらすべてを 1 つのフォーマット「2022-03-22」に変換したいとします。Ctrl+H を押して [置換] ダイアログ ボックスを表示し、[数値表現] オプションを選択し、次のように入力してください。

検索する文字列:

[1/1/1900 , 1/1/2200 "M/d/yyyy|MM/dd/yyyy|MMMM d,yyyy|MMM d,yyyy|dd-MMM-yyyy|yyyy-MM-dd|yyyy年M月d日" ]

置換後の文字列:

\Dyyyy-MM-dd

さらに、置換表現構文に、\Nc、\Nd、\NC、/ND という表現を追加して、文字列の Unicode正規化を行うことができるようにしました。これは、EmEditor v19.8 の新機能である [Unicode正規化] コマンドを使用したものです。これらの新しい表現は、ある検索条件に一致する文字の正規化を行う場合に便利でしょう。

上記の機能は、すべて EmEditor Professional と EmEditor Free でサポートされています。

EmEditor Professional v21.6 の主な機能は、多数の正規表現でない簡単な検索文字列を使った場合の [高度なフィルター] と [複数検索] の大幅な高速化です。あるお客様は、ファイルから 2500万件の電話番号を検索できないか質問されました。これは、検索文字列の数が数千を超えると非常に遅くなるため、以前の EmEditor のバージョンでは簡単ではありませんでした。私は、このような状況のための新しいアルゴリズムを思い付き、コードを大幅に最適化した結果、現在は、同時に 2500万個の文字列を検索することが可能になりました。この最適化に取り組むと同時に、[高度なフィルター] と [連続検索/置換] ダイアログ ボックスに、リンク ファイルを受け入れることも可能にしました。リンク ファイルには、改行で区切られた複数の検索文字列を含めることができます。エクスプローラから [高度なフィルター] または [連続検索/置換] ダイアログ ボックスのリスト ボックスにリンク ファイルをドラッグ アンド ドロップすることができます。また [フィルター] ツール バーの [フィルター] ボックスにリンク ファイルをドラッグ アンド ドロップして [高度なフィルター] を直ちに開始することができるようになりました。リンク ファイルにより検索文字列のセットの保持が容易になり、[高度なフィルター] または [複数検索] への変更の適用が容易になります。EmEditor は、内部では、検索を始める前に、検索文字列を、長さ、そしてABC順により並べ替えているため、リンク ファイルをあらかじめ並べ替えること (プリソート) により、高速化することが可能です。リンク ファイルをプリソートする場合は、[カスタマイズ] ダイアログ ボックスの [並べ替え] ページで [高速バイナリ比較] と [安定ソート] オプションを設定します。[高度なフィルター] で大文字小文字を区別しない場合には、[大文字、小文字を区別しない] オプションは設定します。リンク ファイルを開き、まず [AからZへ並べ替え] を選択し、その次に [短い文字列から長い文字列へ並べ替え] を選択します。リンク ファイルのプリソートは必須ではなく、検索結果には変わりありませんが、速度を向上させることができます。

さらに、[フィルター] ツール バーの [すべて抽出] ボタンがドロップ ダウン ボタンになり、ボタンをクリックすると、メニューが表示され、[すべての行を抽出] と [一致した文字列を抽出] コマンドから選択できるようになりました。[一致した文字列を抽出] コマンドは、複数の文字列が一致した場合、各行 1個の文字列のみを抽出します。

また、条件として [… は … を含む]、[… は … から始まる]、[… は … で終わる] が選択されている場合の [CSVの結合] コマンドを、[高度なフィルター] コマンドに似たアルゴリズムを使用して、大幅に高速化しました。

あるお客様は、[カスタマイズ] ダイアログ ボックスの [ステータス] ページに [選択モード] 項目を追加を要望されました。これを設定すると、ステータス バーには、箱型選択中には「箱型」と、行選択中には「行」と表示されます。

あるお客様から、EmEditor を起動中に異常終了すると報告があり、クラッシュ レポート ファイルが送られました。このクラッシュ レポートを調べると、非常に大きなファイル履歴によりメモリ不足の状態に陥り異常終了していることがわかりました。このお客様は、[カーソル位置を保存する] オプションに 30000日を指定し、[ブックマークはクリアしない] チェック ボックスも設定していました。これにより、非常に大きなファイル履歴が作成されてしまいました。このような問題が起こるのを防ぐため、新バージョンでは、[ブックマークはクリアしない] チェック ボックスを廃止し、カーソルとブックマークの保存期間を 100日までに制限しました。

最後に、Pro版、Free版とも お気に入りいただけましたら幸いです。将来、ご質問、機能のリクエスト、アイディアなどがございましたら、ご連絡いただくか、フォーラムにご発言ください。

今後も EmEditor を引き続きご愛顧くださいますよう、どうぞよろしくお願い申し上げます。
— 江村豊

主な変更点、画面図など、詳しくは、「Version 21.6 の新機能」をご覧ください。

さらに本リリースは、次の不具合/問題の修正を含みます。

  • [次/前の警告すべき/Unicode文字を検索] がユーザー定義のサロゲート文字を見逃す可能性があった不具合を修正しました。
  • バッチ配列が空の場合に BatchReplace メソッドで異常終了することがある不具合を修正しました。
  • レイアウトに関する不具合を修正しました。
  • サロゲート文字で [検索] ダイアログ ボックスの [次を/前を検索] ボタンが正しく動作しないことがある不具合を修正しました。
  • 文字間が不規則に表示される可能性があった不具合を修正しました。
  • ウィンドウ分割後、文書の切り替えで、スクロール位置が一番下に移動してしまうことがある不具合を修正しました。
  • 特定のCSVファイルを開いた直後に構文エラーが表示されてしまうが、[構文チェック] ボタンをクリックすると、エラーが消える不具合を修正しました。
  • EmEditor は、ネットワークを開いていると、時々「ファイルは他のプログラムによって変更されています。読み直しますか?」というメッセージ ボックスが表示されることがある v21.5 の不具合を修正しました。
  • お客様から報告された不具合を修正しました (1)。

デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。winget を使用されている場合は、”winget install emeditor” とタイプして最新版の EmEditor のインストールが可能です (64ビットか32ビットは自動検出されます)。