API と企業が API を公開するプロセス API 公開事例から学ぶ 株式会社オージス総研 サービス事業本部クラウドインテグレーションサービス部 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp) Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
次 API 事例概要 事例におけるAPI 公開プロセス APIソリューションご紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2
API Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
API とは? 最近注 されている API は企業が持つデータやサービスを 他のアプリケーションやプログラムから利 するための窓 を意味する API は HTTP などの Web の技術を いて構築されたプログラムから利 可能なインタフェース API の例 GET http://api.example.com/items API プログラム { service : [ AAA, BBB, CCC ] } API を現実世界に置き換えたイメージ どんな商品がありますか? ユーザ AAA BBB CCC がございます 窓 担当者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 4
API の技術的背景 プログラミングやソフトウェアの相互性を確保するための技術や仕様の策定が われる - 1998 年 2003 年 :XML-RPC SOAP WSDL などの仕様が策定される - 2000 年 : REST が提唱される - 2000 年代後半 :Google や Amazon など Web サービス企業が API の公開を始める 当時は SOAP REST 両 のスタイルで API が提供されていた 現在は REST のみの提供 最近の API はデータ形式として JSON REST スタイルが採 されることが多い データ形式 : XML と JSON XML: 表現 が豊か 厳密性 <?xml encoding='utf-8'?> <user> <name>saito</name><age>32</age> <name>yamada</name><age>25</age> <name>kimura</name><age>41</age> </user> JSON: シンプル 相互性 {"user" : [ { "name" : "saito", "age" : "32" }, { "name" : "yamada", "age" : "25" }, { "name" : "kimura", "age" : "41" } ]} スタイル : SOAP と REST SOAP: 基本的な考えはリモート関数呼出 URI は関数の集合を表す名詞 POST http://domain/api/itemsearchservice 商品 覧取得 POST http://domain/api/itemregisterservice 商品登録 REST: 基本的な考えは HTTP の原理 URI はリソースを表す名詞 GET http://domain/api/items 商品 覧取得 POST http://domain/api/items 商品登録 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 5
API の普及 2003 年頃 Amazon Google など Web 企業が API を提供開始 Ajax の普及 2007 年頃 AWS, Salesforce, Twitter, Facebook 等クラウドサービスが API を提供開始 2009 年頃 スマートフォンの普及 モバイルアプリのが活発化 モバイルアプリのサーバ ( バックエンド ) とデータをやり取りする 仕組みとして API の普及が本格化 2014 年頃 IoT フィンテックや API エコノミーが注 される IT 企業 API への取組み本格化 モバイルアプリと API 増加を続ける API バックエンド DB API モバイル タブレット ProgrammableWeb の情報を基に当社で加筆 グラフ化引 元 : https://www.programmableweb.com/api-research Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 6
API 公開のライフサイクル API 公開は 度きりの取り組みではない デジタルビジネスの成 変化にあわせ API を改修し バージョンアップすることが必要 ライフサイクル管理が 切 API のバージョン リリース管理 API のユーザー トークンの管理 API のユーザー向けサポート API の 法 新規に API を構築 既存システムを拡張 ESB/EAI の利 クラウドサービスの利 既存システムとの連携 API 公開したいデータを持つシステムと どのようにつなぐか API API 公開の 的を明確に API の利 者および公開範囲を明確に API として公開するデータ サービスを明確に API の利 シナリオを明確に API を利 するアプリ システムを含めた全体のアーキテクチャ セキュリティ スケーラビリティ 拡張性 コストを考慮 API のユースケースを実現するデータセット インタフェース Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 7
API 公開のライフサイクル : API 公開ので重要になるポイント - API 公開の 的を明確にする - API の利 者および公開範囲を明確にする - API として公開するデータ サービスを明確にする - API の利 シナリオを明確にする API 公開範囲の種類について プライベート パートナー パブリック メリット : 様々なクライアントから共通的に利 可能なモジュールを提供できる 例 : モバイル向けのバックエンド API メリット : パートナーとの新規協業 ち上げの迅速化ができる 例 : 取引先 代理店向けのカタログ API メリット : ビジネスをプラットフォーム化することを実現できる 例 : オープンに公開されている Map API Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 8
API 公開のライフサイクル : API 公開ので重要になるポイント - API を利 するアプリ システムを含めた全体のアーキテクチャ セキュリティ スケーラビリティ 拡張性 コストを考慮する - API のユースケースを実現するデータセット インタフェース ユーザ視点のデータセット 標準的な API スタイルなどユーザの利 しやすさを考慮する アーキテクチャ インタフェース API クライアント API の 的を達成するにはどのような構造にするべきか API ユースケースの視点 ユースケースを実現する API セットは? 申請 API 申請ステータス確認 API 申請 覧取得 API 申請キャンセル API 申請 API の申請情報はどのようなデータ項 を持つべきか? API 技術の視点 API のスタイルは SOAP か? REST か? データフォーマットは XML か? JSON か? Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 9
API 公開のライフサイクル : API 公開ので重要になるポイント - API の 法 新規に API を構築 既存システムを拡張 ESB/EAI などの連携ミドルウェアの利 クラウドサービスの利 - 既存システムとの連携 API 公開したいデータを持つシステムと どのようにつなぐか 何をつかってする? どうやって連携する? クラウドサービスを利 するか? PaaS BaaS FaaS 新規に構築するか? Java.Net Ruby Python Node API クラウドサービスを利 するか? PaaS BaaS FaaS DB に直接接続するのか? 既存システムに連携のインタフェースが必要か? API? Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 10
API 公開のライフサイクル : API 公開ので重要になるポイント - API のバージョン リリース管理 - API のユーザ 契約管理 - API のユーザ向けサポート - API の監視 障害対応 API の機能追加やデータ項 変更などの管理する API ユーザや管理 API を利 するためにトークンの管理 API の使い を理解するためのドキュメント SDK バージョン ライフサイクル ユーザ ユーザプロファイル変更 API 1.2 公開中 契約や API 利 の課 情報の管理 援 サービス取得 API 0.1 中 者 API 利 契約 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 11
事例概要 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
事例 株式会社インテリジェンス様 アルバイト求 情報サービス an の法 顧客向けサービス向上のために API 公開 援ソリューション を採 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 13
背景 課題 公開版につき削除 : 詳細はお問い合わせください Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 14
API による課題の解決 公開版につき削除 : 詳細はお問い合わせください Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 15
事例における API 公開プロセス Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
事例におけるフェーズ API 公開の 的を明確にする - 応募情報のデータを共有する API の利 者および公開範囲を明確にする - グループ内の ATS( 採 管理システム ) API として公開するデータ サービスを明確にする - 求 クライアントが閲覧する応募情報の取得 応募情報ステータスの更新 API の利 シナリオを明確にする - 求 クライアントが応募者 覧を確認する 応募情報参照系 API - 求 クライアントが応募ステータスを変更する 応募情報更新系 API Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 17
API 以外のポイント スモールスタート 現 システムへの影響をできるだけ さくする セキュリティ 将来に向けて拡張できるようにする Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 18
事例におけるフェーズ : ハイブリッド構成 API Gateway - 認証 - 流量制御 API サーバ - HTTP リクエスト / レスポンスのハンドリング - DB アクセス Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 19
セキュリティ : ネットワーク パブリックサービスである API Gateway から保護領域にある DB へいかに安全に接続するか - 環境のセキュリティポリシー Direct Connect Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 20
セキュリティ : API の認証 認可 認証 認可 - 何に に対して認証 認可するのか クライアント ( ビジネスパートナーの採 管理システム ) 事例ではこの考え を採 クライアントのエンドユーザ ( 求 クライアント ) クライアント + エンドユーザ クライアントにクレデンシャル情報を保持できるかどうか - 信頼できるクライアントなのかどうかが重要 信頼できる : グループ内のサーバ 事例ではこの考え を採 信頼できない : 広く配布されるモバイルアプリ ブラウザの JS クライアント Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 21
セキュリティ : API の認証 認可 技術的選択肢 -OAuth2.0 -Basic 認証 - API キー - リクエストの電 署名 - SSL の相互認証 - IAM 認証 Amazon Signature v4 認証のアクセスキーを利 してリクエストに署名をする Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 22
現 システムへの負荷軽減 / レイテンシー 現 システムへの影響をできるだけ さくする - 流量制御 ( レートリミット ) - キャッシュ - 1 レスポンスあたりのサイズ制限 レイテンシー - キャッシュ クライアント クラウド環境 API サーバ ( ) DB API Gateway のキャッシュ API サーバのキャッシュ 事例はこれを採 データコピー DB のキャッシュ オンプレ環境 - DB データコピーアーキテクチャ DB DB コピーアーキテクチャ Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 23
事例におけるフェーズ API をどのように実装するか - 既存 Web アプリに API を追加 - 既存 DB を利 し API を新規 事例はこれを採 Java/Spring ベースの API スタック - 様々な OSS を組み合わせた API に必要な機能を持つフレームワーク こちらを採 HTTP リクエスト / レスポンスのハンドリング API メッセージバリデーション API サーバ Web アプリサーバ Web アプリサーバ データベースアクセス キャッシュ DB DB Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 24
応募情報参照系 API 参照系 API のポイントは フィルター ソート ページネーション 必須のパラメーター オプションのパラメーターデフォルト値 応募情報参照系 API 参照系 API の処理の流れ - クライアントを特定する情報 期間 - 出 応募情報 - HTTP リクエストのバリデーション - データセットを構成する DB へのクエリ - ユーザ視点のデータセット (JSON) の組み て - HTTP レスポンスの返却 ページング情報 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 25
応募情報更新系 API 更新系 API のポイントはべき等性と副作 同 リクエストの再送信を正しく処理できるようにする - べき等性 : 同じリクエストは同じ結果になる - 副作 : リソースの変更が起こる 応募情報更新系 API 更新系 API の処理の流れ - 応募情報を特定する情報 ステータス - 出 - HTTP リクエストのバリデーション - データセットを構成する DB へ更新 - ユーザ視点のデータセット (JSON) の組み て - HTTP レスポンスの返却 処理結果 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 26
事例におけるフェーズ : バージョン リリース管理 API のバージョン リリース管理 - 外部インタフェース Amazon API Gateway の ステージ によって管理 Swagger ファイルをバージョン管理システムで管理 - API 実装 ソースコードをバージョン管理システムで管理 リリースは 順書をベースにした 動管理 クライアント API Gateway のステージは や本番などのデプロイに紐付いた概念 URL にマッピングされる http://[ ホスト名 ]/[ ステージ名 ] Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 27
API のユーザ 契約管理 API のユーザ 契約管理 - ユーザ アクセスキー AWSの機能を使って実現 API 専 のロールを割り当て - 契約管理 事例では実施せず Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 28
API のユーザ向けサポート API のユーザ向けサポート - 静的 API ドキュメント (PDF) - 動的 API ドキュメント (SwaggerUI) -SDK 次例 1. はじめに 2. API 概要 3. ユースケース 4. API 共通仕様 1. スキーマ 2. エンドポイント (Base URI) 3. HTTPレスポンスコード 4. 認証 5. 取得系 API 1. リクエスト 2. レスポンス 6. 更新系 API 1. リクエスト 2. レスポンス Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 29
API の監視 障害対応 API の監視 障害対応 - サーバレベル - ネットワークレベル - API レベル CloudWatch 監視ソフトウェア Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 30
まとめ API 公開のプロセスをご紹介 - API の利 者を想定し 様々な 度から検討する - 基礎となるアーキテクチャを構築する - 度きりのプロセスではなく 継続的なサイクルを実施する スモールスタートの API 公開事例をご紹介 - クラウドサービスを活 したハイブリッド構成 - 既存システムへの影響を さくするための 策 - 参照系 更新系 API のポイント Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 31
当社 API ソリューションご紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
API 公開 援ソリューション オージス総研のクラウドと API の知 を集めたサービスで 短期間で API 構築 信頼性の い API インフラ を提供します こんなお客さまに最適です やりたいこと 新たなデータ販売チャネルを開拓したい ビジネスパートナーからのAPI 対応の要望に応えたい モバイルやIoTデバイスを活 し 新しいビジネスモデルを構築したい 活 シーン 悩み APIの 実装 監視の など技術 でのサポートが欲しい 最初の取り組みとして最 構成でスタートしたい API 提供により ビジネスパートナーのサービスとデータを連携する API 活 により 様々なデバイスやアプリとサービスを連携する Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 33
サービスメニュー API 構築サービス API プラットフォーム構築 API クラウド ハイブリッド オンプレミスに対応要件にマッチした製品 / サービスを利 してご提供 AWS IBM API Connect Anypoint Platform API のベストプラクティスを詰め込んだAPI スタックを使い 効率的にAPIを API サービス APIアップデート APIプラットフォームメンテナンス APIプラットフォーム監視 API 障害分析 対応 API 利 状況レポート APIユーザサポート APIのデータ項 の追加などAPIのアップデート リリースの実施定期的なAPIプラットフォームのセキュリティアップデート APIプラットフォームの障害 異常検知および通知障害発 時の原因調査 切り分けおよび復旧対応 APIの利 状況のレポーティング API 利 者への問い合わせ対応 APIクライアント 援 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 34
お問い合わせ先 株式会社オージス総研営業本部営業企画部 TEL 03-6712-1201( 東京 ) / 052-209-9390( 名古屋 ) / 06-6871-8054( 阪 ) E-mail info@ogis-ri.co.jp URL http://www.ogis-ri.co.jp Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 35