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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Skycat
June 16, 2018
Technology
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
未経験からの挑戦!超速ネイティブアプリ開発
PHPカンファレンス福岡2018のスポンサーセッションをさせていただいたときの資料です。
https://phpcon.fukuoka.jp/2018/
Skycat
June 16, 2018
More Decks by Skycat
See All by Skycat
秒速でFlutterプロジェクトのCI/CD環境を構築した話
skycat_me
2
4.5k
SVNとGitを同期した話~Subgit~
skycat_me
1
1.9k
Other Decks in Technology
See All in Technology
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
360
[ホンマでっか SRE] あなたはなぜ SRE に?
_awache
0
360
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
Digitization部 紹介資料
sansan33
PRO
2
7.8k
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
960
hookで自作する Claude Code の「実況ボード」
shinyasaita
2
230
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
130
紙 to デジタル
ichien178
0
380
atproto spaces概要
yamarten
0
110
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
3
900
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Bash Introduction
62gerente
615
220k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
Fireside Chat
paigeccino
42
4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
480
Designing for humans not robots
tammielis
254
26k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
500
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
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Ͱ։ൃͨ͘͠ͳͬ ͨͦ͜ͷ͋ͳͨʂʂ ҰॹʹϞϒϓϩ͠·ͤΜ͔ʂ
ੋඇɺϋγΰͷϒʔεʹ ༡ͼʹདྷ͍ͯͩ͘͞ʂʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