本日、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ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.1.1 を公開しました
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.1.1 を公開しました。
v23.1.1 は、次の不具合修正を含みます。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.1.0 を公開しました (テクニカル レビューを含む)
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.1.0 を公開しました。
前バージョンの v23.0 では、新機能の Web ブラウザとマクロを使用して、生成 AI の Webサイトにアクセスし、様々な情報やサービスを取得する方法を紹介しました。しかし、生成 AI のサイトの有料の API キーをお持ちのお客様は、API を直接呼ぶことにより、より高速に、より高いサービスを、より安定した動作で取得することができます。そのためには、JavaScript の fetch 関数を使用する方法が使われますが、この関数は非同期に動作するため、マクロが終了前に関数の戻り値が得られないことがありました。実は、v23.0 でも、EmEditor 内蔵の Web ブラウザを表示していれば、この方法も可能だったのですが、Web ブラウザが表示されていない場合は、非同期関数が使えない問題がありました。本バージョンの v23.1 では、KeepRunning プロパティを使用することにより、マクロを終了せずに、非同期関数の終了を待つことができるようになりました (Professional 版のみ)。非同期関数を呼ぶ前に、KeepRunning プロパティは、以下のように指定します。
すると、マクロが実行されたままになり、非同期関数の戻り値を得ることができます。このままだと、いつまでもマクロが実行されたままになりますので、非同期関数の戻り値を得られて、マクロの実行を終了したい場合には、次のように指定します。
これは、非同期関数の終了を待っている状態では、Quit() とほぼ同等で、マクロがすぐに終了します。
以下に、fetch 関数を利用して、ChatGPT の開発元である OpenAI が提供している OpenAI API を利用するサンプル マクロを示します。このサンプル マクロを実行するには、{your-API-key} をお客様の API キーに書き換える必要があります。以下のマクロを実行すると、OpenAI API に「お元気ですか?」と質問を送り、その回答をアウトプット バーに表示します。
CharOpenAI.jsee マクロ例は、このサンプルをさらに発展させたもので、現在の選択テキストまたは文書全体に対して、よく使う質問の一覧 (「校正」、「要約」、「調べる」、「翻訳」など) をポップアップ メニューとして表示します。質問を選択すると、OpenAI API に質問を送り、その回答をアウトプット バーに表示します。
実は、本ブログも、CharOpenAI.jsee マクロを利用して、翻訳、校正を行いながら、執筆しています。生成 AI をテキストエディターと組み合わせて使用することにより、仕事の効率が上がることを実感できました。
v23.1 のもう 1つの主要な変更点は、巨大ファイルの処理速度の向上です。前バージョンの v23.0 では、変更行を一時ファイルではなくメモリに保存することで高速動作が実現しました。しかし、この方法ではメモリが少ないシステムでは逆に遅くなったり、メモリ不足でエラーが発生する可能性がありました。[カスタマイズ] ダイアログの [高度] ページで、[編集時、一時ファイルを使用する] オプションを設定することで従来と同じ動作に戻すことも可能でしたが、ファイルのサイズによって設定を切り替えるのは煩雑です。v23.1 では、メモリに関連するアルゴリズムを見直し、より効率的な動作を実現しました。さらに、仮想メモリが不足すると一時ファイルを使用してデータを保存するようにしました。これにより、仮想メモリのサイズに気を遣わずとも、メモリ不足によるクラッシュの頻度を大幅に軽減することができました。このメモリ関連の改善の効果と、マルチスレッド、SIMD 命令セットの使用により、CSV を含む巨大ファイルの編集時に多くのコマンドで、v23.0 に比べて 1.51 から 41.2 倍に高速化しました。
ヘルプは、EmEditor 内蔵の Web ブラウザではなく、v22.5 以前のように外部のブラウザを使用して表示することを既定の動作としました。さらに、[カスタマイズ] ダイアログ ボックスに [ヘルプ] ページを追加して、ヘルプに関する設定を変更することができるようになりました。
江村誠は、言語サーバー プロトコル (LSP) を使用して入力候補一覧を表示できるようにしました (Professional 版のみ)。この機能を利用するためには、設定のプロパティでの [言語サーバー] ページで、言語サーバー プロトコルが有効になっていて、[入力候補一覧を表示する] オプションが設定されている必要があります。現在のところ、JavaScript のみが入力候補一覧に対応しています。
Pro版、Free版とも お気に入りいただけましたら幸いです。将来、ご質問、機能のリクエスト、アイディアなどがございましたら、ご連絡いただくか、フォーラムにご発言ください。
今後も EmEditor を引き続きご愛顧くださいますよう、よろしくお願い申し上げます。
— 江村豊
主な変更点、画面図など、詳しくは、「Version 23.1 の新機能」をご覧ください。
さらに本リリースは、v23.1 を開発中の不具合/問題の修正を含みます。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.1 プレビュー版
/カテゴリ: EmEditor ベータ版/作成者: Yutaka EmuraEmEditor v23.1 プレビュー版を一般のテスト用にリリースしています。EmEditor v23.1 は、CSV を含む巨大ファイルの編集時に多くのコマンドで大幅に高速化すると同時に、メモリ不足によるクラッシュを軽減しました。また プレビュー版には最近のバグ修正も含まれています。プレビュー版を試していただき、何か問題が発生した場合やフィードバックがあればお知らせください。
履歴については、EmEditor v23.1 preview (23.0.901-) をお読みください。
更新方法: インストーラー版をお使いの場合、自動的に最新のプレビュー版に更新するには、[ヘルプ] メニューの [更新チェッカーのカスタマイズ] を選択し、[プレビュー版を含める] を設定してください。また、プレビュー版は、以前のバージョンからもダウンロードしていただけます。
EmEditor v23.0.5 を公開しました
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.5 を公開しました。
v23.0.5 は、次の不具合修正を含みます。
主な変更点、画面図など、詳しくは、「Version 23.0 の新機能」をご覧ください。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.0.4 を公開しました
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.4 を公開しました。
v23.0.4 は、次の不具合修正を含みます。
主な変更点、画面図など、詳しくは、「Version 23.0 の新機能」をご覧ください。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.0.3 を公開しました
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.3 を公開しました。
v23.0.3 は、次の不具合修正を含みます。
主な変更点、画面図など、詳しくは、「Version 23.0 の新機能」をご覧ください。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.0.2 を公開しました
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.2 を公開しました。
v23.0.2 は、次の不具合修正を含みます。
主な変更点、画面図など、詳しくは、「Version 23.0 の新機能」をご覧ください。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.0.1 を公開しました。
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.1 を公開しました。
v23.0.1 は、次の不具合修正を含みます。
主な変更点、画面図など、詳しくは、「Version 23.0 の新機能」をご覧ください。
デスクトップ インストーラー版をご使用の場合、[ヘルプ] メニューの [更新のチェック] を選択して更新していただけます。この方法で更新できない場合には、最新版をダウンロードして、そのダウンロードしたインストーラーを実行してください。デスクトップ ポータブル版の場合、こちらよりダウンロードして、更新していただけます。ストア アプリ版の場合、数日後、Microsoft ストア (64ビット または 32ビット) よりダウンロードまたは更新していただけます。
EmEditor v23.0 を公開しました (テクニカル レビューを含む)。
/カテゴリ: EmEditor 本体/作成者: Yutaka Emura本日、EmEditor v23.0.0 を公開しました。
本バージョンは、従来の慣習を踏襲すると、本来は v22.6 と呼ぶのが相応しいのですが、本バージョンでは変更点が多く真にメジャーな更新であること、さらに本年最後のメジャーな更新になる予定であることから、今年 2023 年の下2桁に合わせて、今回は v23.0 と呼ぶことにしました。
最近、ChatGPT を含む生成 AI の進展により、様々な情報やサービスを Webブラウザを通して利用できるようになってきました。例えば、文章の翻訳や校正はもちろん、執筆からプログラム開発まで、より多くの分野に広がっています。こちらのお客様を含め、EmEditor のお客様の間には、外部ブラウザを使用しなくても、それらの Webサイトに EmEditor 内で使用したいと要望されるユーザー様が増えています。新バージョンでは、EmEditor ウィンドウ内のカスタム バーに Webブラウザを表示する機能を追加しました。この Webブラウザは、マクロと組み合わせて使用するように設計されているため、エディタ内の文書の一部を Webブラウザで表示されているサイトに送信したり、逆に、サイトの一部をエディタ内に取り込むことができるようになりました。注意点として、これらの機能を利用するには、[マクロのカスタマイズ] ダイアログの [オプション] ページで [JavaScriptエンジンとしてV8を使用する] が選択されているか、あるいは各マクロの最初の行に
の1行が指定されている必要があります。
具体的には、次の 2 つの機能が追加されています。
(1) web. キーワード: HTML の Document Object Model (DOM) にアクセスするには、小文字で
web.キーワードを使用します。この背景には、EmEditor 内のオブジェクトと Webブラウザ内のオブジェクトを区別する必要が発生したためです。例えば、マクロで、と記述すると、EmEditor エディタ内に「テスト」と表示したいのか、あるいは Webブラウザの HTML に「テスト」と表示したいのか、区別がつかなくなります。そこで、Webブラウザで「テスト」と表示させたい場合には、document の前に web. を追加して、
と記述して実行します。このように指定すると、web. で始まるキーワードは Webブラウザで実行される命令だと解釈され、DOM にアクセスできるようになります。DOM を利用すると、例えば次のようなことが可能となります。
(2) onLoad イベント: 最後に実行したマクロに
function onLoad()から始まる関数が記述されている場合、Webページの更新や新ページのロードが完了時に、一度だけ呼ばれます。この機能を利用して、例えば、検索サイトで検索結果を取得することが可能になります。onLoad()を利用すると、例えば、次のようなことが可能となります。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) とのソウルでのインタビュー記事が公開されました
/カテゴリ: メディア紹介記事/作成者: Yutaka Emuraインタビュー: 高速大容量エディタ「EmEditor」をご存知ですか?・・・40年経歴の開発者エムラ・ユタカ代表 (Google翻訳)
原文: 인터뷰 | 빠른 대용량 편집기 ‘엠에디터’를 아시나요? ··· 40년 경력의 개발자 에무라 유타카 대표