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

本日、EmEditor v23.0.0 を公開しました。

本バージョンは、従来の慣習を踏襲すると、本来は v22.6 と呼ぶのが相応しいのですが、本バージョンでは変更点が多く真にメジャーな更新であること、さらに本年最後のメジャーな更新になる予定であることから、今年 2023 年の下2桁に合わせて、今回は v23.0 と呼ぶことにしました。

最近、ChatGPT を含む生成 AI の進展により、様々な情報やサービスを Webブラウザを通して利用できるようになってきました。例えば、文章の翻訳や校正はもちろん、執筆からプログラム開発まで、より多くの分野に広がっています。こちらのお客様を含め、EmEditor のお客様の間には、外部ブラウザを使用しなくても、それらの Webサイトに EmEditor 内で使用したいと要望されるユーザー様が増えています。新バージョンでは、EmEditor ウィンドウ内のカスタム バーに Webブラウザを表示する機能を追加しました。この Webブラウザは、マクロと組み合わせて使用するように設計されているため、エディタ内の文書の一部を Webブラウザで表示されているサイトに送信したり、逆に、サイトの一部をエディタ内に取り込むことができるようになりました。注意点として、これらの機能を利用するには、[マクロのカスタマイズ] ダイアログの [オプション] ページで [JavaScriptエンジンとしてV8を使用する] が選択されているか、あるいは各マクロの最初の行に


#language = "V8"

の1行が指定されている必要があります。

具体的には、次の 2 つの機能が追加されています。

(1) web. キーワード: HTML の Document Object Model (DOM) にアクセスするには、小文字で web. キーワードを使用します。この背景には、EmEditor 内のオブジェクトと Webブラウザ内のオブジェクトを区別する必要が発生したためです。例えば、マクロで、


document.write( "テスト" );

と記述すると、EmEditor エディタ内に「テスト」と表示したいのか、あるいは Webブラウザの HTML に「テスト」と表示したいのか、区別がつかなくなります。そこで、Webブラウザで「テスト」と表示させたい場合には、document の前に web. を追加して、


// Webブラウザで「テスト」と表示
web.document.write( "テスト" );

と記述して実行します。このように指定すると、web. で始まるキーワードは Webブラウザで実行される命令だと解釈され、DOM にアクセスできるようになります。DOM を利用すると、例えば次のようなことが可能となります。


// 現在表示されている Webページの URL を返します
alert( web.location.href );

// ブラウザの優先言語を返します
alert( web.navigator.language );

// 現在表示されている Webページのテキストを新規文書に貼り付けます
editor.NewFile();
write( web.document.documentElement.innerText );

// 現在表示されている Webページの HTML を新規文書に貼り付けます
editor.NewFile();
write( web.document.documentElement.outerHTML );

(2) onLoad イベント: 最後に実行したマクロに function onLoad() から始まる関数が記述されている場合、Webページの更新や新ページのロードが完了時に、一度だけ呼ばれます。この機能を利用して、例えば、検索サイトで検索結果を取得することが可能になります。onLoad() を利用すると、例えば、次のようなことが可能となります。


function onLoad() {
    // HTML を取得して新規文書に貼り付けます
    editor.NewFile();
    document.write( web.document.documentElement.outerHTML );
}

Bing.jsee マクロ例では、Bing で検索した結果の HTML を取得し、その HTML を正規表現を使用して必要な情報のみを取得して表示する方法を示しています。ただし、注意点としては、検索サイトによっては Webページの更新や新ページのロードが行われないこともあることです。例えば、ChatGPT の無料サイトがその一例であり、そのようなサイトでは onLoad() イベントが発生しないため、残念ながら本イベントを利用して検索結果を取得することができなくなります。しかしながら、江村誠は、MutationObserver インターフェイスを使用して、特定の HTML エレメントを監視し、変更が発生したときにテキストを取得するというアイディアを思いつきました。ChatGPT.jsee マクロ例では、このインターフェイスを使って、ChatGPT からの回答を取得する方法を示しています。このマクロをそのまま実行すると、選択したテキストが ChatGPT のプロンプト ボックスに入力されるのみですが、99~100行目のコメントを解除すると、テキストを実際に送信します。免責事項:Bing および ChatGPT の応答のフォーマットは、将来、いつでも変更される可能性があり、その結果、このマクロの動作に影響を及ぼす可能性があります。このマクロは、EmEditor v23.0 の新機能を紹介することを唯一の目的としています。将来、これらのマクロが動作する保証はいたしません。

v23.0 のもう1つの主要な変更点は、巨大ファイルを扱う場合の高速化です。EmEditor のお客様の中には、数GB の巨大 CSV ファイルを扱うお客様が多くいらっしゃいます。そのような場合でも、EmEditor が軽快に速く動作しなければなりません。私は約 2GB の CSV ファイルを開いて、実際に様々な操作のテストを繰り返して、それらの操作が私のマシンでほぼ 1 秒以内に完了するように、多くのコマンドをマルチスレッド化して高速化しました。

