Skip to content

Latest commit

ย 

History

History
389 lines (269 loc) ยท 12.3 KB

0422_DroidKnights_2018.md

File metadata and controls

389 lines (269 loc) ยท 12.3 KB

DroidKnights 2018

DroidKnights 2018

  • โฐ ์ผ์‹œ : 2018. 04. 22 (์ผ)
  • ๐Ÿ’ ์ฃผ์ตœ : DroidKnights Community
  • โ›ณ ์žฅ์†Œ : ์ฝ”์—‘์Šค
  • ๐Ÿ”— ๋งํฌ : https://droidknights.github.io/2018/

๐Ÿ‘ ์ดํ‰

  • ๋‚˜์˜ ์ฒซ ๊ฐœ๋ฐœ ์ปจํผ๋Ÿฐ์Šค๋กœ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋‚˜๋ฅผ ์žˆ๊ฒŒ ํ•ด์ค€ ๊ณ ๋งˆ์šด ํ–‰์‚ฌ.
  • ์ด๋•Œ ์ฒ˜์Œ ๋ฐฐ์›Œ์„œ ์•„์ง๊นŒ์ง€๋„ ์ž˜ ์จ๋จน๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค. ์—ฌ๋Ÿฌ๋ชจ๋กœ ์‹œ์•ผ๋ฅผ ํŠธ์ด๊ฒŒ ํ•ด์ค€ ์ปจํผ๋Ÿฐ์Šค.
  • 2๋…„ ๋’ค์—๋Š” ๋‚˜๋„ ๋ฐœํ‘œ๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ–ˆ๋Š”๋ฐ...

๐Ÿ“ธ ์ธ์ฆ์ƒท

์ธ์ฆ์ƒท

1. No More Fragment, No More Activity

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์ •์Šน์šฑ
์™œ ๋‹จ์ผ ์•กํ‹ฐ๋น„ํ‹ฐ ์ธ๊ฐ€?

์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ˆ˜๊ฐ€ QA ํฌ์ธํŠธ์™€ ๋น„๋ก€ (์ด์Šˆ, ์ €์‚ฌ์–‘ ๊ธฐ์ข… ๋ณ„ ์ด์Šˆ)

Illegal State Exception  -> ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ณต์› ๊ณผ์ •์—์„œ ๋‚˜๋Š” ์ด์Šˆ

Map Base Application -> ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ์„ฑ์‹œ ๋งต ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋†’์€ ๋ฆฌ์†Œ์Šค ๋น„์šฉ -> ๋งต์„ ๋‹จ์ผ๋กœ ์ ‘๊ทผํ•˜์ž

ํ™•์žฅ์„ฑ ๋ฌธ์ œ  -> ๊ธฐ๋Šฅ๋ณ„ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ „ํ™˜๋  ๋–„ ๋งˆ๋‹ค ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ํ•„์š”ํ•จ
-> 1๊ฐœ ์ˆ˜์ •์˜ ์ˆ˜๋งŽ์€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ๋ฐœ์ƒ

๋ทฐ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋ฐฉ๋ฒ•
ํ…Œ์Šคํ„ฐ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ

์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ๋“ค
 *State machine๊ณผ view Updater
ViewUpdater sm์— ์ „๋‹ฌํ•ด์ฃผ๋ฉด ๋‹ค์‹œ ๋ทฐ์—…๋ฐ์ดํ„ฐ๊ฐ€ ๋ทฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„์›Œ์ฃผ๋Š”
๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ํ™œ์šฉ

*๋ผ์šฐํ„ฐ์™€ ๋…ธ๋“œ
UX ๊ธฐ๋ฐ˜ ๋ผ์šฐํ„ฐ ํ…Œ์ด๋ธ”
ํ™”๋ฉด ๋‹ค์œ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋…ธ๋“œ

๋ƒ… ์ ‘๊ทผ์„ฑ

๋งต์˜ ๋‹จ์ผํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋„ ์ ‘๊ทผํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋งตํ”ฝ์ณ


