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

本日、EmEditor v22.5.0 を公開いたしました。

最近、私は第13世代の Intel Core i7-13700 を搭載したPCを購入しました。第12世代の Core プロセッサー以降、Intel はパフォーマンスのための Pコアと効率のための Eコアを組み合わせたハイブリッド アーキテクチャを導入しました。新しいアーキテクチャは興味深いもので、Pコアは Eコアよりも高速に動作します。EmEditor の以前のバージョンでは、すべてのスレッドが同じ速度で動作すると仮定していました。しかし、Pコアのスレッドが Eコアのスレッドよりも高速に動作すると、Pコアのスレッドは Eコアのスレッドよりも早くタスクを終了し、Eコアのスレッドがタスクを終了するまで待つ必要があります。念のためですが、Eコアと Pコアがなくてもスレッドの速度は変動することがあります。例えば、スレッドがバックグラウンド アプリやシステム プロセスによって中断されると、そのスレッドは他のスレッドよりも遅くなります。それでも、Pコアと Eコアの存在は状況を悪化させる可能性があります。

この状況を克服するために、v22.5 ではコードを最適化して、動的にスレッドの負荷分散を管理します。次の画面図は、巨大ファイルで正規表現を検索している間の CPU 使用率を示しています。最適化後、タスク終了時に全体的なCPU使用率が急激に下がっているのがわかります。

以前のバージョン (v22.4.2) は、各スレッドが同じ速度で動作すると仮定しています。その結果、スレッドによっては他よりも早く終了してしまい、全体の CPU 使用率は、検索タスクの終了に近づくにつれて、ゆっくりと減衰します。
新バージョン (v22.5) は、スレッドの負荷分散を動的に管理するので、タスクを終了するまで、全スレッドが効率的に動作します。全体の CPU 使用率はタスクの最後に突然下がります。結果として、タスクを終える時間は短くなります。

v22.5 の開発中、私共はコードを最適化して多くのコマンドの速度を向上させるために多くの時間を費やしました。例えば、マルチスレッディングによって [コピー] コマンドの速度が 1.49 倍に高速化されました。リファクタリングと最適化中にコードを見直す機会がありました。古いバージョンでは、CPU が AVX-512 命令セットをサポートしていない場合、誤って SHA 命令セットが有効化されませんでした。v22.5 ではこのバグを修正し、AVX-512 をサポートしていない多くの CPU でも [重複行の削除] コマンドなどの複数のコマンドの速度が向上しました。今後もコードを見直し、速度向上のために最適化していく予定です。

新しい PC を使って Visual C++ でコードをビルドした時、ビルドが非常に遅いので、私は落胆しました。実はコードをビルドするときにメモリ使用率が 100% に達していたのです。これは、物理メモリ (RAM) が 16GB しか利用できなかったためですが、CPU には 24 個の論理コアがあり、Visual C++ は 24 個のスレッドを使用してコードをビルドしていました。Visual C++ のオプションでスレッド数を 24 から 7 に調整すると、コンパイラはコードをより速くビルドできました。同様に、EmEditor は既定の 24 個のスレッドを使用するよりも 3 個だけのスレッドを使用した方が速くなりました。物理メモリを 16GB から 80GB に増やすと、両方のアプリは 24 個のスレッドで最高速になりました。したがって、論理コア数が多い最新の CPU をお持ちでしたら、物理メモリを増やすことを強くお勧めします。例えば、CPU に 24 個の論理コアが存在する場合、PC には少なくとも 32GB の物理メモリを推奨します。メモリが充分でない場合は、スレッド数を調整する必要があるかもしれません。これは EmEditor のカスタマイズ ダイアログ ボックスの [高度] ページで指定できます。v22.5 では、論理コアの数がこの GB 値を超える場合、既定のスレッド数を物理メモリの最も近い GB 値に調整しました。

あるお客様からファイル変更検知の改善要求をいただきました。古いバージョンでは既定で5秒ごとに現在のファイルサイズとタイムスタンプをチェックし、ファイルが変更されたと判断すると、メッセージボックス「別のプログラムによってファイルが変更されました。変更を反映して再読み込みしますか?」が表示されます。v22.5では、Windows API を使用して、より効率的にファイル変更を検知します。

別のお客様からは、行番号の左端をクリックしてブックマークの設定/解除を行う機能が欲しいとのご要望がありました。古いバージョンでは、[ブックマークを設定/解除] コマンドを選択するか、Ctrl+F2 を押してブックマークのオンとオフをり替える必要がありました。確かに、行番号をクリックする方が簡単ですし、テキスト エディターの中でもこの動作が一般的になってきているので、本機能を採用しました。

江村誠は [シンボルを検索] コマンドで言語サーバー プロトコルを使用する機能と JSON 言語サーバーを使用する機能を追加しました。また、コミット リスト プラグインを改善し、[プル] ボタンと [プッシュ] ボタンに、コミット数のインジケーターを追加しました。

近い将来、Windows 7、8.1、および Server 2008 R2 のサポートを終了する予定です。Microsoft はすでにこれらのバージョンの Windows のサポートを停止しています。セキュリティ上の理由から、これらの古いバージョンの Windows の使用は強くお勧めしません。また、EmEditor の 32ビット版の開発も終了する予定です。私共は、EmEditor の 64ビット版の開発およびテストにリソースを集中させたいと考えています。

私共は多くの皆様に EmEditor を使用していただきたいと考えており、EmEditor の価格はできるだけ低く抑えています。年間サブスクリプションの初年度価格、40米ドル(以前は 39.99米ドル)は、年間サブスクリプションのライセンスを開始して以来、1セント以上変更していません (日本円価格は、外国為替により変動があります)。しかし、私共は EmEditor Professional の違法使用は許容しません。EmEditor Professional の「クラック」キーを販売または提供しているウェブサイトがいくつかあります。これらは違法なサイトであり、これらのサイトから入手したキーは私共からサポートされることありません。私は時々、実際には有効なライセンスを持っていないにもかかわらず、平気で EmEditor Professional についての技術的な質問をされることがあります。私は有効なライセンスを購入したお客様をサポートするために時間を使いたいと思っています。これらの違法なサイトを根絶し、さらに重要なこととして、EmEditor の開発とお客様のサポートを継続するため、私共はライセンスの正当性を弊社のサーバー上のデータベースでチェックするコードを追加し、ライセンスが有効でない場合、そのコードは Professional バージョンの動作を停止させます。このチェックは EmEditor を起動するとすぐに行われるわけではありませんし、EmEditor を起動するたびに行われるわけでもありません。コードの性質と目的上、コードがどのように動作するか詳細は公開しません。ただし、個人情報は送信されず、このチェックはインターネット接続がなくても EmEditor を使用することを妨げません。私共にとってソフトウェアを保護することが重要であり、有効なライセンスを購入したお客様も同様に保護したいと思っています。私共は、お客様がこの背景の理由を理解してくださり、この最小限のライセンスのチェックを受け入れてくださることを願っています。また、ライセンス数の計算方法も参照して、必要充分な数のライセンスを所有しているか確認してください。

別のブログで、ライセンスの価格改定と、永久ライセンスの販売終了についてお知らせいたします。

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

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

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

さらに本リリースは、v22.5 を開発中の不具合/問題の修正を含みます

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