200 Over API 接続のコンポーネントベンダーが語る! 「APIのここがツライよ 15選」 #Burikaigi 2020
# Event Burikaigi 2020 https://toyama-eng.connpass.com/event/156635/
# Tool CData API Server https://www.cdata.com/jp/apiserver
© 2019 CData Software Japan, LLC | www.cdata.com/jp200 Over API 接続のコンポーネントベンダーが語る!「APIのここがツライよ 15選」2020/02CData Software Japan#Burikaigi 2020
View Slide
© 2018 CData Software Japan, LLC | www.cdata.com/jpSee the World as aDatabase杉本 和也:Kazuya Sugimoto• CData Software Japan, LLC Lead Engineer• Microsoft MVP for Business Solution(Dynamics CRM/365)Blog:Morning Girlhttp://kageura.hatenadiary.jp/Twitter:@sugimomoto Facebook:sugimomotoAbout Speaker
© 2018 CData Software Japan, LLC | www.cdata.com/jpAbout CData SoftwareBi-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 ConnectivityCRMおよびマーケティング自動化会計システムコラボレーションおよび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/jpAPI 仕様書が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/jpAPI を使うのに紙文書で申請が必要!・NDAや申請書、パートナー契約などなど紙文書でのやり取りが必要。・APIを利用するまでに2週間以上時間がかかることも・・・。・US サービスのAPIはそこまで使用する障壁が高くない。日本企業では多い印象。そもそもなぜ非公開なのか
© 2018 CData Software Japan, LLC | www.cdata.com/jpエンドポイント毎に設計思想が違う・サービスの中でURLのデザインがバラバラPOST /api/getMailGET /api/users・Content-Type が複数パターン存在application/x-www-form-urlencodedapplication/json
© 2018 CData Software Japan, LLC | www.cdata.com/jpタイムゾーンどこ?・クラウドサービスなのに固定タイムゾーン・そもそもタイムゾーン表記が無かったり
© 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/jpAPI 利用Limit が厳しすぎる・1分間にXX回リクエストまで、等・BIするのに全データを取得したいが制限にひっかかってしまい、取得できない(Twitterなどもちろん仕方がないものもある)
© 2018 CData Software Japan, LLC | www.cdata.com/jpページングの指定方法が違いすぎるQiita MoneyForwardページ指定方法URLパラメータで指定Page=1URLパラメータで指定Page=1ページ数最大値表示レスポンスヘッダに記載Total-Count: 6レスポンスボディに記載total_count : 61ページあたりの表示件数表記URLパラメータで指定per_page=20URLパラメータで指定Limit=100次ページリンクレスポンスボディに記載Link: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/jp404 のはずなのに 200 でエラーが返ってくる・成功なのに失敗?・リソース名が間違っていたはずなのに、200番・原因が不明瞭になるので、サポートの問い合わせが増える・・・・SQLのエラーレスポンスがそのまま返ってくることも
© 2018 CData Software Japan, LLC | www.cdata.com/jpサマリデータのみで、明細が取れない・見積の合計金額は取れるのに、明細が取れない・APIから取得できるデータがそもそもサマリした後のデータで、使用者側でサマリの観点を変えることができない・ヘッダと明細を一括のリクエストで作成しないといけないAPIもあったり
© 2018 CData Software Japan, LLC | www.cdata.com/jpAPI を試すのに 500万円くらいかかる
© 2018 CData Software Japan, LLC | www.cdata.com/jpAPI 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/jpStandards-based InterfacesOData• 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クライアントサイドデータソースサイドAPIPCMobileモダン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 DBsmore 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 Connectivitymore online at www.cdata.com/drivers/
© 2018 CData Software Japan, LLC | www.cdata.com/jpCData API Server FeaturesBuild 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 マネジメントオンプレ/クラウドへ展開可能
© 2018 CData Software Japan, LLC | www.cdata.com/jpFree ライセンスバージョンがあります!
© 2018 CData Software Japan, LLC | www.cdata.com/jp詳しくはこちら!https://kageura.hatenadiary.jp/entry/cdataapiserverexcel無料の API 自動生成ツールを使って、ExcelファイルからREST API を生成してみる:CData API Server
© 2018 CData Software Japan, LLC | www.cdata.com/jpThank You!