特別企画

どんどん軽くなり続ける「EmEditor」 ~ExcelよりCSVをサクサク処理できるワケ

クリップボード履歴や複数のキーワードを利用した検索・置換など、周辺機能も着実に進化

なんでも「Excel」で済ませて大丈夫?

「EmEditor Professional」v20.3.2

 “鶏を割くに焉んぞ牛刀を用いん”という故事成語がある(『論語』陽貨第十七)。鶏肉(些細なこと)を扱うのにわざわざ大袈裟な牛刀を持ち出さなくてもよいのに、牛刀なぞ持ち出すべきではないという意味だ。“状況に応じて適切なやり方(ツール)を用いるべきだ”と解してもよいだろう。

 これは日々のIT業務でも言えることだ。なんでもできる万能ツールは便利な反面、なにかに特化したツールよりも機能が肥大化しがちで、ユーザーインターフェイスは複雑だ。起動は遅く、処理速度も劣ることが多い。その代表格ともいえるのが「Microsoft Excel」だ。

 「Excel」はあくまでも“表計算”を行うアプリだが、その汎用性ゆえ、表計算以外の用途にも使われることが多い。無論、それにもメリットはあるが、やりすぎは禁物。セルを方眼紙のように整えてワードプロセッサーやDTPソフトの代わりにしたり、スクリーンショットを張り付ける台紙がわりに使うのは「Excel」本来の役割から外れており、よく批判の的にされているところだ。専用のアプリやソリューションがあればそちらを用いるべきだろう。

 しかし、テキストベースのデータ、とくにCSVデータの閲覧・加工に「Excel」を用いることに対する批判はあまり耳にしない。たしかにCSV形式のビジネスデータをビジュアライズし、経営層が指針を定めるのに役立てるといった用途であれば、「Excel」はピッタリだろう。だが、並べ替えやフィルタリングといった加工処理がメインであれば、実はテキストエディターの方がずっと速いのだ。

 なかでも「EmEditor Professional」はCSVデータを「Excel」のようなセル形式で表示するモードを備えており、ただのテキストエディターよりもこうした用途に向いている。試しに、用意したサンプルデータで「Excel」と「EmEditor」の処理速度を比較してみよう。

 テスト環境は以下の通り。100万行のCSVデータをオフィスPCで扱うには不安があったため、今回はハイスペックPCを用意した。

  • CPU:AMD Ryzen 9 3900X(物理コア12、論理コア24、3,800MHz)
  • RAM:32GB
  • ストレージ:Intel SSD 760p(256GB、M.2接続)
  • OS:Windows 10 Professional(バージョン 1909)

 サンプルデータは氏名、メールアドレス、登録日時の3つの列から成るCSVデータ(エンコーディングは“UTF-8”)だ。これをAからZへ並べ替える処理を考えてみよう。キーにする行データはメールアドレスだ。

サンプルデータ。メールアドレス、登録日時の3つの列から成るCSVを10万行~100万行用意した

 まずは「Excel」から試してみよう。空のワークシートを作成し、[データの取得と変換]機能でCSVデータを“UTF-8”エンコーディングでインポートする(でないと文字化けすることがある。「Excel」の面倒な点だ)。続いてメールアドレスをキーにして、昇順に並べ替える処理を行ったところ、「Excel」の場合1,000,000行のデータで3分以上、100,000行のデータでも16秒を要した。

[データの取得と変換]機能でCSVデータをインポート
メールアドレスをキーにして、昇順に並べ替える

 途中、タイトルバーに“応答なし”と表示されたり、マウスカーソルが“砂時計”になったり、ウィンドウの枠の描画が乱れるなど、いかにも重い処理を一生懸命やっているといった様子だ。

 一方「EmEditor」は、1,000,000行でも処理は1秒未満の一瞬で終わった。テキストの処理に秀でた専門ツールとはいえ、ここまでの差が出るとは驚くほかない。「巨大ファイルコントローラー」によりGB単位のサイズのファイルも軽々と扱える点や、専用のインポートツールを利用しなくてもファイルのドラッグ&ドロップやダブルクリックで手軽に開ける点も魅力だ。