CSV ファイルの列単位での削除や挿入といった操作を行うと、ファイルの全行が変更されるため、行単位で管理しているテキストエディタとしては、膨大な変更量を処理しなければなりません。従来のバージョンでは、巨大ファイルを扱う場合、変更行は一時ファイルに保存することによってシステム メモリの使用を抑えていましたが、全行をディスクに保存することになるため、非常に時間がかかっていました。v23.0 では、変更行を一時ファイルではなくメモリに保存することにより、より高速に動作するようになりました。ただ、この方法だとメモリが少ないシステムでは、かえって遅くなったり、システム メモリ不足でエラーが発生する場合があります。その場合には、[カスタマイズ] ダイアログの [高度] ページで、[編集時、一時ファイルを使用する] オプションを設定すると、従来の動作と同じ動作に戻ります。

これら 2点の改良を組み合わせることにより、CSV の列の削除、列の挿入、列の結合、列の並べ替え、列の貼り付け、その他、多くの CSV の列に対する操作が、v22.5 に比べて、約 21倍から 34倍に高速化しました

CSV コンバーターにおいても、従来のバージョンではマルチスレッド化していなかったため、巨大ファイルを扱うと動作が遅くなっていました。新バージョンではマルチスレッドと SIMD を使用して、より高速に動作するように改善し、数 GB のファイルであっても CSV フォーマットの変換が数秒以内に動作するようになりました。

さらに、日本語 (JIS) や日本語 (EUC) では、従来の Windows API の 1種である MultiLanguage オブジェクトの使用をやめて、独自のルックアップ テーブルを使用することにより、不正文字の検出ロジックを改善するとともに、ファイルを開いた後、検索などの多くの動作を大幅に高速化することができました。

v22.5 では、行番号の左端をクリックして、ブックマークの表示/非表示を切り替えられるようになりましたが、これがかえって不便だというあるお客様の要望により、この機能を無効にできるオプションを追加しました ([カスタマイズ] ダイアログボックスの [マウス] ページの [行番号の左端をクリックしてブックマークの表示/非表示を切り替え])。さらに、Markdown の設定では、Markdown 用の特別な構文を追加することにより、太字、斜体などの強調表示が、より正確に表現できるようになりました。

江村誠は、言語サーバー プロトコルを使用して、プログラム コードの選択範囲または文書全体をフォーマットを行う機能を追加しました。例えば、行頭のタブまたは空白の数、かっこ () または {} の表示位置や空白の有無などの揺れを無くして、見やすくするためのコマンドです。あらかじめフォーマットしたいコードを選択してから、[変換] メニューの [フォーマット] を選択すると、選択範囲をフォーマットします (ショートカット: Ctrl+K, F)。コードを選択しないで実行すると、全文書を選択するかどうかを選択するダイアログが表示されるので、そこで [継続する] を選択すると、文書全体をフォーマットします。または、Ctrl+K, D と押すことにより文書全体のフォーマットを行います。フォーマット コマンドを有効にするためには、設定のプロパティの [言語サーバー] ページで、[言語サーバー プロトコルを有効にする] オプションが設定されていて、その下の [文書タイプ] ドロップ ダウン リスト ボックスで使用する言語が選択されている必要があります。ここに記載されていないプログラミング言語については、EmEditor では対応していません。また、フォーマットの方法、例えば、カッコ内の空白の有無など、ユーザー毎に好みの異なる設定については、すべて言語サーバー側に依存されており、行頭のタブまたは空白の数を除き EmEditor 側で変更することはできません。

なお、本バージョンより、言語サーバー プロトコルの「(試験的)」の記述が無くなり、正式な機能となりました。それに伴い、C++、CSS、HTML、JavaScript、JavaScript for EmEditor、Perl、Python の設定では、言語サーバー プロトコルは既定で有効に設定されます。しかし、不要な場合には、設定のプロパティの [言語サーバー] ページで、いつでも無効にすることができます。

誠は、[コミット リスト (Git)] プラグインの変更サイド バーに [サブ モジュールの更新] オプションを追加して、サブ モジュールから変更をプルできるようになりました。また、予期される動作に関する混乱を避けるために、ステージング済みファイル一覧 (ステージングされていないファイルではない) から [変更を元に戻す] メニュー項目を削除しました。

さらに、従来のヘルプは古いシステムを使用していたため、デザインがあまり良くなく、保守が難しいという難点がありました。誠は、Sphinx を使用して、ヘルプのリデザインを思い付き、私共は、その変更を行いました。新しいヘルプは、GitHub の弊社のページ で保守、ビルドされています。

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

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

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

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

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

CIO Korea (IDG) とのソウルでのインタビュー記事が公開されました

インタビュー: 高速大容量エディタ「EmEditor」をご存知ですか?・・・40年経歴の開発者エムラ・ユタカ代表 (Google翻訳)