์ตํ„ฐ๋ ‰์…˜ ๋Œ€์‘
๋ฐฑํ‚ค ์•ก์…˜
๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ์™€์˜ ํ†ต์‹ 
๋ทฐ/์•กํ‹ฐ๋น„ํ‹ฐ ๋ผ์ดํ”„์‚ฌ์ดํด  -> rx/์ž๋ฐ” ์‚ฌ์šฉ, ๋‹จ rx๋ผ์ดํ”„์‚ฌ์ดํด ์‚ฌ์šฉ x

**์‹ค์ œ ๊ตฌํ˜„
์Šคํ…Œ์ดํŠธ ๋จธ์‹ 
์™ธ๋ถ€์—์„œ ์Šคํ…Œ์ดํŠธ ๋จธ์‹  ๋™์ž‘ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋”ฐ๋กœ ๋‘ 
์ƒํƒœ์ •๋ณด์™€ ์ƒํƒœ๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•  ํ…Œ๋””ํ„ฐ ์ •์˜
๋˜๋‹ฌ๋ฐ›์€ ์ƒํƒœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐฑ์‹ ํ•  ๋ทฐ๋ฅผ ์ •์˜
์ƒํƒœ์ •๋ณด์™€ ์ƒˆ๋กฑ๋ˆ„ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ทฐ๋ฅผ ๋„์›œ

์Šคํ…Œ์ดํŠธ ๋จธ์‹œ๋Š” ์ตœ์ดˆ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์‹œ์ž‘

์Šคํ…Œ์ดํŠธ ๋จธ์‹  - ๋ทฐ์—…๋ฐ์ดํ„ฐ - ๋ทฐ - ๋ทฐ๋ชจ๋ธ

๋ผ์šฐํ„ฐ์™€ ๋…ธ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ทฐ์™€ ๋ทฐ๋ชจ๋ธ์„ ๊ด€๋ฆฌํ•˜๋ฉด
ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋ทฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค -> Backํ‚ค ์•ก์…˜ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

๋ผ์šฐํ„ฐ๋กœ ๋ถ„๊ธฐ -> ๋…ธ๋“œ๋กœ ๋„์›€

๋ผ์šฐํ„ฐ ๋…ธ๋“œ ํ™œ์šฉ์˜ ์žฅ์  : UX๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด ๋ผ์šฐํ„ฐ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ

ํ˜„์žฌ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ๋งŒ ์•Œ ์ˆ˜์žˆ๊ฒŒ ์„ค์ •
-> ๋ถ€๋ชจ๋…ธ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ

๋ ˆ์ด์–ด๋ง ๋งต
๋™์‹œ์— ๋งต์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค

์•กํ‹ฐ๋น„ํ‹ฐ ๋ฆฌ์ ˆํŠธ ๋งค๋‹ˆ์ €
์˜จ์•กํ‹ฐ๋น„ํ‹ฐ ๋ฆฌ์ ˆํŠธ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฆฌ์ ˆํŠธ ๋งค๋‹ˆ์ €๊ฐ€ ๋ฐ›์•„์„œ
์•กํ‹ฐ๋น„์ด ์˜จ๋ฆฌ์คŒ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณต์› ๋ฐ ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๊ฒŒ๋”

์‚ฌ๋‚ด์šฉ Android Stuido์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ
๋ผ์šฐํ„ฐ ํ•™์Šต ํ”„๋กœ์ ํŠธ

๋Œ€๊ฑฐ ํ™œ์šฉ
๋ธ”๋ฃจ๋ผ์ธ ๋žฉ์˜ ์ปจ๋•ํ„ฐ
์šฐ๋ฒ„์˜ ๋ฆฝ๋Š
์Šคํ€˜์–ด์˜ ์ฝ”๋””๋„ค์ดํ„ฐ

๊ต‰์žฅํžˆ ๋งŽ์€ ์ธํ„ฐ๋ž™์…˜์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์—

๊ฐ€๋ฒผ์šด ์•ฑ์€ ์ผ๋ฐ˜์ ์ธ MVVM, MVP๋กœ ๊ตฌํ˜„

2. Next Step Architecture

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๋‚จ์ƒ๊ท , ์ •ํ˜„์ง€
Nxt step Archt

