Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ヌーラボサービスにおける API 設計・運用のこれまでとこれから
Search
株式会社ヌーラボ
PRO
September 26, 2014
Technology
2
2.2k
ヌーラボサービスにおける API 設計・運用のこれまでとこれから
Presentation Slides at API Meetup Tokyo #3
http://api-meetup.doorkeeper.jp/events/14087
株式会社ヌーラボ
PRO
September 26, 2014
Tweet
Share
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
ライティングチームだからこそできた、「どことでも繋がれるチーム」づくりの結果 / Technical Writing Meetup vol.38
nulabinc
PRO
0
30
4つの基本的な組織形態を知る ~ミンツバーグの組織論 7つの類型と力学、そしてその先へ~ より GWD in Nagoya
nulabinc
PRO
2
97
必要なのは客観性。組織変革をもたらす、より良い「対話」を生み出すための活動 #scrummikawa
nulabinc
PRO
3
1k
悪い実装例から学ぶ ウェブアクセシビリティ改善のヒント
nulabinc
PRO
1
330
ヌーラボカスタマーサクセスチームのBacklog活用
nulabinc
PRO
0
280
言葉で「ヌーラボらしさ」をどう届ける? グローバルチームでコラボレーションする大切さ
nulabinc
PRO
1
100
タスクの可視化は争いをなくす!? 夏休みを乗り切る 宿題プロジェクトマネジメント
nulabinc
PRO
2
260
情シスの申請業務におけるBacklog活用術
nulabinc
PRO
0
300
Backlogと業務プロセスのちょっといい関係
nulabinc
PRO
0
270
Other Decks in Technology
See All in Technology
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
120
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
Platform Engineering for Software Developers and Architects
syntasso
1
520
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
610
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
930
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
240
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
200
Featured
See All Featured
Fireside Chat
paigeccino
34
3k
Git: the NoSQL Database
bkeepers
PRO
427
64k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Designing for humans not robots
tammielis
250
25k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Facilitating Awesome Meetings
lara
50
6.1k
Scaling GitHub
holman
458
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
KATA
mclloyd
29
14k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
We Have a Design System, Now What?
morganepeng
50
7.2k
Transcript
API Meetup Tokyo #3 2014/09/26(⾦金金) @NTT コミュニケーションズ株式会社 ヌーラボサービスにおける API 設計・運⽤用のこれまでとこれから
染⽥田 貴志 SOMEDA Takashi @tksmd 株式会社ヌーラボ エバンジェリスト
Mashup Awards 10 http://mashupaward.jp/companies/24 • コラボレーションカテゴリで API 提供中! • 昨年年のヌーラボ賞は「博多よかとこ遊びにこんね賞」
None
JAWS Days 2013 国内を中⼼心に 約3000クライアント が利利⽤用するプロジェクト管理理ツール タスク管理理機能に加え、 • WebDAVによるファイル共有 •
GitやSubversionのリポジトリホスティング などを提供。 http://www.backlog.jp
全世界 約135万ユーザ が利利⽤用するオンラインのドローツール 基本的なドローツールの機能に加え • 複数のユーザで同時に編集出来るリアルタイムコラボレーション • Google+ Hangouts と連携して、ビデオチャットとあわせて利利⽤用可能
といった、コラボレーション機能が充実。 http://cacoo.com/
今年年正式版をリリースしたばかりの新しいチャットサービス • ヌーラボの各サービスとの連携 • 豊富で使いやすい API の提供 http://typetalk.in/
2014/02 正式ローンチ 2010/09 正式ローンチ 2006/05 正式ローンチ サービスのあゆみ
本⽇日のお話 1. なぜ今 API なのか 2. ヌーラボでの API の事例例 •
API の世代交代 • エディタ機能の外部提供のアプローチ • API を核にしたサービス設計と実装 3. まとめ
1. なぜ今 API なのか
#1 の yohei さんのお話 http://www.slideshare.net/yohei/webapi-‐‑‒36871915 API ファーストな サービス設計
#2 の naoya さんのお話 https://speakerdeck.com/naoya/kuraudosabisufalse-‐‑‒web-‐‑‒ api-‐‑‒tosofalseyusukesu-‐‑‒number-‐‑‒apijp ロジックを紡いで サービスを作る パーツとしての ⽂文字通り
API に
これまでの API サービス 開発者 API • サービスで提供する機能やデータの⼀一部、補完的な役割 • API は後から提供されるケースも多かった
これからの API サービス 開発者 API API サービス サービス API ユーザ
・ ・ • API がサービスそのものとしての顔をもつ • API の向こう側にエンドユーザがいる
Evernote のケース http://www.programmableweb.com/news/five-‐‑‒great-‐‑‒api-‐‑‒ ecosystem-‐‑‒lessons-‐‑‒evernote/2014/02/19 API 連携した アプリケーションが ユーザ満⾜足度度を向上させ 課⾦金金化を促進
API エコシステム サービス 開発者 API API サービス サービス API ユーザ
・ ・ • API そのものに加え、外部のサービスプロバイダーや開 発者との関係性の双⽅方が重要に
ヌーラボの取り組み • developer.nulab-‐‑‒inc.com にて⼀一元的な情報提供 • 開発者コミュニティの形成
ヌーラボの取り組み • ハッカソンの開催 • 公式ライブラリ(SDK)、ユーティリティの提供
ヌーラボの取り組み • Developer Advocate を絶賛採⽤用中! • API はサービスの海外展開の戦略略の⼀一端も Nulab API
の 開発者コミュニティ における推進 外部のプロダクトと ヌーラボプロダクトの 連携の促進
事例例1. API の世代交代
Backlog APIv1 (2007〜~) • API ⽅方式 • XML-‐‑‒RPC • 認証
• HTTP Basic 認証 • API で出来ること • 課題管理理系の機能を中⼼心に、プロジェクト作 成、ユーザ作成などの⼀一部の管理理機能も提供
Backlog APIv2 (2014〜~) • API ⽅方式 • REST / JSON
• 認証 • API Key • OAuth2 ( Authorization Code ) 準備中 • API で出来ること • ⼀一部のユーザ設定やバージョン管理理、 WebDAV を除いてほとんどすべてのこと
世代交代の背景 • 認証⽅方式、機能改善への要望は根強くあった • 公式 iPhone アプリにあわせて刷新を決断
移⾏行行ポリシー • 既存プログラムはそのまま動く • v1 の変更更・廃⽌止はしない • ただし新機能の追加もしない • 新規プログラムには
v2 を推奨 • v1 の機能は全てカバー • 機能要望は v2 のみ受け付け
v2 のアーキテクチャ データベース Web 向けの機能 APIv2 APIv1 Backlog アプリケーション
アプリケーションロジック 複雑なロジックを要するような処理理 専⽤用アプリとして実装
独⽴立立したアプリによる世代交代 • v1 に影響を与えることなく v2 を開発 • 最新フレームワークでスピーディに開発 • 複雑な処理理は既存の
v1 を内部的に呼び 出すことで実装コストを低減
事例例2. エディタ機能の外部提供のアプローチ
Cacoo API (2009〜~) • API ⽅方式 • REST / JSON,
XML • 認証 • API Key • OAuth 1.0a • API で出来ること • 図の作成、画像情報の取得、エディタの⾃自動 起動など
Cacoo SDK エディション • エディタを⾃自社製品に組み込むためのオンプレミス版 • Cacoo の最も魅⼒力力的な機能の1つがエディタ
ADFlow での事例例 画像に基づいた コミュニケーション に Cacoo を利利⽤用
• ユーザ情報は⾃自社サービスのデータを使 いたい • エディタの不不要な機能を使わせたくない • ロゴなどブランディングを⾃自社のものに あわせたい エディタ組み込みへのニーズ
オンプレミス版での提供 • cacoo.com では実現しにくい認証やブラ ンディングの問題をクリア • 専⽤用 API を提供することで細やかなニー
ズに対応 • カスタマイズではなく API
事例例3. API を核にしたサービス設計と実装
Typetalk API (2013〜~) • API ⽅方式 • REST / JSON
• 認証 • OAuth2 • API で出来ること • ⼀一部の管理理機能を除いてほぼ全て
モバイルファースト • iPhone / Android / ウェブの三本⽴立立て • 提供機能はシンプルに •
外部連携をしやすいように
API アーキテクチャ Web ⽤用の 認証 API ロジック Typetalk アプリケーション 実装コードは共通
OAuth2 による 認証 こちら側の経路路での API を外部に公開
通信速度度に対する⼯工夫 • nginx-‐‑‒gzip-‐‑‒filter-‐‑‒allow-‐‑‒weak-‐‑‒etag-‐‑‒patch • gzip フィルター処理理時に weak ETag は保持 するパッチ
• JSON から weak ETag を⽣生成 • サーバは富豪、ネットワークのほうが重要 https://github.com/nulab/nginx-‐‑‒gzip-‐‑‒filter-‐‑‒allow-‐‑‒weak-‐‑‒ etag-‐‑‒patch
実装・運⽤用での⼯工夫 • 実装コストが⼆二倍にならないようなアー キテクチャ設計 • モバイルにやさしく
今後の予定 • ストリーミング API の提供 • 管理理系 API の順次提供 •
⼿手軽な認証⽅方式のサポート
3. まとめ
本⽇日のお話 1. なぜ今 API なのか 2. ヌーラボでの API の事例例 •
API の世代交代 • エディタ機能の外部提供のアプローチ • API を核にしたサービス設計と実装 3. まとめ
なぜ今 API なのか サービス 開発者 API API サービス サービス API
ユーザ ・ ・ • API そのものはサービスと同等の機能提供に • 開発者や補完関係となるサービスとの連携
ヌーラボの API 事例例 • トレンドの中で実践的な技術を採択する • サービスのどこが「他の⼈人が使いたい か」を意識識して外部機能を提供する • 実装コストを意識識する
API のこれから 開発者しか できなかったことが ユーザでも出来る ように https://ifttt.com/
API のこれから https://speakerdeck.com/nulabinc/jin-‐‑‒dokifalseriarutaimukoraboresiyonturufalsezuo-‐‑‒ rifang-‐‑‒backlog-‐‑‒cacoo-‐‑‒typetalkniokerushi-‐‑‒jian-‐‑‒li
http://www.flickr.com/photos/expressmonorail/3470644819 API もリアルタイムへ
ご清聴 ありがとうございました ツイッター、やってます。 @nulabinc