Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Full Kotlin をプロダクションで使いリリースした話

Full Kotlin をプロダクションで使いリリースした話

Gotanda.mobile #1 in Mobile Factory で発表した資料です。
http://gotandamb.connpass.com/event/30705/

Pine Mizune

May 20, 2016
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ
  2. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ
  3. • +BWBͱͷ૬ޓӡ༻ੑ • ؆ܿͳจ๏ • OVMM҆શ • ߴ֊ؔ਺ • ֦ுؔ਺

    • σϑΥϧτ࣮૷Մೳͳ JOUFSGBDF ,PUMJO +BWBΛ࢖͍΍͘͢ൃలͤͨ͞ݴޠ
  4. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ
  5. • 3 層アーキテクチャ – Model <-> ViewModel <-> View •

    Full Kotlin – プロジェクトコード -> 基本的に全て Kotlin – 依存ライブラリ -> Kotlin 製を積極的に採用 • RxJava 全面採用
  6. • 3Y+BWB 3Y#JOEJOH • LPUUFSLOJGF • 3FUSPGJU ௨৴ • 1JDBTTP

    ը૾ • .PDLJUP 1PXFS.PDL ςετ • 3FBMN
  7. Activity / Fragment / View – 描画処理 ViewModel – View

    への Binding 処理 Model - Observable の加工処理 0CTFSWBCMF 3Y 3Y#JOEJOH 0CTFSWBCMF 3Y 3FUSPGJU
  8. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ
  9. શମͷϑΝΠϧߏ੒ ,PUMJO  +BWB  (SPPWZ  言語別 ファイル数 比率

    ü ࣗಈੜ੒ίʔυ ü ೝূपΓ ü (SBEMF ü ,PUMJO  GJMFT ü ΄΅શͯͷιʔείʔυ
  10. ߏ੒ཁૉ͝ͱͷൺ཰ 7JFX  7JFX.PEFM  .PEFM  "1*  0UIFS

     構成要素別 ファイル数 比率 ü MBZPVU YNM ϑΝΠϧؚ·ͣ ü "DUJWJUZ ü 'SBHNFOU ü ଟ਺ͷ $VTUPN7JFX ü "1*ΫϥΠΞϯτ ü ࣗಈੜ੒ίʔυ ü 7JFXͱ .PEFMͷ݁߹ॲཧ
  11. • ,PUMJO ͷഁյతมߋʹΑΓಈ࡞͠ͳ͘ͳΔ – WҎલͷ࿩ɺݱࡏ͸҆ఆ • ϝιου਺͕૿͑Δ – LPUMJOTUEMJC ΁ͷґଘͰ

     ૿͑Δ – ͋Δఔ౓ͷن໛Ҏ্ .VMUJ%FY ඞਢ • +BWB͕ॻ͚ͳ͘ͳΔ – ,PUMJO ͕ૉ੖Β͗ͯ͢͠ +BWBͷίʔυΛॻ͖ͨ͘ͳ͘ͳΔ
  12. ίʔυ͕୹͘ͳΔ QVCMJDDMBTT)FMMP\ QSJWBUF4USJOHOBNF QVCMJD)FMMP 4USJOHOBNF \ UIJTOBNF OBNF ^ QVCMJD4USJOHHFU/BNF

    \ SFUVSOUIJTOBNF ^ QVCMJDWPJETFU/BNF 4USJOHOBNF \ UIJTOBNF OBNF ^ QVCMJDWPJEIFMMP \ 4ZTUFNPVUQSJOUMO l)FMMPl UIJTOBNF  ^ ^ class Hello(var name: String) { fun hello() { println("Hello $name") } } Kotlin Java 4 行 15 行 ˞ ຊ౰ʹ౳ՁίʔυͰ͢
  13. OVMM҆શ Java Kotlin QVCMJDWPJEQSJOU4USJOH-FOHUI 4USJOHTUS \ JG TUS OVMM \

    4ZTUFNPVUQSJOUMO TUSMFOHUI  ^ ^ fun printStringLength(str: String) { println(str.length) } σϑΥϧτͰ͸ OPOOVMM fun printStringLength(str: String?) { str?.let { println(it.length) } } OVMMBCMF Ͱѻ͏͜ͱ΋Մೳ
  14. ίϨΫγϣϯϝιου͕ॆ࣮ ࢀߟIUUQTLPUMJOMBOHPSHBQJMBUFTUKWNTUEMJCLPUMJODPMMFDUJPOT  NBQ\JU ^SFEVDF\B CB C^ MFU\QSJOUMO JU ^

    ྫʙ ۮ਺ͷ࿨Λදࣔ ଞɺ--Ͱ͸ఆ൪ͳϝιου͕ඪ४ 例: forEach / filter / map / reduce / all / any / first / last
  15. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ
  16. ໨࣍ • ,PUMJO ͱ͸ • ։ൃͨ͠ΞϓϦͷ঺հ – ΞʔΩςΫνϟ – ґଘϥΠϒϥϦ

    • 'VMM,PUMJO Ͱ։ൃͯ͠Έͯ – ϑΝΠϧߏ੒ – ྑ͘ͳ͔ͬͨ఺ ྑ͔ͬͨ఺ • Α͋͘Δ࣭໰ • ·ͱΊ