特別企画
もう「Excel」はいらない? 最強CSVエディターと化した「EmEditor」を使いこなす
テキストデータを整形するなら「Excel」よりもときに強力で、「Excel」よりもお手軽
2016年7月19日 06:05
CSVデータ(項目をカンマで区切って列挙したテキスト形式の行列データ)の加工・編集ならば「Microsoft Excel」というユーザーは少なくないだろう。しかし、「Excel」は本来“表計算ソフト”であり、数値データの計算や分析、グラフの作成といった用途には向いているものの、テキストデータとして整形するのにはあまり向いていない。たとえば表記ゆれを取り除いたり、正規表現でデータを一括置換したり、加工したデータをほかのテキストフォーマットへ変換したりといったことを「Excel」でやるのは難しいだろう。
そこでお勧めしたいのが、定番テキストエディター「EmEditor Professional」だ。
「EmEditor」はv9で“CSVモード”が搭載されて以降、着々とCSV関連の機能を充実させており、「Excel」に近い操作感を備えたCSVエディターとして完成されつつある。また、「EmEditor」は「Excel」と比べ起動が早く動作が高速で、“巨大ファイルコントローラー”によりGB単位のデータもやすやすと扱える。“関数”や“書式”といった余計な要素をもたない分、操作がシンプルで扱いやすいのも魅力といえるだろう。
以前にも、本誌では「EmEditor」v15で追加された機能の一部として、CSV機能を紹介した。
- ・【特別企画】CSVエディターとしても優秀な多機能テキストエディター「EmEditor Professional」v15
- http://forest.watch.impress.co.jp/docs/special/699135.html
しかし、CSV機能だけにフォーカスした内容ではなく、またそれ以降も魅力的な機能が数多く追加されている。そこで今回は改めて「EmEditor」のCSV機能に的を絞り、具体的な実例を交えて使い方を紹介したい。
CSV機能の基本的な使い方
まずは、「EmEditor」のCSV機能について確認しておこう。
「EmEditor」は一般のテキストデータを扱う“通常モード”のほかに、CSV(カンマ区切り)、TSV(タブ区切り)、DSV(ユーザー定義区切り)のデータを扱うための専用モードを備えている。これらのモードを有効化すると、区切り文字(カンマやタブなど)でデータが分割され、縦にそろえて表示するための“セパレーター(薄いグレーで描かれる縦線)”が追加される。
つまり、テキストデータを横(=行)と縦(=列)に区切り、それぞれの項目を表計算ソフトでいうところの“セル”として扱えるようになるというわけだ。
テキストエディターの選択単位はあくまでも“文字”が基本だが、「EmEditor」では“セル選択モード”を有効化することにより、“セル”単位での選択を行うことが可能。“セル選択モード”では区切り文字も非表示になるため、誤って区切り文字を消すなどしてデータ構造を破壊してしまうことも防止できる。ここまでくると、もはや表計算ソフトと一瞥して見分けることは難しい。
さらに、最新版の「EmEditor」では“セル”の編集に特化した“セル”ツールバーが導入されている。“セル”ツールバーでは、単一の値であることを示すために追加されている引用符が除外表示されるほか、改行コードを含む値を改行して表示するため、“セル”の値の編集にフォーカスしたい場合は便利だ。もちろん、邪魔な場合は非表示にすることもできる。
テキストをデータとして扱う
「EmEditor」のCSV機能について大まかに把握できたら、次はそれを実際に使ってみよう。
その前に1つ、やっておきたいカスタマイズがある。それは“CSV/並び替え”ツールバーを表示しておくことだ。このツールバーにはCSV編集に関連した機能がコンパクトにまとめられているので、CSV編集を頻繁に利用する際はあらかじめアクセスしやすいようにしておくと作業効率を大きく向上させることができる。
Webページからテキストデータをコピーした場合
今回は“Wikipedia”から都道府県の人口データをコピーして、「EmEditor」のCSV機能で加工できるようにしてみる。このように、Webページに掲載されているテーブルデータをコピーして加工したいといったケースはよくあるのではないだろうか。
まず、“国勢調査(2010年まで)”に掲載されているテーブル全体を選択してクリップボードへコピーし、「EmEditor」へ張り付ける。「Firefox」や「Google Chrome」を利用しているならば、タブ区切りのデータとして「EmEditor」へ張り付けられるだろう。
次に、「EmEditor」の[編集]-[CSV]-[2 タブ区切り]メニューを選択する。すると「EmEditor」が“タブ区切り(TSV)モード”になり、データが表計算ソフトのように扱えるようになる。
このときエラーが出るのは、最初の2行(ヘッダー)列数が他のデータ行の列数より少ないためなので、一旦“セル選択モード”を解除して行頭にタブを加え、列数をそろえればエラーは解消される。
「EmEditor」をCSVエディターにするのに必要な手順は以上だ。意外に簡単で、びっくりしたユーザーもいるのではないだろうか。たったこれだけの操作で、並び替えやフィルターといった一部のデータ処理まで行えるようになる。“.csv”ファイルならば、ファイルを「EmEditor」へドラッグ&ドロップするだけでCSVモードになるので、さらにお手軽だ。
ただし、最初の2行(“都道府県”と“総数”)は列データの概要を表すヘッダー行だ。これはデータの並び替えなどの処理で邪魔になるので削除してしまってもよいが、「EmEditor」は指定した行をヘッダーとして扱う機能が備わっているので、それを活用したい。“CSV/並び替え”ツールバーにある[ヘディング]ボタンから“ヘディング2”を選択すれば、上2行がデータ行ではなくヘッダー行として扱われ、データ行を上下にスクロールしても必ず表示されるようになる。
なお、「Microsoft Edge」の場合はカンマ区切りでコピーされる。ヘッダー行のデータが改行されてしまうので、「Firefox」や「Google Chrome」などのようにワンボタンでデータモードにすることはできないが、それでも簡単な修正を施すだけで、同様にデータモードにすることはできるだろう。
スペースで桁揃えされたプレーンテキストを渡された場合
また、半角スペースで桁揃えされた“固定幅列”のデータを加工したいといった場合も少なくないだろう。
その場合は、“CSV/並び替え”ツールバーの[列/セパレーター]ボタンを押し、[自動的にセパレーターを追加]コマンドを選択する。すると、桁揃えを自動で認識して、縦の“セパレーター”が追加される。あとは“CSV/並び替え”ツールバーから[CSVコンバーター]を起動し、変換先フォーマットを指定して[今すぐ変換]ボタンを押せばよい。これでテキストをCSVデータやTSVデータとして扱えるようになるはずだ。
これを応用すれば、CSV機能で編集したデータを“固定幅列”のデータへ変更するのも簡単。セパレーターを左右にドラッグして幅を調整し、“CSVコンバーター”で“固定幅列”へ変換すればよい。データをスペースで美しく桁ぞろえして、プレーンテキストを見栄えよくしたい場合に活用したい。
並び替え・重複削除などの機能を駆使してデータを加工する
「EmEditor」でCSVデータを扱えるようにしたら、今度はその加工だ。「EmEditor」には計算、条件付き書式、作図といった高度な機能は備わっていないものの、データの並び替えや抽出といった基本的な機能はちゃんと網羅しており、かつ使いやすい。所詮テキストデータの編集であり、失敗しても[Ctrl]+[Z]キーで簡単に戻せるので、慣れるまでは積極的に試してみるとよいだろう。
データの並び替え
「EmEditor」では“テキスト”と“数値”の比較をサポートしており、それぞれ昇順・降順に並べることができる。
たとえば、先ほど利用した“日本の都道府県人口”のデータの場合であれば、ヘッダー行をダブルクリックし列を選択して“数値”による並び替えを行うと、その年の人口順に都道府県を並び替えることが可能。
ただし、「EmEditor」の“数値”比較は「Excel」ほど賢くはないので、値が3桁ずつ“,”で区切られているとうまく数値として扱うことができず、並び替えに失敗してしまう。しかし、そこは“,”を一時的に除去してしまうといった手段で簡単に回避できる。
目的の列だけ抽出する
もし、特定の列だけ抽出して新しいテーブルデータを作成したいといった場合にはどうすればよいのだろうか。たとえば“日本の都道府県人口”のデータで直近(2010年)の人口と終戦直後(1945年)のデータのみを取り出し、比較してみたいといったケースだ。
その場合は、“CSV/並び替え”ツールバーにある[列を抽出]コマンドを利用する。列を一覧表示したダイアログが現れるので(ヘッダー行があるとその列のデータが何を意味しているのかがわかりやすい)、必要な列データにのみチェックを入れて[OK]ボタンを押そう。新しいタブに指定した列が抽出される。
なお、「EmEditor」の最新版ではダイアログで列データをドラッグ&ドロップすることもできる。これを利用すれば、列の順番を入れ替えるといったこともGUIで直感的に行えるだろう。
重複行の削除
また、「EmEditor」ならば重複行の削除も簡単だ。“CSV/並び替え”ツールバーにある[重複行の削除]コマンドを利用するだけで、同じデータの行を削除することができる。
さらに、指定した列データが重複している場合のみ、重複行とみなして削除するといったことも可能。これを行うには、[重複行の削除]コマンドではなく[重複行の削除/ブックマーク(高度)]コマンドを利用する。このコマンドでは指定する列のデータのみを比較できるほか、空行を重複行とみなさず削除対象としない、ウィンドウで開かれているすべてのタブで指定した重複行削除の処理を行うといった機能が搭載されている。
CSVの結合
一方[CSVの結合]コマンドは、2つのCSVファイルをつなげたい場合に利用する。“日本の都道府県人口”のデータで言えば、戦前と戦後のデータが分かれて提供されていたので、それを1つにしたいといったケースに役立つ。
この[CSVの結合]コマンドはSQLにおけるJOIN 操作(INNER JOIN、OUTER JOIN、RIGHT JOIN、LEFT JOIN)と同じで、特定の列をキーにした結合が行える。「Excel」でもよく利用される“VLOOKUP()”関数に似ている。
フィルター条件を設定して、データを絞り込む
最後に紹介したいのは、データのフィルター機能だ。これはすべての列または特定の列に指定したキーワードが含まれている場合のみ、その行を抽出して表示する。テキストエディターから進化しただけあって、「EmEditor」では正規表現によるフィルタリングも行える。
フィルター機能を利用する際は、“フィルター”ツールバーを有効化しておくのがお勧め。左端のプルダウンにキーワードを入力し、その隣のプルダウンメニューで検索対象の列データを指定すれば、それに合致する行のみが表示される。フィルタリングされた行を新しいタブへ抽出したり、まとめてブックマークを付けることも可能だ。
なお、キーワード欄にクエリーを記述すれば、複数のキーワードを含む場合や、特定のキーワードは除外したい場合、条件が複数の列にまたがる場合など、より高度なフィルタリングも行える。クエリーは直書きすることもできるが、[高度なフィルター]コマンドでGUIのクエリービルダーを利用すれば間違いがない。正規表現が苦手な場合も、[高度なフィルター]コマンドでAND検索・OR検索を組み合わせることで同様の検索条件を実現できることがあるので試してみるとよいだろう。
「EmEditor」ならではのテキスト編集機能で最後の整形を行う
さて、こうして加工したデータをブログなどに張り付けて公開したいといったニーズは当然あるだろう。そのためには、CSVデータをHTMLの“table”へ編集したり、“Markdown”記法や“はてな”記法のテーブルへ書き換えなければならない。つまり、テキスト加工が必要となる。
その際役に立つのが、「EmEditor」本来のテキストエディターとしての機能だ。“セル選択モード”を解除したらテキストエディターに早変わりする「EmEditor」は、こうした用途にうってつけだ。
たとえば、一度きりの編集であれば矩形選択機能を活用して編集するのがお勧め。[Alt]キーを押しながらドラッグすることで複数範囲を選択・編集できるようになるので、それぞれのセルの前後に“<td>”“</td>”タグを挿入するといったことも複数行まとめて簡単に行える。ついでに、右クリックメニューの“高度な編集”コマンドを利用して大文字・小文字の変換や、全角・半角の変換を行ってもよいだろう。
さらに強力なのはマクロ機能だ。データをテーブルタグへ書き直すといった処理は所詮定型的な処理なので、マクロを記述してしまえば次回からは編集を大幅に効率化することができる。
たとえば、CSVモードのデータを“はてな”のテーブル記法に変換するには、以下のようなマクロを作成すればよい。
if (!document.CellMode)
{
alert("CSV モードではないので何もしません");
}
else
{
var delimiter = document.Csv.Delimiter;
var lines = document.GetLines();
var output = "";
for (var i = 1; i<= lines; i++)
{
var line = document.GetLine(i);
var regexp = new RegExp(delimiter, 'g');
line = line.replace(regexp, '|');
output += '|' + line + '|' + '\n';
}
clipboardData.setData("Text", output);
alert("クリップボードに“はてな”のテーブル記法へ変換した文字列をコピーしました");
}
「EmEditor」のマクロはWebでも広く使われているJavaScriptで記述できるため、勉強がてら挑戦してみてはいかがだろうか。
まとめ
テキストエディターの用途と言えば、原稿を書いたり、ソースコードを記述するといったことが真っ先に思い浮かぶのではないだろうか。しかし、顧客情報やログデータなどのCSVデータも歴とした“テキスト”データだ。データが“テキスト”ベースならば、それはテキストエディターの立派な“守備範囲”と言える。
「EmEditor」は、これまで専門のCSVエディターや表計算ソフトの領域とみなされがちであったこの“守備範囲”にもしっかり対応した、おそらく世界でも唯一無二のテキストエディターだ。“ドキュメント”を扱うときも“データ”を扱うときもこれ一本で済む(しかも軽快な動作はそのまま!)というだけでなく、“ドキュメント”編集のために長年改善が加えられてきた諸機能を“データ”を編集する際にも活用できると考えれば、そのメリットが見えてくるのではないだろうか。
難点をあげるとすれば、1年ごとの保守費用が上乗せされる通常ライセンスが4,800円、永久ライセンスが18,000円というテキストエディターにしては高めの価格設定だが、それに見合う価値は十分にあるといってもよいだろう。
折よく「EmEditor Professional」は(株)エムソフトの設立21周年を記念したキャンペーン中で、永久ライセンスを21%割引きで入手できる。保守費用が不要な永久ライセンスをリーズナブルに購入できるチャンスなので、「EmEditor Professional」を手に入れたいユーザーはこの機会を逃さないようにしたい。
[制作協力:Emurasoft, Inc.]