世界の人道データの情報源がより簡単にアクセスできるようになり、データの柔軟性が向上し、システムの性能と堅牢さが改善されたことで、国際的な支援組織は、よりデータを活用しやすくなるだろう。
ReliefWebはUnited Nations Office for the Coordination of Humanitarian Affairs (OCHA)が提供するデータサービスだ。、現在発生している世界中の災害の最新情報や過去の災害の情報にRESTfulなAPI経由でアクセスできる。17年間の災害データに加え、1980代以降の主要な災害に対する国連の報告書も提供する。また、このAPIは人道支援の領域での仕事やトレーニングの機会についての情報センターも提供する。
今回のリリースはバージョン0として知られていた以前のAPIを置き換えるものであり、バージョン1となる。ReliefWebはフロントエンドとバックエンド双方を大幅に改善することで開発者のエクスペリエンスを劇的に改善した。柔軟性と学習しやすさ、需要に従ったスケールアップしやすさを第一の目的とした設計であり、継続的統合によって自動ビルド、自動配置、回帰テストを実現している。
このバージョン1のAPIはHATEOASに準じている。Swaggerベースのドキュメントに加え、API利用ガイドもある。また、APIはいくつかの複雑な問い合わせに対応している。
- 任意のフィールドの内容によってフィルタリングする。完全一致でもあいまい一致でも可能。
- 取得するフィールドを制限する。
- フィールドの数値で並び替えをする。
- リミットとオフセットでページングする。
システムが高負荷にならないようにするため、APIにはレート制限が設定されている。1回の問い合わせにつき、1000の結果、1日に呼び出せる回数は1000回だ。APIから取得したデータはJSON形式でのみ提供される。エンベロープには返却値のデータ、リンク、その他のメタ情報が含まれている。エラーが発生すると、JSONの返却値には 災害の原因と可能な対策が詳細に記述されている。
例えば、ハリケーンカトリーナの米国への影響についてのレポートを検索するには、次のようにAPIを呼び出せばいい。
GET http://api.rwlabs.org:80/v1/reports?limit=2&query[value]=katrina&filter[field]=primary_country&filter[value]=usa
571のレポートから最初の2つを取得するには、
{ "href": "http://api.rwlabs.org/v1/reports?limit=2&query%5Bvalue%5D=katrina&filter%5Bfield%5D=primary_country&filter%5Bvalue%5D=usa", "time": 7, "version": "1", "links": { "self": { "href": "http://api.rwlabs.org/v1/reports?offset=0&limit=10" }, "next": { "href": "http://api.rwlabs.org/v1/reports?offset=10&limit=10" } }, "totalCount": 571, "count": 2, "data": [ { "id": "185148", "score": 4.980242, "href": "http://api.rwlabs.org/v1/reports/185148", "fields": { "title": "Hurricane Katrina" } }, { "id": "416571", "score": 4.216302, "href": "http://api.rwlabs.org/v1/reports/416571", "fields": { "title": "Katrina Index: Tracking variables of post-Katrina reconstruction" } } ] }
デフォルトでは、返却値はスコアでソートされる。スコアは問い合わせ対象のフィールドとのマッチの品質によって決まる。hrefのURIを追跡して結果をドリルダウンし、報告の詳細を求めたり、nextリンクで取得結果の次のページを見ることができる。
ReliefWebのAPIはPHPアプリケーションであり、フレームワークにKleinを使い、CMSとしてDrupalを使っている。このプロジェクトに関わっているAdam Ross氏によれば、
[...] 小さなアプリケーションレイヤがElasticSearch上に乗っています。ElasticSearchは複雑なデータのマイニングや探索に優れた能力を発揮します。アプリケーションは、このAPIを使って何かすばらしいものを構築する開発者に優れたユーザエクスペリエンスを提供する。
ReliefWebは人道コミュニティにとっても重要な情報源だ。多くの政府やNGOがReliefWebを使って必要なデータを入手している。ジャーナリストやメディアもReliefWebを使って、今まさに起きている災害を追跡できる。ReliefWebは世界中の4000の情報源から情報を集めて、30人の編集者がレビューし、編集し、タグをつけて、コミュニティに公開している。