子だくさんIT社長のFileMaker日記[02]CSVファイルを扱おう/茂田カツノリ

投稿:  著者:  読了時間:6分(本文:約2,800文字)


最近Twitterが盛況だ。僕もアカウントを取ったのは3年ほど前だが、当初は日本人いなかったので英語の練習場、くらいに思っていた。そしたら昨年末くらいから急激に日本人ユーザが増え、元来コミュニケーション好きな僕は思いっきりハマっている。役に立つしね。

TwitterそしてUstreamのブームで、デジクリ著者の方々も活躍の場がより広がりそうな感じになってうれしい。本来、神田敏晶さんのような方がものすごおくお金持ちになられるのが、いい世の中だと僕は絶対に思うのだ。という話とは関係なくて、今回はCSVについての基礎的というか前提的な話。



●CSVの定義を一応再確認ね

「CSV」とは「Comma Separated Values」の略称で、データをカンマ区切りで並べた形のテキストファイルのことだ。

"150-0001", "東京都", "渋谷区","神宮前9-99-9","茂田ビル100階","株式会社レクレアル"

という感じで並んでるデータのことだ。各項目を囲むダブルクォーテーションはなくてもいい。そしてデータ1件ごとの区切りには改行が入る。

という誰でも知ってそうなことをわざわざ書いたのは、以前ちょっと仕事を依頼しようとした相手との会話で、僕は基幹システムとのやりとりを固定長テキストでやるってゆってたのに、その人は「CSVで」と勝手に話を進めて全然かみ合わなかったことがあるからだ。結局、テキスト形式でデータを渡すのは全部CSVと呼ぶもんだと思ってたらしい。知らない用語に出会ったら辞書くらい引いてほしいものだが、こういうのも仕事に取り組む姿勢のひとつだなと判断し、この人物に依頼するのはやめたのだった。

ほかの例でも、いわゆるTAB区切りテキストなのに「.CSV」って拡張子付けてよこすからFileMakerで読めなくて困った、なんてこともある。これはすぐに気づいたが、ウソが含まれるのは困るものだ。

ちなみに、FileMakerはインポートについては、正直に拡張子をみて形式を判断する。実際のデータ形式と異なる拡張子が付いていると、エラーが起きたり読み込みがずれたりするのだ。一方Excelの場合は、拡張子は信じずに形式で判断するので、Excelなら開けるのにFileMakerでダメだった場合は、拡張子がウソかもしれないので確認しよう。

●CSVファイルを取り込む方法

CSVデータをFileMakerに取り込むには、以下の3つの方法があるので、その特徴も含めご紹介しよう。

1)直接開く
CSVデータをFileMakerで直接開く。さくっとFileMaker形式に変換してfp7形式のファイルになるので便利。変換も結構速い。

2)既存テーブルにインポートする
あらかじめ取り込み用テーブルを作っておき、そこにインポートする。フィールドを定義しておかねばならないが、そこに当てはめる形なのでどんどん発生してくるデータを追加インポートする際には便利。

3)既存データベースに新規テーブルを作成しインポートする
既存のFileMakerデータベースで「レコードのインポート」を行うのは2)と同じだが、インポート画面でのテーブル選択で「新規テーブル」を選ぶ方法。テーブルの追加ができるというわけだ。余談だが、この方法でFileMakerファイルをインポートすると、計算フィールドや集計フィールドについても式や設定がそのまま取り込める。バージョン6以前で、複数ファイルに分かれていたものを統合するときに便利だ。

●CSVファイルを扱おう

手始めに、郵便番号の一覧CSVを下記からダウンロードし、FileMakerで開いてみてほしい。
< http://www.post.japanpost.jp/zipcode/dl/kogaki.html >

全国だと12万レコードほどになるが、このくらいならFileMakerで軽く扱えることがわかる。インポートについては、テキストファイルとしての扱いになるため若干の時間を要するし、インポート後の最初の検索では索引生成の時間を要するが、その後はこのくらいの件数なら検索も一瞬でできる。

ちなみに、日本語を含むテキストファイルのインポートにおいては、文字コードはShift-JISであることが多く、それならFileMakerでのインポートも問題ない。UTF-8でもまず大丈夫だ。ただし、ときおり文字コードの判別がうまくいかないこともある。直接開く場合はコード指定をする画面を通らないが、インポートにおいてはコード指定が可能。データのプレビューをみて、文字化けしないようなコードを選択すればよい。

FileMakerに取り込んでしまえばこっちのもの、あとは分類別に集計をしたり、データを加工したり、形式を変えてまたエクスポートしたり、いかようにもできる。

FileMaker内にあるデータをCSVテキストファイルとして書き出すには、レコードのエクスポートを使えばよい。この場合、エクスポート指定したフィールドについて、対象レコードすべてのデータを書き出すという動きになる。1レコードだけ書き出したい場合は、対象レコードをそれだけに絞ってから書き出せばよい。

CSVへのエクスポートで気をつけたいのが文字コード。デフォルトだと「Macintosh(英語)」となってしまい、このままでは日本語が文字化けするのだ。ちゃんとShift-JISまたはUTF-8を選ぶのを忘れずに。

なお、書き出し先のディレクトリやファイル名が決まっているなら、それを「file:ディレクトリ名/ファイル名」という形で変数に設定し、それをエクスポート時に使うという形で、ファイル名と書き出し先とを指定することが可能。これはインポート等でも使え、ファイルのリネームをFileMakerで行うなんてこともできる。

CSVの取り扱いは、日々の業務において重要かつ手間のかかる部分となっていることが多く、それだけにFileMakerで省力化することで、業務効率の改善に大きく寄与することが多い。CSVならExcelでももちろん扱えるが、より自動化を進めたいならFileMakerを使うことがお勧めだ。

インポート/エクスポートには、HTMLの改行コードを設定するなどのさまざまな小ワザがある。このへんはちょっとメルマガだけでは紹介しきれないが、僕のトレーニングではよく扱う題材なので機会があったらぜひ(宣伝)。

【しげた・かつのり】FileMaker公認トレーナー/FileMaker認定デベロッパー。
株式会社レクレアル代表取締役。先日、ある小説家の方から取材を受けた。なんか嬉しかった。
Twitter(個人用)< http://twitter.com/shigezo >
※※FileMaker情報メルマガ配信中!登録は以下で※※
< http://www.recrear.jp/ >