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(文字列)」に変更できます:
- 対象リソースの管理画面を開く
- 「データディクショナリ」タブをクリック
- 該当の列の「タイプ再定義」にて「text」を選択
- 一番下の「保存」ボタンをクリック
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で問題なく表示されれば、機械判読可能である可能性が高いと言えます。
デジタル社会の実現に向けて、機械判読可能なデータの公開を一緒に進めていきましょう!