Skip to content

kimbenji/scala-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Scala ํ•™์Šต ๊ฐ€์ด๋“œ

Java ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Scala 2.12 ๊ธฐ๋ฐ˜ ์‹ค๋ฌด ๊ฐ€์ด๋“œ๋ถ

GitHub Pages Scala Spark

๐Ÿ“š ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฒฝ๋ ฅ 3-5๋…„์˜ Java ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ 2๊ฐœ์›” ๋‚ด์— Scala๋ฅผ ์‹ค๋ฌด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ข…ํ•ฉ ํ•™์Šต ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŠน์ง•

  • โœ… Java ๋น„๊ต ํ•™์Šต: ๋ชจ๋“  ๊ฐœ๋…์„ Java์™€ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…
  • โœ… ์‹ค์ „ ํ”„๋กœ์ ํŠธ: Apache Spark ๊ธฐ๋ฐ˜ 3๊ฐœ ํ”„๋กœ์ ํŠธ (๋กœ๊ทธ ๋ถ„์„, ์ŠคํŠธ๋ฆฌ๋ฐ, ML)
  • โœ… 48๊ฐœ ์‹ค์Šต ๊ณผ์ œ: ๊ฐ ์ฑ•ํ„ฐ๋ณ„ ์‹ค์Šต์œผ๋กœ ํ•™์Šต ๊ฐ•ํ™”
  • โœ… Scala 3 ๋Œ€๋น„: ๋ชจ๋“  ์ฑ•ํ„ฐ์— Scala 3 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ ํฌํ•จ
  • โœ… 300-350ํŽ˜์ด์ง€: ์ฒด๊ณ„์ ์ด๊ณ  ์™„์„ฑ๋„ ๋†’์€ ์ฝ˜ํ…์ธ 

ํ•™์Šต ๋ชฉํ‘œ

  1. Scala 2.12 ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๋ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šต๋“
  2. Apache Spark๋ฅผ ํ™œ์šฉํ•œ ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ ๊ฐœ๋ฐœ
  3. ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ์— ์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‹ค์ „ ์—ญ๋Ÿ‰ ๋ฐฐ์–‘

๐Ÿ“– ๋ฌธ์„œ ์ฝ๋Š” ๋ฐฉ๋ฒ•

๐ŸŒ ์˜จ๋ผ์ธ์œผ๋กœ ์ฝ๊ธฐ (๊ถŒ์žฅ)

GitHub Pages๋กœ ์›น์‚ฌ์ดํŠธ ํ˜•ํƒœ๋กœ ์ฝ๊ธฐ:

  1. ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ ‘์†: https://kimbenji.github.io/scala-guide/
  2. ๋ชฉ์ฐจ์—์„œ ์›ํ•˜๋Š” Part ์„ ํƒ
  3. ์ฑ•ํ„ฐ๋ณ„๋กœ ์ˆœ์ฐจ ํ•™์Šต

๐Ÿ’ก Tip: ๋ธŒ๋ผ์šฐ์ € ๋ถ๋งˆํฌ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ์ ‘๊ทผํ•˜์„ธ์š”!

๐Ÿ“‚ ๋กœ์ปฌ์—์„œ ์ฝ๊ธฐ

๋ฐฉ๋ฒ• 1: GitHub์—์„œ ์ง์ ‘ ์ฝ๊ธฐ

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/kimbenji/scala-guide.git
cd scala-guide

# VS Code ๋˜๋Š” ์—๋””ํ„ฐ๋กœ ์—ด๊ธฐ
code docs/

๋ฐฉ๋ฒ• 2: Jekyll ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰

# Jekyll ์„ค์น˜ (Ruby ํ•„์š”)
gem install bundler jekyll

# docs ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd docs

# ์˜์กด์„ฑ ์„ค์น˜
bundle install

# ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰
bundle exec jekyll serve

# ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:4000 ์ ‘์†

๐Ÿ“ฑ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ฝ๊ธฐ

Markdown ๋ทฐ์–ด ์•ฑ ์‚ฌ์šฉ:

  • macOS: Marked 2, MacDown, Typora
  • Windows: Typora, MarkText
  • Linux: ReText, Ghostwriter
  • ๋ฉ€ํ‹ฐํ”Œ๋žซํผ: Obsidian, Logseq
# docs ํด๋”๋ฅผ Markdown ๋ทฐ์–ด๋กœ ์—ด๊ธฐ
open docs/README.md  # macOS

๐Ÿ—‚๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

