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

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

EmEditor v22.1 の主要の機能は、V8 JavaScript エンジンを使用して、最新の JavaScript (ECMAScript とも呼ばれます) をサポートしたことです。この機能は、このお客様 (1) を含め、多くのお客様に要望されていました。以前のバージョンの EmEditor は、JScript を使用していましたが、それは Internet Explorer のための Active Scripting テクノロジーを利用して実装されていました。これには、VBScript、PerlScript、PHPScript、Python、RubyScript など、多くの他の Active Scripting 言語をサポートしているという利点がありましたが、JavaScript の最新版がサポートされていないという欠点がありました。EmEditor Professional v22.1 は、古い JScript など他の Active Scripting をサポートしつつ、最新の JavaScript もサポートするようになりました。

既定では、JavaScript マクロは、古い JScript エンジンを使用して実行されます。JavaScript マクロに V8 エンジンを使用するには、マクロの先頭に次の行を追加します。

#language="v8"

既定ですべての JavaScript マクロを V8 エンジンを使用して実行したい場合には、[マクロ] メニューの [カスタマイズ] を選択し、[JavaScriptエンジンとしてV8を使用する] オプションを設定します。既定では V8 を選択しながら、非互換マクロを JScript として実行するには、JScript マクロの先頭に次の行を追加します。

#language="JScript"

最新の JavaScript のサポートにより、サード パーティー製ライブラリの使用を可能にしました。例えば、次のように、Luxon ライブラリにより、日付と時刻を簡単に扱うことができます。

#language="v8"
#include "luxon.min.js"
alert( luxon.DateTime.now().setZone('America/New_York').minus({weeks:1}).endOf('day').toISO() );

また、次のように、Currency.js ライブラリを使用して、浮動小数点のよくある誤差を気にせずに通貨の計算を行うことができます。

#language="v8"
#include "currency.min.js"
var d = currency( 0 );
for( i = 0; i != 10000; ++i ) { 
    d = d.add( 0.01 );   //  $0.01 掛ける 10000
}
alert( "$" + d );  // 期待した通り、結果は $100.00 になります。Currency.js ライブラリを使わないと、期待した結果にならないこともあります。

現在のところ、EmEditor マクロは JavaScript モジュールをサポートしていません。したがって、Node.js や import キーワードを使用したライブラリのインポートを行うことはできません。サード パーティー製ライブラリを使用するには、ライブラリ (通常、.min.js の拡張子が付いています) をダウンロードして、#include を使用して含める必要があります。

既存のマクロを V8 として実行することを決めた場合は、すべてのキーワードが大文字小文字を区別して書かれているか確認してください。既存のマクロに次の行が含まれていた場合、

redraw = false

次のように書き換える必要があります。

Redraw = false

V8 は、JScript では利用できていた ActiveXObject オブジェクトを使用してオブジェクトを作成することはできません。しかし、よく使うメソッドについては、代わりに Shell オブジェクトの新しく追加したメソッドを使用することができます。例えば、既存のマクロに次のコードが含まれていた場合、

fso = new ActiveXObject( "Scripting.FileSystemObject" );
if( fso.FileExists( filename ) ) {
    fso.DeleteFile( filename );
}

次のように書き換える必要があります。

if( shell.FileExists( filename ) ) {
    shell.DeleteFile( filename );
}

V8 では、マクロは常に非同期に実行するため、JScript よりも遅くなることがあります。現在のところ、[JavaScriptエンジンとしてV8を使用する] オプションは、既定でオフになっています。これは、古い JScript マクロとの非互換性の問題に対応するためです。しかしながら、最新の JavaScript のサポートは不可避であり、将来のバージョンでは V8 が既定になるかもしれません。

V8 JavaScript エンジンのサポートは、Microsoft Edge WebView2 コントロールの使用により実現されています。WebView2 コントロールは、Windodws 10/11 の最近のバージョンに含まれています。もし V8 マクロが動作しない場合は、OS を Windows 10/11 の最新版に更新するか、Microsoft Edge の最新版をインストールするか、あるいは WebView2 ランタイム (エバーグリーン ブートストラップ、または Evergreen スタンドアロン インストーラー)をダウンロードしてインストールしてください。

WebPreview プラグインも WebView2 コントロールをサポートして、Microsoft Edge を使用して HTML ファイルを表示できるようになりました。マクロとは異なり、このオプションは既定でオンになりますが、WebPreview プラグインのプロパティで、ブラウザー エンジンを選択できるようになります。

EmEditor Professional v22.1 では新しいコマンドが追加されました。その 1 つは、[選択範囲の分割文字列の並べ替え/重複の削除] コマンドです。例えば、次の単語の列があったとします。

