23.4 表データの機械可読性

ここまで見てきたように,Excel の主な役割は表「計算」をすることです.表計算ソフトの機能を使うことで,表データに対して集計処理,統計処理や財務計算といった操作を極めて効率的に行えます.
一方で「表」という形式は,計算を行うためだけでなくデータを分かりやすく整理するのにも使われます.これはこれで,表の重要な役割の一つです.ところが残念なことに,表の見た目に気をとられたばかりに,計算処理に不向きな表が作られてしまうケースが後を絶ちません.こういう表は機械可読性がないと言われます.せっかく表計算ソフトを用いても,これでは作業が効率化できません.また,ここで言う「計算処理」は単なる表計算ソフト内部の処理だけでなく,検索やフィルタといった「操作する人間が表計算ソフトに対して与える指示」も含んでいます.誤ったやり方で表の見た目を追及すると,そのデータを操作する人自身にとっても不幸な結果が訪れるのです.
そこでこの節では「悪い方法で作られてしまった表データ」の例を紹介し,その上で計算処理に適した表データを作るための手段を考えてみたいと思います.表計算ソフトにおける計算処理のしやすさと見た目の美しさは,時として対立することもあります.ですが表計算ソフトの機能を適切に使えば,大抵の場合,機械可読性を保ったまま見た目を整形することが可能です.この文章を読んでいるみなさんは,ぜひ「良い表データ」を作れるようになってください.

悪い表データの例

それでは,悪い表データの例を見てみましょう.

cautionおそらく皆さんは,これらの例をどこかで見たことがあると思います.しかしここで紹介するのは悪い例ですから,皆さんは決して真似をしてはいけません

全角空白を用いた整形

たとえば名簿データで「名字の並びが両端揃えになるように,2 文字の名字の間に全角空白を挟む」という操作が行われることがあります.
23_4_a
ところがこの例では,Excel ではセル B2 を「田中」ではなく,間に全角空白が入った「田 中」としか認識できません.こういう書き方をしていると,たとえば皆さんが「田中さんのデータを検索しよう」と思ったときに,「田中」と変換してから,わざわざ間に全角空白を挟まなければいけません.これは非常に不便ですよね.
また「表の見た目を美しくする」という目的に照らしても,全角空白を挟む方法は愚かだと言わざるを得ません.名字が 2 文字と 3 文字なら空白 1 個で対応できますが,名簿に名字が 1 文字の人と名字が 2 文字の人しかいないときは,どうすればいいのでしょうか?さらに言えば,名簿に「佐々木さん,関さん,田中さん,武者小路さん」が同時に現れたとき,全角空白を使う方法では完全に破綻します.
この問題を解決するのは非常に簡単です.全角空白など使わずに,単にセルの書式を「均等割り付け」にするだけで OK です.書式設定したいセルを右クリックして「セルの書式設定」のダイアログを出すと,横方向と縦方向それぞれについてセルの揃え方を指定できます.ここで「均等割り付け」を選ぶと,きちんと両端が揃いますね.
23_4_b
この方法なら,いかなるセルの幅にも対応できます.またデータに全角空白を挟んでいないので,上の状況では「田中」がきちんと検索できます.表計算ソフトの機能を正しく使えば,データに手を加えることなく,目的の書式を実現できるのです.

縦に隣接したセルを使った縦書き

表中の一部で文字を縦書きにしたい場合に「セルの横幅を 1 文字の幅に合わせて,1 行ずつ文字を書き込む」というケースがあります.たとえば次の,仕事分担表を見てください.
23_4_c
目的は縦書きなのでしょうが,あろうことか「人名を 1 つずつセルに書き込んで縦に並べる」という方法が取られています.そもそもこの方法は,入力すること自体が非常に不毛な作業になります.人名がセルをまたがっているので,当然,表計算ソフトの検索機能も使えません.さらにたちの悪いことに,表をテキスト形式でコピー & ペーストするとめちゃくちゃになります.たとえば「仕事する人の一覧が欲しい」と思い,全員の名前をコピー & ペーストすると

			武
佐			者
々		田	小
木	関	中	路

になります.ここから 1 人 1 人の人名を機械的に抽出するのは困難です.再び,人力による不毛な作業に耐えなければいけません.
こうした事態を避けるため,データは 1 つのセルに入力しましょう.ただ一部のセルを縦書きにしたいだけなら,

  • セルの横幅を 1 文字分にし,縦幅を長く取る
  • セルの書式で「折り返して全体を表示する」設定をしてから,左右方向には中央揃え,上下方向には下揃えにする

という手順で実現できます.その結果が次の図です.

23_4_d
この方法なら,普通のセルと同様に人名を入力できます.無用な罫線が見えてしまうこともありません.そして当然コピー & ペーストにも対応するから,作業もはかどります.

最低限の機械可読性を確保するために

上記の点を踏まえた上で,機械可読性を保つような表を作る方法を考えてみましょう.

