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
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.3k
エンジニアがデザインまで担うための AI駆動UIデザイン/フロントエンド開発実践
kitami
4
1.8k
【PoCで終わらない】運用フェーズまで見据えたAI駆動UIデザイン/フロントエンド開発実践
kitami
1
570
Other Decks in Programming
See All in Programming
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
Vite+ Unified Toolchain for the Web
naokihaba
0
420
Performance Engineering for Everyone
elenatanasoiu
0
250
どこまでゆるくて許されるのか
tk3fftk
0
300
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
340
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.6k
AIで効率化できた業務・日常
ochtum
0
160
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
470
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
110
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
7
1k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.2k
Paper Plane
katiecoart
PRO
1
52k
KATA
mclloyd
PRO
35
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Crafting Experiences
bethany
1
200
Google's AI Overviews - The New Search
badams
0
1.1k
The Invisible Side of Design
smashingmag
301
52k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
340
How STYLIGHT went responsive
nonsquared
100
6.2k
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.
ご清聴ありがとうご ざいました