マイクロサービス
システムをごく小さくまとめ、APIベースで機能を提供するマイクロサービスがより広がっていくと考えられます。多くのモノリシックなシステムにおいて密結合が拡張性やメンテナンス性において負の資産となっています。マイクロサービス化することで結合ポイントを減らし、開発を容易にします。
マイクロサービスは多くがモデルデータのCRUD操作をREST APIにて提供します。HTMLを返すものは多くありません。まさにAPI向けの施策と言えるでしょう。ただし、サービスの分け方をうまくやらないと、ただシステムが細分化されただけで複雑なシステム構成になってしまいます。
最近ではマイクロサービス用のフレームワークも登場し、開発がより簡単になっています。次の段階としてはアーキテクチャであったり、サービスの切り分け方に関するソリューションが共有される年になっていくことでしょう。
Swagger
昨年できたOpenAPI InitiativeによってSwaggerは一社の情報からオープンソースへ、そして業界のデファクトスタンダードへ成長しようとしています。APIのドキュメント記法については他にも幾つかありますが、SwaggerおよびOpenAPIが最も大きなシェアを取ると思われます。
ただし現状のバージョン2と、新しいバージョン3は全く構造が変わることが決まっていますので、これまでに作成したツールは対応が迫られるでしょう。ドキュメントについてはコンバーターが用意される予定となっています。バージョン3は今年中にリリースされる予定です。
標準フォーマットができあがることで、周辺ツールも作りやすくなります。これまでにもドキュメント、モックサーバ、テストなど多くのライブラリがありましたが、さらに利用範囲が広がっていくものと思われます。
APIマネージメント
多くのAPIはサービスに紐付いて作成されます。そのため、各サービス責任者のやり方であったり、開発するタイミングでトレンドが変わっていることがあります。そうしたフォーマットの不統一感は利用者を混乱させたり、重複した開発を必要としたりします。
そういった問題を解決するためにAPIマネジメントを導入する企業が増えています。APIマネジメントを導入することでセキュリティ、負荷対策、インタフェースの統一、ログ管理などといった機能が一元管理できるようになります。
APIのインタフェースを変えるのは困難です。そのため、恒久的に使えるような明確な基準をもって設計に取り組む必要があるでしょう。APIマネジメントの多くはそうした基準をあらかじめ備えており、利用者にとって分かりやすいAPIが開発できるようになっています。
内部APIの増加
BtoBにおいては企業間のみで提供されるAPIが存在します。これらのAPIは契約した企業だけに公開されるもので、ドキュメントなども非公開になっています。しかし、多くのAPI関連ツールは公開前提に作られているものがあります。一般的なプログラミング言語においてメソッドの公開、非公開が指定できるのと同様に、APIにおいても公開、非公開が設定できるようになっていくでしょう。
内部APIの増加は企業間におけるAPIトランザクションの増加につながるので決して悪い兆候ではありません。ただし、企業が連携先を探す際にAPI情報が見つからないのは問題があるため、何らかのドキュメントは一般公開されるべきでしょう。
ハードウェア連携型APIの増加
数年前からIoTが一つのキーワードになっていますが、多くの企業がハードを買って、そこからネットワークへの繋ぎ込みを自分たちで開発しています。それらはとてもリソースのかかる作業であり、最近ではクラウドサービスと自動連携するIoTデバイスが登場しています。
デバイスがネットワークを備えている場合はMQTTまたはWebSocketのようなプロトコル、場合によってはREST APIをコールする仕組みになっています。デバイスの設定さえ行えばすぐにネットワーク上にデータが上げられるので、開発がとても効率化します。
IoT向けにクラウドサービスを開発している企業においては、デバイス企業と組んだ上でサービスの提供が求められていくでしょう。
HTTPエラー表現の統一
2016年03月に出たRFC 7807 - Problem Details for HTTP APIsが参考になります。この中ではapplication/problem+json または application/problem+xml というレスポンスヘッダーが提案されています。これまでREST APIではHTTPステータスを使ってエラー表現を行ったり、独自のエラーオブジェクトを返したりしていましたが、これを統一していこうという動きです。
返却する内容ですが、例えばJSONの場合は次のようになります。
{
"type": "https://example.com/probs/out-of-credit",
"title": "You do not have enough credit.",
"detail": "Your current balance is 30, but that costs 50.",
"instance": "/account/12345/msgs/abc",
"balance": 30,
"accounts": [
"/account/12345",
"/account/67890"
]
}
こうしたJSONとHTTPステータスを合わせてエラーを表現していきます。
企業におけるAPI利用、公開が徐々に進んできています。2017年もまた、提携であったり自社システム同士の連携にAPIを利用すると言ったケースも増えていくことでしょう。