์บ์‹œ์Šฌ๋ผ์ด๋“œ - ๋ฌธํ™”์ƒํ’ˆ๊ถŒ ์บ์‹œ์„œ๋น„์Šค
6๋…„์ž ์„œ๋น„์Šค

์˜ค๋ž˜๋œ ์•ฑ์€ ์–ด๋–ป๊ฒŒ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐ›์•„๋“ค์ด๊ณ  ์•„ํ‚คํ…์ณ๋ฅผ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€?

์•„ํ‚คํ…์ณ๋Š” ๊ฐœ๋ฐœ์ž๋งŒ ํ•˜๋Š” ์˜์—ญ์ด ์•„๋‹ˆ๋‹ค
-> ์กฐ์ง, ๋น„์ง€๋‹ˆ์Šค, ๊ธฐ์ˆ  ์„ธ๊ฐ€์ง€์˜ ์˜ํ–ฅ์„ ๋ชจ๋‘ ๋ฐ›๋Š”๋‹ค.
์กฐ์ง : ๊ฐœ๋ฐœ๋ฌธํ™”
๋น„์ฆˆ๋‹ˆ์Šค : ์š”๊ตฌ์‚ฌํ•ญ

1. ๊ฐœ๋ฐœ๋ฌธํ™”
  ์• ์ž์ผ, ์Šคํฌ๋Ÿผ, XP
  ์• ์ž์ผ์„ ์กฐ์ง๋ฌธํ™”๋กœ๋งŒ ์ƒ๊ฐํ•˜์ง€๋งŒ, PO๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ณผ์ œ๋ฅผ ์„ ์ •ํ•˜๋Š”๊ฐ€, ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€๋„ ์ค‘์š”

  ALGIE
  ์Šคํฌ๋Ÿผ
  KANBAN

  MVP - ๋ฏธ๋‹ˆ๋ฉˆ, Viable, Product
  :๋นจ๋ฆฌ ์‹คํŒจํ•ด์„œ ํšจ์œจ์ ์ธ ์‹คํŒจ๋ฅผ ํ†ตํ•ด ๋ฐฐ์šด๋‹ค.
  ๋ชจ๋“  ์ƒํ™ฉ์— MVP๋ฅผ ์ ์šฉํ•  ์ˆœ ์—†๋‹ค - ์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ฃผ ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ (SI)

  ๋ฆด๋ฆฌ์ฆˆ ์ฃผ๊ธฐ๋ฅผ 1์ฃผ์ผ

  ๋‹จ๊ณ„์  ๋ฐฐํฌ : 25%์”ฉ ๋‚˜๋ˆ ์„œ ๋ฐฐํฌ -

  ์˜ค๋ ˆ์ผ๋ฆฌ Code Simplicity : ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•˜์ž
  -> ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชฉ์ ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์„ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
  ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋ฐ”๋žŒ์งํ•œ ์ •๋„ = ( ํ˜„์žฌ์˜ ๊ฐ€์น˜ + ๋ฏธ๋ž˜์˜ ๊ฐ€์น˜ ) / ( ๊ตฌํ˜„์„ ์œ„ํ•œ ๋…ธ๋ ฅ + ์œ ์ง€๋ฅผ ์œ„ํ•œ ๋…ธ๋ ฅ )

  ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ง€๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ ๋ถ€๋ฟ์˜ ๋‹จ์ˆœํ•จ์— ๋น„๋ก€ํ•œ๋‹ค.
  ๊ตฌํ˜„ < ์œ ์ง€

2. ์š”๊ตฌ์‚ฌํ•ญ
  AD TECH
  B2B ์™€ B2C๋ฅผ ๋‚˜๋ˆ ์„œ ๋‹ด๋‹น

  ๋ฝ์Šคํฌ๋ฆฐ์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  (iOS๋Š” ์•ˆ๋จ)
  ๋ผ์ดํ”„์‚ฌ์ดํด์ด ๋‹ค๋ฆ„.
  FOREGROUND๋กœ

