本文へスキップ

平成23年度 特別試験 ITパスポート試験 問73

この問題の解説と、これまでの解答の記録です。

問73
頻出度★★★

表のセルA1~C2に値が入力されている。表の値をCSV形式で出力した結果はどれか。ここで,レコード間の区切りは改行コード“CR”を使用するものとする。

ABC
1月1月2月
2売上高500600
出典 平成23年度 特別試験 ITパスポート試験 問73
解説

問 73

  • ア

    正解 正解はア。CSV は Comma Separated Values の略で、その名のとおり項目と項目の区切りにカンマを使うテキスト形式のデータ表現である。表を CSV に変換するときの対応関係は次の二段構えで考えるとよい。第一に、表の 1 行がそのまま 1 レコード (1 行のデータ) になる。第二に、そのレコードの中で左から右へ並ぶ各セルの値が 1 つずつのフィールドとなり、フィールドどうしをカンマで区切る。そしてレコードとレコードの境目には改行を入れる。本問では、その改行として改行コード CR を使うと設問で明示されている。この規則を図の表に当てはめる。表は 2 行 3 列で、1 行目は A1=月、B1=1月、C1=2月 なので、第 1 レコードは 月,1月,2月 となる。ここでレコードが終わるので CR を置く。2 行目は A2=売上高、B2=500、C2=600 なので、第 2 レコードは 売上高,500,600 となり、その末尾にも CR が付く。数値である 500 や 600 も文字列と同じくそのまま並べ、特別な引用符などは付けない。以上をつなぐと 月,1月,2月 CR 売上高,500,600 CR となり、これはアの内容と完全に一致する。表の左端の 1・2 や上端の A・B・C はセルの位置を示す行番号・列番号であって表に入力された値ではないため、出力には含めない点にも注意したい。よって正解はアである。

  • 不正解イ

    区切り文字がカンマである点は CSV として正しいが、行と列を入れ替えて出力している点が誤り。イは 月,売上高 CR 1月,500 CR 2月,600 CR となっており、これは表の A 列 (月・売上高) を第 1 レコード、B 列 (1月・500) を第 2 レコード、C 列 (2月・600) を第 3 レコードとした、いわゆる縦横を転置した出力である。CSV は表の行をそのままレコードとして順に書き出す形式であり、2 行 3 列の表からは 3 フィールドのレコードが 2 本できるはずである。イは 2 フィールドのレコードが 3 本になっており、元の表の並びを再現できていないため誤り。

  • 不正解ウ

    行と列の対応 (1 行目が第 1 レコード、2 行目が第 2 レコード) は正しいが、フィールドの区切り文字にカンマではなくスラッシュを使っている点が誤り。ウは 月/1月/2月 CR 売上高/500/600 CR となっている。CSV は Comma Separated Values、すなわちカンマ区切りであることが形式の定義そのものであり、区切り文字を別の記号に変えたものは CSV とは呼べない。参考までに、区切りにタブ文字を使う形式は TSV (Tab Separated Values) と呼ばれ、CSV とは区別される。

  • 不正解エ

    区切り文字と並び順の両方が誤っている選択肢。エは 月/売上高 CR 1月/500 CR 2月/600 CR となっており、ウと同じくカンマではなくスラッシュで項目を区切っているうえ、イと同じく表の行と列を入れ替えて出力している。CSV の要件であるカンマ区切りを満たさず、かつ元の表の 2 行 3 列という構造も再現できていないため、二重に誤りである。

ここがポイント
  • CSV (Comma Separated Values) の定義 — 表形式のデータを、項目 (フィールド) どうしをカンマで区切り、レコード (行) どうしを改行で区切って並べたテキスト形式。特定のソフトに依存しない汎用的なデータ交換形式として、表計算ソフトやデータベースの入出力で広く使われる。区切りにタブを使う TSV とは区別される。
  • 表から CSV への変換規則 — 表の 1 行がそのまま 1 レコードになり、その行のセルの値を左から順にカンマでつないで 1 行のデータとする。行と列を入れ替えてはならない。また、行番号や列見出し (A・B・C や 1・2) はセルの位置を示す目印であって入力された値ではないため、出力には含めない。
用語

解答の記録