データカタログとは
- データカタログとは? | 自治体オープンデーを参照してください。要はデータの検索システムです
- 「データ」は、CSVファイルやXLSXファイルなど、様々なファイルフォーマットで表現されます
- データに対しては、それに対応する「メタ情報」(作成日時、カテゴリーなどのタグ、説明文など)が存在します
- データとメタ情報を合わせたものを「データセット」と呼びます。検索により自由にデータセットを探し出せるのがデータカタログです
- 代表的なデータカタログソフトウェアの1つです。公式でデモページが存在しますので、操作感を容易に確かめることができます
- CKANはオープンソースです。また、ローカライズ機能も備えており、日本語表示にも対応しています
- その性質上、日本や海外における、政府や自治体などが公開するオープンデータの管理によく用いられています
- インストール方法は、公式サイトの説明によると次の3通りがあります
- パッケージ管理システムから導入する方法。Ubuntu 16.04 64bitでしか動作しないことに注意
- ソースコードから導入する方法。LinuxどころかMacでも動いて汎用性が高いが、難易度も高い
- Docker Composeから導入する方法。非常に簡単なのが利点
- どちらにせよデータベースとしてPostgreSQLを要求していることに注意が必要です(Docker Composeだと内部でポスグレのコンテナも利用している)
- CKANは、デフォルト状態だとファイルを登録するのにURLしか指定できません
- それだと困る場合、ファイルアップロード機能を提供するために、FileStoreプラグインを導入する必要があります
- 導入方法(プラグインを有効にする方法)は、公式ドキュメントを参考にしてください。
- つまり、アップロードされたファイルを保存するディレクトリを作り、その位置をCKAN構成ファイルに登録してからWebサーバーを再起動すればOKです
- 基本的にはマウスで画面上をポチポチするだけで登録できます
- 登録する単位として、主に次の4種類があります
- Organization……名前・説明・アイコン画像のURL・カスタムなKey-Value値などが登録可能
- Group……名前・説明・アイコン画像のURL・カスタムなKey-Value値などが登録可能
- Dataset……名前・説明・URL・タグ・ライセンス・Organization・ソース・カスタムなKey-Value値などが登録可能
- File……名前・ファイルフォーマット・ファイル自体のURL or 実体などが登録可能
- FileはDatasetに紐付き、DatasetはOrganizationに紐付きます。Dataset登録後、それに対してどのGroupに該当するかを設定できます
- 「説明」(Description)はMarkdown形式です。なので、改行する際は行の末尾に半角空白が2つ必要です
- 前述のFileStoreプラグインを導入すると、アイコン画像やファイルをURLではなくファイル直接アップロードで設定できます
- 「カスタムなKey-Value値」とは、その名の通り「Author: 夏目漱石」「Publisher: 小学館」などの任意の値を登録する機能のことです
- データ検索での絞り込みに利用できます
- 画面見たまんまなので詳細は省きます
- Datasetにおいて、タイトル・タグ・カスタムなKey-Value値は検索対象になりますが、Description(説明)・URL・Dataの中身は検索対象になりませんのでご注意ください
- マニュアルを参考にすれば、その利用は容易でしょう
API仕様で特筆するべきところ
- APIの戻り値はJSON形式で、HTTPステータスコードは基本的に「
200 OK
」です。API自体の成功可否は、success
フィールド(真偽値)で判断されます- つまりRESTfulではありません
- 戻り値の
help
フィールドにAPIの設定値が常に書き込まれます- これについてはなぜ付いているのか謎ですが、将来的な拡張枠を意図しているのかもしれません
- APIの成功時は、
result
フィールドに結果の戻り値が入ります(フォーマットの詳細はREST API依存)。失敗時は、error
フィールドにその詳細が入りますerror.message
にテキストでエラー詳細、error.__type
にエラーの型が代入されます
- CKANはPythonで組まれているためか、サンプルコードにもPythonコード例が豊富です(ただしPython2なので別途読み替えが必要)
- 認証としては、アカウントごとに振られたAPI Keyを、リクエストヘッダーに含めることで対応します。
- つまり、ヘッダーさえ見ればユーザーがAPI叩き放題なので、どの権限で公開するかは注意が必要です
- POST系リクエストでパラメーターをJSONで指定する際、
Content-Type
をapplication/json
にする必要があります - POST系リクエストでファイルをアップロードする際、
Content-Type
をmultipart/form-data
にする必要があります - 一般的な
form
タグで対応できるようにするためか、GET
とPOST
のみでデータ操作する設計になっています - GET系のリクエストについてのみ、JSONPにも対応しています
よく使うAPI一覧(大きめの画像なので注意)
- 閲覧数 15137
画像
コメントを追加