Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
未経験からの挑戦!超速ネイティブアプリ開発
Search
Skycat
June 16, 2018
Technology
0
1.7k
未経験からの挑戦!超速ネイティブアプリ開発
PHPカンファレンス福岡2018のスポンサーセッションをさせていただいたときの資料です。
https://phpcon.fukuoka.jp/2018/
Skycat
June 16, 2018
Tweet
Share
More Decks by Skycat
See All by Skycat
秒速でFlutterプロジェクトのCI/CD環境を構築した話
skycat_me
2
4.4k
SVNとGitを同期した話~Subgit~
skycat_me
1
1.9k
Other Decks in Technology
See All in Technology
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
11
1.6k
Data & AIの未来とLakeHouse
ishikawa_satoru
0
720
QAエンジニアがプロダクト専任で チームの中に入ると。。。?/登壇資料(杉森 太樹)
hacobu
PRO
0
190
CDKの魔法を少し解いてみる ― synth・build・diffで覗くIaCの裏側 ―
takahumi27
1
140
CodexでもAgent Skillsを使いたい
gotalab555
9
4.4k
ググるより、AIに聞こう - Don’t Google it, ask AI
oikon48
0
830
マウントとるやつ、リリースするやつ
otsuki
1
120
What's the recommended Flutter architecture
aakira
1
1k
エンジニア採用と 技術広報の取り組みと注力点/techpr1112
nishiuma
0
130
設計は最強のプロンプト - AI時代に武器にすべきスキルとは?-
kenichirokimura
1
350
日々のSlackアラート確認運用をCustom Chat Modesで楽にした話 / 日々のSlackアラート確認運用をCustom Chat Modesで楽にした話
imamotohikaru
0
440
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
1
170
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
The Invisible Side of Design
smashingmag
302
51k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Transcript
גࣜձࣾϋγΰ দຊ !TLZDBU@NF ະܦݧ͔Βͷઓʂ ωΠςΟϒΞϓϦ։ൃ
ࣗݾհ wদຊʢʣ wαʔόʔαΠυدΓΤϯδχΞ w1ZUIPO %BSU 1)1 +BWB4DSJQU $ $
1FSM +BWB… wגࣜձࣾϋγΰ݄ೖࣾ !TLZDBU@NF
ࣗࣾհ αΠόʔΤʔδΣϯτάϧʔϓͱͯ͠ ԬΛڌʹήʔϜӡӦ৽ن։ൃ ͳͲ༷ʑͳࣄۀΛߦͳ͓ͬͯΓ·͢ɻ IUUQTBU IUUQTDPMMFHJOPKQ
IUUQTBU
IBTJHP!ͷϞόΠϧ ΞϓϦ։ൃʹ͍ͭͯ ͷΛ͠·͢ 'MVUUFS
ٕज़બఆ w'MVUUFS wJ04"OESPJEରԠͷΫϩεϓϥοτϑΥʔϜ w։ൃݴޠ%BSU wڧྗͳ*%&ʹରԠ w*OUFMMJ+*%&"74$PEF
ٕज़બఆ'MVUUFS࠾༻ wֶशίετͷ wJ04"OESPJEΤϯδχΞ͕͍ͳ͔ͬͨͨΊɺ ΫϩεϓϥοτϑΥʔϜʹ͢Δ͜ͱͰֶश ίετΛ͔͑ͨͬͨ wର߅അ w3FBDU/BUJWF9BNBSJO wͰ৽͍͜͠ͱΓ͔ͨͬͨΜʂ
'MVUUFSͱ "OESPJEJ04ʹରԠͨ͠ (PPHMFൃͷϞόΠϧ6*ϑϨʔϜϫʔΫ wݴޠ%BSU ॻ͖͍͢ʂ wಠࣗϨϯμϦϯά wෳͷϓϥοτϑΥʔϜͰશಉҰͷ6* w·ͩϕʔλ W
'MVUUFSͬͯԿ͕ྑ͍ͷʁ wେྔͷ8JEHFU͕༻ҙ͞Ε͍ͯΔʢ6*ύʔπʣ w ͜ͷ8JEHFUΛΈ߹Θͤͯ6*Λ࡞͍ͬͯ͘ wεςʔτϨεͳߴϗοτϦϩʔυػೳ w ։ൃ͕ͱͯޮΑ͘ਐΊΒΕΔ w։ൃڥߏங͕ͱͯ؆୯ w ґଘੑ֬ೝͷίϚϯυˠqVUUFSEPDUPS
6*ΛΜͰΈΔ w ͜ͷ8JEHFUΛΈ߹Θͤͯ6*Λ࡞͍͖ͬͯ·͢ *NBHF 5FYU 5BH 5BH $PMVNO $PMVNO *NBHF
5FYU 3PX 5BH 5BH 8JEHFU5SFF 3PX
͔͜͜Β࣮ࡍʹ։ൃΛॳ Ίͯߦͬͯେมͩͬͨͷ Λհ͍͖ͯ͠·͢
'MVUUFSঢ়ଶཧ $PMVNO $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU %BUB
%BUB
'MVUUFSঢ়ଶཧ $PMVNO %BUB $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU
%BUB %BUB *OIFSJUFE8JEHFU
'MVUUFSঢ়ଶཧ w4DPQFE@NPEFM w *OIFSJUFE8JEHFUΛแؚ֦ு͍ͯ͠Δ֎෦ύοέʔδ w *OIFSJUFE8JEHFUΛܧঝͨ͠ঢ়ଶཧ.PEFMΛఆٛ͢Δ ͜ͱͰɺͦΕͧΕ*OIFSJUFE8JEHFUΛఆٛ͠ͳͯ͘Α͘ ͳͬͯͱͯεοΩϦ͢ΔΑʂ w IUUQTQVCEBSUMBOHPSHQBDLBHFTTDPQFE@NPEFM
'MVUUFSঢ়ଶཧ Ͱɾɾɾ ͪΐͬͱ·ͯΑɾɾɾ ͟Θɾɾɾ͟Θɾɾɾɾ
'MVUUFSঢ়ଶཧ 6*ͱϩδοΫ͕ 混沌ͱ͍ͯ͠Δʂʁ
@override Widget build(BuildContext context) { TodoListContainerState container = TodoListContainer.of(context); //
ϑΟϧλϦϯά͍ͨ͠ switch (container.widget.filterMode) { case FilterMode.checked: filteredTodoList = container.getCheckedTodoList(); break; case FilterMode.unchecked: filteredTodoList = container.getUncheckedTodoList(); break; case FilterMode.none: default: List<Entry> todoList = container.getTodoList(); if (todoList != null) { filteredTodoList = todoList; } break; } container.addLoadingEndListener(this); return new Scaffold( body: new ListView.builder( padding: const EdgeInsets.all(16.0), itemCount: filteredTodoList.length, itemBuilder: (context, i) => new TodoEntryItem(filteredTodoList[i])), ); } ඳըϝιου ϩδοΫ ඳը͢Δ8JEHFU
#-P$ΞʔΩςΫνϟ w #VTJOFTT-PHJD$PNQPOFOU w 6*ͱϩδοΫΛશʂ w #VJMESFBDUJWFNPCJMFBQQTXJUI'MVUUFS (PPHMF*0 w
IUUQTZPVUVCF34H#&Q0*
#-P$ΞʔΩςΫνϟ w ࡾݪଇ w ೖྗͱग़ྗγϯϓϧͳ4USFBN4JOL͔͠ڐ͞Εͳ͍ w ґଘੑೖՄೳͰϓϥοτϑΥʔϜʹґଘ͠ͳ͍ w ϓϥοτϑΥʔϜ͝ͱͷذ͠ͳ͍ w
͜ΕΒΛक͍ͬͯΔͳΒԿͰͬͯΑ͠ʂ Flutter / AngularDart – Code sharing, better together (DartConf 2018) IUUQTZPVUVCF1-)MOX)H1&
#-P$ʹͯ͠Α͔ͬͨ͜ͱ w 6*ͱϩδοΫ͕͞ΕΔͨΊ w γϯϓϧʹ࣮ʹͰ͖Δʂ w Մಡੑ͕61ʂ w ςετॻ͖͍͢ʂ
·ͱΊ w ৽͍ٕ͠ज़ָ͍͚͠Ͳ݁ߏἚͷಓ w ·ͣຊޠࢿྉ͕΄ͱΜͲͳ͍ w ͨͩ͠(PPHMFͱ͍͏࠷ڧͷ͕͍ؒΔͨΊͱͬͯ҆৺ Ͱ͖Δʂ w %BSUֶशίετ͕ͦ͜·Ͱߴ͘ͳͯ͘Α͔ͬͨ
w 'MVUUFS͍͍ͧʂ
͓·͚ ։ൃॳظʜ 'MVUUFSͬͯΈΑ͏ͥʂ ͱબఆͨ͠ͷͷʜ શһ%BSU'MVUUFSະܦݧ
ͦ͜ͰϞϒϓϩͩʂʂ
Ϟϒϓϩάϥϛϯά࠷ߴʂ w υϥΠόͷ࣋ͪ࣌ؒʂ w ͦͷଞͷਓφϏήʔλ ࢦࣔग़͠ w ΈΜͳͰ࣮ࡍʹ࣮͢ΔͷͰɺશһͷཧղ͕ߴ·Δɻ w
φϨοδͷڞ༗͕Ͱ͖ͯͱ͍͍ͯײ͡ʂ υϥΠό ίʔσΟϯά୲ Λॱ൪Ͱճ͍ͯ͘͠ɻ ͦͷଞͷਓφϏήʔλʔʢࢦࣔग़͠ʣͱͯ͠ࢀՃ͢Δɻ
ٸʹ'MVUUFSͰ։ൃͨ͘͠ͳͬ ͨͦ͜ͷ͋ͳͨʂʂ ҰॹʹϞϒϓϩ͠·ͤΜ͔ʂ
ੋඇɺϋγΰͷϒʔεʹ ༡ͼʹདྷ͍ͯͩ͘͞ʂʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