3. ๊ธฐ์ˆ 
  ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ๋ž‘ํ•จ
  ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์  ์‹œ๋„

  Doing the right Things -> Doing things Right
  ์™„๋ฒฝํ•œ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ€๊ฒŒ๋” ์งœ๋Š” ๊ฒƒ.. ์ฝ”๋“œ๊ฐ€ ๋ชฉํ‘œ๋Š” ์•„๋‹˜.


์‹ค์‚ฌ๋ก€
์‚ฌ์šฉ์ž์˜ ์ทจํ–ฅ์— ๋งž๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
for ์บ์‹œ์Šฌ๋ผ์ด๋“œ - ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค
๋” ํ‚ค์ฆˆ ๋ผ์ดํ”„ (๋ผ์ด๋ธŒ ํ‚ค์ฆˆ์‡ผ ์•ฑ)
5๋…„์ด์ƒ ์ง€์†์œผ๋กœ ๋Œ€์ƒ์„œ๋น„์Šค๊ฐ€ ๋ฐ”๋€œ S3 -> S8
ํ•„์—ฐ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๋Œ€์‘

1. ํ†ตํ•ฉ๋กœ๊ทธ์ธ
  ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต
  ์ด๋ฉ”์ผ - ์†Œ์…œ๊ณ„์ฉก - ์บ์‹œ์Šฌ๋ผ์ด๋“œ
  ๊ตฌ๊ธ€ io
  ์˜ค๋ ˆ์˜ค ๋ฒ„์ „ ์ถœ์‹œ
    ๋ฐฑ๊ทธ๋ผ๋ฃฌ๋“œ ์‹คํ–‰ ์ œํ•œ + ์œ„์น˜์ œํ•œ (๋ฐฐํ„ฐ๋ฆฌ)
  MVP & AAC
  ์ฝ”ํ‹€๋ฆฐ

  AAC
    ๋ผ์ดํ”„์‹ธ์ดํด, ๋ผ์ด๋ธŒ๋ฐ์ดํ„ฐ ๋ทฐ๋ชจ๋ธ, ๋ฃธ
    ๋ผ์ดํ”„์‹ธ์ดํด๊ณผ ๋ฃธ
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†์ด ์ฝ”์–ด๋กœ์ง์— ์ ์šฉ์ด ์‰ฝ๋‹ค.

  ์„ค๋“์˜ ๊ณผ์ •
  JAVA vs ์ฝ”ํ‹€๋ฆฐ -> Production๋ ˆ๋ฒจ? ์†๋„?
  ์ฝ”ํ‹€๋ฆฐ -> ์•ˆ์ •์„ฑ ํ™•๋ณด (๊ณต์‹์ง€์›ํ›„ 1๋…„), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐฐํฌ
  ์˜คํ”ˆ์†Œ์Šค - ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๋„์ž…
  LAM ์‚ฌ์šฉ์— ํฐ ์ด์Šˆ ๋ฐœ์ƒ - ์ค‘๊ตญํฐ์—์„œ ์•ˆ๋จ -> ์˜คํ”ˆ์†Œ์Šค์™€ ์‹ ๊ธฐ์ˆ  ์‹ ์ค‘ํ•˜๊ฒŒ ๋„์ž…

  ์ฐจํ„ฐ - ํ• ์ผ์„ ์ •๋ฆฌํ•ด์„œ ๋ชฉ๋ก์œผ๋กœ

  Critical Pass - ์ผ์ •์— ์˜ํ–ฅ์„ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ฏธ์น˜๋Š”

  e-mail

  ์ฝ”ํ‹€๋ฆฐ ์‚ฌ์šฉ ์†Œ๊ฐ : ์ ์ •๊ธฐ์ˆ .

  ์ƒˆ๋กœ์šด ์–ธ์–ด ์ ์šฉ์‹œ 3๊ฐ€์ง€ ์š”์†Œ - ๊ต์œก, ํ”„๋กœํ† ํƒ€์ดํ•‘, ๊ณต๊ฐ

3. Best Practice on Android Instant Apps

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๊น€์ข…์‹
003. ์ธ์Šคํ„ดํŠธ ์•ฑ

์›ํ‹ฐ๋“œ - ์ง€์ธ์ถ”์ฒœ ํ—ค๋“œํ—Œํ„ฐ ์•ฑ