「EmEditor」ならば一瞬で処理が終わる。「巨大ファイルコントローラー」によりGB単位のサイズのファイルも軽々と扱える点なども秀でている

 「Excel」も工夫次第ではもう少し処理速度を短縮できる。ここでは、マクロを使うのはなしとするが(そこまでするならコマンドラインツールを用いる方がよいだろう)、それでも「Power Query エディター」でインポート前に並べ替えをしてしまうという手は考えられる。

 「Power Query エディター」は、「Excel」の[データの取得と変換]機能でCSVデータをインポートする際、[編集]ボタンを押すと現れる。ここで、メールアドレスをキーにして昇順並べ替えを行えば、1,000,000行のデータであってもものの3秒程度で処理は完了した。しかし、ワークシートを読み込んだあと条件を変えたくなれば、やはり長い時間をかけて並べ替え処理を行わなくてはならない。

「Power Query エディター」でも1,000,000行のA→Z並べ替えに3秒ほど要する

 さらに、「Excel」はワークシートで扱える行数が1,048,576までに制限されているのも弱点と言えるだろう。

 100万件ものデータを扱うことはあまりないという人もいるかもしれないが、売り上げデータやログファイルであればこの程度の数は簡単に超えてしまう。そんなときのために専用のツールを用意し、日頃から習熟しておくのは大事なことだ。

「Excel」のワークシートで扱える行数は1,048,576まで

テキストエディターとしても優秀 ~「メモ帳」や「Visual Studio Code」と比較

 さて、テキストベースのデータファイルを扱うのであれば「Excel」よりも「EmEditor」が優れているのはわかっていただけただろう。シンプルかつ高速で、100万件以上、GB単位のサイズのファイルも軽々と扱える(参考記事:【特別企画】もう「Excel」はいらない? 最強CSVエディターと化した「EmEditor」を使いこなす - 窓の杜)。

 しかし、他のツールではダメなのだろうか。たとえばCSVデータを専門に扱うCSVエディターというジャンルのフリーソフトはいくつか存在する。それでもよいのではないだろうか。

 ここであえて「EmEditor」をお勧めする理由の1つに、CSVエディターは汎用性に欠けるというのがある。先ほどの話とは少し矛盾していると感じられるかもしれないが、「EmEditor」はCSVデータだけでなくテキストドキュメントも扱える。広い用途に使えるのは専用ツールに比べてやはり便利だ。

 また、“CSVデータをテキストとして”扱えるのもテキストエディターならではと言える。置換・検索機能が充実していたり、CSVデータを他のフォーマットに加工したり、その逆が行えるのも優れている。

 そしてもう1つ強調しておきたいのが、「EmEditor」はテキストエディターとしてもかなり高速であるという点だ。試しにWindows標準の「メモ帳」と、近年支持の厚い「Visual Studio Code」とともに比較してみよう。

 まずは、単純なアプリの起動速度だ。それぞれ5回起動してプロセスが開始されてアイドル状態になるまで(Process.WaitForInputIdle)を計測し、その中央値をグラフにした。

単純なアプリの起動速度を比較

 結果は、「EmEditor」が最速。続いて「Visual Studio Code」、「メモ帳」となった。「EmEditor」はプロセスを共有し、2回以降の起動が速くなるように設計されているようなので、異なるプロセスで起動するオプション(/sp)を付けて再度試してみたが、それでも3つのアプリのなかではもっとも起動時間が短かった。

 次に、「Excel」のときでも使った1,000,000行のサンプルデータを起動時に開いてみるテストを行った。「メモ帳」は起動してアイドル状態になるまでを、「Visual Studio Code」と「EmEditor」に関しては実際に入力可能になるまでをストップウォッチで計測した。

1,000,000行のサンプルデータを起動時に開いてみるテスト

 結果は、やはり「EmEditor」が最速。「EmEditor」の場合はファイルを開いてセルモードで整形するまでの時間が含まれているので、それを除外すればもっと速いということになる。

3つのアプリのファイルオープンテストを並べて実行。最後に実行されるハンデがあるにもかかわらず、「EmEditor」は「Visual Studio Code」とほぼ同時に処理を完了する

 ファイルを開くだけでなく、テキストの追加・挿入・削除に関しても「EmEditor」は他のアプリに比べて速い傾向を示した。また、GB単位のファイルを開くテストでは「メモ帳」が失敗、「Visual Studio Code」はメモリ制限を設定ファイルで緩和する必要があった(かつ、レスポンス確保のために一部の機能が制限される)が、「EmEditor」は初期設定で軽々と扱えたことを付記しておく。

