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
470
高速開発のためのコード整理術
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
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
440
Google's AI Overviews - The New Search
badams
0
1.6k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Spectacular Lies of Maps
axbom
PRO
1
1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
480
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
550
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