表データのWebブラウザの表示について

CKANには、アップロードしたファイルをダウンロードせずに中身を確認できる「ビュー機能」があります。

テキスト、PDF、画像、Officeファイル、地理空間情報など、さまざまなビューが存在しますが、最もよく使われるのは「データエクスプローラ(表データの表示)」だと思います。

データエクスプローラの2つの仕組み

1. Datastore

  • ファイルをRDB(リレーショナルデータベース)に変換
  • ファイルの中身を表形式で表示
  • API経由でファイルの中身にアクセス可能

「API」ボタンが表示され、Datastore APIでデータ取得ができるようになります。

2. Resource Proxy

ファイルを外部サービスに投げてJSONを取得し、それを表示する仕組みです。
※将来的に機能停止がアナウンスされていますが、現時点では利用可能です。


基本的に、Datastoreが利用されますので、以下はDatastore前提の話となります。

表が表示されない場合のチェックポイント

Excel または CSV ファイルをアップロードしたのに「表が表示されない」ことがあります。
その場合、まず以下の点をご確認ください。

1. 表の形式がシンプルであること

Datastoreは「1行目がタイトル行、2行目以降がデータ」というシンプルな表形式が前提です。

整然データという考え方がありますので参考にしてください。

セルの結合がある、グラフを含んでいるなどの、シンプルな表でないExcelデータの場合は、プレビュー(Officeビュー)を利用してください。

2. タイトル行(1行目)のチェック

  • 重複がないか
    同じ列名があると、Datastoreではキーの重複としてエラーになります。
  • ブランクがないか
    1行目にブランクの列名があると、カラムのズレが発生しエラーになることがあります。
  • 文字数制限
    列名は以下のルールを超えるとエラーになります:

    • 半角英数字のみ → 63文字以内
    • 全角文字のみ → 21文字以内
    • 混在の場合 → 「半角1文字=1」「全角1文字=3」として合計63以内
  • 記号の組み合わせ
    一部の記号と文字の組み合わせによってもエラーが発生する場合があります。
    エラーが出る場合は、記号を削除してみてください。

3. データ型の推定によるエラー

Datastoreでは、2行目以降の値から自動で型(数値型や文字列型)が推定されます。
以下のようなケースでエラーが起きることがあります:

  • 最初はすべて数値だった列に、途中で「100人」など数値でない文字列が混ざっている → エラー
  • 特定の列を文字列として扱いたいのに、数値として推定されてしまう(例:自治体コード)
    北海道から茨城県までは、先頭が0ですが、数値と推定されると0が削除されて表示されてしまう。

型の変更方法(例:自治体コードを文字列にする)

以下の手順で、列の型を「text(文字列)」に変更できます:

  1. 対象リソースの管理画面を開く
  2. 「データディクショナリ」タブをクリック
  3. 該当の列の「タイプ再定義」にて「text」を選択
  4. 一番下の「保存」ボタンをクリック

CSVファイルの文字化けを防ぐために(文字コードの推奨設定)

DatastoreにアップロードしたCSVファイルが文字化けすることがあります。多くの場合、その原因は文字コードがShift_JIS(S-JIS)になっていることです。

なぜ文字化けが起きるのか?

CSVファイルには、内部に文字コードの情報が含まれていません。
そのため、CKANではアップロード時に自動的に文字コードが推定されます。

  • S-JISのCSV:一部は正しく推定され表示されますが、うまく推定できないと文字化けが発生します。

  • CKANのデフォルトはUTF-8:そのため、UTF-8で保存されたファイルの方が安定して表示されやすくなります。

UTF-8にするとExcelで文字化けする?

一方、CSVをUTF-8で保存すると、WindowsのExcelで開いた際に文字化けすることがあります。
これは、ExcelがCSVを開くときにS-JISを標準文字コードとして扱うためです。

解決策:BOM付きUTF-8(utf-8-sig)で保存する

BOM(Byte Order Mark)を付けてUTF-8で保存することで、次のような利点があります:

  • CKAN上のWeb表示でも文字化けが起きにくくなる

  • ExcelでCSVを直接開いても正しく表示される

開発者向け補足

一部では「BOMは機械判読性が下がる」という意見もありますが、Pythonで読み込む場合は encoding='utf-8-sig' を指定することで、BOMの有無を問わず読み込むことができます。

そのため、CKANにアップロードするCSVファイルは、BOM付きUTF-8で保存することを推奨します。

BOM付きUTF-8を作成するには

Windowsであれば、Excelで保存するときに、「CSV UTF-8(コンマ区切り)(*.csv)」を選択することで、BOM付きのUTF-8になります。
Excelが無い場合は、メモ帳でCSVファイルを開いて、保存する時に、エンコード:UTF-8(BOM付き)を選択してください。

最後に

Datastoreを活用すると、CKAN上でファイルの中身を事前にプレビューできるようになり、表形式のデータにはAPIからアクセスすることも可能になります。

ただし、正しく表示させるためには、データの整形やタイトル行の調整が必要になることがあります。表示されない表データがある場合は、エラー内容を確認し、元のファイルを見直してみてください。適切に対応することで、より使いやすいデータに仕上がります。

オープンデータの定義には「機械判読に適した形式である」という項目がありますが、Datastoreで問題なく表示されれば、機械判読可能である可能性が高いと言えます。

デジタル社会の実現に向けて、機械判読可能なデータの公開を一緒に進めていきましょう!

ビッグデータ&オープンデータ・イニシアティブ九州 ビッグデータ&オープンデータ・イニシアティブ九州
〒814-0001 福岡市早良区百道浜2-1-22-5F
公益財団法人九州先端科学技術研究所
TEL:092-852-3510 FAX:092-852-3455
ckan
wordpress