์ธ์Šคํ„ดํŠธ์•ฑ์ด๋ž€ : ์„ค์น˜์—†์ด ๋ฐ”๋กœ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์•ฑ - ์ดํ›„ ํ•„์š”์— ๋”ฐ๋ผ ๋„ค์ดํ‹ฐ๋ธŒ์•ฑ ์„ค์น˜

์กฐ๊ฑด ์•ˆ๋“œ๋กœ์ด๋“œ์Šคํ๋””์˜ค 3.0
์ •์‹ ์ถœ์‹œ ์ดํ›„
base ์•ฑ๊ณผ feature ๋งŒ ์žˆ์–ด๋„ ๋œ๋‹ค.

๊ตฌ๊ธ€ io์—์„œ ์ •์‹ ์ œ๊ณต

4MB๋ผ๋Š” ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์žˆ์Œ
gradle 3.1 ํฌํ•จ์‹œ ์šฉ๋Ÿ‰ ๋ถ€๋ถ„์— ์žˆ์–ด์„œ ๋งŽ์ด ์ค„์–ด๋“ฌ

data/data/com.googule.android.instantapps.supervisor/files ์— ์ƒ์„ฑ๋œ๋‹ค.

์ปจํ…ํ„ฐ ํ”„๋กœ๋ฐ”์ด๋”๋‚˜ push๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ

์ œ๊ณต API
inInstantApp()
showInstallPrompt() - set referrer ๋กœ ์„ค์น˜์ดํ›„ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์œผ๋กœ ๊ฐ’์„ ๋„˜๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค .

์„ค์น˜๊ณผ์ •์„ ํŠธ๋ž˜ํ‚น ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”
- ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ”์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์œ ์ž…๋””๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ
- ์Šคํƒ€ํŠธ ํ”„๋กฌ URI๋กœ
-

๋ฐฐํฌ๊ณผ์ •์€ ๋™์ผํ•˜๋‚˜
1. ๋นŒ๋“œํ•  ๋•Œ ์„ค์ • ํ™•์ธํ•„์š”
2. default-url ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ™•์ธ ํ•„์š”
3. ์‚ฌ์ด์ฆˆ 4MB
์•ŒํŒŒ์™€ ๋ฒ ํƒ€์˜ ๊ฒฝ์šฐ์—๋Š” 10MB๊นŒ์ง€
4. ํ™€๋“œ๋ฐฑ - ???

์ธ์•ฑ๋ธŒ๋ผ์šฐ์ €
ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๋‹ค์ด๋‚˜๋ฏน ๋งํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กฑ๋งํฌ ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ URL์„ ์‚ฌ์šฉํ•˜๋ฉด
์นด์นด์˜ค์›น๋ทฐ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ
- ์‚ฌ์šฉ์ž์˜ ๊ฒฝํ—˜์„ ์„ค์น˜์ด์ „๊ณผ ์„ค์น˜์ดํ›„์— ๋™์ผํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”.
- ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์–ด๋–ค Feature์— ์„ค์น˜์ดํ›„์— ์ค‘์š”ํ•œ๊ฐ€์— ๋Œ€ํ•ด ๊ณ ๋ฏผ.
- ์ฒ˜์Œ๋ถ€ํ„ฐ ์ธ์Šคํ„ดํŠธ ์•ฑ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ณตํ†ต ๋กœ์ง ๋นผ๊ณ  ์„ค๊ณ„ํ•˜๊ณ  ์ถœ์‹œํ•˜๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ์ „ํ™˜์ด ์ข‹์ง€ ์•Š์Œ.
- ๋น ๋ฅด๊ฒŒ ์ ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋Š” ๋“ฑ, ๊ฐœ๋ฐœ์‹ธ์ดํด์„ ๊ต‰์žฅํžˆ ์งง๊ฒŒ ์žก๋Š” ๊ฒƒ์ด ์ค‘์š”. ์ ์ง„์  ๊ฐœ๋ฐœ

g.co/instantapps
tech.wanted.co.kr/

ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ

