ヌーラボサービスにおける API 設計・運用のこれまでとこれから

3e77f9dbec6a87756d1dbdddab283aee?s=47 Nulab Inc.
September 26, 2014

ヌーラボサービスにおける API 設計・運用のこれまでとこれから

Presentation Slides at API Meetup Tokyo #3 http://api-meetup.doorkeeper.jp/events/14087

3e77f9dbec6a87756d1dbdddab283aee?s=128

Nulab Inc.

September 26, 2014
Tweet

Transcript

  1. API  Meetup  Tokyo  #3 2014/09/26(⾦金金)  @NTT  コミュニケーションズ株式会社 ヌーラボサービスにおける API  設計・運⽤用のこれまでとこれから

  2. 染⽥田  貴志 SOMEDA  Takashi @tksmd 株式会社ヌーラボ エバンジェリスト

  3. Mashup  Awards  10 http://mashupaward.jp/companies/24 •  コラボレーションカテゴリで  API  提供中! •  昨年年のヌーラボ賞は「博多よかとこ遊びにこんね賞」

  4. None
  5. JAWS  Days  2013 国内を中⼼心に  約3000クライアント  が利利⽤用するプロジェクト管理理ツール タスク管理理機能に加え、 •  WebDAVによるファイル共有 • 

    GitやSubversionのリポジトリホスティング などを提供。 http://www.backlog.jp
  6. 全世界  約135万ユーザ  が利利⽤用するオンラインのドローツール 基本的なドローツールの機能に加え •  複数のユーザで同時に編集出来るリアルタイムコラボレーション •  Google+  Hangouts  と連携して、ビデオチャットとあわせて利利⽤用可能

    といった、コラボレーション機能が充実。 http://cacoo.com/
  7. 今年年正式版をリリースしたばかりの新しいチャットサービス •  ヌーラボの各サービスとの連携 •  豊富で使いやすい  API  の提供 http://typetalk.in/

  8. 2014/02  正式ローンチ 2010/09  正式ローンチ 2006/05  正式ローンチ サービスのあゆみ

  9. 本⽇日のお話 1.  なぜ今  API  なのか 2.  ヌーラボでの  API  の事例例 • 

    API  の世代交代 •  エディタ機能の外部提供のアプローチ •  API  を核にしたサービス設計と実装 3.  まとめ
  10. 1.  なぜ今  API  なのか

  11. #1  の  yohei  さんのお話 http://www.slideshare.net/yohei/webapi-‐‑‒36871915 API  ファーストな サービス設計

  12. #2  の  naoya  さんのお話 https://speakerdeck.com/naoya/kuraudosabisufalse-‐‑‒web-‐‑‒ api-‐‑‒tosofalseyusukesu-‐‑‒number-‐‑‒apijp ロジックを紡いで サービスを作る パーツとしての ⽂文字通り

     API  に
  13. これまでの  API サービス 開発者 API •  サービスで提供する機能やデータの⼀一部、補完的な役割 •  API  は後から提供されるケースも多かった

  14. これからの  API サービス 開発者 API API サービス サービス API ユーザ

    ・   ・   •  API  がサービスそのものとしての顔をもつ •  API  の向こう側にエンドユーザがいる
  15. Evernote  のケース http://www.programmableweb.com/news/five-‐‑‒great-‐‑‒api-‐‑‒ ecosystem-‐‑‒lessons-‐‑‒evernote/2014/02/19 API  連携した アプリケーションが ユーザ満⾜足度度を向上させ 課⾦金金化を促進

  16. API  エコシステム サービス 開発者 API API サービス サービス API ユーザ

    ・   ・   •  API  そのものに加え、外部のサービスプロバイダーや開 発者との関係性の双⽅方が重要に
  17. ヌーラボの取り組み •  developer.nulab-‐‑‒inc.com  にて⼀一元的な情報提供 •  開発者コミュニティの形成

  18. ヌーラボの取り組み •  ハッカソンの開催 •  公式ライブラリ(SDK)、ユーティリティの提供

  19. ヌーラボの取り組み •  Developer  Advocate  を絶賛採⽤用中! •  API  はサービスの海外展開の戦略略の⼀一端も Nulab  API

     の 開発者コミュニティ における推進 外部のプロダクトと ヌーラボプロダクトの 連携の促進
  20. 事例例1. API  の世代交代

  21. Backlog  APIv1  (2007〜~) •  API  ⽅方式 •  XML-‐‑‒RPC •  認証

    •  HTTP  Basic  認証 •  API  で出来ること •  課題管理理系の機能を中⼼心に、プロジェクト作 成、ユーザ作成などの⼀一部の管理理機能も提供
  22. Backlog  APIv2  (2014〜~) •  API  ⽅方式 •  REST  /  JSON

    •  認証 •  API  Key •  OAuth2  (  Authorization  Code  )  準備中 •  API  で出来ること •  ⼀一部のユーザ設定やバージョン管理理、 WebDAV  を除いてほとんどすべてのこと
  23. 世代交代の背景 •  認証⽅方式、機能改善への要望は根強くあった •  公式  iPhone  アプリにあわせて刷新を決断

  24. 移⾏行行ポリシー •  既存プログラムはそのまま動く •  v1  の変更更・廃⽌止はしない •  ただし新機能の追加もしない •  新規プログラムには

     v2  を推奨 •  v1  の機能は全てカバー •  機能要望は  v2  のみ受け付け
  25. v2  のアーキテクチャ データベース Web   向けの機能 APIv2 APIv1 Backlog  アプリケーション

    アプリケーションロジック 複雑なロジックを要するような処理理 専⽤用アプリとして実装
  26. 独⽴立立したアプリによる世代交代 •  v1  に影響を与えることなく  v2  を開発 •  最新フレームワークでスピーディに開発 •  複雑な処理理は既存の

     v1  を内部的に呼び 出すことで実装コストを低減
  27. 事例例2.   エディタ機能の外部提供のアプローチ

  28. Cacoo  API  (2009〜~) •  API  ⽅方式 •  REST  /  JSON,

     XML •  認証 •  API  Key •  OAuth  1.0a •  API  で出来ること •  図の作成、画像情報の取得、エディタの⾃自動 起動など
  29. Cacoo  SDK  エディション •  エディタを⾃自社製品に組み込むためのオンプレミス版 •  Cacoo  の最も魅⼒力力的な機能の1つがエディタ

  30. ADFlow  での事例例 画像に基づいた コミュニケーション に  Cacoo  を利利⽤用

  31. •  ユーザ情報は⾃自社サービスのデータを使 いたい •  エディタの不不要な機能を使わせたくない •  ロゴなどブランディングを⾃自社のものに あわせたい エディタ組み込みへのニーズ

  32. オンプレミス版での提供 •  cacoo.com  では実現しにくい認証やブラ ンディングの問題をクリア   •  専⽤用  API  を提供することで細やかなニー

    ズに対応 •  カスタマイズではなく  API
  33. 事例例3.   API  を核にしたサービス設計と実装

  34. Typetalk  API  (2013〜~) •  API  ⽅方式 •  REST  /  JSON

    •  認証 •  OAuth2 •  API  で出来ること •  ⼀一部の管理理機能を除いてほぼ全て
  35. モバイルファースト •  iPhone  /  Android  /  ウェブの三本⽴立立て •  提供機能はシンプルに • 

    外部連携をしやすいように
  36.  API  アーキテクチャ Web  ⽤用の 認証 API  ロジック Typetalk  アプリケーション 実装コードは共通

    OAuth2  による 認証 こちら側の経路路での API  を外部に公開
  37. 通信速度度に対する⼯工夫 •  nginx-‐‑‒gzip-‐‑‒filter-‐‑‒allow-‐‑‒weak-‐‑‒etag-‐‑‒patch •  gzip  フィルター処理理時に  weak  ETag  は保持 するパッチ

    •  JSON  から  weak  ETag  を⽣生成 •  サーバは富豪、ネットワークのほうが重要 https://github.com/nulab/nginx-‐‑‒gzip-‐‑‒filter-‐‑‒allow-‐‑‒weak-‐‑‒ etag-‐‑‒patch
  38. 実装・運⽤用での⼯工夫 •  実装コストが⼆二倍にならないようなアー キテクチャ設計 •  モバイルにやさしく

  39. 今後の予定 •  ストリーミング  API  の提供 •  管理理系  API  の順次提供 • 

    ⼿手軽な認証⽅方式のサポート
  40. 3.  まとめ

  41. 本⽇日のお話 1.  なぜ今  API  なのか 2.  ヌーラボでの  API  の事例例 • 

    API  の世代交代 •  エディタ機能の外部提供のアプローチ •  API  を核にしたサービス設計と実装 3.  まとめ
  42. なぜ今  API  なのか サービス 開発者 API API サービス サービス API

    ユーザ ・   ・   •  API  そのものはサービスと同等の機能提供に •  開発者や補完関係となるサービスとの連携
  43. ヌーラボの  API  事例例 •  トレンドの中で実践的な技術を採択する •  サービスのどこが「他の⼈人が使いたい か」を意識識して外部機能を提供する •  実装コストを意識識する

  44. API  のこれから 開発者しか できなかったことが ユーザでも出来る ように https://ifttt.com/

  45. API  のこれから https://speakerdeck.com/nulabinc/jin-‐‑‒dokifalseriarutaimukoraboresiyonturufalsezuo-‐‑‒ rifang-‐‑‒backlog-‐‑‒cacoo-‐‑‒typetalkniokerushi-‐‑‒jian-‐‑‒li

  46. http://www.flickr.com/photos/expressmonorail/3470644819 API  もリアルタイムへ

  47. ご清聴 ありがとうございました ツイッター、やってます。 @nulabinc