View
84
Download
2
Category
Preview:
Citation preview
Remixing
つらくないメディア間連携~API を使えばね ~
株式会社オールアバウト吉田 拓実
(@y_takky2014)
1
Remixing
2
自己紹介
吉田拓実 (Yoshida Takumi)@y_takky2014 https://twitter.com/y_takky2014http://qiita.com/takky
2 年間でやってきたことサーバサイド各種検証 (CMS/MySQL/infinity scroll)
各種フロントアプリケーション→→社内向けシステム
Copyright 2015 All About,inc.
API
Remixing
3
アジェンダ
複数メディアの開発者の悩み
複数メディアを連携した新機能作成時の悩みと解決法
All About の API 活用事例
API 実装時の工夫点
API を使った今後Copyright 2015 All About,inc.
Remixing
4
複数メディアの開発者の悩み
Copyright 2015 All About,inc.
Remixing
5
1. システム構成がバラバラ
Copyright 2015 All About,inc.
DB
フレームワーク
言語
Remixing
6
メディア Bcontents
hogehoge#hugahuga#img1link1
プログラムで本文組み立てが必要
Copyright 2015 All About,inc.
2. データの持ち方がバラバラ
メディア Acontents<h1>hogehoge</h1><h2>hugahuga</h2>testtesttesttest<br><img src=“test.jpg”><a href=“allaabout.co.jp>allabout </a>ユーザに表示されるものがそのまま入っている
DB に入っている記事の全文データ
Remixing
7
つらいCopyright 2015 All About,inc.
Remixing
8
複数メディアを連携した新機能作成時の悩みと解決法
Copyright 2015 All About,inc.
Remixing
9
複雑化する要件
Copyright 2015 All About,inc.
エンタメ系のコンテンツを充実したいから、
メディア A,B,C,D からエンタメっぽい記事を
新着で集めたものを作って !エンタメ系のコンテンツは、恋愛 / グルメ / ホビーのカテゴリに属するものでお願いしま
す。
広告記事は無しでよろしく!
Remixing
10
これらを連携しようと思ったら
Copyright 2015 All About,inc.
各メディアの DB に直接接続して
新機能のプログラムでクエリ書いて
データ作成しよう
Remixing
11
直接 DB 接続する
Copyright 2015 All About,inc.
Conncect B;dataB = B.getData();~~~~~~~~~~~~~~
サンプルコード
新機能
DBConnect/getData
A
B
C
DConnect A;dataA = A.getData();
Remixing
12
直接接続時のデメリット
1 つの DB に接続できないとシステムダウン
耐障害性が低い
メディア数分 DB 接続が必要実装が複雑化
拡張性影響範囲調査が必要仕様の把握が難
Copyright 2015 All About,inc.
Remixing
13Copyright 2015 All About,inc.
各メディアの batchでデータを作成してそれを migration して
持ってこよう
Remixing
14
Application A batch
Batch でデータ作成
Copyright 2015 All About,inc.
A
NEW
Connect/getData
WriteC
Connect/getData
Write
Connect/getData
D
Write
New Application
front
Read
Application B batchApplication D batch
Application C batch
Writ
e
B
Connect/getData
Remixing
15
Batch のデメリット
耐障害性は上がるデータを前もって準備しておくから
メディア数分の batch 実装再実装が必要なことも
影響範囲の調査は必須
Copyright 2015 All About,inc.
Remixing
16
じゃあどうしよう ?
Copyright 2015 All About,inc.
Remixing
17Copyright 2015 All About,inc.
API を使おう !
Remixing
18
API でデータ取得
Copyright 2015 All About,inc.
API
B
D
A
C
DB
API Request
Get Data
Return Data
Response Data
Remixing
19
API のメリット
データの持ち方を知らずに使用可能データ構造の考慮がいらない。
影響範囲の特定が容易API のみの改修で OK
疎結合化システム間の結びつきが弱くなる耐障害性 UP
拡張性 UP
Copyright 2015 All About,inc.
Remixing
20
All About の API 活用事例
Copyright 2015 All About,inc.
Remixing
21
API 使用した実例
タグページ
Copyright 2015 All About,inc.
http://allabout.co.jp/taglist/
Remixing
22Copyright 2015 All About,inc.
http://allabout.co.jp/gm/gc/450229/
記事に紐づくタグ
記事内容を解析特徴的なキーワードをタグとして表示
Remixing
23
記事タイトル
要約文
サムネイル
執筆者名・写真
Remixing
24
SELECTTag
タグページのシステム構成
Copyright 2015 All About,inc.
API
まとめ
Tag
記事
NewsDig
DB
API Request(Get 記事 Data)
API Response( 記事 Data)
SELECT 記事 Data
記事 Data
API Request(Get Tag)
TagAPI Response
(Tag)
Remixing
25
タグページの実装
記事情報を返却する API を実装
タグ情報を返却する API を実装
メディア間連携する場合は API他メディアの情報を Tag の DB に持たない
他メディアには影響されない
Copyright 2015 All About,inc.
Remixing
26
API 実装時の工夫点
Copyright 2015 All About,inc.
Remixing
27
返却形式の共通化
JSON 形式で返却
Data と Meta から構成
Copyright 2015 AllAbout,inc.
data: [{ article_id: 450229, article_title: "40 ~ 50 代のダイエットは「腕」をチェック! ", article_abstract: “40 ~ 50 代になり「痩せにくい」 ~", }],meta: { status_code: 200, status_msg: "OK"}
Remixing
28
ステータスコードの有効活用
HTTP のステータスコードを適切に設定
Copyright 2015 AllAbout,inc.
ステータスコード API 上の状態
200 OK API のレスポンスが正しく返却されている
400 Bad Request パラメータが不正
503 Internal Server Error DB や通信が起因で情報取得に失敗
Remixing
29
ドキュメント化
Qiita に記載API の叩き方やAPI の実装ガイドライン共有
Copyright 2015 All About,inc.
Remixing
30
ライブラリ化
API を叩く部分の実装を共通化サーバサイド実装者は、関数呼び出しで使えるように
API 実装者とサーバサイド実装者が異なってもスムーズに連携
Composer のようなパッケージ管理システムの利用
Copyright 2015 All About,inc.
Remixing
31
※ここからは、個人的な願望になります。会社の方針とは関係ありません。
API を使った今後
Copyright 2015 All About,inc.
Remixing
32
API を使って解消出来るところ
現在はベタ書きサービスの追加 /削除毎にリリース発生調査・リリースがほとんどを占める
API 化すると削減DB にデータ入れ込んで終了
Copyright 2015 All About,inc.
調査47%リリース
33%
実装20%
Remixing
33
サービスすべてを API 化
各メディアでのデータ取得も API に使い回しが容易に
Copyright 2015 AllAbout,inc.
Remixing
34
まとめ
API を使うことでシステムを疎結合化システム間の依存性が少なくなる改修高速化使い回しが容易
工夫により実装・利用の容易化共通仕様の策定ドキュメント化ライブラリ化
Copyright 2015 All About,inc.
Remixing
35Copyright 2015 All About,inc.
つらくない!!!
Remixing
36
ご清聴ありがとうございました
Copyright 2015 All About,inc.
Recommended