「メモ帳」はサイズの大きすぎるファイルを扱えない

なぜ「EmEditor」は速いのか?~最新ハードウェアの性能を引き出す

 しかし、なぜ「EmEditor」はここまで速いのだろうか。

 1つには、メジャーバージョンを重ねるごとに、かならずどこかしらの処理が最適化されていることが挙げられるだろう。たとえば11月にリリースされたv20.3では、以下の5つの項目が最適化された。

v20.3で最適化された項目、大幅に数値が向上していることが一目瞭然だ

 日頃の編集にはあまり関係のなさそうなエッジケースにも思えるが、こうした改善を何年も続けていけば……塵も積もれば山となる、というわけだ。

 また、「EmEditor」では最近のCPUのトレンドに合わせた改善も積極的に行われている。

 まずは、マルチスレッド化だ。最近のCPUはシングルコア性能が頭打ちとなり、1つのCPUに複数のコアを内蔵させて高速化を図るマルチコア化が進んでいる。マルチコアCPUのポテンシャルを引き出すには、処理を分割して並列処理できるようにする(マルチスレッド化)必要があるが、「EmEditor」では多くの処理でマルチスレッド化が図られている。

 次に、最新のCPU命令セットへの対応だ。

 かつてのCPUは、1つのデータに対して1つの命令を実行していた。これを“SISD”(Single Instruction/Single Data)と呼ぶが、現在のCPUはもっと高性能で、複数のデータに対して1つの命令を一度に適用できる“SIMD”(Single Instruction/Multiple Data)命令を搭載している。“1つずつ荷物を運ぶより、2個同時に運べば2倍のパフォーマンスが得られる”と表現すればわかりやすいだろうか。無論、いつもそう都合よく同時に運べる荷物があるとは限らないので、パフォーマンスが純粋に2倍になるわけではないが、マルチメディアの処理などでは大きなアドバンテージとなる。

 弊誌の読者であれば“MMX”や“SSE”といったキーワードを耳にしたこともあるだろうが、それらはIntel CPUに搭載されているSIMD拡張命令セットだ。“AVX”はその後継ともいえるもので、比較的新しいCPUに搭載されている。“AVX2”や“AVX-512”はその改善版で、先ほどの例でいえば、荷物を3個や4個、同時に運んでしまうようなものと言えるだろう。

 「EmEditor」の場合、エンコードの変換、文字列の検索、大文字小文字の変換といった処理でSIMD命令が積極的に活用されている。それも“SSE2”を使ったバイナリ、“AVX2”を利用したバイナリ、“AVX-512”に最適化されたバイナリがそれぞれ用意されており、CPUの機能に応じて自動で使い分けてくれる。つまり、新しいCPUであればあるほど速くなるというわけだ。専用のCSVエディターでそこまでカリカリに最適化しているのは、筆者の知る限りない。専用ツールを差し置いて「EmEditor」を勧めたい所以だ。

「Visual Studio」に付属するツール「DUMPBIN」で、「EmEditor」に用意された“AVX-512”バイナリの関数をエクスポートした様子。多くの処理で“AVX-512”が利用されていることがわかる

高速化しながらも進化し続ける機能

 「EmEditor」はマルチスレッド化や最新のCPU命令セットへの対応を進め、バージョンを重ねるごとに高速化している。一方で、既存機能の拡充にも余念がない。最後に、最近のバージョンで追加された新機能を紹介して、本稿を締めることにしよう。

進化するCSV編集機能

 まずは、今回の特集でも扱ったCSVの編集機能だ。最近のバージョンでは以下のコマンドが追加され、CSVデータをより効率的に扱えるようになった。

[列を移動/コピー]コマンド・[列を結合]コマンド

 とくに列の結合が簡単になったのは便利。たとえば姓・名に分かれた列をひとまとめにするときに役立つ。結合の際は間に挿入する文字を指定可能で、“姓と名をまとめるときに全角空白を挟みたい(半角空白も可能)”といった細かい要望にも応えてくれる。

 [列を移動/コピー]コマンドは、選択した列を移動またはコピーする。コマンドを実行すると小さなダイアログが現れ、移動とコピーのどちらを行うか、新たに作成される列をどこに挿入するかを選択できる。

