加川 澄廣(かがわ すみひろ) n Keywords l LINE API Expert l python , TypeScript, Nuxt.js, AWS, GCP l “LINE Pay API SDK for python“ Contributor sumihiro3 sumihiro.kagawa 3
Webhook イベントの受け付けとリプライ n Webhook イベント受け付けと、リプライは分けて実⾏ l Webhook リクエストへのレスポンスは即返す l イベント処理はQueue を挟んで⾮同期での処理後に返す Webhook event Response Reply API Webhook処理 ビジネスロジック Reply API 実行 25
Webhook処理 ビジネスロジック Reply API 実行 Webhook イベントの受け付けとリプライ n 受け付けと処理・リプライを分ける⽬的 l ユーザーへのレスポンスを優先 l 責任分界点の明確化 Ø ビジネスロジックはLINE API への依存を薄くして他 Platform へも展開可とする Ø 単体テストをしやすく Webhook event Response Reply API LINE の「Webhookイベント オブジェクト」への依存は ここで留める ビジネスロジックは LINE API への依存を 薄くする 頻繁に利⽤する API 実⾏処理は分離・共通化 27
Messaging API 実⾏エラー時のリトライ処理 n ビジネスロジックからAPI 実⾏処理を分離 l 責任分界点の明確化 Ø ビジネスロジックに LINE API 独⾃の仕様を 混⼊しない "1* ࣮ߦ 3FUSZLFZ 3FUSZLFZ 3FUSZLFZ 3FUSZLFZ ビジネスロジックから API 実⾏処理を分離する ビジネスロジック LINE API 実行 32
Messaging API 実⾏エラー時のリトライ処理 n ビジネスロジックからAPI 実⾏処理を分離 l API 実⾏側でもインフラに任せられる部分(リトライ)は任せる Ø インフラ側で担保されているのであれば、 むやみに⾃前で実装しない "1* ࣮ߦ API 実⾏エラーが発⽣しても Queue のリトライ機能で安全に 再実⾏できる Push API などの実⾏処理を共通化し、 リクエスト拒否(Conflict) 時は 再実⾏しないようにしておく 3FUSZLFZ 3FUSZLFZ 3FUSZLFZ 3FUSZLFZ ビジネスロジック LINE API 実行 33
LPF REVUP 2020 Landing Page n システム構成 l Headless CMS Ø microCMS l SSG Ø Nuxt.js (Full static generation) l CDN Ø Netlify Hosting l BFF Ø Netlify functions l CD Ø Netlify 47
LINE Pay Drink Bar nLIFF + LINE Pay API で構築 l 書籍「 LINE API 実践ガイド」に掲載した実装例 Ø ドリンクの注⽂・決済・くじ引き - LIFF アプリ • 商品⼀覧での選択 • ドリンク抽出画⾯でのプログレス表⽰ • くじびき抽選など - サーバーサイド • LINE Pay API、obniz Cloud と連携 52
LINE Pay Drink Bar n システム構成 l フロント Ø SSR(Nuxt.js) + Google App Engine l サーバーサイド Ø Nuxt.js + Firestore l CD Ø GitHubActions + firebase CLI l ハードウェア Ø obniz + エアーポンプ + シリコンチューブ 54
LINE Pay Drink Bar (ソフトウェア) LINE Pay Drink Bar (ハードウェア) obniz Board ユーザー LINE LINE Front-end Framework (LIFF) エアーポンプ Google App Engine Cloud Firestore NuxtJS Vue.js 決済実⾏ 注⽂・決済 ドリンク注⽂・決済 システム構成図 ドリンク抽出 57