첫 번째 앱 만들기

첫 번째 앱 만들기

Dart 명령줄 프로그램을 만들고 실행해 보고, 첫 번째 수정도 직접 적용해 봐요. 이 장을 마치면 여러분은 Dart로 프로그램을 만드는 기본 흐름을 몸으로 익히게 돼요.

출처: Build your first app

본문

Dart에 오신 것을 환영해요! 이 장에서는 먼저 개발 환경이 제대로 갖춰졌는지 확인한 다음, 첫 번째 Dart 프로그램을 만드는 과정을 차근차근 따라 해 볼 거예요. 이 장은 단순하게 시작하지만 속도가 꽤 빨라요.

Dart에 처음 오셨다면 먼저 Dart 개요를 살펴보시길 권해요.

이 장에서 배울 내용 (What you'll accomplish)

  • Dart SDK 설치가 잘 됐는지 확인해요.
  • dart create로 CLI 프로젝트를 만들어요.
  • 첫 번째 프로그램을 실행하고 수정해 봐요.

사전 준비 (Prerequisites)

이 장을 시작하기 전에 다음을 확인해 주세요:

작업 (Tasks)

Dart로 전설의 Hello World를 만들어 프로젝트를 시작해 봐요.

작업 1: Dart 설정 확인하기 (Confirm your Dart setup)

먼저 다음 단계를 따라 Dart가 시스템에서 잘 작동하는지 확인해요.

  • 터미널(또는 명령 프롬프트)을 엽니다.

  • 다음 명령을 실행해 Dart SDK 버전을 확인해 주세요:

dart --version
  • 아래와 비슷한 출력이 나오는지 확인해요 (버전 번호는 다를 수 있어요):
Dart SDK version: 3.9.2 (stable) (Wed Aug 27 03:49:40 2025 -0700) on "linux_x64"

"command not found" 같은 오류가 보인다면 Dart 설치 가이드를 참고해 환경을 설정해 주세요.

작업 2: 새 Dart 프로젝트 만들기 (Create a new Dart project)

이제 첫 번째 Dart 명령줄 애플리케이션을 만들어 봐요.

  • 같은 터미널에서 프로젝트를 담을 dartpedia 디렉터리를 새로 만들고, 그 디렉터리로 이동해요:
mkdir dartpedia
cd dartpedia
  • 다음 명령을 실행해 주세요:
dart create cli

dart create 명령은 "cli"(Command Line Interface를 뜻해요)라는 이름의 기본 Dart 프로젝트를 생성해요. 필요한 핵심 파일과 디렉터리 구조를 자동으로 잡아 줘요.

  • 프로젝트가 만들어졌다는 아래와 같은 출력이 보여야 해요:
Creating cli using template console...

  .gitignore
  analysis_options.yaml
  CHANGELOG.md
  pubspec.yaml
  README.md
  bin/cli.dart
  lib/cli.dart
  test/cli_test.dart

Running pub get...                     1.2s
  Resolving dependencies...
  Downloading packages...
  Changed 49 dependencies!

Created project cli in cli! In order to get started, run the following commands:

  cd cli
  dart run

참고: dart create 명령이 여러 파일을 만들었어요. 지금은 이 파일들에 대해 걱정하지 않아도 돼요. 자세한 내용은 앞으로의 장에서 다룰 거예요.

작업 3: 첫 번째 Dart 프로그램 실행하기 (Run your first Dart program)

이제 프로그램을 실행해 동작을 확인해 봐요.

  • 터미널에서 새 프로젝트 디렉터리로 이동해요:
cd cli
  • 기본 애플리케이션을 실행해 주세요:
dart run

이 명령은 Dart에게 여러분의 프로그램을 실행하라고 알려 줘요.

  • 다음 출력이 보여야 해요:
Building package executable...
Built cli:cli.
Hello world: 42!

축하해요! 첫 번째 Dart 프로그램을 성공적으로 실행했어요!

작업 4: 첫 번째 코드 수정하기 (Make your first code change)

이제 Hello world: 42!를 만들어 낸 코드를 수정해 봐요.

  • 코드 편집기에서 bin/cli.dart 파일을 열어 주세요.

bin/ 디렉터리는 여러분의 실행 가능한 코드가 있는 곳이에요. cli.dart는 애플리케이션의 진입점(entry point)이에요.

파일 안에 main 함수가 보일 거예요. 모든 Dart 프로그램은 자신의 main 함수에서 실행을 시작해요.

  • bin/cli.dart가 다음과 같은지 확인해 봐요:
import 'package:cli/cli.dart' as cli;

void main(List<String> arguments) {
  print('Hello world: ${cli.calculate()}!');
}
  • 지금은 출력을 단순하게 만들기 위해 첫 줄을 삭제하고(import 문은 필요 없어요), print 문을 간단한 인사말로 바꿔 봐요:
import 'package:cli/cli.dart' as cli; // Delete this entire line

void main(List<String> arguments) {
  print('Hello, Dart!'); // Change this line
}
  • 파일을 저장한 다음, 터미널에서 프로그램을 다시 실행해 주세요:
dart run
  • 다음과 같은 출력이 나오는지 확인해 주세요:
Building package executable...
Built cli:cli.
Hello, Dart!

첫 번째 Dart 프로그램을 성공적으로 수정하고 다시 실행해 봤어요!

복습 (Review)

배운 내용 (What you accomplished)

이번 강의에서 만들고 배운 내용을 정리해 드릴게요.

  • Dart SDK 설치 확인하기: dart --version을 실행해 Dart가 제대로 설치되어 있고 터미널에서 접근 가능한지 확인했어요.
  • 첫 CLI 프로젝트 만들기: dart create로 새 명령줄 애플리케이션을 생성했어요. 이 명령은 pubspec.yaml 같은 핵심 파일을 갖춘 기본 프로젝트를 뼈대(scaffold)로 잡아 줘요. 프로그램의 진입점 역할을 하는 main 함수가 들어 있는 bin/cli.dart 파일도 만들어 줘요.
  • 프로그램 실행하고 수정하기: dart run으로 앱을 실행해 "Hello world" 출력을 확인했어요. 그다음 main 함수를 수정해 나만의 인사말이 출력되도록 바꿔 보면서, Dart의 편집-실행 순환(edit-run cycle)을 직접 경험했어요.

퀴즈 (Quiz)

학습 내용을 다지는 간단한 퀴즈를 풀어 볼게요.

참고: 이 튜토리얼 전체에서 이런 퀴즈를 만나게 돼요. 원한다면 건너뛰어도 괜찮아요.

이해도를 확인해 봐요 (Check your understanding)

Q1. 필요한 파일과 디렉터리 구조를 갖춘 새 Dart 프로젝트를 생성하는 명령은 무엇인가요?

  • dart create — 맞아요! dart create는 새 프로젝트를 만들고 뼈대를 잡아 줘요. 템플릿을 지정하는 -t 옵션도 쓸 수 있어요. 예: dart create -t console project_name.
  • dart new — 아니에요. Dart에는 dart new 명령이 없어요. 새 프로젝트를 시작할 때 어떤 동작을 수행하고 싶은지 생각해 보세요.
  • dart init — 아니에요. 다른 도구들은 init을 쓰기도 하지만 Dart는 다른 명령을 사용해요. 강의에서 어떤 명령을 썼는지 다시 확인해 보세요.
  • dart build — 아니에요. dart build는 배포용으로 기존 Dart 애플리케이션을 빌드할 때 쓰는 명령이지, 새 프로젝트를 뼈대로 잡을 때 쓰는 명령이 아니에요.

Q2. 모든 Dart 프로그램은 특정 함수에서 실행을 시작해요. 이 함수는 무엇이고 왜 중요한가요?

  • main 함수예요. 프로그램 실행이 시작되는 진입점이죠. — 맞아요! main 함수는 실행 가능한 Dart 프로그램에서 필수예요. 이것이 없으면 Dart는 코드 실행을 어디서 시작해야 할지 알 수 없어요.
  • start 함수예요. 런타임 환경을 초기화하죠. — 아니에요. Dart에는 start 함수가 없어요. Dart 런타임은 여러분의 코드가 실행되기 전에 자동으로 초기화돼요.
  • run 함수예요. dart run 명령이 호출하죠. — 아니에요. 필수 run 함수는 없어요. dart run 명령은 표준 진입점 함수를 찾아서 실행해요.
  • init 함수예요. 프로그램 시작 전에 변수를 설정하죠. — 아니에요. Dart는 init 함수를 요구하지 않아요. 변수는 어떤 함수에서든 정의하고 초기화할 수 있어요.

Q3. Dart CLI 프로젝트에서 main 함수가 들어 있는 파일은 어디에 두어야 하나요?

  • bin/ 디렉터리예요. Dart CLI 진입점의 표준 위치니까요. — 맞아요! bin/ 디렉터리에는 프로그램의 Dart 진입점이 들어 있어요. dart run을 실행하면 Dart가 이곳에서 패키지의 진입점을 찾아요.
  • lib/ 디렉터리예요. 모든 Dart 코드는 여기 있어야 하니까요. — 아니에요. lib/ 디렉터리는 다른 패키지가 import할 수 있는 라이브러리 코드를 위한 곳이에요.
  • src/ 디렉터리예요. 표준 소스 폴더니까요. — 아니에요. Dart 프로젝트는 보통 구현 세부사항에 lib/src/를 사용하지, 실행 가능한 진입점에는 사용하지 않아요.
  • 프로젝트 루트, pubspec.yaml 옆이에요. — 아니에요. 기술적으로는 가능하지만, Dart 프로젝트에는 실행 파일을 위한 관례적인 디렉터리가 있어요. dart create가 진입점 파일을 어디에 두었는지 확인해 보세요.

더 알아보기