サイト内検索
Translation here

2017/04/21(金)APIStudy#7 API設計のベストプラクティスを考える勉強会 #apistudy

APIStudy03.jpg

勉強の内容的に難度が高かったわりに、なんだかんだで理解できたのがすごい、と感心しました!

APIグループの野村屋ごろう(@official_nomura)です。
最近WebAPIの道に邁進してます、私ですが実はAPIって?という話からちゃんと理解していないど素人感を本日、ぶちまけて一から学ばせていただく感じのノリで参加していました。
明日、APItoreのもくもく会があるので、こちらに持っていこうと思います。

本日の勉強会

APIStudy#7 API設計のベストプラクティスを考える勉強会

本日の議題

対象者

今日話を聞いてみて公式の通り以外に思いつかなかったんで、そのままいただきます
・APIを開発/提供しているエンジニア
・APIを開発/利用しているエンジニア
・プリセールスSE
・技術に興味のある営業

会場の雰囲気がヤバい

  • 今日の学びを吸い上げて可視化する仕組み
    • ホワイトボードを使った学び・カンバンシステム
窓絵の通りなんですが、あんなんなってます。

ごあいさつ

API小ネタ:LODとは?

Linked Open Data
LODチャレンジJapanやってますよ!

LT:eMark+API ヴァリューズさん(厚地さま)

→DataSpiderの人があいさつ

ITxマーケティング

  • モニタのWEB行動ログを用いた分析
  • Tableau提供
  • Webサービス提供
→コンサルが入って色々やる感じ

APIの話をしていきます。

eMark+について

[(access failed) https://www.valuesccg.com/service/]
デモ

これいいな!
リサーチャーとしては欲しいサービス。
内部的な話
フロント←→サーバの内部処理としてAPIを使用。
開発を分離したかったのでこうやった。RESTではない。
技術要件
  • Zendeskは運用サポートでいいですよ
  • 開発速度を意識したためFWに頼らない設計に
  • 面倒を見なければならない場所を少なくしたかった
APIが増えて面倒に……
APIメタ情報管理はどうするべきか?
→APIに適したFWを考えるべきか。

ビッグデータへのアプローチ(検索・抽出)
オンラインとオンバッチ(処理を渡して定期的に監視する)
データ抽出APIについてクエスチョン
  • 抽出リクエストAPIと結果取得APIを分けるか?
  • サービス提供を考えるとRESTであるべき?
  • 開発の配置はフロント/サーバーではなく機能ベースであるべき?

APIの一斉テストをしてみた

YouTubeDataAPIの注目度が高い!

最近カエルイラスト多いな……

APIのテスト

  • 通信(200を返すか)
  • ELBのスティッキーセッション機能

Jasmine/Frisby(.js)を使う

  • JSベースでテストを書ける
  • レスポンスタイムやHTTPステータスコードなど色々できる
  • 性能改善(API側レスポンスの監視)
導入
node入れておく
インストールルートに行く
npm install frisby
npm -g jasmine-node
使ってみた感じ
APIStudy01.jpg
APIStudy02.jpg


すげぇ!めっちゃ簡単じゃないですか!

気になったこと

.最近こういう書き方流行ってんのかな……
xmlでテストログが出るので見やすいね!

テストフレームワークを考えてみる

やっぱりSeleniumが出てくるよなぁ。
API設計のベストプラクティスを考える、という観点では色々と悩ましいところではあったかなと。

筆者注

APIの学習会としてはいきなりハイレベルな話から入ってきてます。
API自体には最近関心が上がってきたものと言っても、かなりえげつない内容にまで落とし込められていて、第七回?まで重ねてきた重みを感じました。
かなり設計について苦心されているところが感じられるのが非常に共感。ベストプラクティスってなんでしょうかねぇ。
使っている側としては、APIってそういうもんだと思って使ってきているので、こういう話が見えるのは面白いです。
APIに求めること
そもそもユーザーがAPIに対してどういう事を求めているのか、分かりにくいというところがあります。
恐らく私が今抱えている疑問というのは、非エンジニアの方は絶対ぶつかるだろうし、エンジニアでもぶつかって勉強して解決していく事になるだろうというのは想像に難くないです。
こういう「なんかわかった気になる」概念や存在は早いうちに明るみに出して定義してしまいたいですね。
私も今はこの辺りが不明瞭で解説出来ないです。
そもそもノンプログラミングでAPIを使う方法について言及しているので、こんな裏側の話を気にしないとダメな作りのAPIはイケてない、としか言えないんですね……。

ベストプラクティスのディスカッション

APIStudy04.jpg

Swaggerを使う?

別でPrizm(プロキシサーバー)を入れるとブラウザーAPI連携を吐き出してくれる
StopLight.io(WebMethod)

楽に使えるAPI

古い時代はSOAP+XML(基幹システムが対応していないため)というような設計をしていた事があった。
Nodeレッド
Meshとか使えればNbedとかでもうちょいアプローチしやすいはず

Swaggerhub+IFTTTとかで使うようにするのは?
→これ提案してみよう!

SDK自動生成

ヒューマンリーダブル or マシンリーダブル
curl -v あたりで送ってもらえれば開発しやすくなるよ!

これ見れれば早いですよね?

APIStudy03.jpg

OK キャンセル 確認 その他