Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Remixing
つらくない
メディア間連携
~APIを使えばね~
株式会社オールアバウト
吉田 拓実
(@y_takky2014)
1
Remixing
自己紹介
吉田拓実(Yoshida Takumi)
@y_takky2014
https://twitter.com/y_takky2014
http://qiita.com/takky
2年間でやってきたこと
サーバサイド
...
Remixing
アジェンダ
複数メディアの開発者の悩み
複数メディアを連携した
新機能作成時の悩みと解決法
All AboutのAPI活用事例
API実装時の工夫点
APIを使った今後
Copyright 2015 All About,inc...
Remixing
複数メディアの開発者の悩み
Copyright 2015 All About,inc. 4
Remixing
1.システム構成がバラバラ
Copyright 2015 All About,inc. 5
DB
フレームワーク
言語
Remixing
メディアB
contents
hogehoge#
hugahuga#
img1
link1
プログラムで本文組み立て
が必要
Copyright 2015 All About,inc. 6
2.データの持ち方がバラバラ
メディ...
Remixing
つらい
Copyright 2015 All About,inc. 7
Remixing
複数メディアを連携した
新機能作成時の悩みと解決法
Copyright 2015 All About,inc. 8
Remixing 複雑化する要件
Copyright 2015 All About,inc. 9
エンタメ系のコンテンツを
充実したいから、
メディアA,B,C,Dから
エンタメっぽい記事を
新着で集めたものを作って!エンタメ系のコンテンツは、...
Remixing これらを連携しようと思ったら
Copyright 2015 All About,inc. 10
各メディアのDBに
直接接続して
新機能のプログラムで
クエリ書いて
データ作成しよう
Remixing
直接DB接続する
Copyright 2015 All About,inc. 11
Conncect B;
dataB = B.getData();
~~~~~~~~~~~~~~
サンプルコード
新機能
DBConnect/
...
Remixing
直接接続時のデメリット
1つのDBに接続できないとシステムダウン
耐障害性が低い
メディア数分DB接続が必要
実装が複雑化
拡張性
影響範囲調査が必要
仕様の把握が難
Copyright 2015 All About,inc....
Remixing
Copyright 2015 All About,inc. 13
各メディアのbatchで
データを作成して
それをmigrationして
持ってこよう
Remixing
Application A batch
Batchでデータ作成
Copyright 2015 All About,inc. 14
A
NEW
Connect/
getData
C
Connect/
getData
Connec...
Remixing
Batchのデメリット
耐障害性は上がる
データを前もって準備しておくから
メディア数分のbatch実装
再実装が必要なことも
影響範囲の調査は必須
Copyright 2015 All About,inc. 15
Remixing
じゃあ
どうしよう?
Copyright 2015 All About,inc. 16
Remixing
Copyright 2015 All About,inc. 17
APIを使おう!
Remixing APIでデータ取得
Copyright 2015 All About,inc. 18
API
B
D
A
C
DB
API Request
Get Data
Return Data
Response Data
Remixing
APIのメリット
データの持ち方を知らずに使用可能
データ構造の考慮がいらない。
影響範囲の特定が容易
APIのみの改修でOK
疎結合化
システム間の結びつきが弱くなる
耐障害性UP
拡張性UP
Copyright 2015 ...
Remixing
All AboutのAPI活用事例
Copyright 2015 All About,inc. 20
Remixing
API使用した実例
タグページ
Copyright 2015 All About,inc. 21
http://allabout.co.jp/taglist/
Remixing
Copyright 2015 All About,inc. 22
http://allabout.co.jp/gm/gc/450229/
記事に紐づくタグ
記事内容を解析
特徴的なキーワードをタグとして表示
Remixing
23
記事タイトル
要約文
サムネイル
執筆者名・写真
Remixing
SELECT
Tag
タグページのシステム構成
Copyright 2015 All About,inc. 24
API
まとめ
Tag
記事
NewsDig
DB
API Request
(Get 記事Data)
API R...
Remixing
タグページの実装
記事情報を返却するAPIを実装
タグ情報を返却するAPIを実装
メディア間連携する場合はAPI
他メディアの情報をTagのDBに持たない
他メディアには影響されない
Copyright 2015 All Ab...
Remixing
API実装時の工夫点
Copyright 2015 All About,inc. 26
Remixing
返却形式の共通化
JSON形式で返却
Data とMetaから構成
Copyright 2015 AllAbout,inc. 27
data: [
{
article_id: 450229,
article_title: "4...
Remixing
ステータスコードの有効活用
HTTPのステータスコードを適切に設定
Copyright 2015 AllAbout,inc. 28
ステータスコード API上の状態
200 OK APIのレスポンスが正しく返却されている
40...
Remixing
ドキュメント化
Qiitaに記載
APIの叩き方や
APIの実装ガイドライン共有
Copyright 2015 All About,inc. 29
Remixing
ライブラリ化
APIを叩く部分の実装を共通化
サーバサイド実装者は、
関数呼び出しで使えるように
API実装者とサーバサイド実装者が
異なってもスムーズに連携
Composerのような
パッケージ管理システムの利用
Copyr...
Remixing
※ここからは、個人的な願望に
なります。
会社の方針とは関係ありません
。
APIを使った今後
Copyright 2015 All About,inc. 31
Remixing
APIを使って
解消出来るところ
現在はベタ書き
サービスの追加/削除毎に
リリース発生
調査・リリースがほとんど
を占める
API化すると削減
DBにデータ入れ込んで終了
Copyright 2015 All About,i...
Remixing
サービスすべてをAPI化
各メディアでのデータ取得もAPIに
使い回しが容易に
Copyright 2015 AllAbout,inc. 33
Remixing
まとめ
APIを使うことでシステムを疎結合化
システム間の依存性が少なくなる
改修高速化
使い回しが容易
工夫により実装・利用の容易化
共通仕様の策定
ドキュメント化
ライブラリ化
Copyright 2015 All Abo...
Remixing
Copyright 2015 All About,inc. 35
つらくない!!!
Remixing
ご清聴ありがとうございました
Copyright 2015 All About,inc. 36
Upcoming SlideShare
Loading in …5
×

2015/06/27 Remixing つらくないメディア間連携

490 views

Published on

2015/06/27にRemixin With All About,Inc.
で発表したスライド。
https://remixing.doorkeeper.jp/events/26208

闇をどうやって攻略していいくかの話です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

2015/06/27 Remixing つらくないメディア間連携

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

×