ネスト(入れ子)されたCSVデータの処理

 「EmEditor」v20.0.0以降では、入れ子になったCSVデータにも対応している。“入れ子になった(ネストされた)”とは、CSVのセルのなかにリスト(カンマやコロンで区切られた複数のアイテム)が含まれている状態を指す。

 「EmEditor」ならばこれをバラバラにしたり、IDが同じ列を寄せてネストさせたりも自由自在だ。

ますます便利になる編集機能

 さらに、CSV編集以外の場面でも活躍する新機能がいくつか導入されている。これらを使いこなせれば、テキスト編集はもっと効率よくなるだろう。

クリップボード履歴機能

 クリップボードにコピーしておいたテキストを誤って他のテキストで上書きしてしまい、意図しないテキストを貼り付けてしまった――という失敗はテキスト編集ではよくある。これを解決するのが、「EmEditor」のクリップボード履歴機能だ。

 「EmEditor」で貼り付けを行うと、貼り付けたテキストの下へ[クリップボードの履歴を表示]という小さなボタンが現れる。このボタンをクリックすると、これまでに「EmEditor」からコピーされたテキストの履歴リストが現れ、履歴を選択すると貼り付けられたテキストがそのテキストに差し替えられる。操作ミスでクリップボードを上書きしてしまってもまたコピーからやり直す必要はないし、複数のデータを貼り付ける作業もやりやすくなる。

 このボタンはカーソルを移動すると自動で非表示になるため、操作の妨げにならないだろう。それでも邪魔だと感じるならば、[カスタマイズ]ダイアログの[編集]ページにある[貼り付けでクリップボードの履歴を表示する]オプションをOFFにすることで無効化することもできる。

連続検索・置換

 テキストを加工するとき、一度に複数のテキストを検索・置換したいと思ったことはないだろうか。たとえば、“emEditor”や“Em Editor”といった表記ゆれをまとめて“EmEditor”に置き換えたいといったケースや、引用符の開始(「『“)だけ拾い上げたい場合などだ。

 「EmEditor」では[検索][ファイルから検索][ファイルから置換]の3コマンドで複数のキーワードを指定できるようになっている。検索ダイアログでキーワードを入力して[連続へ追加]ボタンを押すとダイアログが拡張され、複数のキーワードを管理できる。

文字参照やパーセントエンコーディングのコピー変換

 「EmEditor」ではテキスト内に含まれるHTML/XML文字参照やパーセントエンコーディングにマウスをポイントすることで、デコードしたテキストをツールチップで確認できる。わざわざエンコードしなおさなくても何が書かれているのか一目でわかる便利機能だが、このツールチップが拡張され、[すべてコピー]や[すべて無効]といったコマンドが選べるようになった。

セットアップ関連の処理も見直し

 そのほかにも、セットアップやアップデートの処理が簡略化されている。最新版では新バージョンを検出した際、「EmEditor」ウィンドウの右下にアップデートが利用可能であることがツールチップで表示され、今すぐインストールするか、「EmEditor」の終了後にインストールするかを選べる。リリースノートをチェックすることもできるので、新機能の内容が気になる人は是非チェックしてみてほしい。

 また、インストーラーに関してもわずらわしいエラーがでないように改修されたほか、デスクトップにショートカットを置く処理がカスタムインストールオプションとなり、ファイルが勝手に作成されることがなくなった(ストアアプリ版やポータブル版には無関係)。ちょっとしたことだが、気の利いた改善と言えるだろう。

 「EmEditor Professional」は、年額4,800円(税抜き、以下同)のシェアウェア。30日間の試用期間後は、個人利用に限り無償版「EmEditor Free」として使用できる。毎年の支払いを避けたい場合は、買い切りの永久ライセンスも選べる(21,600円)。

 また、Windows 10であれば“Microsoft Store”から入手できるストアアプリ版も利用可能(年額2,350円)。機能は若干制限されるが、インストールやアップデートの手間が省ける。

[制作協力:Emurasoft, Inc.]

ソフトウェア情報

「EmEditor Professional」
【著作権者】
Emurasoft, Inc.
【対応OS】
64bit版を含むWindows 7/8.1/10およびWindows Server 2008 R2以降
【ソフト種別】
シェアウェア 年額税抜き4,800円(永久ライセンスは税抜き21,600円、30日間の試用期間後は個人利用に限り機能制限のある無償版「EmEditor Free」として使用可能)
【バージョン】
20.3.2(20/11/25)