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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
北見海貴
July 27, 2023
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amplify × ブロックチェーン で取引管理システムを作った話
北見海貴
July 27, 2023
More Decks by 北見海貴
See All by 北見海貴
ある製造業の会社全体のAI化に1エンジニアが挑んだ話
kitami
2
1.4k
エンジニアがデザインまで担うための AI駆動UIデザイン/フロントエンド開発実践
kitami
4
1.9k
【PoCで終わらない】運用フェーズまで見据えたAI駆動UIデザイン/フロントエンド開発実践
kitami
1
580
Other Decks in Programming
See All in Programming
AIが無かった頃の素敵な出会いの話
codmoninc
1
340
React本体のコードリーディング
high_g_engineer
1
120
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
610
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
510
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
420
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
130
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
200
Android CLI
fornewid
0
200
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
AIエージェントで 変わるAndroid開発環境
takahirom
2
760
テーブルをDELETEした
yuzneri
0
130
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
130
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Agile that works and the tools we love
rasmusluckow
331
22k
Exploring anti-patterns in Rails
aemeredith
3
450
Designing for humans not robots
tammielis
254
26k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Rails Girls Zürich Keynote
gr2m
96
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.1k
KATA
mclloyd
PRO
35
15k
Mobile First: as difficult as doing things right
swwweet
225
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Typedesign – Prime Four
hannesfritz
42
3.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
390
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.
ご清聴ありがとうご ざいました