Skip to content

5NTeam/PokemonPhoneBook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 

Repository files navigation

PokemonPhoneBook

๋ชฉํ‘œ: Xcode์—์„œ UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ ํ˜น์€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ํฌ์ผ“๋ชฌ ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๐Ÿ“ ํ˜‘์—… ๊ทœ์น™

Pull Request ์ž‘์„ฑ ๊ทœ์น™

  1. ํ˜•์‹: [๋ ˆ๋ฒจ] ์ž‘์—… ๋‚ด์šฉ - ํŒ€์› ์ด๋ฆ„

    • ์˜ˆ: [Lv 1] ํ•„์ˆ˜๊ธฐ๋Šฅ ๊ตฌํ˜„ - sonny
  2. ์ž‘์—… ์„ธ๋ถ€ ์‚ฌํ•ญ: ๊ตฌํ˜„ํ•œ ์ฃผ์š” ๊ธฐ๋Šฅ๊ณผ ๋กœ์ง์— ๋Œ€ํ•œ ์š”์•ฝ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  3. Github ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ (์ด๋ชจ์ง€ ๋ฒ„์ „)

  • ๊ธฐ๋ณธ ์ปค๋ฐ‹ ํƒ€์ž…

    • โœจ feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    • ๐Ÿ fix : ๋ฒ„๊ทธ ์ˆ˜์ •
    • ๐Ÿ“ docs : ๋ฌธ์„œ ์ˆ˜์ •
    • ๐Ÿ’„ style : ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
    • โ™ป๏ธ refactor : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    • โœ… test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
    • ๐ŸŽจ chore : ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€ ํƒ€์ž…

    • ๐Ÿš€ deploy : ๋ฐฐํฌ
    • โšก๏ธ perf : ์„ฑ๋Šฅ ๊ฐœ์„ 
    • ๐Ÿ”ง config : ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •
    • ๐Ÿ“ฆ build : ๋นŒ๋“œ ๊ด€๋ จ ์ˆ˜์ •
    • ๐Ÿ”€ merge : ํ•ฉ๋ณ‘
    • โช๏ธ revert : ๋˜๋Œ๋ฆฌ๊ธฐ

๋ ˆํฌ์ง€ํ† ๋ฆฌ ์„ค์ • ๋ฐ ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ

  1. Fork๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ: ๊ฐ ํŒ€์›์€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ Forkํ•˜์—ฌ ์ž์‹ ์˜ ๊ฐœ์ธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ: Forkํ•œ ๊ฐœ์ธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ์ž์˜ ์ด๋ฆ„์„ ๋”ด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. Pull Request: ๊ฐ์ž์˜ ๋ธŒ๋žœ์น˜์—์„œ Pull Request๋ฅผ ์ƒ์„ฑํ•ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒ€์›์ด Pull Request์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. ์ˆ˜์ • ๋ฐ Merge: ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ˆ˜์ •ํ•œ ํ›„, ํŒ€์›๋“ค์˜ ๋™์˜๋ฅผ ์–ป์–ด merge๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

-> ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ•œ ํ›„ Mergeํ•˜์ง€ ์•Š์€์ฑ„ ์ปค๋ฐ‹-ํ‘ธ์‹œ๋ฅผ ํ•˜๋ฉด ๊ธฐ์กด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿด ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๐ŸŒŸ ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ (Levels 1-5)

  • Level 1: UILabel, UITableView, UIButton ๋“ฑ์„ ์ด์šฉํ•ด ํ…Œ์ด๋ธ” ๋ทฐ ๋งŒ๋“ค๊ธฐ
  • Level 2: ๏ฟฝUIViewController๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์—ฐ๋ฝ์ฒ˜ ์ถ”๊ฐ€ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•˜๊ธฐ(ํŒŒ์ผ ์ด๋ฆ„: PhoneBookViewController.swift)
  • Level 3: ์ƒ๋‹จ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์˜์—ญ์„ ๊ตฌํ˜„ํ•˜๊ธฐ (์ œ๋ชฉ, ์ ์šฉ ๋ฒ„ํŠผ ๋“ฑ)
  • Level 4: API๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋žœ๋คํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ
  • Level 5: ์ ์šฉ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—ฐ๋ฝ์ฒ˜ ๋ฐ์ดํ„ฐ(์ด๋ฆ„/์ „ํ™”๋ฒˆํ˜ธ/ํ”„๋กœํ•„ ์ด๋ฏธ์ง€)๋ฅผ ๋””์Šคํฌ์— ์‹ค์ œ ์ €์žฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ

๐Ÿ’ช ๋„์ „ ๊ตฌํ˜„ ๊ธฐ๋Šฅ (Levels 6-8)

  • Level 6: ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๋ฉ”์ธํ™”๋ฉด์˜ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ํ•ญ์ƒ ์ด๋ฆ„ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ
  • Level 7: ํ…Œ์ด๋ธ”๋ทฐ์˜ ์…€์„ ํด๋ฆญํ–ˆ์„ ๋•Œ PhoneBookViewController ํŽ˜์ด์ง€๋กœ ์ด๋™๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ
  • Level 8: ํ…Œ์ด๋ธ”๋ทฐ์˜ ์…€์„ ํด๋ฆญํ•ด์„œ ํ™”๋ฉด์„ ์ด๋™ํ–ˆ์„ ๋•Œ, ์—ฐ๋ฝ์ฒ˜ ํŽธ์ง‘ ํŽ˜์ด์ง€์—์„œ ์‹ค์ œ๋กœ ๊ธฐ๊ธฐ ๋””์Šคํฌ ๋ฐ์ดํ„ฐ์— Update๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ

