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
460
高速開発のためのコード整理術
sutetotanuki
1
1.1k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
730
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
sutetotanuki
0
2k
WEBエンジニア向けAI活用入門
sutetotanuki
0
1.1k
ブラウザ上で実行され、 AIアシスタント付きデータベース postgres.new を触ってみた
sutetotanuki
0
600
今時のCookie事情
sutetotanuki
0
780
高速案件立ち上げで使われるマッハテンプレートのフロントエンド技術選定
sutetotanuki
2
2.2k
Core Web Vitals を改善する Next.js の機能群
sutetotanuki
1
2.7k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
Why Our Code Smells
bkeepers
PRO
340
58k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Exploring anti-patterns in Rails
aemeredith
4
510
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
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