1 つのデータと 1 つのセルを対応させる
1 つのセルに複数のデータを入れないようにしましょう.また,1 つのデータを複数のセルに分割しないようにしましょう.セルの参照や検索ができなくなります.
見た目の整形のためにデータを加工しない
全角空白を使った整形のように,データに手を加えてしまうと,機械がデータの内容を正しく解釈できなくなります.したがってセルの値を関数に読み込ませたとき,望み通りの処理ができなくなってしまいます.
データに付随する情報は,データとは別のセルに書き込む
たとえばデータの単位を数字とくっつけてセルに記入してはいけません.数値に単位などをくっつけて 1 つのセルに入力してしまうと,表計算ソフトが「数値」ではなく「文字列」と解釈してしまいます.これでは計算ができません.通貨や日付の単位であれば計算可能なこともありますが,Kg・m/s2 などの単位を数値にくっつけると,まず計算不可能になります.日常で使う cm や ml といった単位でさえも,正しく解釈されないことがほとんどでしょう.

また,機械可読性を判定する簡単な基準があります.それは「csv 形式で保存したときに正しく読めるかどうか」です.機械が表を読むときは行を単位にするため,csv 形式になれば「機械がどう表を読むか」をある程度推測できます.

機械可読性と人間可読性の折り合い

さて,ここまで紹介したのは「機械にとっても人間にとっても可読性が下がる悪い例」でした.ところが現実には,機械にとっての可読性と人間にとっての可読性が相反することもあり得るのです.そうした場合にどうするべきなのか,考えてみましょう.
典型的な問題例は,セルの結合です.表における行見出しあるいは列見出しがいくつかにグループ分けできる場合,それらのグループ名を 1 つだけ表示するのが普通です.たとえば次の例を見てください.これは 2015 年 3 月から 2016 年 3 月までの東京における月平均気温を表にしたものです.気象庁の external過去の気象データ・ダウンロード のページから引用しました.
23_4_e
しかしこうしてしまうと,機械で 1 行ずつ値を読み取る際に「見出しのグループ名」を理解できなくなってしまうのです.この問題を防ぐには,セルの結合を行わず,逐一グループを書く必要があります.
23_4_f
しかしこうしてしまうと,今度は人間にとって見辛い表になってしまいました.どうすれば良いのでしょうか?
一つの手としてはどちらかを諦めるというものがあります.対象となる表データが機械処理を念頭にしていて,人間の目に触れることがあまりないのであれば,人間の見易さを犠牲にしても差支えないでしょう.逆に,人間が読むことが中心で機械処理されないようなデータであれば,高度な機械可読性を気にする必要はありません.
そしてもう一つ,機械可読性の高いデータ表を用意した後で,そのデータを人間が見やすい形式に流し込むという手があります.たとえば Microsoft Excel であれば,1 つのブック内に複数のシートを作ることができ,かつ異なるシート間でデータの参照ができます.ですから機械が読むためのシートと人間が読むためのシートを別個に作り,機械が読むためのシートに書かれたデータを,人間が読むためのシートに流し込めばよいのです.機械が読むためのシートは当然機械可読性が高くなるように作られていますから,それらのデータを Excel で自由自在に加工することができます.ですから,人間が読みやすくなるように加工することもできるのです.人間と機械の両方へ対応する必要があれば,こうした技法を検討しましょう.

Excel 方眼紙問題

関連して,Excel 方眼紙と呼ばれる問題を紹介しておきます.これは,Excel において

  1. 何も考えず一度全てのセルを同じ大きさの正方形にして
  2. それらのセルを適宜連結することで,望み通りの形を作り出してから
  3. 一つ一つのセルに文章を流し込む

という方法で文章を作る行為を指します.また Excel 方眼紙を含めて,罫線を自由自在に引くためにセルの連結を多用した Excel ブックなどを総称して「ネ申 Excel」という隠語が用いられることがあります.日本語で用いる原稿用紙と似ており,かつ日本語の文書では罫線が比較的多用されるためか,Excel 方眼紙を用いる人がしばしば見かけられます.
しかし文書を機械や人間が読むことを踏まえると,Excel 方眼紙は悪い手法だと言わざるを得ません.まず人間が読むための文書を作る方法として,Excel 方眼紙は筋が悪いです.文書作成には hwb22. 文書作成 で紹介するような,それに特化したソフトウェアがきちんと用意されています.一方 Excel 方眼紙は一見デザインが自由に行えるように見えて,文書のスタイルを細かく制御することは困難です.また機械可読性の観点からも,Excel 方眼紙は最悪です.データの構造を全く考えず,人間の見た目の都合だけでセルの結合を行っているからです.これを機械が自動で読み取ることは,困難でしょう.
そして上で述べたように,機械可読性と人間可読性にはある程度折り合いをつけることが可能です.たとえば Excel なら,1 つのブック内で

  • 無味乾燥な入力フォームの羅列だけからなる表
  • 入力フォームのデータを流し込んで整形した表

の 2 つを用意しておけばよいのです.こうすれば機械が読める形で入力されたデータを,人間が読みやすい形で表示されます.さらに表計算ソフトウェアの機能を使えば,各セル毎に「どのようなデータを入力できるか」の設定ができます.こうした機能を正しく使えば

  • 入力する段階で,機械的に誤った形式のデータを弾くこと
  • 入力後の段階で,人間が見やすい形に整形されたシートを見て,誤りがないかを確認すること

の両方を同時に実現できるのです.
表計算ソフトウェアを使うときには,くれぐれも自分は何をしたいのか,そのためにはソフトウェアをどう役立てられるのか考えることを忘れないでください.安直な発想で Excel 方眼紙の暗黒面に堕ちると,人間によるデータ入力と機械によるデータ処理の両方を妨げてしまい,関わる全ての人を不幸に陥れる結果になってしまいます.