作ったもの
2つのファイルをアップロードして、
- 両方のファイルに含まれる行
- 片方のファイルにしか含まれない行
を抜き出すとてもシンプルなツールです。
DEMO
source codeはコチラ
作った理由
「2つのファイルから重複行を抽出/削除できるオンラインツール」が意外と見つからなかったからです。
私はエンジニアとして働いているのですが、別部署の人から2つのファイルを比較できるツールを「さくっ」と作れないか?と相談されたことがキッカケでした。
2つのファイルを比較して両方に含まれる行を抜き出したり、片方にしか含まれない行を抜き出す作業を行なっている人は多いでしょう。正直、みなさん自分なりのやりやすい方法を確立していると思います。
Excelを使ったり、linuxコマンドや簡単なスクリプトを書いて行なったり。
私もその話を聞いた時、「そんなのググればいくらでも出てくるのでは・・」と。でも、意外とオンラインでできるツールは出てこなかったんですよね。(探し方が悪いだけかもしれませんが。)
また、非エンジニアの方はlinux上でコマンドを叩くことは中々しないでしょうし、Excelでは大きなファイルを扱うことが難しいので、意外と困っている人もいるのかな、、と思い始めました。
ググって出てくるツールは、何かしらのソフトウェアパッケージの形になっていて、PCにインストールする必要があるのも面倒だったのかな、と。
あとは、郵便番号のような、何かしらのユーザ情報が記載されたファイルだと、機密性の観点から知らないツールを使うのが怖かったりもするのかもしれませんね。
利用した技術
これと言ったものは特に使っておらず、HTML, css, javascriptだけです。サーバーサイドにデータは送信せず、全てクライアント側のjavascript処理で完結しています。
デザインセンスは糞なので
semantic UIというcssフレームワークを使わせていただきました。あとは昔ながらのjQueryです。 (^^;)
ファイルの内容は自分のbrowser内で扱われるだけなので、機密性の高いファイルでも安心・・・(!?)
注意点
ファイルサイズと処理時間
200万行強のテキストファイル、約25MB 2ファイルを扱った時の体感時間が5秒くらいです。
※それ以上は試していません、すいません。
ファイルの1行ごとの内容をhashに入れて比較しているので、hashオブジェクト化した際のメモリ限界点を超えるサイズのファイルだとbrowserが死ぬはずですが、どのくらいまでいけるのかは試していません、すいません。
比較処理中のボタン連打
しないでください(笑)、お願いします。例えば「処理中にローディング画像をだす」みたいな細かい事までは対応してません。手抜きです。何卒、ご容赦ください。
所感
GitHub Pagesの機能を利用して今回作った静的ページを公開しましたが、めちゃくちゃ楽ですね。。
firebase hostingも楽チンすぎると思っていましたが、今回のようなデモツールはGitHub Pagesで十分でした。