Upgrade to Pro — share decks privately, control downloads, hide ads and more …

200 Over API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」

200 Over API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」

CData Software Japan

February 01, 2020
Tweet

More Decks by CData Software Japan

Other Decks in Technology

Transcript

  1. © 2019 CData Software Japan, LLC | www.cdata.com/jp 200 Over

    API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」 2020/02 CData Software Japan #Burikaigi 2020
  2. © 2018 CData Software Japan, LLC | www.cdata.com/jp See the

    World as a Database 杉本 和也:Kazuya Sugimoto • CData Software Japan, LLC Lead Engineer • Microsoft MVP for Business Solution(Dynamics CRM/365) Blog:Morning Girl http://kageura.hatenadiary.jp/ Twitter:@sugimomoto Facebook:sugimomoto About Speaker
  3. © 2018 CData Software Japan, LLC | www.cdata.com/jp About CData

    Software Bi-directional Access to Live App, Database, & Web API Data Through Standard Drivers ・CData Software, Inc. / Started: 1994 (/nsoftware) ・Location: Chapel Hill, NC a spin-off of /n software ・CData Japan: 2016/6 ・20年以上にわたりデータ関連コンポーネントを提供 ・200+ 対応データソース ・「API を使いやすく」をミッションにクラウドデータ接続を標準化
  4. © 2018 CData Software Japan, LLC | www.cdata.com/jp 業界最多級のデータソース Drivers

    for NoSQL, Big Data, & SaaS Connectivity CRMおよびマーケティング自動化 会計システム コラボレーションおよびERP オンプレミスおよびクラウドDB ドキュメントおよびファイル形式 ソーシャルネットワーキング ネットワーキングおよび認証 電子商取引 その他
  5. © 2018 CData Software Japan, LLC | www.cdata.com/jp 普段CData が触っているAPI

    現在データソースは 約200 種類ほど うちREST 4割、SOAP 2割。 NoSQL・CloudDB(例:MongoDB・BigQuery)などWebAPIではなく独自APIもあり。 検証しているAPIは数知れず。(不採用や開発中も含めると500種類ほど?)
  6. © 2018 CData Software Japan, LLC | www.cdata.com/jp 今日のお話 なぜその

    API は使いづらい? を経験を元に語ります。 では、どうするべきか? APIのモダン化・イケてるAPI・使いやすいAPIのポイント
  7. © 2018 CData Software Japan, LLC | www.cdata.com/jp こんなAPIは使いづらい API

    あるある! 15選! APIあるから繋げて使えるでしょ、と言われたけど。。。 実録
  8. © 2018 CData Software Japan, LLC | www.cdata.com/jp API 仕様書がPDF・Excelで提供されている!

    ・Word ベース や 神エクセル ・ドキュメントと実装の乖離 ・中にはドキュメントがCD-ROMで送られ てくるところも・・・。
  9. © 2018 CData Software Japan, LLC | www.cdata.com/jp リクエスト・レスポンスのオブジェクトが神EXCEL ・繰り返しオブジェクトの見分けがつかない

    ・実際のレスポンスを受け取るクラスやプロ グラムを書くのが大変・・・。 右の仕様書は e-Gov API 仕様書 www.e-gov.go.jp/shinsei/interface_api/download.html
  10. © 2018 CData Software Japan, LLC | www.cdata.com/jp API を使うのに紙文書で申請が必要!

    ・NDAや申請書、パートナー契約などなど紙文 書でのやり取りが必要。 ・APIを利用するまでに2週間以上時間がか かることも・・・。 ・US サービスのAPIはそこまで使用する障壁 が高くない。日本企業では多い印象。 そもそもなぜ非公開なのか
  11. © 2018 CData Software Japan, LLC | www.cdata.com/jp エンドポイント毎に設計思想が違う ・サービスの中でURLのデザインがバラバラ

    POST /api/getMail GET /api/users ・Content-Type が複数パターン存在 application/x-www-form-urlencoded application/json
  12. © 2018 CData Software Japan, LLC | www.cdata.com/jp 「パラメータ」がなんのことかわからない ・URLパラメータ?

    ・ヘッダーパラメータ? ・x-www-form-urlencoded? 意外と記載していないAPI仕様書が多くて、 サンプルリクエストも無いと結構困る・・・。
  13. © 2018 CData Software Japan, LLC | www.cdata.com/jp 軽減税率対応 ・もともと複数税率に対応していなかったの

    で、税率タイプフィールドが追加 ・8%合計・10%合計のフィールドが追加 (これはこの後どうなるんだ) AmazonMarketplaceは何も変更が 無かった。
  14. © 2018 CData Software Japan, LLC | www.cdata.com/jp API 利用Limit

    が厳しすぎる ・1分間にXX回リクエストまで、等 ・BIするのに全データを取得したいが制限にひっかかって しまい、取得できない (Twitterなどもちろん仕方がないものもある)
  15. © 2018 CData Software Japan, LLC | www.cdata.com/jp ページングの指定方法が違いすぎる Qiita

    MoneyForward ページ指定方法 URLパラメータで指定 Page=1 URLパラメータで指定 Page=1 ページ数最大値表示 レスポンスヘッダに記載 Total-Count: 6 レスポンスボディに記載 total_count : 6 1ページあたりの表示件数表 記 URLパラメータで指定 per_page=20 URLパラメータで指定 Limit=100 次ページリンク レスポンスボディに記載 Link: <http://qiita.com/api/v2/use rs?page=1>; rel="first", なし ・同じ会社のAPIでも微妙に違う ・ヘッダに記載していたり、ボディに記載していたり
  16. © 2018 CData Software Japan, LLC | www.cdata.com/jp リソース名が省略語すぎて、なんのことだかわからない 例えば・・・

    ・営業案件 Opportunity がOPP 日本語ローマ字略称は覚えづらく、つらい・・・ ・勘定科目マスタ が KKM とか
  17. © 2018 CData Software Japan, LLC | www.cdata.com/jp 通貨フィールドが「¥」マーク付き ・通貨フィールドが数値型ではなく、円マーク付きで返っ

    てくるので文字列になってしまう 例:var x = “¥1,000,000”; ・クライアントサイドで通貨マークの調整処理が必要 ・BIツールに取り入れる時にはトリミングして数値変換 が必要
  18. © 2018 CData Software Japan, LLC | www.cdata.com/jp データを取得したいのにPOST ・例:Bodyで検索条件を指定するから、

    POSTメソッドでGETする ・基本的にすべてのエンドポイントがPOST仕 様だったり(統一感があれば、有り)
  19. © 2018 CData Software Japan, LLC | www.cdata.com/jp メタデータがAPIで取得できない ・どのくらいリソースがあるのかわからない

    ・クライアントサイドで動的な処理ができない ・APIの変更に動的に対応することができない
  20. © 2018 CData Software Japan, LLC | www.cdata.com/jp 404 のはずなのに

    200 でエラーが返ってくる ・成功なのに失敗? ・リソース名が間違っていたはずなのに、200番 ・原因が不明瞭になるので、サポートの問い合わせが増え る・・・ ・SQLのエラーレスポンスがそのまま返ってくることも
  21. © 2018 CData Software Japan, LLC | www.cdata.com/jp サマリデータのみで、明細が取れない ・見積の合計金額は取れるのに、明細が取れない

    ・APIから取得できるデータがそもそもサマリした後の データで、使用者側でサマリの観点を変えることがで きない ・ヘッダと明細を一括のリクエストで作成しないといけ ないAPIもあったり
  22. © 2018 CData Software Japan, LLC | www.cdata.com/jp API Limit

    が厳しすぎる! ページングの指定方法が違いすぎる! リソース指向と関数指向がまざってる! 通貨フィールドが「¥」マーク付き! データを取得したいのにPOST! エンドポイント一覧がAPIで取得できない! 404 のはずなのに 200 でエラーが返ってくる! サマリデータのみで、明細が取れない! 仕様書がPDF・Excelで提供されている! API を使うのに文書で紙申請が必要! リソース名が省略語すぎて、なんのことだかわからない! APIの使いづらさを分類するとざっくりこんな感じ 設計上の問題 組織・文化的な問題
  23. © 2018 CData Software Japan, LLC | www.cdata.com/jp なぜ設計上の問題が発生しやすいのか? なぜならREST

    APIは APIの定義をするプロトコルではないから 設計上の問題の大半はREST APIの問題 ではおさえるべきAPIプロトコルとは何か?
  24. © 2018 CData Software Japan, LLC | www.cdata.com/jp Standards-based Interfaces

    OData • Microsoftが主導となり推進しているプロトコル • HTTPメソッド(GET/POST/PUT/DELETE)でデータの参照更新ができる仕様 • RESTfulな設計パターンを実装 Open API Specification • 略してOAS、旧Swagger • REST APIの記述に関する仕様とAPIをコールするためのコードとドキュメントを自動生成するツール群 • Apache 2.0 License • 2015年に推進団体「Open API Initiative」が設立 • The Linux Foundationの協力のもと、Microsoft/Google/IBM/Paypal/3Scale(Redhat) / Apigee(Google) などにより 結成
  25. © 2018 CData Software Japan, LLC | www.cdata.com/jp モダンAPIに求められる3つのポイント 1.

    メタデータ・スキーマの提供 2. ドキュメントの自動生成(メタデータ・スキーマを元にした生成) 3. 規格(リクエスト・レスポンスルール)の統一 実はプロトコルをおさえるだけで、APIスケールのしやすさ、 クライアントサイドの作りやすさに繋がる!
  26. © 2018 CData Software Japan, LLC | www.cdata.com/jp モダンAPI=エコシステムでよく利用されるAPI 当社調べ

    SalesforceのAPI接続をネイティブでサポートしているBI/ETLツール群
  27. © 2018 CData Software Japan, LLC | www.cdata.com/jp クライアントサイド データソースサイド

    API PC Mobile モダンAPI=クライアントサイドに優しい RDB ファイル クラウド サービス API仕様書から 自動生成
  28. © 2018 CData Software Japan, LLC | www.cdata.com/jp アプリケーション、データベース、またはサービスからライブREST /

    OData APIを作成 データベースからREST API を自動生成。SQL またはNoSQL データ ベースを接続するだけで、API Server がフルスペックなWeb API を ドキュメントと共に自動生成します。 オンプレミス | インターネット公開 | クラウド CData API Server
  29. © 2018 CData Software Japan, LLC | www.cdata.com/jp 多様なデータベース・NoSQLからWeb APIを自動生成

    The API Server offers integration with popular relational and NoSQL DBs more online at www.cdata.com/apiserver/
  30. © 2018 CData Software Japan, LLC | www.cdata.com/jp 各種Cloud Serviceも標準ODataへ変換し提供可能

    Use the CData Drivers for NoSQL, Big Data, & SaaS Connectivity more online at www.cdata.com/drivers/
  31. © 2018 CData Software Japan, LLC | www.cdata.com/jp CData API

    Server Features Build a REST API for your database with a few clicks • SQL Server, MySQL, DB2, など多様なデータ ベースをサポート。 • MongoDB, Cassandra, Flat FilesなどのNoSQL やクラウドサービスも対応。 • OData, REST, JSON, SOAP, CSV, TSV などの 一般的に使われるデータ形 式でエントリーポイントを公 開。 • モニタリング、ログ、レート制 限などの主要なAPI 管理 機能を搭載 • API Server は、 イントラネット、外部接続 サーバー、またはクラウドに 展開可能。 • Azure や AWS, Heroku などの 各種 PaaS にも展開可能。 豊富な データベース対応 Open Data アクセス API マネジメント オンプレ/クラウドへ 展開可能