orange, banana, apple, banana, pineapple, apple

これらの単語を選択し、[並べ替え] メニューの [選択範囲の分割文字列の並べ替え/重複の削除] コマンドを選択します。すると、[選択範囲の並べ替え] ダイアログ ボックスが表示されるので、[重複した文字列を削除] を設定し、[AからZへ並べ替え] を選択します。結果は次のようになります。

apple, banana, orange, pineapple

多くの場合、このコマンドは、区切り、この場合は “, ” (カンマとスペース)、を自動的に検出します。

もう1つの新しいコマンドは、CSV 列を扱うために追加しました。以前は、行の並べ替えしかできませんでしたが、[列の並べ替え] コマンドにより、指定した行、通常は最初の行 (ヘディング) の文字列により、CSV 列を並べ替えることができるようになりました。またオプションとして、(指定した行の) 重複するセルの列を削除したり、(指定した行の) 空のセルを含む列を削除することができます。

最後の新しいコマンド、[列の管理] コマンドは、以前の [列を移動/コピー] コマンドに取って代わるものです。[CSV用の列ヘッダー] 上で右クリックして表示されるメニューより [列の管理] コマンドを選択すると、[列の管理] ダイアログ ボックスが表示され、列ヘディングの一覧が表示されます。一覧から 1 つまたはそれ以上の列を選択して、ドラッグ アンド ドロップにより、選択した列を移動、または再配置することができます。また、一覧で右クリックして [コピー] と [貼り付け] を選択して選択列を 2重化することができます。さらに、[削除] ボタンをクリックして選択列を削除したり、[並べ替え] ボタンをクリックして、すべての列を並べ替えることもできます。

これらのコマンドを使用した操作をマクロに記録することができます。[選択範囲の分割文字列の並べ替え/重複の削除] コマンドは、Selection オブジェクトの Sort メソッドとして記録されます。例えば、選択範囲にカンマで区切られた単語が含まれていたとすると、次のコードは選択範囲を A から Z に並べ替えます。

document.selection.Sort( ",", "A+" );

[列の管理] コマンドは、Document オブジェクトの RearrangeColumns メソッドとして記録されます。例えば、現在の CSV 文書に 3列が含まれていたとすると、次のコードは、最初の列が文書の右端に移動します。

document.RearrangeColumns("2,3,1");

EmEditor Professional として最後に、江村誠により開発されているコミット リスト (Git) プラグインは、コミットの作成、ブランチの変更、ステージング済みの変更、変更を元に戻す機能を追加しました。

EmEditor Professional と Free v22.1 には、お客様のフィードバックにより多くの機能が追加されています。例えば、新バージョンは、数値範囲に、区切り無しの日付フォーマットをサポートするようになりました。例えば、次のような数値範囲表現を使用すると、

File[20221205 , 20221207 "yyyyMMdd" ].txt

次の行を検索、フィルター、抽出することができます。

File20221205.txt
File20221206.txt
File20221207.txt

誠は、[クラッシュ レポート] ダイアログ ボックスのデザインを変更し、EmEditor Professional/Free の中からクラッシュ レポートを送信する機能を追加しました。これにより、クラッシュ レポートを探してメールで送信するという手間を省くことができます。既にベータ版を開発中に多くレポートを受信しており、それにより、正式版を公開する前に既にバグを修正することができて、この新機能について肯定的に感じています。既にクラッシュ レポートを送信していただいたお客様に感謝いたします。

[クラッシュ レポート] 送信機能をデザインする際、決して個人情報が送信されることのないようにしました。さらに、クラッシュ レポートを送信するかどうかを決めるのはお客様自身です。[クラッシュ レポート] ダイアログ ボックスで [送信] ボタンをクリックしなければ、お客様のデータが送信されることは一切ありません。

最後に、EmEditor Professional と Free v22.1 は、選択範囲の文字数を数える動作を、SIMD 命令セットで書かれたマルチスレッドのコードにより、大幅に高速化しました。選択範囲の文字数はステータス バーに表示され、Unicode サロゲート ペアは 1文字として数えられます。

さらに誠は、デスクトップ インストーラーとポータブル版のファイルを emeditor.com から emeditor.info に移動するという新しい考えを思いつきました。新しいドメイン (emeditor.info) は、コンテンツ デリバリ ネットワーク (CDN) を利用して、ホストしたファイルを高速に配信することができるようになりました。このドメインの変更は、一部のセキュリティ ソフトウェアの警告を発生させる可能性がありますが、ドメイン変更による警告は安全に無視、無効化して問題はありません。

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

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

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

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

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