Write-Scala-Book/
โ”œโ”€โ”€ README.md                    # ๐Ÿ“ ํ˜„์žฌ ํŒŒ์ผ (ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ)
โ”‚
โ”œโ”€โ”€ docs/                        # ๐Ÿ“š ํ•™์Šต ๊ฐ€์ด๋“œ ๋ฌธ์„œ
โ”‚   โ”œโ”€โ”€ README.md               # ๋ฉ”์ธ ๋ชฉ์ฐจ (์‹œ์ž‘์ )
โ”‚   โ”œโ”€โ”€ NAVIGATION.md           # ์ฑ•ํ„ฐ๋ณ„ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐ€์ด๋“œ
โ”‚   โ”œโ”€โ”€ _config.yml             # Jekyll ์„ค์ • (GitHub Pages์šฉ)
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ prd.md                  # ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜
โ”‚   โ”œโ”€โ”€ architecture.md         # ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜
โ”‚   โ”œโ”€โ”€ progress.md             # ์ž‘์„ฑ ์ง„ํ–‰ ์ƒํ™ฉ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ part1-basics/           # Part 1: Scala ๊ธฐ์ดˆ (6 ์ฑ•ํ„ฐ)
โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter01-getting-started.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter02-variables-types.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter03-control-structures.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter04-functions.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter05-oop.md
โ”‚   โ”‚   โ””โ”€โ”€ chapter06-collections.md
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ part2-functional/       # Part 2: ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ (4 ์ฑ•ํ„ฐ)
โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter07-advanced-functional.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter08-option-try-either.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter09-implicits.md
โ”‚   โ”‚   โ””โ”€โ”€ chapter10-advanced-types.md
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ part3-advanced/         # Part 3: ๊ณ ๊ธ‰ ์ฃผ์ œ (4 ์ฑ•ํ„ฐ)
โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter11-advanced-type-system.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter12-concurrency-future.md
โ”‚   โ”‚   โ”œโ”€โ”€ chapter13-macros-reflection.md
โ”‚   โ”‚   โ””โ”€โ”€ chapter14-dsl-design.md
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ part4-spark/            # Part 4: Apache Spark (1 ์ฑ•ํ„ฐ + 3 ํ”„๋กœ์ ํŠธ)
โ”‚   โ”‚   โ”œโ”€โ”€ README.md
โ”‚   โ”‚   โ””โ”€โ”€ chapter15-apache-spark.md
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ part5-ecosystem/        # Part 5: ์ƒํƒœ๊ณ„์™€ ๋„๊ตฌ (1 ์ฑ•ํ„ฐ)
โ”‚       โ”œโ”€โ”€ README.md
โ”‚       โ””โ”€โ”€ chapter16-ecosystem-tools.md
โ”‚
โ””โ”€โ”€ code/                        # ๐Ÿ’ป ์‹ค์Šต ์ฝ”๋“œ (ํ–ฅํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •)
    โ””โ”€โ”€ part1-basics/

๐Ÿš€ ํ•™์Šต ๊ฐ€์ด๋“œ

๐Ÿ“‹ ํ•™์Šต ์ˆœ์„œ

์ „์ฒด ํ•™์Šต ๊ธฐ๊ฐ„: 7-9์ฃผ (์ฃผ๋‹น 10-15์‹œ๊ฐ„ ํˆฌ์ž ๊ธฐ์ค€)

Week Part ๋‚ด์šฉ ์‹œ๊ฐ„
1-2์ฃผ Part 1 Scala ๊ธฐ์ดˆ 20-30์‹œ๊ฐ„
3-4์ฃผ Part 2 ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ 20-30์‹œ๊ฐ„
5์ฃผ Part 3 ๊ณ ๊ธ‰ ์ฃผ์ œ (์„ ํƒ) 10-15์‹œ๊ฐ„
6-8์ฃผ Part 4 Apache Spark ํ”„๋กœ์ ํŠธ 30-40์‹œ๊ฐ„
9์ฃผ Part 5 ์ƒํƒœ๊ณ„์™€ ๋„๊ตฌ 10-15์‹œ๊ฐ„

๐Ÿ“ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•

Step 1: ๋ฌธ์„œ ๋ฉ”์ธ ํŽ˜์ด์ง€ ์—ด๊ธฐ

# ์˜จ๋ผ์ธ
https://kimbenji.github.io/scala-guide/

# ๋˜๋Š” ๋กœ์ปฌ
open docs/README.md

Step 2: Part 1๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•™์Šต

  • Part 1: Scala ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘
  • ๊ฐ ์ฑ•ํ„ฐ์˜ ์‹ค์Šต ๊ณผ์ œ ๋ฐ˜๋“œ์‹œ ์™„๋ฃŒ
  • ์ดํ•ด ์•ˆ ๋˜๋Š” ๋ถ€๋ถ„์€ ์ด์ „ ์ฑ•ํ„ฐ ๋ณต์Šต

Step 3: ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์‹ค์Šต

  • Part 4์˜ Spark ํ”„๋กœ์ ํŠธ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„ ํˆฌ์ž
  • 3๊ฐœ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ์ง์ ‘ ๊ตฌํ˜„

Step 4: ์‹ค๋ฌด ์ ์šฉ

  • Part 5์—์„œ ์‹ค๋ฌด ๋„๊ตฌ ์Šต๋“
  • ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— Scala ์ ์šฉ

