Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© 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

Slide 3

Slide 3 text

© 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 を使いやすく」をミッションにクラウドデータ接続を標準化

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp なので、、、 ・サポートしなければいけないAPIも最大級 ・新データソース対応のために検証するAPIも最大級

Slide 7

Slide 7 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp 基本的に触ってみて、使ってみて、食べてみてから 開発可能か考える そのためAPIの酸いも甘いも知っている!

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp こんなAPIは使いづらい API あるある! 15選! APIあるから繋げて使えるでしょ、と言われたけど。。。 実録

Slide 10

Slide 10 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp API 仕様書がPDF・Excelで提供されている! ・Word ベース や 神エクセル ・ドキュメントと実装の乖離 ・中にはドキュメントがCD-ROMで送られ てくるところも・・・。

Slide 11

Slide 11 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp リクエスト・レスポンスのオブジェクトが神EXCEL ・繰り返しオブジェクトの見分けがつかない ・実際のレスポンスを受け取るクラスやプロ グラムを書くのが大変・・・。 右の仕様書は e-Gov API 仕様書 www.e-gov.go.jp/shinsei/interface_api/download.html

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

© 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

Slide 14

Slide 14 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp タイムゾーンどこ? ・クラウドサービスなのに固定タイムゾーン ・そもそもタイムゾーン表記が無かったり

Slide 15

Slide 15 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp 「パラメータ」がなんのことかわからない ・URLパラメータ? ・ヘッダーパラメータ? ・x-www-form-urlencoded? 意外と記載していないAPI仕様書が多くて、 サンプルリクエストも無いと結構困る・・・。

Slide 16

Slide 16 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp 軽減税率対応 ・もともと複数税率に対応していなかったの で、税率タイプフィールドが追加 ・8%合計・10%合計のフィールドが追加 (これはこの後どうなるんだ) AmazonMarketplaceは何も変更が 無かった。

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

© 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: ; rel="first", なし ・同じ会社のAPIでも微妙に違う ・ヘッダに記載していたり、ボディに記載していたり

Slide 19

Slide 19 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp リソース名が省略語すぎて、なんのことだかわからない 例えば・・・ ・営業案件 Opportunity がOPP 日本語ローマ字略称は覚えづらく、つらい・・・ ・勘定科目マスタ が KKM とか

Slide 20

Slide 20 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp 通貨フィールドが「¥」マーク付き ・通貨フィールドが数値型ではなく、円マーク付きで返っ てくるので文字列になってしまう 例:var x = “¥1,000,000”; ・クライアントサイドで通貨マークの調整処理が必要 ・BIツールに取り入れる時にはトリミングして数値変換 が必要

Slide 21

Slide 21 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp データを取得したいのにPOST ・例:Bodyで検索条件を指定するから、 POSTメソッドでGETする ・基本的にすべてのエンドポイントがPOST仕 様だったり(統一感があれば、有り)

Slide 22

Slide 22 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp メタデータがAPIで取得できない ・どのくらいリソースがあるのかわからない ・クライアントサイドで動的な処理ができない ・APIの変更に動的に対応することができない

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp API を試すのに 500万円くらいかかる

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

© 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) などにより 結成

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp モダンAPI=エコシステムでよく利用されるAPI 当社調べ SalesforceのAPI接続をネイティブでサポートしているBI/ETLツール群

Slide 31

Slide 31 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp クライアントサイド データソースサイド API PC Mobile モダンAPI=クライアントサイドに優しい RDB ファイル クラウド サービス API仕様書から 自動生成

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

© 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/

Slide 34

Slide 34 text

© 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/

Slide 35

Slide 35 text

© 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 マネジメント オンプレ/クラウドへ 展開可能

Slide 36

Slide 36 text

© 2018 CData Software Japan, LLC | www.cdata.com/jp Thank You!