4. ์ง€๊ธˆ์€ ConstraintLayout ์‹œ๋Œ€

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์•ˆ์„ธ์›
004. ConstraintLayout

ConstraintLayout
๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋‹จ์ˆœํ•œ ๊ณ„์ธต๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ทฐ๊ทธ๋ฃน
ํ˜„์ œ ๋ทฐ๋“ค๊ณผ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•œ๋‹ค๋Š” ์ ์€
๋ ๋Ÿฌํ‹ฐ๋ธŒ๋ ˆ์ด์•„์›ƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
๋Ž์Šค๋ฅผ ํ›จ์”ฌ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๊ฒŒ ๋จ.

์™œ ์จ์•ผํ•˜์ฃ ?
ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ๋Ž์Šค๊ฐ€ ์ •๋ง ๋งŽ์ด ์ค„์–ด๋“ ๋‹ค.

ConstraintLayout 1.1 ๊ธฐ์ค€

์„œํ˜๋Ÿฌ ํฌ์ง€์…”๋‹. ์˜ตํ‹ฐ๋งˆ์ด์ €, Layout editor ๋Š” ๋„˜์–ด๊ฐ.

maven์œผ๋กœ ์ถ”๊ฐ€

1์žฅ ์ฒœ๋ฆฌ๊ธธ๋„ ๋ทฐํ•˜๋‚˜๋ถ€ํ„ฐ
  Constraint ์ œ์•ฝ์‚ฌ์–‘๋“ค์„ ๊ฐ€์ง€๊ณ  ํฌ์ง€์…˜๊ณผ ์‚ฌ์ด์ฆˆ๋ฅผ ์žก๋Š” ๋ ˆ์ด์•„์›ƒ
  ์ž์‹๋ทฐ์˜ ์‚ฌ์ด์ฆˆ์™€ ๊ธฐ์ค€์„ ์žก์Œ.
  "๋‚˜์˜ ~์ชฝ์€ ๋ถ€๋ชจ/๋ˆ„๊ตฐ๊ฐ€์˜ ~์กฑ์„ ๋ฐ”๋ผ๋ณผ๊ฑฐ์•ผ"

  ๋ ๋Ÿฌํ‹ฐ๋ธŒ์™€ ์ฐจ์ด๋Š” ๋ ๋Ÿฌํ‹ฐ๋ธŒ๋Š” ์œ„์น˜๋Š” ๋ฐ•์•„์ฃผ๋Š” ๋ฐ ๋น„ํ•ด
  ์ฝ˜์ŠคํŠธ๋ ˆ์ธ์€ ๊ธฐ์ค€์„ ์žก์•„์ฃผ๋Š” ์ •๋„์ด๋‹ค.

  ๊ธฐ์™• ํ• ๊ฑฐ๋ฉด ์ƒํ•˜์ขŒ์šฐ(ํƒ‘,๋ฐ”ํ…€,๋ ˆํ”„ํŠธ,๋ผ์ดํŠธ)) ๋‹ค ์„ค์ •ํ•ด์ค˜์•ผ ๊ฐ€๋…์„ฑ ์ฆ๊ฐ€

  ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๋ฐฉ๋ฒ•
    layout_width, layout_height
    100dp, wrap_content, match_constraint(0dp ๋ผ๊ณ  ์“ด๋‹ค.)
    ํฌ๊ธฐ๋ฅผ percent๋กœ ๋ถ€๋ชจ๋ทฐ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜๊ฒŒ ๊ฒฐ์ • -> ๋ถ€๋ชจ๋ทฐ์— ํŒจ๋”ฉ์ด ๊ฑธ๋ ค์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ๊นŒ์ง€ ๊ณ ๋ ค
      layout_constraintWidth_default="percent"
      layout_constraintWidth_percent="0.4"
    dimensionRatio : ๋ทฐ์˜ ๊ฐ€๋กœ์„ธ๋กœ ๋น„์œจ ๊ฒฐ์ • (๋น„์œจ์„ ์œ ์ง€ํ•˜๋Š” ์ค‘ ๊ฐ€์žฅ ํฐ ์‚ฌ์ด์ฆˆ๋กœ ์„ค์ •๋จ)
      layout_constraintDimensionRatio="1" ๊ฐ€๋กœ/์„ธ๋กœ
      layout_constraintDimensionRatio="1:1" ๊ฐ€๋กœ:์„ธ๋กœ
      "w,1:2" ๋“ฑ์œผ๋กœ w, h์— ๊ธฐ์ค€์„ ์žก๊ณ  ๋น„์œจ์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
      

