Upgrade to Pro — share decks privately, control downloads, hide ads and more …

未経験からの挑戦!超速ネイティブアプリ開発

D36c4c82c7535af1d46ef731a8c0275c?s=47 Skycat
June 16, 2018

 未経験からの挑戦!超速ネイティブアプリ開発

PHPカンファレンス福岡2018のスポンサーセッションをさせていただいたときの資料です。
https://phpcon.fukuoka.jp/2018/

D36c4c82c7535af1d46ef731a8c0275c?s=128

Skycat

June 16, 2018
Tweet

Transcript

  1. גࣜձࣾϋγΰ দຊ୓໵ !TLZDBU@NF ະܦݧ͔Βͷ௅ઓʂ ௒଎ωΠςΟϒΞϓϦ։ൃ

  2. ࣗݾ঺հ wদຊ୓໵ʢʣ wαʔόʔαΠυدΓΤϯδχΞ w1ZUIPO %BSU 1)1 +BWB4DSJQU  $ $

    1FSM +BWB… wגࣜձࣾϋγΰ೥݄ೖࣾ !TLZDBU@NF
  3. ࣗࣾ঺հ αΠόʔΤʔδΣϯτάϧʔϓͱͯ͠ ෱ԬΛڌ఺ʹήʔϜӡӦ΍৽ن։ൃ ͳͲ༷ʑͳࣄۀΛߦͳ͓ͬͯΓ·͢ɻ IUUQTBU IUUQTDPMMFHJOPKQ

  4. IUUQTBU

  5. IBTJHP!ͷϞόΠϧ ΞϓϦ։ൃʹ͍ͭͯ ͷ࿩Λ͠·͢ 'MVUUFS

  6. ٕज़બఆ w'MVUUFS wJ04"OESPJEରԠͷΫϩεϓϥοτϑΥʔϜ w։ൃݴޠ͸%BSU wڧྗͳ*%&ʹରԠ w*OUFMMJ+*%&"74$PEF

  7. ٕज़બఆ'MVUUFS࠾༻ wֶशίετͷ໰୊ wJ04"OESPJEΤϯδχΞ͕͍ͳ͔ͬͨͨΊɺ ΫϩεϓϥοτϑΥʔϜʹ͢Δ͜ͱͰֶश ίετΛ཈͔͑ͨͬͨ wର߅അ w3FBDU/BUJWF9BNBSJO wͰ΋৽͍͜͠ͱ΍Γ͔ͨͬͨΜ΍ʂ

  8. 'MVUUFSͱ͸ "OESPJEJ04ʹରԠͨ͠ (PPHMFൃͷϞόΠϧ6*ϑϨʔϜϫʔΫ wݴޠ͸%BSU ॻ͖΍͍͢ʂ  wಠࣗϨϯμϦϯά wෳ਺ͷϓϥοτϑΥʔϜͰ׬શಉҰͷ6* w·ͩϕʔλ W

  9. 'MVUUFSͬͯԿ͕ྑ͍ͷʁ wେྔͷ8JEHFU͕༻ҙ͞Ε͍ͯΔʢ6*ύʔπʣ w ͜ͷ8JEHFUΛ૊Έ߹Θͤͯ6*Λ࡞͍ͬͯ͘ wεςʔτϨεͳߴ଎ϗοτϦϩʔυػೳ w ։ൃ͕ͱͯ΋ޮ཰Α͘ਐΊΒΕΔ w։ൃ؀ڥߏங͕ͱͯ΋؆୯ w ґଘੑ֬ೝͷίϚϯυˠqVUUFSEPDUPS

  10. 6*Λ૊ΜͰΈΔ w ͜ͷ8JEHFUΛ૊Έ߹Θͤͯ6*Λ࡞͍͖ͬͯ·͢ *NBHF 5FYU 5BH 5BH $PMVNO $PMVNO *NBHF

    5FYU 3PX 5BH 5BH 8JEHFU5SFF 3PX
  11. ͔͜͜Β͸࣮ࡍʹ։ൃΛॳ Ίͯߦͬͯେมͩͬͨ΋ͷ Λ঺հ͍͖ͯ͠·͢

  12. 'MVUUFSঢ়ଶ؅ཧ $PMVNO $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU %BUB

    %BUB
  13. 'MVUUFSঢ়ଶ؅ཧ $PMVNO %BUB $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU

    %BUB %BUB *OIFSJUFE8JEHFU
  14. 'MVUUFSঢ়ଶ؅ཧ w4DPQFE@NPEFM w *OIFSJUFE8JEHFUΛแؚ֦ு͍ͯ͠Δ֎෦ύοέʔδ w *OIFSJUFE8JEHFUΛܧঝͨ͠ঢ়ଶ؅ཧ.PEFMΛఆٛ͢Δ ͜ͱͰɺͦΕͧΕ*OIFSJUFE8JEHFUΛఆٛ͠ͳͯ͘Α͘ ͳͬͯͱͯ΋εοΩϦ͢ΔΑʂ w IUUQTQVCEBSUMBOHPSHQBDLBHFTTDPQFE@NPEFM

  15. 'MVUUFSঢ়ଶ؅ཧ Ͱ΋ɾɾɾ ͪΐͬͱ·ͯΑɾɾɾ ͟Θɾɾɾ͟Θɾɾɾɾ

  16. 'MVUUFSঢ়ଶ؅ཧ 6*ͱϩδοΫ͕ 混沌ͱ͍ͯ͠Δʂʁ

  17. @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
  18. #-P$ΞʔΩςΫνϟ w #VTJOFTT-PHJD$PNQPOFOU w 6*ͱϩδοΫΛ׬શ෼཭ʂ w #VJMESFBDUJWFNPCJMFBQQTXJUI'MVUUFS (PPHMF*0  w

    IUUQTZPVUVCF34H#&Q0*
  19. #-P$ΞʔΩςΫνϟ w ࡾݪଇ w ೖྗͱग़ྗ͸γϯϓϧͳ4USFBN4JOL͔͠ڐ͞Εͳ͍ w ґଘੑ͸஫ೖՄೳͰϓϥοτϑΥʔϜʹґଘ͠ͳ͍ w ϓϥοτϑΥʔϜ͝ͱͷ෼ذ͠ͳ͍ w

    ͜ΕΒΛक͍ͬͯΔͳΒԿͰ΋΍ͬͯΑ͠ʂ Flutter / AngularDart – Code sharing, better together (DartConf 2018) IUUQTZPVUVCF1-)MOX)H1&
  20. #-P$ʹͯ͠Α͔ͬͨ͜ͱ w 6*ͱϩδοΫ͕෼཭͞ΕΔͨΊ w γϯϓϧʹ࣮૷ʹͰ͖Δʂ w Մಡੑ͕61ʂ w ςετॻ͖΍͍͢ʂ

  21. ·ͱΊ w ৽͍ٕ͠ज़͸ָ͍͚͠Ͳ݁ߏἚͷಓ w ·ͣ೔ຊޠࢿྉ͕΄ͱΜͲͳ͍ w ͨͩ͠(PPHMFͱ͍͏࠷ڧͷ஥͕͍ؒΔͨΊͱͬͯ΋҆৺ Ͱ͖Δʂ w %BSU΋ֶशίετ͕ͦ͜·Ͱߴ͘ͳͯ͘Α͔ͬͨ

    w 'MVUUFS͸͍͍ͧʂ
  22. ͓·͚ ։ൃॳظʜ 'MVUUFS΍ͬͯΈΑ͏ͥʂ ͱબఆͨ͠΋ͷͷʜ શһ%BSU΋'MVUUFS΋ະܦݧ

  23. ͦ͜ͰϞϒϓϩͩʂʂ

  24. Ϟϒϓϩάϥϛϯά࠷ߴʂ w υϥΠόͷ࣋ͪ࣌ؒ͸෼ʂ w ͦͷଞͷਓ͸φϏήʔλ ࢦࣔग़͠  w ΈΜͳͰ࣮ࡍʹ࣮૷͢ΔͷͰɺશһͷཧղ౓͕ߴ·Δɻ w

    φϨοδͷڞ༗͕Ͱ͖ͯͱͯ΋͍͍ײ͡ʂ υϥΠό ίʔσΟϯά୲౰ Λॱ൪Ͱճ͍ͯ͘͠ɻ ͦͷଞͷਓ͸φϏήʔλʔʢࢦࣔग़͠ʣͱͯ͠ࢀՃ͢Δɻ
  25. ٸʹ'MVUUFSͰ։ൃͨ͘͠ͳͬ ͨͦ͜ͷ͋ͳͨʂʂ ҰॹʹϞϒϓϩ͠·ͤΜ͔ʂ

  26. ੋඇɺϋγΰͷϒʔεʹ ༡ͼʹདྷ͍ͯͩ͘͞ʂʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