첫 번째 앱 만들기
첫 번째 앱 만들기
Dart 명령줄 프로그램을 만들고 실행해 보고, 첫 번째 수정도 직접 적용해 봐요. 이 장을 마치면 여러분은 Dart로 프로그램을 만드는 기본 흐름을 몸으로 익히게 돼요.
본문
Dart에 오신 것을 환영해요! 이 장에서는 먼저 개발 환경이 제대로 갖춰졌는지 확인한 다음, 첫 번째 Dart 프로그램을 만드는 과정을 차근차근 따라 해 볼 거예요. 이 장은 단순하게 시작하지만 속도가 꽤 빨라요.
Dart에 처음 오셨다면 먼저 Dart 개요를 살펴보시길 권해요.
- 시작하기 전에 Dart SDK를 설치했는지 확인해 주세요.
이 장에서 배울 내용 (What you'll accomplish)
- Dart SDK 설치가 잘 됐는지 확인해요.
dart create로 CLI 프로젝트를 만들어요.- 첫 번째 프로그램을 실행하고 수정해 봐요.
사전 준비 (Prerequisites)
이 장을 시작하기 전에 다음을 확인해 주세요:
- Dart SDK가 설치되어 있는지 확인해요.
- Dart가 처음이라면 Dart 개요를 훑어봐요.
작업 (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가 진입점 파일을 어디에 두었는지 확인해 보세요.