5. Google Mobile Vision๊ณผ OpenCV๋กœ card.io๋ฅผ ํ™•์žฅํ•œ ๋ฒ”์šฉ ์นด๋“œ๋ฒˆํ˜ธ์ธ์‹ ๊ฐœ๋ฐœ

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์žฅํ˜์žฌ
005. card.io

card.io ->
์— ๋ณด์‹ฑ๋งŒ ์ธ์‹๋˜๊ณ  ํ”„๋ฆฐํŠธ๋œ ์นด๋“œ๋Š” ์ธ์‹์ด ์•ˆ๋จ.
์— ๋ณด์‹ฑ์ด ์—†์œผ๋ฉด ์œ„์น˜ ์ธ์‹์ด ์ž˜ ์•ˆ๋˜๊ณ  8 ์ธ์‹์ด ์ž˜ ์•ˆ๋จ.

๊ตฌ๊ธ€ mobile vision
์ˆซ์ž๋งŒ ๋ฝ‘์•„๋‚ด๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๊ณ , ์˜ค์ธ์‹์ด ๋„ˆ๋ฌด ๋งŽ์Œ

์นด๋“œ์˜์—ญ ์ถ”์ถœ -> card.io ์ถ”์ถœ
์นด๋“œ๋ฒˆํ˜ธ ์œ„์น˜ ์ฐพ๊ธฐ -> ๊ฐœ๋ฐœ
์นด๋“œ๋ฒˆํ˜ธ ์ธ์‹ -> google mobile vision

OpenCV๋ฅผ ํ™œ์˜ํ•˜์—ฌ ๋ณต์ˆ˜๊ฐœ์˜ ๋ฌธ์ž์—ด ์œ„์น˜๋ฅผ ๊ฒ€์ถœ
preview ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง์ ‘ ์ธ์‹ ์‹œ๋„
๋„ˆ๋ฌด ์ž‘์€ ์ด๋ฏธ์ง€์—์„œ๋Š” ๋ฌธ์ž ์ธ์‹ ๋ถˆ๊ฐ€๋Šฅ
ํˆฌ๋ช…์ƒ‰์€ ์ด๋ฏธ์ง€๋กœ ์ธ์‹ ์•ˆํ•จ

์„ ๋ช…ํ•˜๊ฒŒ 1์žฅ์ด ํ”๋“ค๋ฆฐ 10์žฅ๋ณด๋‹ค ์ธ์‹๋ฅ ์ด ํ›จ์”ฌ ๋‚ซ๋‹ค.
CaptureReuslt.FOCUSED_LOCKED

์ง๊ด€์  UI ์ˆ˜์ • -> ๋“œ๋ž˜๊ทธ ์‰๋„์šฐ + ํžˆ๋“ ๋ฒ„ํŠผ

๊ตฌ๊ธ€ ๋ชจ๋ฐ”์ผ ๋น„์ „ ํ•™์Šต๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ
์•ˆ๋“œ๋กœ์ด๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค. -> ์ดํ›„ ์‹คํ–‰์‹œ ์ €์žฅํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

7. Travis-ci ๋ฅผ ์ด์šฉํ•œ CI/CD ์™€ ๋„์ปค๋ฅผ ์ด์šฉํ•œ Jenkins for Android ๊ตฌ์„ฑํ•˜๊ธฐ

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์žฅ์ธ์ˆ˜
006. ์  ํ‚จ์Šค

CI - ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ์ง€์†์ ์œผ๋กœ ํ•ด์ฃผ๋Š” ํˆด

ํ•„์ˆ˜์š”์†Œ
ํ˜•์ƒ๊ด€๋ฆฌ - git
๋นŒ๋“œํˆด - ๊ทธ๋ž˜๋“ค, ์•คํŠธ ๋“ฑ
CI tool : ์  ํ‚จ์Šค, ํŠธ๋ ˆ๋น„์Šค

