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.5k
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
【登壇資料】AIエージェントに買い物をさせる ― Universal Commerce Protocol(UCP)の紹介」というタイトルで DevelopersIO 2026 Osaka Day 2
sutetotanuki
0
480
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
2
520
高速開発のためのコード整理術
sutetotanuki
1
1.2k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
790
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
sutetotanuki
0
2.1k
WEBエンジニア向けAI活用入門
sutetotanuki
0
1.1k
ブラウザ上で実行され、 AIアシスタント付きデータベース postgres.new を触ってみた
sutetotanuki
0
660
今時のCookie事情
sutetotanuki
0
820
高速案件立ち上げで使われるマッハテンプレートのフロントエンド技術選定
sutetotanuki
2
2.2k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
440
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Google's AI Overviews - The New Search
badams
0
1.7k
BBQ
matthewcrist
90
10k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
290
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
A better future with KSS
kneath
240
18k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Navigating Weather and Climate Data
rabernat
0
590
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