原文: 인터뷰 | 빠른 대용량 편집기 ‘엠에디터’를 아시나요? ··· 40년 경력의 개발자 에무라 유타카 대표

CNET Korea とのソウルでのインタビュー記事が公開されました

[インタビュー] Emurasoft 代表 江村豊「エムエディター(EmEditor)、世界最速の専門家向けソフトウェア」(Google 翻訳)

原文: [인터뷰] 에무라 유타카 에무라소프트 대표 “엠에디터(EmEditor), 세계에서 가장 빠른 전문가용 SW”

Emurasoft logo

巨大ファイル対応テキストエディターの速度比較

2009年4月に、テキストエディターの速度比較を公表しました。しかしその後、多くのテキストエディターが大幅な更新と改善を経ています。そのため、私共は再び速度テストを実施することにしました。

今回のテストでは、巨大ファイルをサポートすることで知られる7つのテキストエディター (EmEditorを含む) を選び、ファイルのオープン検索置換並べ替え保存ファイルから検索のカテゴリで評価しました。テストの結果、EmEditorはすべてのテストされたカテゴリで、他のエディタに対して2倍から187倍の差で優れた性能を発揮しました

詳細な結果は、テキストエディターの速度比較 (PDF) でご確認いただけます。

免責事項: すべてのアプリをできる限り正確にテストしましたが、すべての速度はテストされたコンピュータ、ファイル、その他の要因に依存します。すべての速度、および失敗したテスト(クラッシュ、不完全な結果を含む)は、将来のアプリのバージョンで改善または解決される可能性があります。これらのアプリをご自身でインストールして比較検討されることをお勧めします。また、どのアプリを選ぶかを決定する際には、機能セット、安定性、使いやすさ、価格、デザインなどの他の要因も考慮されるべきです。

更新: テキストエディターの速度比較 (PDF) を日本語に訳しました。

セキュリティ事故対応アワード

TECH+ EXPO for セキュリティ 2023 にて講演のお知らせ

2023年9月12日から15日に開催される TECH+ EXPO for セキュリティ 2023 にて、「EmEditorの更新機能を利用したインシデントから学んだ教訓」という題目で、江村豊が講演いたします。

詳しくは、

をご覧ください。

EmEditor v22.5.2 を公開しました。

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

v22.5.2 は、次の不具合修正と改善を含みます。

  • ツール チップ上の [変換] に関する不具合を修正しました。
  • ファンクション バーに関する不具合を修正しました。
  • 様々なクラッシュの可能性を修正しました。

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

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

EmEditor v22.5.1 を公開しました。

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

v22.5.1 は、次の不具合修正と改善を含みます。

  • ツール チップ上の [すべて変換] に関する不具合を修正しました。
  • ファンクション バーに関する不具合を修正しました。
  • ファイル変更通知に関する不具合を修正しました。
  • 様々なクラッシュの可能性を修正しました。

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

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

Emurasoft logo

ライセンスの価格改定と、永久ライセンスの販売終了について

永久ライセンス

私共は、永久ライセンスを販売しています。他社が販売する「パーペチュアル (永続)」ライセンスと異なり、私共の永久ライセンスには、将来のアップデートを無期限に受け取る権利が含まれています。未来を予測することは困難ですが、私共は長期間にわたって EmEditor の開発とサポートを行いたいと考えています。私共の家族や従業員は EmEditor の売上に依存しており、売上は将来世代にも続く必要があります。そのため、2024年 8月 28日に永久ライセンスの販売を終了します2024年 8月 28日以降、永久ライセンスは販売されません。したがって、もし今後も長期間にわたって EmEditor Professional を使用される場合には、今のうちに永久ライセンスを購入すると、将来の経費を節約することができます。また、2023年 8月 30日に永久ライセンスの価格を現在の 36,400円 (税別) から 53,200円 (税別) に引き上げます

年間サブスクリプション

2024年 8月 28日に、2年目以降の年間サブスクリプションの価格を現在の初年度の 50% から 75% に引き上げます。サブスクリプション ライセンスをお持ちの場合、2024年 8月 28日までに現在の価格でサブスクリプションを更新することができ、有効期限は変更されません。本ウェブサイトからオンラインでサブスクリプション ライセンスを購入されている場合、前回の購入から30日以上経過していれば、1年間の更新を購入することができます。複数年の更新を購入されたい場合は、リンクをお送りしますので、お問い合わせください。販売代理店からサブスクリプションを購入されている場合は、販売代理店にお問い合わせください。

必要なライセンスの計算方法もお読みください

今後も EmEditor の開発に集中し、より良いソフトウェアの開発とサポートの充実に全力を注いでいく所存です。何卒ご了承賜りますようお願い申し上げます。

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ビット) よりダウンロードまたは更新していただけます。

EmEditor v22.4.2 を公開しました。

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

v22.4.2 は、次の不具合修正と改善を含みます。

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

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