SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースCSVライブラリ「OrangeSignal CSV」の勧め

JavaでCSVの読み書きを快適に!
~「OrangeSignal CSV」概要

オープンソースCSVライブラリ「OrangeSignal CSV」とは

  • このエントリーをはてなブックマークに追加

 「OrangeSignal CSV」は、CSV入出力操作を簡易化させることができる、高機能で便利なJavaプラットフォーム向けのCSVライブラリです。本稿では、OrangeSignal CSVの概要と基本機能を紹介します。

  • このエントリーをはてなブックマークに追加

はじめに

 皆さんは、JavaでCSVを扱うときに苦労した経験はないでしょうか。

 CSV(Comma-Separated Values/Character-Separated Values)はデータをカンマ(,)やタブなどで区切って並べたテキスト形式のデータで、表計算ソフトやデータベースなどとのデータ交換のしやすさや可読性のよさなどから、古くから広く使われているデータ形式です。

 このCSVのデータ形式には、さまざまな「方言」があり、データの中にカンマ(,)が入っている場合や、データをダブルクォーテーション(")で囲む場合、データの中にダブルクォーテーションがありそれがエスケープされている場合、データの中に改行がある場合などが存在します。また、CSVのデータ構成にもさまざまな種類があり、データの先頭行をヘッダとする場合や、コメント行や集計行がある場合、日時データを日付と時刻それぞれ別々の列とする場合など、CSVの読み書きは実はとっても面倒で悩ましいものです。

 本記事では、さまざまなCSV方言やCSVデータ構成に対応している「OrangeSignal CSV」の特徴と機能を紹介します。

対象読者

  • CSVライブラリを探している方
  • CSVデータアクセス方式に興味がある方

必要な環境

 この記事の内容に関しては次の環境で、動作確認を行っています。

  • Windows Vista(Service Pack 2)
  • JDK 6(1.6.0_17)

OrangeSignal CSVの特徴

 「OrangeSignal CSV」はSourceForge.JPのOrangeSignal(オレンジシグナル)プロジェクトで開発されているオープンソースの国産CSVライブラリで、Apacheライセンスで提供されています。

 では、OrangeSignal CSVの主だった特徴を見ていきましょう。

CSV方言

 OrangeSignal CSVは、カンマやタブなどの「区切り文字」の指定や、ダブルクォーテーションなどの「囲み文字」の指定ができるだけでなく、NULL文字列の指定やデータ中の改行文字列置換、空行や特定パターン行の無視など、非常に多くのCSV方言に対応しています。これらのCSV方言を細かく設定することで、Excel CSV形式やRFC-4180形式のCSVへも特に意識することなくアクセスができるようになっています。

CSV方言  
区切り文字  
囲み文字 有効化/無効化の指定も可
エスケープ文字 有効化/無効化の指定も可
データ中の改行文字列置換  
NULL文字列 大文字・小文字を区別する/しないの指定も可
データ前のホワイトスペース除去  
データ後ろのホワイトスペース除去  
空行の無視  
正規表現による行の無視  
読み込み時の行スキップ  
書き込み時の改行文字列指定 ※読み込み時は、Windows/MAC/Linuxの改行文字を自動でサポート

オブジェクトCSVマッピング

 CSVデータをPOJO(Plain Old Java Object)オブジェクト、マップ、文字列配列、データベースの結果セットなど、いろいろな形式のオブジェクトへマッピングさせることができます。マッピングのさせ方も項目位置、項目名、アノテーションでの指定ができ、機能がとても充実しています。

データフィルタ

 特定のCSVデータだけを読み込んだり書き込んだりするためのデータフィルタが提供されています。データフィルタは流れるようなインターフェースで、複雑な条件を簡単に指定できるようになっています。

統合アクセス

 CSVファイルやストリームの読み込み・書き込みに対し、統一的なインターフェースが提供されており、任意のJavaオブジェクトとCSV間のアクセスが容易にできるようになっています。

DI/AOPコンテナフレームワーク不要

 Spring FrameworkやSeasar2(S2Container)などのDI/AOPコンテナフレームワークが不要なので、依存関係を気にせずに現行システムやアプリケーションへの適用が可能です(もちろんDI/AOPコンテナフレームワーク環境下でも使用できます)。

 次ページからOrangeSignal CSVを導入し、使い方を紹介しながら各機能の説明をしていきます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
OrangeSignal CSVの導入

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

杉澤 浩二(スギサワ コウジ)

フリーのソフトウェア・アーキテクト / システム・コンサルタント。東京都武蔵野市在住昨今は主に日本国内外を問わず Java プラットフォームでの開発提案・開発支援など。金融・投資のオープンソース・ソフトウェア OrangeSignal のメインコミッターも務める

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4607 2009/12/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング