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
Amplify × ブロックチェーン で取引管理システムを作った話
Search
北見海貴
July 27, 2023
Programming
0
160
Amplify × ブロックチェーン で取引管理システムを作った話
北見海貴
July 27, 2023
Tweet
Share
More Decks by 北見海貴
See All by 北見海貴
【PoCで終わらない】運用フェーズまで見据えたAI駆動UIデザイン/フロントエンド開発実践
kitami
1
300
Other Decks in Programming
See All in Programming
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
980
JetBrainsのAI機能の紹介 #jjug
yusuke
0
210
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
280
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2.2k
kiroでゲームを作ってみた
iriikeita
0
180
What's new in Adaptive Android development
fornewid
0
140
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
1
310
バイブコーディング × 設計思考
nogu66
0
120
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.3k
DataformでPythonする / dataform-de-python
snhryt
0
180
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
8
2.9k
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
200
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
329
21k
How to train your dragon (web standard)
notwaldorf
96
6.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Pragmatic Product Professional
lauravandoore
36
6.8k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Faster Mobile Websites
deanohume
309
31k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
A Tale of Four Properties
chriscoyier
160
23k
Transcript
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
Amplify Boost Up #3 Amplify × ブロックチェーンで取引管理シス テムを作った話 株式会社 PURPOM MEDIA LAB (ピュアポムメディアラボ) 北見 海貴
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
自己紹介 北見海貴 Twitter: @kita3222 Github: Kaiki-kk 所属 株式会社 Purpom Media Lab Amplify歴 約2年 2021.04 Amplifyを使い始める 2023.05 amplify-category-apiにコントリビュート 2023.06 Amplify Japan User Group 運営に参画
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
目次 1. 自己紹介 2. 会社紹介 3. 今回作ったシステムについて 4. まとめ 5. 最後に
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
会社紹介
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
Purpom Media Lab
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
MVP開発 MVP(最小限のプロダクト)を早期に 実際にユーザが触れることができる状 態を継続的に構築します。 お客様が実際にユーザー目線で触れ、 フィードバックをすることで、大きな ずれを防ぎます。 またリリース後もフィードバックを通 してアップデートすることで市場から の支持が得られるサービスを構築する ことができます。
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
MVP開発 MVP(最小限のプロダクト)を早期に 実際にユーザが触れることができる状 態を継続的に構築します。 お客様が実際にユーザー目線で触れ、 フィードバックをすることで、大きな ずれを防ぎます。 またリリース後もフィードバックを通 してアップデートすることで市場から の支持が得られるサービスを構築する ことができます。 本日はMVP開発の一貫で作ったブロックチェーンを用いた取引管理システ ムの話をさせていただきます
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
今回作ったシステムについて
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
システム概要 - 企業間の取引を管理するシステム - ブロックチェーン技術を用いて高い改ざん耐性や信頼性を確保
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ブロックチェーンで何をするのか - ユーザーごとにウォレットを作成 - ユーザー間の取引情報をブロックチェーン にトランザクションで送信する - データベースとブロックチェーンのトランザ クションを紐付けて同期
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
アーキテクチャ
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
使用したAmplify Libraries Amplify Libraries - 認証(Cognito) - GraphQL API(Appsync) - データベース(DynamoDB) - API Gateway - Parameter Store - Lambda - Cognito トリガー - DynamoDB Stream トリガー - API Gateway → Lambda
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
開発期間・開発規模 開発期間 - 2ヶ月(初期リリース: 1.5ヶ月、フィードバック反映: 0.5ヶ月) 開発人数 - 2名
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
システムフロー 1. ユーザーがアカウント登録すると、ブロックチェーンでウォレットを作成する 2. ユーザーが取引を行うと、ブロックチェーンにトランザクションを送信する 3. Webhookを発行してトランザクションのハッシュ値をDBに保存する
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
システムフロー 1. ユーザーがアカウント登録すると、ブロックチェーンでウォレットを作成する 2. ユーザーが取引を行うと、ブロックチェーンにトランザクションを送信する 3. Webhookを発行してトランザクションのハッシュ値をDBに保存する
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する ウォレットについて - ブロックチェーンにトランザクションを行うための公開鍵と秘密鍵のペアを生成及び管理 - ユーザーごとにウォレットを作成し、アプリではウォレットアドレスを管理 - ウォレットアドレスはトランザクションを送信する際に必要
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する Cognito × Lambda トリガー 1. サインアップをトリガーにLambdaが起動 2. Lambda内でユーザーごとにウォレットを 作成 3. 取得したウォレットアドレスをDynamoDB に保存
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する Cognito × Lambda トリガー 1. サインアップをトリガーにLambdaが起動 2. Lambda内でユーザーごとにウォレットを 作成 3. 取得したウォレットアドレスをDynamoDB に保存 amplify update auth > Walkthrough all the auth configurationsで設定
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する Cognito × Lambda トリガー 1. サインアップをトリガーにLambdaが起動 2. Lambda内でユーザーごとにウォレットを 作成 3. 取得したウォレットアドレスをDynamoDB に保存
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する Parameter Store 1. サインアップをトリガーにLambdaが起動 2. Lambda内でユーザーごとにウォレットを作 成 3. 取得したウォレットアドレスをDynamoDBに 保存 amplify add function or update function時に設定
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーがアカウント登録すると、ブロックチェーンで ウォレットを作成する Cognito × Lambda トリガー 1. サインアップをトリガーにLambdaが起動 2. Lambda内でユーザーごとにウォレットを 作成 3. 取得したウォレットアドレスをDynamoDB に保存
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
システムフロー 1. ユーザーがアカウント登録すると、ブロックチェーンでウォレットを作成する 2. ユーザーが取引を行うと、ブロックチェーンにトランザクションを送信する 3. Webhookを発行してトランザクションのハッシュ値をDBに保存する
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーが取引を行うと、ブロックチェーンにトランザク ションを作成する DynamoDB × Lambda トリガー 1. DynamoDBの取引テーブルにレコードを 作成 2. DynamoDB StreamをトリガーにLambdaが 起動 3. ブロックチェーンに対してトランザクション を送信
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーが取引を行うと、ブロックチェーンにトランザク ションを作成する DynamoDB × Lambda トリガー 1. DynamoDBのトランザクションテーブルに レコードを作成 2. DynamoDB StreamをトリガーにLambdaが 起動 3. ブロックチェーンに対してトランザクション を送信
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーが取引を行うと、ブロックチェーンにトランザク ションを作成する DynamoDB × Lambda トリガー 1. DynamoDBのトランザクションテーブルに レコードを作成 2. DynamoDB StreamをトリガーにLambda が起動 3. ブロックチェーンに対してトランザクション を送信 amplify add functionから設定
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ユーザーが取引を行うと、ブロックチェーンにトランザク ションを作成する DynamoDB × Lambda トリガー 1. DynamoDBのトランザクションテーブルに レコードを作成 2. DynamoDB StreamをトリガーにLambdaが 起動 3. Lambda内でブロックチェーンに対してト ランザクションを送信
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
システムフロー 1. ユーザーがアカウント登録すると、ブロックチェーンでウォレットを作成する 2. ユーザーが取引を行うと、ブロックチェーンにトランザクションを送信する 3. Webhookを発行してトランザクションのハッシュ値をDBに保存する
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
Webhookを発行してトランザクションのハッシュ値をDB に保存する API Gateway × Lambda 1. トランザクションの作成をトリガーに Webhookを発行して、API Gatewayのエン ドポイントにリクエスト 2. 起動したLambda内でDynamoDBの取引 テーブルにブロックチェーンのハッシュ値 を登録
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
Webhookを発行してトランザクションのハッシュ値をDB に保存する API Gateway × Lambda 1. トランザクションの作成をトリガーに Webhookを発行して、API Gatewayのエ ンドポイントにリクエスト 2. 起動したLambda内でDynamoDBの取引 テーブルにブロックチェーンのハッシュ値 を登録 amplify CLIからAPI Gatewayを作成すると、aws-exports.js にエン ドポイントなどの情報が格納される
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
API Gateway × Lambda 1. トランザクションの作成をトリガーに Webhookを発行して、API Gatewayの エンドポイントにリクエスト 2. 起動したLambda内でDynamoDBの取 引テーブルにブロックチェーンのハッ シュ値を登録 Webhookを発行してトランザクションのハッシュ値 をDBに保存する
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
まとめ - ブロックチェーンの要件に対してAmplifyは柔軟に対応できた - 特にLambdaトリガーを活用すると対応できる - 少人数でかつ短期間での実装が実現できた
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
最後に ピュアポムメディアラボではAmplifyを使ったMVP開発の研究を行っています。 さらに高速開発をどうすればいいのか、工夫しながらやっています。 一緒に研究してくれる方を募集中です。
[email protected]
Copyright © 2023 Purpom Media Lab Inc. All Rights Reserved.
ご清聴ありがとうご ざいました