Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Amplify × ブロックチェーン で取引管理システムを作った話
Search
北見海貴
July 27, 2023
Programming
190
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.6k
エンジニアがデザインまで担うための AI駆動UIデザイン/フロントエンド開発実践
kitami
4
2.1k
【PoCで終わらない】運用フェーズまで見据えたAI駆動UIデザイン/フロントエンド開発実践
kitami
1
650
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
130
Are APIs Still Relevant in the AI Era?
soyuka
0
440
Workers Cache を知る
syumai
0
340
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2k
パーソナライズPodcastを作った話
repunit11
0
130
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
480
Domain-Driven Transformation
hschwentner
2
2.3k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
240
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
140
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Product Roadmaps are Hard
iamctodd
55
13k
Are puppies a ranking factor?
jonoalderson
2
4k
Designing for humans not robots
tammielis
254
26k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Technical Leadership for Architectural Decision Making
baasie
3
590
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.
ご清聴ありがとうご ざいました