๐Ÿ”ฅ Challenge - ๋””ํ…Œ์ผ ํ‚ค์šฐ๊ธฐ

Level 1 ~ 8 ๊นŒ์ง€ ๊ตฌํ˜„ํ•˜๊ณ ๋„ ์—ฌ์œ ๊ฐ€ ๋˜์‹œ๋Š” ๋ถ„๋“ค์€ ์‹ฌํ™”๊ณผ์ •์„ ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ

  • ํฌ์ผ“๋ชฌ์˜ ๋ฉ์น˜๊ฐ€ ํด ๋•Œ, ์ด๋ฏธ์ง€ ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, ์› ๋ฐ–์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค!!
  • ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋งค์šฐ ๋งŽ์ด ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ(์˜ˆ: 20๊ฐœ ์ด์ƒ) ํ…Œ์ด๋ธ” ๋ทฐ ์Šคํฌ๋กค์„ ๋น ๋ฅด๊ฒŒ ๋‚ด๋ฆฌ๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ๊ฒน์ณ ๋ณด์ด๊ฑฐ๋‚˜ ํ…์ŠคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด ๋ฌธ์ œ๋Š” prepareForReuse์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
    • ๊ตฌํ˜„์€ ๋ชปํ•˜๋”๋ผ๋„ ๊ฐœ๋… ๊ณต๋ถ€๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋ƒ์— ๋”ฐ๋ผ ๋ฉ”์ธํ™”๋ฉด์˜ ์šฐ์ƒ๋‹จ์˜ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์ด ์ž˜ ํด๋ฆญ๋˜์ง€ ์•Š๋Š” ํ•จ์ •์— ๋น ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑธ ํ•ด๊ฒฐํ•ด ์ฃผ์„ธ์š”!
  • ์—ฐ๋ฝ์ฒ˜ ์•ฑ์—๋Š” ๋˜ ์–ด๋–ค ์˜ˆ์™ธ ์‚ฌํ•ญ์ด ์žˆ์„์ง€ ์Šค์Šค๋กœ ๊ณ ๋ฏผํ•ด๋ณด๋ฉฐ ์ž์‹ ๋งŒ์˜ ์ฑŒ๋ฆฐ์ง€๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”!!

๐Ÿ“œ ๊ตฌํ˜„ ๊ฐ€์ด๋“œ

  • ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๊ฐ€์ด๋“œ

    • UIKit ํ™”๋ฉด ๊ตฌ์„ฑ ๋ฐ ํ™”๋ฉด ์ „ํ™˜

      • ํ™”๋ฉด๊ตฌ์„ฑ: UITableView, UILabel, UITextView, UIButton ํ™œ์šฉ
      • ํ™”๋ฉด์ „ํ™˜: ์นœ๊ตฌ ๋ชฉ๋ก ํŽ˜์ด์ง€ โ†’ ์—ฐ๋ฝ์ฒ˜ ์ถ”๊ฐ€ ํŽ˜์ด์ง€๋กœ ์ด๋™
    • URLSession / Alamofire ๋ณต์Šต

      • ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์—์„œ ๋žœ๋ค ํฌ์ผ“๋ชฌ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
      • ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋‘ ๊ฐœ๋ฐœํ•ด๋ณด๋ฉด ์ข‹์€ ์—ฐ์Šต์ด ๋ฉ๋‹ˆ๋‹ค.
      • ํฌ์ผ“๋ชฌ API: ํฌ์ผ“๋ชฌ API ๋งํฌ
    • ViewController ์ƒ๋ช…์ฃผ๊ธฐ ๊ฐœ๋…

      • ์นœ๊ตฌ ๋ชฉ๋ก ํŽ˜์ด์ง€์— ์ง„์ž…ํ• ๋•Œ๋งˆ๋‹ค ๋ชฉ๋ก์ด ์ด๋ฆ„์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • CoreData / UserDefaults ํ™œ์šฉ

      • ์—ฐ๋ฝ์ฒ˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๊ธฐ ๋””์Šคํฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      • ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋‘ ๊ฐœ๋ฐœํ•ด๋ณด๋ฉด ์ข‹์€ ์—ฐ์Šต์ด ๋ฉ๋‹ˆ๋‹ค.
  • ํฌ์ผ“๋ชฌ JSON Response ํ˜•ํƒœ

  // JSON Response ํ˜•ํƒœ
  {
    "id": 25,
    "name": "pikachu",
    "height": 4,
    "weight": 60,
    "sprites": {
      "front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png"
    }
  }

๐ŸŽฏ ๋ชฉํ‘œ

  • ๊ธฐํ•œ: 12์›” 12์ผ (๋ชฉ) ๋‚ฎ 12์‹œ๊นŒ์ง€ ์ œ์ถœ
  • ์ œ์ถœ๋ฌผ:
    • ๊ฐœ์ธ๊ณผ์ œ ๊ฒฐ๊ณผ๋ฌผ ์ œ์ถœ (GitHub ๋งํฌ)
    • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… TIL
    • ๊ณผ์ œ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” README

๐Ÿ”— ๊ณผ์ œ ๋งํฌ

  • Ch 3. ์•ฑ๊ฐœ๋ฐœ ์ˆ™๋ จ ์ฃผ์ฐจ ๊ณผ์ œ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages