本稿では Java で CSV を扱うためのライブラリについて、代表的な製品を紹介します。
OrangeSignal CSV
国産の CSV ライブラリで Koji Sugisawa 氏によって開発されています。 Apache License Version 2.0 の基で自由に利用することができます。 JDK 1.6 以上で利用可能。
後発で新しめのライブラリということもあり、とても高機能な実装になっています。 CSVテキストへのアクセスだけではなく、ZIPファイル内にあるCSVファイルにアクセスすることもできる等、”CSV周り”の機能も持っています。 一度試してみる価値はあるライブラリです。
OrangeSignal CSV
http://orangesignal.github.io/orangesignal-csv/index.html
Super CSV
次に紹介するのは、2007年から開発されている Super CSV。 2014年07月現在では ver2.2 が最新版ですが、ロードマップを見ると ver.3 の構想もあるようで、開発に継続的なことが覗えます。 Apache License Version 2.0 の基で自由に利用することができます。 JDK 1.5 以上で利用可能。
Super CSV
http://supercsv.sourceforge.net/
opencsv
次に紹介するのは、2005年に開発が始まり歴史の長い opencsv です。 しかし2011年から更新が行われておらず、開発がストップしているかもしれません。 上記のライブラリ同様、Apache License Version 2.0 の基で自由に利用することができ、JDK 1.5 以上で利用可能です。
先駆け的なライブラリであることもあり、上記のライブラリと比較すると機能はとてもシンプルです。
s2csv
国産フレームワーク Seasar2 のプロジェクトで開発されている CSV ライブラリです。 Seasar2 を利用して開発しているプロジェクトであれば採用しても良いでしょう。 但し、上記のプロダクトよりも機能が劣っている感じがします。 改行コードが ¥r¥n 固定 (s2csvのソースにハードコーディングされている) なので、個人的には採用を見送ることが多いです。 実装要件を満たせて Seasar2 プロダクトでプロジェクトを固めたい場合などに利用すれば良いかも知れませんが、無理に固執する必要もないかと思っています。
おわりに
本稿では Java で CSV を扱うためのライブラリについて紹介しました。 じつは OrangeSignal CSV のプロジェクトページに機能比較表があるのを本稿執筆時に発見しました、そちらが参考になると思います。 所感としては OrangeSignal CSV が高機能ですので何か問題に直面するまでは OrangeSignal CSV を使ってみたいと思っています。