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 DataStore
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
sutetotanuki
June 23, 2020
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今日から始めるAmplify DataStore
sutetotanuki
June 23, 2020
More Decks by sutetotanuki
See All by sutetotanuki
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
2
450
高速開発のためのコード整理術
sutetotanuki
1
1.1k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
710
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
sutetotanuki
0
2k
WEBエンジニア向けAI活用入門
sutetotanuki
0
1.1k
ブラウザ上で実行され、 AIアシスタント付きデータベース postgres.new を触ってみた
sutetotanuki
0
590
今時のCookie事情
sutetotanuki
0
770
高速案件立ち上げで使われるマッハテンプレートのフロントエンド技術選定
sutetotanuki
2
2.2k
Core Web Vitals を改善する Next.js の機能群
sutetotanuki
1
2.7k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Designing Experiences People Love
moore
143
24k
Building Applications with DynamoDB
mza
96
7.2k
Designing for humans not robots
tammielis
254
26k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
620
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Transcript
ాক ࠓ͔Β࢝ΊΔ"NQMJGZ%BUB4UPSF
ࣗݾհ ాক wαʔόʔαΠυΤϯδχΞ w"84ߏங ϞόΠϧΞϓϦͷόοΫΤϯυ"1* w"OESPJE /&8 w͖ͳ"84αʔϏε
w4 &$4 wۀͰ༻͢Δݴޠ w3VCZ (P 1ZUIPO +BWB4DSJQU ,PUMJO
ࠓ͢ࣄ w"84"NQMJGZ%BUB4UPSFͱʁ wجຊతͳ͍ํ wར༻্ͷҙ wϢʔεέʔε
AWS Amplify DataStore ͱʁ
"NQMJGZͱ Amplifyͱ
"NQMJGZ
"84"NQMJGZ$POTPMF ϗεςΟϯά
"84"NQMJGZ$-* $-*Ͱ"84ϦιʔεΛ࡞ͨ͠Γ ίʔυΛੜ͢Δ
"84"NQMJGZ-JCSBSJFT ΞϓϦέʔγϣϯʹΈࠐ·Ε ΔϥΠϒϥϦ܈
"NQMJGZ%BUB4UPSFͱ Amplify DataStore ͱ
"NQMJGZ%BUB4UPSFͷಛ wநͷߴ͍σʔλૢ࡞"1* wΦϑϥΠϯରԠ wσʔλڝ߹ͷ͠͞Λ͋Δఔܰݮ
%BUB4UPSF"1* w%BUB4UPSFTBWF w%BUB4UPSFRVFSZ w%BUB4UPSFEFMFUF w%BUB4UPSFPCTFSWF
%BUB4UPSF"1*$36% w%BUB4UPSFTBWF w%BUB4UPSFRVFSZ w%BUB4UPSFEFMFUF w%BUB4UPSFPCTFSWF ొɾߋ৽
औಘ আ
%BUB4UPSF"1*ϦΞϧλΠϜߋ৽ w%BUB4UPSFTBWF w%BUB4UPSFRVFSZ w%BUB4UPSFEFMFUF w%BUB4UPSFPCTFSWF ߋ৽௨
"NQMJGZ%BUB4UPSFσʔλͷྲྀΕ
"NQMJGZ%BUB4UPSFσʔλͷྲྀΕ
جຊతͳ͍ํ
جຊతͳखॱ w"NQMJGZ"QQΛ࡞ w(SBQI2-εΩʔϚΛ࡞ wεΩʔϚ͔ΒίʔυΛࣗಈੜɹ wΞϓϦέʔγϣϯͷΈࠐΈ
Πϝʔδ
"NQMJGZ$-*ΛΠϯετʔϧ $ npm install -g @aws-amplify/cli
"NQMJGZ"QQΛ࡞ $ amplify init w"NQMJGZʹඞཁͳϑΝΠϧΛੜ wରԠ͍ͯ͠ΔϑϨʔϜϫʔΫΛݕ
"1*Λ࡞ $ amplify add api w௨৴ํࣜΛબͿ ࠓճ(SBQI2- wೝূํࣜΛબͿ
ࠓճ$PHOJUPΛબ
(SBQI2-εΩʔϚ enum TodoStatus { WAITING DONE } type Todo
@model @auth(rules: [{allow: owner}]){ id: ID! owner: String title: String items: [TodoItem] @connection(name: "TodoItems") status: TodoStatus } type TodoItem @model { id: ID! owner: String content: String todo: Todo @connection(name: "TodoItems") status: TodoStatus }
(SBQI2-εΩʔϚ enum TodoStatus { WAITING DONE } type Todo
@model @auth(rules: [{allow: owner}]){ id: ID! owner: String title: String items: [TodoItem] @connection(name: "TodoItems") status: TodoStatus } type TodoItem @model { id: ID! owner: String content: String todo: Todo @connection(name: "TodoItems") status: TodoStatus } ྻڍܕ 50%0ຊମ 50%0ΞΠςϜ
(SBQI2-εΩʔϚόοΫΤϯυ type Todo @model @auth(rules: [{allow: owner}]){ NPEFMτϥϯεϑΥʔϜΛ͚ͭΔ͜ͱͰ "NQMJGZ͕ඞཁͳ"84ϦιʔεΛ࡞͢Δͷʹ
ඞཁͳίʔυΛੜ͢Δ
(SBQI2-εΩʔϚݖݶཧ type Todo @model @auth(rules: [{allow: owner}]){ owner: String
BVUIτϥϯεϑΥʔϜΛ͚ͭΔ͜ͱͰɺ͜ͷϞσϧ ʹΞΫηεͰ͖ΔݖݶΛ͚ͭΔ͜ͱ͕Ͱ͖Δ ࠓճϞσϧͷ࡞ऀͷΈ͕͜ͷϞσϧΞΫηε Ͱ͖ΔΑ͏ʹ͍ͯ͠Δ
(SBQI2-εΩʔϚؔ࿈ type Todo @model @auth(rules: [{allow: owner}]){ items: [TodoItem]
@connection(name: "TodoItems") type TodoItem @model { todo: Todo @connection(name: "TodoItems") DPOOFDUJPOτϥϯεϑΥʔϜͰϞσϧಉ࢜ͷ ؔ࿈Λઃఆ͢Δ͜ͱ͕Ͱ͖Δ
ϞσϧʹඞཁͳϑΝΠϧΛੜ $ amplify codegen models w(SBQI2-ͷεΩʔϚ͔ΒΞϓϦέʔγϣϯ ͕༻͢ΔϞσϧͷίʔυΛࣗಈੜ w(SBQI2-ͷίʔυΛࣗಈੜ
"84ڥΛߏங $ amplify push w"84ϦιʔεΛ࡞͠ɺόοΫΤϯυΛߏங ͢Δ
"NQMJGZ-JCSBSJFTΛΠϯετʔϧ $ yarn add aws-amplify aws-amplify-vue
$PHOJUPೝূ <template> <amplify-authenticator></amplify-authenticator> </template> ೝূํ๏ʹ$PHOJUPΛબΜͰ͍ΔͷͰ$PHOJUPͰ ϩάΠϯग़དྷΔύʔπΛΈࠐΉ $PHOJUPೝূࡁΈͷϢʔβʔ͕σʔλΛొ͢Δͱ BVUIτϥϯεϑΥʔϜͷޮՌͰίʔυΛ ॻ͔ͳͯࣗ͘ಈʹϞσϧอଘ࣌ʹઃఆ͞ΕΔ
Ϟσϧͷอଘ await DataStore.save( new Todo({ title: this.todoTitle, status: TodoStatus.WAITING
}) ); %BUB4UPSFTBWFʹϞσϧͷΠϯελϯεΛ͠ σʔλΛอଘ͠·͢
ؔ࿈ͷ͋ΔϞσϧͷอଘ async createTodoItem(todo) { await DataStore.save( new TodoItem({ todo:
todo }) ); DPOOFDUJPOτϥϯεϨʔλʔΛઃఆͨ͠ ϑΟʔϧυʹؔ࿈͢ΔϞσϧͷΠϯελϯεΛ ઃఆͯ͠อଘ͢Δ
ϞσϧͷσʔλΛऔಘ %BUB4UPSFRVFSZʹϞσϧΛ͠ɺ σʔλΛऔಘ͠·͢ async fetchTodos() { this.todos = await
DataStore.query(Todo, Predicates.ALL); },
ϞσϧͷσʔλΛݕࡧ %BUB4UPSFRVFSZʹୈҰҾʹϞσϧΛΘͨ͠ ୈ̎Ҿʹݕࡧ݅Λࢦఆ͢Δ ্هྫTUBUVT͕8"*5*/(ͷͷ͚ͩΛ நग़͢Δ this.todoItems = await DataStore.query(
TodoItem, c => c.status("eq", TodoStatus.WAITING) )
ؔ࿈ͷ͋ΔϞσϧͷσʔλΛݕࡧ GJMUFSͰؔ࿈Ϟσϧͷ*%͕ઃఆ͞Ε͍ͯΔσʔλ͚ͩ ΛߜΓࠐΉ async fetchTodoItems(todo) { this.todoItems = (
await DataStore.query(TodoItem, c => c.status("eq", TodoStatus.WAITING)) ).filter(item => item.todo && item.todo.id === todo.id); },
Ϟσϧͷߋ৽ͷϦΞϧλΠϜ௨ %BUB4UPSFPCTFSWFͷୈҰҾʹϞσϧΛΘͨ͠ ߋ৽͕͋ͬͨ߹ͷίʔϧόοΫΛઃఆ͢Δ DataStore.observe(Todo).subscribe(() => { this.fetchTodos(); });
Ϟσϧͷߋ৽ await DataStore.save( TodoItem.copyOf(todoItem, updated => { updated.status =
TodoStatus.DONE; }) ); ϞσϧͷΠϯελϯεΠϛϡʔλϒϧͳͷͰɺ ίϐʔ͠ΠϯελϯεͷΛ্ॻ͖ͨ͠ͷΛ อଘ͢Δ͜ͱͰߋ৽͢Δ
Ϟσϧͷσʔλͷআ await DataStore.delete(Todo, Predicates.ALL); %BUB4UPSFEFMFUFϝιουʹϞσϧΛ ͢͜ͱͰআ͢Δ
ҙ
ϩʔΧϧσʔλͷΫϦΞ async logout({ commit }) { await DataStore.clear(); }
ϩάΞτ࣌ʹϩʔΧϧσʔλΛΫϦΞ͢Δඞཁ ͕͋Δɻ ΫϦΞ͠ͳ͍ͱผͷϢʔβʔͰϩάΠϯͨ͠߹ ʹɺϩʔΧϧσʔλ͕ࠞࡏͯ͠͠·͏
Ϣʔεέʔε
Ϣʔεέʔε wϦΞϧλΠϜߋ৽͕ඞཁͳΞϓϦ wήʔϜɺνϟοτ wωοτϫʔΫ͕ෆ҆ఆͳॴͰ͏ ΞϓϦ
None