๐ŸŽฏ ํ•™์Šต ํŒ

  1. ์ˆœ์ฐจ ํ•™์Šต: Part 1๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ (Part 3์€ ์„ ํƒ์ )
  2. ์‹ค์Šต ์ค‘์‹ฌ: ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉฐ ํ•™์Šต
  3. Java ๋น„๊ต: Java์™€ ๋น„๊ตํ•˜๋ฉฐ ์ฐจ์ด์  ์ดํ•ด
  4. ์ปค๋ฎค๋‹ˆํ‹ฐ: ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์€ Scala ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์งˆ๋ฌธ

๐Ÿ› ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Java: JDK 11 ์ด์ƒ (๊ถŒ์žฅ: Java 11 LTS)
  • SBT: 1.9.x ์ด์ƒ
  • IDE: IntelliJ IDEA + Scala Plugin (๊ถŒ์žฅ)
  • Git: ๋ฒ„์ „ ๊ด€๋ฆฌ

์„ค์น˜ ๊ฐ€์ด๋“œ

macOS:

# Homebrew๋กœ ์„ค์น˜
brew install openjdk@11
brew install sbt

Linux:

# Ubuntu/Debian
sudo apt-get install openjdk-11-jdk
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
sudo apt-get update
sudo apt-get install sbt

Windows:

  • AdoptOpenJDK ๋‹ค์šด๋กœ๋“œ
  • SBT ๋‹ค์šด๋กœ๋“œ

IDE ์„ค์ •:

  1. IntelliJ IDEA ์„ค์น˜
  2. Scala Plugin ์„ค์น˜ (Preferences > Plugins > Scala)
  3. Import SBT Project

๐Ÿ“Š ํ•™์Šต ์ฝ˜ํ…์ธ 

Part๋ณ„ ๊ฐœ์š”

Part 1: Scala ๊ธฐ์ดˆ (6 ์ฑ•ํ„ฐ)

Scala ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ•, ํƒ€์ž… ์‹œ์Šคํ…œ, ์ œ์–ด ๊ตฌ์กฐ, ํ•จ์ˆ˜, OOP, ์ปฌ๋ ‰์…˜

์ˆœ์ˆ˜ ํ•จ์ˆ˜, ํ•จ์ˆ˜ ํ•ฉ์„ฑ, Option/Try/Either, Implicit, ๊ณ ๊ธ‰ ํƒ€์ž… ์‹œ์Šคํ…œ

Higher-Kinded Types, Future/Promise, ๋งคํฌ๋กœ, ๋ฆฌํ”Œ๋ ‰์…˜, DSL ์„ค๊ณ„

Part 4: Apache Spark (3 ํ”„๋กœ์ ํŠธ)

  • ํ”„๋กœ์ ํŠธ 1: ๋กœ๊ทธ ๋ถ„์„ ์‹œ์Šคํ…œ
  • ํ”„๋กœ์ ํŠธ 2: ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ
  • ํ”„๋กœ์ ํŠธ 3: ๋จธ์‹ ๋Ÿฌ๋‹ ํŒŒ์ดํ”„๋ผ์ธ

SBT, ScalaTest, Scala-Java ์ƒํ˜ธ์šด์šฉ, ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ


๐ŸŽ“ ํ•™์Šต ์„ฑ๊ณผ

์ด ๊ฐ€์ด๋“œ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

โœ… Scala๋กœ ํƒ€์ž… ์•ˆ์ „ํ•œ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ โœ… ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์‹ค๋ฌด ์ ์šฉ โœ… Apache Spark๋กœ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ โœ… Scala-Java ํ˜ผํ•ฉ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ โœ… SBT, ScalaTest ๋“ฑ ์‹ค๋ฌด ๋„๊ตฌ ํ™œ์šฉ


๐Ÿ“š ์ถ”์ฒœ ํ•™์Šต ์ž๋ฃŒ

๊ณต์‹ ๋ฌธ์„œ

์˜จ๋ผ์ธ ๊ฐ•์˜

์ปค๋ฎค๋‹ˆํ‹ฐ


๐Ÿค ๊ธฐ์—ฌ ๋ฐ ํ”ผ๋“œ๋ฐฑ

์˜คํƒ€ ๋ฐ ๊ฐœ์„ ์‚ฌํ•ญ ์ œ๋ณด

์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ Pull Request๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”:

# 1. Fork this repository
# 2. Create your feature branch
git checkout -b feature/improvement

# 3. Commit your changes
git commit -m "Add some improvement"

# 4. Push to the branch
git push origin feature/improvement

# 5. Create Pull Request

ํ”ผ๋“œ๋ฐฑ


๐Ÿ“ ๋ผ์ด์„ ์Šค

์ด ๋ฌธ์„œ๋Š” ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ‘ฅ ํฌ๋ ˆ๋”ง

์ž‘์„ฑ์ž: BMad Master Agent ๋ฒ„์ „: v1.0 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2025-10-03

๊ธฐ์ˆ  ์Šคํƒ:

  • Scala 2.12.18
  • Apache Spark 3.5.x
  • SBT 1.9.x
  • ScalaTest 3.2.x

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ์—ฐ๋ฝ์ฃผ์„ธ์š”!


๐ŸŽ‰ Happy Scala Learning! ๐Ÿš€

About

Scala Guide written with Claude Code and BMAD-Methods

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published