Share
Embed
200 Over API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」
CData Software Japan
February 01, 2020
Transcript
36 slides
-
© 2019 CData Software Japan, LLC | www.cdata.com/jp 200 Over
API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」 2020/02 CData Software Japan #Burikaigi 2020 -
© 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 -
© 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 を使いやすく」をミッションにクラウドデータ接続を標準化 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 業界最多級のデータソース Drivers
for NoSQL, Big Data, & SaaS Connectivity CRMおよびマーケティング自動化 会計システム コラボレーションおよびERP オンプレミスおよびクラウドDB ドキュメントおよびファイル形式 ソーシャルネットワーキング ネットワーキングおよび認証 電子商取引 その他 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 普段CData が触っているAPI
現在データソースは 約200 種類ほど うちREST 4割、SOAP 2割。 NoSQL・CloudDB(例:MongoDB・BigQuery)などWebAPIではなく独自APIもあり。 検証しているAPIは数知れず。(不採用や開発中も含めると500種類ほど?) -
© 2018 CData Software Japan, LLC | www.cdata.com/jp なので、、、 ・サポートしなければいけないAPIも最大級
・新データソース対応のために検証するAPIも最大級 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 基本的に触ってみて、使ってみて、食べてみてから 開発可能か考える
そのためAPIの酸いも甘いも知っている! -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 今日のお話 なぜその
API は使いづらい? を経験を元に語ります。 では、どうするべきか? APIのモダン化・イケてるAPI・使いやすいAPIのポイント -
© 2018 CData Software Japan, LLC | www.cdata.com/jp こんなAPIは使いづらい API
あるある! 15選! APIあるから繋げて使えるでしょ、と言われたけど。。。 実録 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp API 仕様書がPDF・Excelで提供されている!
・Word ベース や 神エクセル ・ドキュメントと実装の乖離 ・中にはドキュメントがCD-ROMで送られ てくるところも・・・。 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp リクエスト・レスポンスのオブジェクトが神EXCEL ・繰り返しオブジェクトの見分けがつかない
・実際のレスポンスを受け取るクラスやプロ グラムを書くのが大変・・・。 右の仕様書は e-Gov API 仕様書 www.e-gov.go.jp/shinsei/interface_api/download.html -
© 2018 CData Software Japan, LLC | www.cdata.com/jp API を使うのに紙文書で申請が必要!
・NDAや申請書、パートナー契約などなど紙文 書でのやり取りが必要。 ・APIを利用するまでに2週間以上時間がか かることも・・・。 ・US サービスのAPIはそこまで使用する障壁 が高くない。日本企業では多い印象。 そもそもなぜ非公開なのか -
© 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 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 「パラメータ」がなんのことかわからない ・URLパラメータ?
・ヘッダーパラメータ? ・x-www-form-urlencoded? 意外と記載していないAPI仕様書が多くて、 サンプルリクエストも無いと結構困る・・・。 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 軽減税率対応 ・もともと複数税率に対応していなかったの
で、税率タイプフィールドが追加 ・8%合計・10%合計のフィールドが追加 (これはこの後どうなるんだ) AmazonMarketplaceは何も変更が 無かった。 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp API 利用Limit
が厳しすぎる ・1分間にXX回リクエストまで、等 ・BIするのに全データを取得したいが制限にひっかかって しまい、取得できない (Twitterなどもちろん仕方がないものもある) -
© 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でも微妙に違う ・ヘッダに記載していたり、ボディに記載していたり -
© 2018 CData Software Japan, LLC | www.cdata.com/jp リソース名が省略語すぎて、なんのことだかわからない 例えば・・・
・営業案件 Opportunity がOPP 日本語ローマ字略称は覚えづらく、つらい・・・ ・勘定科目マスタ が KKM とか -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 通貨フィールドが「¥」マーク付き ・通貨フィールドが数値型ではなく、円マーク付きで返っ
てくるので文字列になってしまう 例:var x = “¥1,000,000”; ・クライアントサイドで通貨マークの調整処理が必要 ・BIツールに取り入れる時にはトリミングして数値変換 が必要 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp データを取得したいのにPOST ・例:Bodyで検索条件を指定するから、
POSTメソッドでGETする ・基本的にすべてのエンドポイントがPOST仕 様だったり(統一感があれば、有り) -
© 2018 CData Software Japan, LLC | www.cdata.com/jp メタデータがAPIで取得できない ・どのくらいリソースがあるのかわからない
・クライアントサイドで動的な処理ができない ・APIの変更に動的に対応することができない -
© 2018 CData Software Japan, LLC | www.cdata.com/jp 404 のはずなのに
200 でエラーが返ってくる ・成功なのに失敗? ・リソース名が間違っていたはずなのに、200番 ・原因が不明瞭になるので、サポートの問い合わせが増え る・・・ ・SQLのエラーレスポンスがそのまま返ってくることも -
© 2018 CData Software Japan, LLC | www.cdata.com/jp サマリデータのみで、明細が取れない ・見積の合計金額は取れるのに、明細が取れない
・APIから取得できるデータがそもそもサマリした後の データで、使用者側でサマリの観点を変えることがで きない ・ヘッダと明細を一括のリクエストで作成しないといけ ないAPIもあったり -
© 2018 CData Software Japan, LLC | www.cdata.com/jp API Limit
が厳しすぎる! ページングの指定方法が違いすぎる! リソース指向と関数指向がまざってる! 通貨フィールドが「¥」マーク付き! データを取得したいのにPOST! エンドポイント一覧がAPIで取得できない! 404 のはずなのに 200 でエラーが返ってくる! サマリデータのみで、明細が取れない! 仕様書がPDF・Excelで提供されている! API を使うのに文書で紙申請が必要! リソース名が省略語すぎて、なんのことだかわからない! APIの使いづらさを分類するとざっくりこんな感じ 設計上の問題 組織・文化的な問題 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp なぜ設計上の問題が発生しやすいのか? なぜならREST
APIは APIの定義をするプロトコルではないから 設計上の問題の大半はREST APIの問題 ではおさえるべきAPIプロトコルとは何か? -
© 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) などにより 結成 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp モダンAPIに求められる3つのポイント 1.
メタデータ・スキーマの提供 2. ドキュメントの自動生成(メタデータ・スキーマを元にした生成) 3. 規格(リクエスト・レスポンスルール)の統一 実はプロトコルをおさえるだけで、APIスケールのしやすさ、 クライアントサイドの作りやすさに繋がる! -
© 2018 CData Software Japan, LLC | www.cdata.com/jp モダンAPI=エコシステムでよく利用されるAPI 当社調べ
SalesforceのAPI接続をネイティブでサポートしているBI/ETLツール群 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp クライアントサイド データソースサイド
API PC Mobile モダンAPI=クライアントサイドに優しい RDB ファイル クラウド サービス API仕様書から 自動生成 -
© 2018 CData Software Japan, LLC | www.cdata.com/jp アプリケーション、データベース、またはサービスからライブREST /
OData APIを作成 データベースからREST API を自動生成。SQL またはNoSQL データ ベースを接続するだけで、API Server がフルスペックなWeb API を ドキュメントと共に自動生成します。 オンプレミス | インターネット公開 | クラウド CData API Server -
© 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/ -
© 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/ -
© 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 マネジメント オンプレ/クラウドへ 展開可能