CI๋ฅผ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ - ์›๊ฒฉ์„œ๋ฒ„์— .gitignore
ํ˜•์ƒ๊ด€๋ฆฌ ์„œ๋ฒ„์— ์ปค๋ฐ‹ํ•˜๋ฉด ํด๋ง๊ณผ์ •์„ ํ†ตํ•ด CI๊ฐ€

** gitignore์— ์–ด๋–ค๊ฒƒ๋“ค์ด ๋“ค์–ด๊ฐ€๋Š”์ง€ idea๋“ฑ์˜ ํŒŒ์ผ๋“ค์˜ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•˜๋„๋ก ํ•˜์ž.

CI๊ฐ€ ์ž˜ ์ ์šฉ๋  ๊ฒฝ์šฐ
์Šคํ‹ฑ์—์„œ ์˜คํ† ๋กœ ์šด์ „ ์„ ๋„˜์–ด ์ž์œจ์ฃผํ–‰ํ•˜๋Š” ๋Š๋‚Œ
๊ฐ•์ œ ํ…Œ์ŠคํŠธ์˜ ํํ•ด - ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์งœ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€

CD : Continuous Delivery, Continuous Deploy
์งง์€ ์ฃผ๊ธฐ๋กœ ์ถœ์‹œํ•˜๋Š” SWE์  ์ ‘๊ทผ
 = ์ง€์†์  ๋ฐฐํฌ (์งง์€ ์ฃผ๊ธฐ๋กœ ๊ฐœ๋ฐœ์ค‘์ธ SW๋ฅผ ๋ฐฐํฌํ•˜๊ณ , ๊ทธ ๊ณผ์ •์„ ์ž๋™ํ™”)

github์— ๋ฆด๋ฆฌ์ฆˆ ํƒญ์„ ์ด์šฉ.

CD๋ฅผ ๊ตฌ์ถ•ํ•œ ๊ฒฝ์šฐ : CI์„œ๋ฒ„์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด

ํŠธ๋ž˜๋น„์Šค (https://travis-ci.org/)
- ๊นƒํ—ˆ๋ธŒ์—์„œ ์ง„ํ–‰๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ง€์†์  ํ†ตํ•ฉ.
- ๊ด€๋ฆฌ๊ฐ€ ํ•„์šฉ๋ฒ—๋Š” ๋ฌด๋ฃŒ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŒ….
- ๋ฆฌ๋ˆ…์Šค, ๋งฅ์—์„œ ๋™์‹œ์— ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Œ.
- ์•ˆ๋“œ๋กœ์ด๋“œ ํฌํ•จ
- ๊นƒํ—ˆ๋ธŒ์™€ seamlessํ•œ ํ†ตํ•ฉ
- ์˜คํ”ˆ์†Œ์Šค ํ•œ์ • ๋ฌด๋ฃŒ

ํŠธ๋ž˜๋น„์Šค์˜ ๋‹จ์ 
- ์ œํ•œ๋œ ์˜ต์…˜ ์ œ๊ณต
- ์ข€ ๋Š๋ฆฐ ์†๋„ ๋ฐ ์„ฑ๋Šฅ

์  ํ‚จ์Šค
- ๋ฌด๋ฃŒ
- ๋„์ปค๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ
- ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ

์  ํ‚จ์Šค์˜ ๋‹จ์ 
- ๋ณ„๋„์˜ ์„œ๋ฒ„๊ฐ€ ํ•„์š”
- ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ
 -> ๋‹จ์ ๋“ค์€ ๋„์ปค๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

์  ํ‚จ์Šค์šฉ ๋„์ปค๋ฅผ ํด๋ก ์œผ๋กœ ๋ฐ›์€ ๋’ค
openJDK -> UBUNTU
add Gradle
add AndroidSDK

8. ๋‚ด๊ฐ€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์—ˆ์„ ๋•Œ ์•„๋ฌด๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์€ ๊ฒƒ๋“ค

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๊ฐ•์‚ฌ๋ฃก