解 説 連 載 : eコンテンツのためのデータ 加 工 第 2 回 長 谷 川 秀 記 1 著 者 抄 録 :Webサイトの 構 築 や 広 報 システムの 電 子 化 などに 伴 い, 各 種 のOAデータをeコンテンツ 用 のデータに 加 工 する 技 術 が 必 要 とされる この 連 載 はデータ 入 手 からテキスト 化,データ チェック, 文 字 の 問 題,タグ データ 加 工 までの 各 段 階 について, 基 本 知 識 と 技 術 の 実 務 を 解 説 する 今 回 は アプリケーション データからのテキスト データ 取 り 出 し の 続 きで 作 表 ソフ トを 取 り 上 げ 解 説 する キーワード: 作 表 ソフト,Microsoft Excel,XML,HTML,テキスト データ,タブ 区 切 りデータ, CSV,スペース 区 切 りデータ,カンマ 区 切 りデータ,タブ 文 字,セル 内 改 行,セル 結 合 Author Abstract: In building web sites or making digitized PR system ones need to use techniques of processing OA data for e-contents. This series explain the basic knowledge and practices in the course starting from data acquisition to data processing, including making the text data, the data checking, characters dealt with in, tagging. This article, the second part of the series, covers the continued from the first part on to take text data out from application data, that is, software for tabulation. Key words: tabulation software, Microsoft Excel, XML, HTML, text data, data segmented by tab, CSV, data segmented by space, data segmented by comma, tab character, line return inside cell, cell connection ( 情 報 管 理 ) 前 回 までは 以 下 の 項 目 を 説 明 した eコンテンツに 適 したデータ データの 入 手 とその 意 点 アプリケーション データからの テキスト データ 取 り 出 し ワープロ データからのテキスト デー タ 取 り 出 し 今 回 は アプリケーション データからのテキス ト データ 取 り 出 し の 続 きとして 作 表 ソフトを 取 1 ( 有 ) 自 由 電 子 出 版 ( 151-0053 東 京 都 渋 谷 区 代 々 木 2-22-8 イースト( 株 ) 内 )Tel. 03(5358)3941 E-mail: info@jiyudensi.co.jp 1 Jiyu-denshi Publishing Co., Ltd. (22-8, Yoyogi 2-chome, Shibuya-ku, Tokyo, 151-0053) り 上 げ 解 説 する 作 表 ソフトからのテキスト データ 取 り 出 し eコンテンツの 元 データとして 渡 されるデータに はマイクロソフト エクセルなどの 作 表 ソフトも 多 く 使 われている 表 の 形 式 に 合 致 するデータはエク セルなどの 作 表 ソフトで 作 ってもらうと 間 違 いが 少 ない ここではマイクロソフト エクセルからテ キストデータを 取 り 出 す 際 の 意 点 を 述 べる( 以 下 の 説 明 はMicrosoft Excel 2002に 準 拠 した) テキスト 出 力 の 種 類 エクセルでは, 以 下 の 種 類 のテキスト データ 形 式 が 扱 える これらの 形 式 のテキスト データをエ クセルに 読 み 込 ませることもできるし,またエクセ
755 解 説 連 載 :eコンテンツのためのデータ 加 工 第 2 回 ルのデータをこれらの 形 式 で 出 力 することもでき る 1 エクセルのデータをこれらの 形 式 に 変 換 するに は[ファイル]メニューの[ 名 前 を 付 けて 保 存 ]の ダイアログボックスでファイルの 種 類 から 該 当 す るものを 選 択 して 保 存 すればよい テキストファイル(スペース 区 切 り)(*.prn) テキストファイル(タブ 区 切 り)(*.txt) CSV 形 式 (カンマ 区 切 り)(*.csv) HTML 形 式 XML 形 式 DIF 形 式 SYLK 形 式 以 下 にそれぞれの 形 式 についてeコンテンツ データとしての 向 き 不 向 きを 解 説 した テキストファイル(スペース 区 切 り) 拡 張 子 が prn で 出 力 されるスペース 区 切 りの テキスト データ エクセルの 画 面 と 同 じ 表 示 にな るように 半 角 空 白 を 付 加 して 出 力 される( ) この 形 式 は 印 刷 や 表 示 には 適 したテキストデー タであるが,このデータを 加 工 しようとするとデー タの 区 切 りが 区 別 できなくなることがあるのでeコ ンテンツ 用 のデータとしては 不 適 である 形 式 (カンマ 区 切 り) * CSV(Comma Separated Value)は 表 形 式 のデータ を 表 現 する 最 もポピュラーな 形 式 である CSV 形 式 では 表 の 行 を1 行 で 表 現 し, 列 と 列 の 間 に 半 角 のカンマ, を 入 れてデータを 区 分 する( 図 ) 問 題 になるのはデータ 中 にカンマが 使 用 されて いた 場 合 である この 場 合 はデータをダブルコー テーションで 括 る データ 中 にダブルコーテーショ ンが 使 用 されていた 場 合 はダブルコーテーション を2つつなげる( ) CSV 形 式 は 一 般 的 なデータフォーマットなのだ がデータ 中 にカンマ 使 用 された 場 合,データ 区 切 り との 区 別 をつけるのが 難 しい データ 処 理 にとって は 実 は 扱 いづらい 形 式 であり, 次 に 説 明 するタブ 区 切 りデータを 利 用 した 方 がよい テキストファイル(タブ 区 切 り) * CSV 形 式 のカンマの 代 わりにタブ 文 字 2 を 使 用 したものである( ) この 形 式 ではデータ 中 にカ ンマやダブルコーテーションがあっても 区 切 り 文 字 と 重 複 しないのでCSVよりはるかに 扱 いやすい エクセルではCSV 形 式 と 同 じルールを 適 用 し, データ 中 にカンマがある 場 合 はダブルコーテー ションで 囲 み,ダブルコーテーションが 登 場 した 場 合 はダブルコーテーションを2つつなげて 出 力 する また 後 述 の セル 結 合 や セル 内 改 行 を 行 っ た 場 合 にも 問 題 が 発 生 するので 意 が 必 要 である 形 式 1 行 目 : 数 字 項 目 と 文 字 項 目 が 区 別 不 能 になる 123DEF 2 行 目 : 空 白 のある 項 目 ではスペース 区 切 り が 余 計 に 発 生 してし ま う 形 式 セル 内 にカンマやダブル コーテーションがあった 場 合 2 行 目 の1 列 目 と3 列 目 がカンマ 入 り, 2 列 目 はダブルコーテーシ ョ ンが 入 っている 形 式 ( 図 1と 同 じデータをCSVに 変 換 ) は 改 行 を 表 す 1) テキスト 化 によるデータの 変 化 についてはエクセル のヘルプの Excel のファイル 形 式 変 換 では 保 存 され ない 書 式 と 機 能 に 書 いてある 参 照 されたい
756 情 報 管 理 Vol. 44 No. 11 February 2002 タブ 区 切 り 変 換 図 3と 同 じエクセルファイルをタブ 区 切 りに 変 換 [タブ]はタブ 文 字 を 表 す この 形 式 が 最 もデータを 単 純 化 することが 可 能 であり, 一 番 推 奨 できる 変 換 方 式 である この 形 式 からデータを 取 り 出 す 方 法 については 後 述 する 出 力 エクセルのHTML 出 力 はHTMLのTABLEデータ としてエクセルデータを 出 力 するもので,エクセル のデータ 情 報 がほぼ 完 全 に 入 っている テキスト 化 したデータとしては 情 報 が 落 ちていないので 望 ま しいデータといえるが, 複 雑 なデータとなることが 難 点 である エクセルのデータをHTMLライクなTABLE 構 造 として 加 工 しようとするなら,この 出 力 が 役 に 立 つ だろう サンプルデータ( )から 出 力 されたHTMLファ イル( )は 文 字 種 の 指 定 やエクセル 独 自 タグな どゴチャゴチャしたデータとなっているが, 前 回 説 明 したWordからのHTML 出 力 加 工 と 同 じように, 不 要 な 指 定 をなくしていくことで 整 理 されたデータ を 得 ることができるはずだ タグデータを 検 討 する 場 合 の 要 点 は 以 下 のよう なものである 連 続 した 空 セルは<td colspan=n>となる(40,44 行 目 ) ダブルコーテーションは " カンマはそのま サンプル 用 エクセルデータ セルC3はC1+C2 と いう 計 算 式 が 入 っ ている ま 入 っている(18,19 行 目 ) 入 力 時 のルビが 埋 め 込 まれている(24,25 行 目 読 みデータとして 正 しいという 保 証 はないだろ う) 計 算 項 目 のセルには, 計 算 式 が 属 性 値 として 示 さ れる(26 行 目 コンテンツデータとしては 通 常 不 要 だろう) セル 内 改 行 は<td>タグ 内 のデータを<br>タグで 区 切 っている(35 行 目 ) セル 結 合 は<td rowspan=n>や<td colspan=n>の 形 になっている(23,29 行 目 ) 出 力 エクセル2002からはXML 出 力 もフォローされ た この 出 力 ファイルを 解 析 してテキスト 化 するこ とも 可 能 である 通 常 は 単 純 な 表 形 式 のフォーマッ トが 多 いと 思 われるので, 上 記 のタブ 区 切 りのもの を 利 用 する 方 が 簡 単 であるが,セルの 連 結 などを 多 用 しているものなどにはこの 方 式 からのコンバー トが 向 いている タグの 整 理 方 法 はHTML 出 力 と 同 様 である XML 出 力 を 整 理 する 場 合 の 要 点 は 以 下 である 3 コードはUTF-8 4 となる セル 内 改 行 は とユニコードの 文 字 表 記 となる セルの 連 結 は 縦 方 向 はMergeDown="n", 横 方 向 な らMergeAcross="n"という 属 性 になる(nは 連 結 さ れるセル 数 -1) 2) タブ 文 字 :キーボードの [TAB] キーを 押 したときに 入 力 される 文 字 空 白 と 同 じように 表 示 されるが, 次 の 文 字 が 一 定 の 桁 数 ( 一 般 的 には 半 角 で8 文 字 の 倍 数 )になるように 長 さが 調 節 される 本 来 は 文 字 の 桁 合 わせに 使 用 されるが, 通 常 のデー タには 登 場 しない 文 字 であるためデータの 区 切 りと しても 用 いられる コードは09(H) テキスト エディタなどの 正 規 表 現 では t と 表 現 する なおタブ 文 字 は 空 白 と 見 た 目 が 区 別 できないので 作 業 上 不 便 である テキスト エディタの 設 定 でタブ 文 字 を 表 示 するオプションがあればそれを 有 効 にし ておくとよい 秀 丸 エディタでは[その 他 ]メニュー の[ファイルタイプ 別 の 設 定 ]で[ 表 示 タブ]を 選 び, タブ 文 字 表 示 にチェックを 入 れておく 3) エクセル 形 式 と XML 形 式 の 差 についてはマイクロ ソフトOfficeアシストセンターの 以 下 のページに 詳 しく 記 述 されている XML ワークシート 形 式 の 機 能 と 制 限 <http://office.microsoft.com/japan/assistance/2002/ articles/xlfeatureslimitationxmlspread.aspx>
757 解 説 連 載 :eコンテンツのためのデータ 加 工 第 2 回 出 力 の 例 ( 要 素 のみを 例 示 ) 図 5のエクセルファ イルを 変 換
758 情 報 管 理 Vol. 44 No. 11 February 2002 形 式 変 換 結 果 ( 抜 粋 ) 形 式 変 換 結 果 ( 抜 粋 ) 計 算 項 目 のセルには, 計 算 式 とその 結 果 が 記 述 さ れる 形 式 * / 形 式 (シンボリックリンク 形 式 ) * ともに 表 形 式 のデータを 交 換 するためのテキス ト 形 式 であるが,データ 構 造 が 複 雑 になるためテキ スト 化 には 向 いていない( および ) タブ 区 切 りデータの 加 工 セル 内 改 行 の 処 理 エクセルでは1つのセル 内 で 文 字 列 を 改 行 するこ とができる(ALT+ 改 行 キー) セル 内 で 改 行 が 行 われた 場 合,CSV 変 換 やタブ 区 切 りテキスト 変 換 で は のようにデータ 中 に 通 常 の 改 行 が 入 ってし まう タブ 区 切 り 形 式 でのセル 内 改 行 の 発 見 法 はカン マが 入 っている 場 合 と 同 様 にダブルコーテーショ ンが 付 加 されることに 着 目 する つまり, "~[ 改 行 ]~" ([ 改 行 ]は 改 行,~はタブでも 改 行 でもない 文 字 を 表 す) というパターンを 発 見 すればよい このパターンをテキスト エディタ,たとえば 秀 丸 エディタの 正 規 表 現 を 使 った 置 換 で 処 理 する 場 4) UTF-8 ユニコードのエンコーディング 方 式 の1つ 8ビット 単 位 で 文 字 をコード 化 する 他 のエンコード 方 式 と してはUTF-7やUTF-16があるが 現 状 ではUTF-8が 最 も 使 われている ユニコードで 記 述 されたテキストはユニコード 対 応 のテキスト エディタで 読 むことができる が, 対 応 していない 場 合 は 文 字 化 けを 起 こす また 通 常 の Shift-Jis でデータを 作 成 する 場 合 は コード 変 換 を 行 わなくてはならない( 詳 細 は 後 日 解 説 する 予 定 )
759 解 説 連 載 :eコンテンツのためのデータ 加 工 第 2 回 (1) 行 頭 の ", 行 末 の ",タブに 連 続 する " を 空 文 字 5 と 置 換 これを 秀 丸 エディタの 正 規 表 現 で 記 述 すると 以 下 のようになる 被 置 換 文 字 : ^" 行 頭 の " "$ 行 末 の " 置 換 文 字 : 空 文 字 セル 内 改 行 の 例 は 改 行 文 字, [タブ] はタブ 文 字 を 表 す 被 置 換 文 字 : " t タブの 直 前 の " t" タブの 直 後 の " 置 換 文 字 : t (^は 行 の 最 初 を$は 行 の 最 後 を 表 す) (2) 2つ 連 続 したダブルコーテーションを1つにまと める 合 は 以 下 のようになる 置 換 に 際 して 改 行 は 何 か 特 殊 な 他 の 部 分 で 出 現 しないものに 置 き 換 える ここ では 仮 に <BR> という 文 字 列 とする 被 置 換 文 字 :" f[^ t]* f n f[^ t]* f" 置 換 文 字 : 1<BR> 3 ( t はタブ 文 字, [^ t] はその 否 定 でタブ 文 字 でない 文 字, [^ t]* はタブ 文 字 でない 文 字 の0 個 以 上 の 繰 り 返 し n は 改 行 にマッチ する 置 換 文 字 の 1 は 被 置 換 文 字 の f で 区 切 られた2 番 目, 3 は4 番 目 の 文 字 列 を 表 す ここでタブ 文 字 でない 文 字 を0 個 以 上 の 繰 り 返 しとしたのは,データの 最 初 にセル 内 改 行 が 登 場 したり, 最 後 にセル 内 改 行 がつけられ ているケースを 想 定 している) タブ 区 切 りデータの 加 工 不 要 なダブルコー テーションを 削 除 エクセルからタブ 区 切 りデータへ 変 換 すると,カ ンマやダブルコーテーションの 入 ったセルはダブ ルコーテーション 囲 みで 出 力 される このダブル コーテーション 囲 みは 不 要 であるので 通 常 は 削 除 する ここではテキスト エディタを 利 用 した 方 法 を 紹 介 する 被 置 換 文 字 :"" 置 換 文 字 :" なおこの 処 理 は 前 に 説 明 したセル 内 改 行 の 処 理 が 終 わってから 行 わなくてはならない 最 初 にこの 処 理 を 行 うとセル 内 改 行 の 目 印 が 失 われてしまう タブ 区 切 りデータの 加 工 セル 結 合 の 処 理 エクセルでは2つ 以 上 のセルを1つのセルとして 結 合 することができる セル 結 合 を 行 ったデータを タブ 区 切 りデータに 変 換 した 場 合 には, 結 合 セルの 最 初 にデータが 入 り, 他 のセルは 空 のままとなる タブ 区 切 りデータに 変 換 するような 用 途 ではセ ル 結 合 は 都 合 が 悪 いことが 多 い しかしタブ 区 切 り 形 式 ではセル 結 合 は 特 定 のパターンにならないた め 発 見 は 困 難 である セル 結 合 の 個 所 を 確 実 に 発 見 する 方 法 は 同 じ データをHTML 変 換 してデータ 中 に colspan= rowspan= という 文 字 列 がないか 検 索 するとよい <td colspan=2> ならその 個 所 で 列 を2つ 結 合 して いる 可 能 性 がある rowspan なら 行 の 結 合 を 表 し ている 5) 空 文 字 何 も 文 字 がない 状 態 を 空 文 字 と 呼 ぶ ある 文 字 を 空 文 字 と 置 換 するという 表 現 は 削 除 することと 同 等 となる