📄
概念 📚 fullstack-curriculum 手を動かす STEP 1

シェル・ターミナル基礎

ファイルシステム・パス・環境変数・パーミッションの仕組みを理解し、開発作業に必要なターミナル操作を身につける

STEP 1

学習の入口と開発環境を整える

手を動かす

受講の進め方を把握し、ターミナルと開発環境を使える状態にする最初の段階。

この STEP で作るもの

  • ローカル開発に使うターミナル環境
  • Node.js / pnpm / VS Code が動く開発マシン

この STEP でできるようになること

  • このカリキュラムの読み方を説明できる
  • ターミナルで基本的な操作を実行できる
  • 受講開始に必要な開発環境を整えられる

この章で手を動かすこと

  • 基本的なファイル操作コマンドを使える
  • パスと環境変数の意味を理解する

次に活きる章

Git基礎 パッケージ管理(pnpm workspace)

ターミナル(シェル)は、開発者がOSと直接対話するためのテキストインターフェースである。GUIのファイル操作と本質的にやっていることは同じだが、コマンドとして記録・再現・自動化できる点が異なる。npm・Git・Claude Codeはすべてターミナル上で動作するため、基本操作の習得は開発環境の前提条件となる。

ファイルシステムの構造

Unixシステム(macOS・Linux・WSL)のファイルシステムは木構造になっている。最上位の /(ルート)から始まり、すべてのファイルとディレクトリがその配下に存在する。

/
├── home/         ← ユーザーのホームディレクトリ群
│   └── username/
│       ├── Documents/
│       └── projects/
├── usr/          ← システムのプログラム・ライブラリ
└── tmp/          ← 一時ファイル(再起動で消える)

~ はホームディレクトリ(/home/username)の短縮記法。~/projects/home/username/projects と同義。

絶対パスと相対パス

絶対パス: ルートから始まる完全なパス。/Users/username/projects/myapp
相対パス: 現在地(カレントディレクトリ)からの相対的なパス。./src/index.ts../config.json

  • . は現在のディレクトリ
  • .. は一つ上のディレクトリ

基本コマンド

pwd                    # 現在地を表示(Print Working Directory)
ls                     # ファイル一覧
ls -la                 # 隠しファイル含む詳細表示
cd projects/myapp      # ディレクトリ移動
cd ..                  # 一つ上へ
cd ~                   # ホームへ

mkdir myapp            # ディレクトリ作成
touch index.ts         # 空ファイル作成
cp src.ts dst.ts       # コピー
mv old.ts new.ts       # 移動・リネーム
rm file.ts             # ファイル削除
rm -rf mydir/          # ディレクトリごと削除(取り消し不可・注意)

cat file.ts            # ファイル内容を表示
less file.ts           # ページング表示(qで終了)

環境変数

環境変数はシェルが保持するキーと値のペアで、プログラムが実行時に参照する設定値を格納する。APIキーやデータベースURLなどの秘匿情報は、コードに直書きせず環境変数で管理する。

echo $HOME             # 環境変数の参照
echo $PATH             # 実行ファイルの検索パス(:区切りで複数のディレクトリ)

export MY_VAR=hello    # 一時的に環境変数をセット(セッション内のみ有効)

永続化する場合は ~/.zshrc~/.bashrcexport 行を追加する。

PATH は特に重要で、nodegit などのコマンドをどのディレクトリで探すかを定義している。which node でコマンドの実体がどこにあるか確認できる。

パーミッション

ls -la

# 出力例:
# -rw-r--r--  1 user  staff  1234 Apr 19 10:00 config.json
# drwxr-xr-x  5 user  staff   160 Apr 19 10:00 src/

先頭の文字列 drwxr-xr-x はパーミッションを表す:

  • d = ディレクトリ(- はファイル)
  • rwx = 所有者の権限(読み取り・書き込み・実行)
  • r-x = グループの権限
  • r-x = その他のユーザーの権限
chmod +x script.sh     # 実行権限を付与
chmod 644 config.json  # 数値でパーミッションを指定(6=rw, 4=r)

Windowsユーザーへの注意

WindowsでUnixコマンドを使うには WSL(Windows Subsystem for Linux) の導入が推奨される。VS Codeの拡張機能「WSL」を使うと、WindowsのエディタとLinux環境をシームレスに組み合わせられる。

Claude Codeを使う場合もWSL上での実行が多くのツールとの互換性を確保する。

参考リソース


確認クイズ

Q1. Unixファイルシステムの最上位ディレクトリを表す記号はどれか。
  • A. ~
  • B. .
  • C. /
  • D. ..

正解: C. /

解説: Unixシステム(macOS・Linux・WSL)のファイルシステムは木構造になっており、最上位の /(ルート)から始まってすべてのファイルとディレクトリがその配下に存在する。~ はホームディレクトリの短縮記法で別物である。

Q2. ~/projects というパスは何を意味するか。

正解: /home/username/projects(ホームディレクトリ直下の projects ディレクトリ)

解説: ~ はホームディレクトリ(/home/username)の短縮記法。~/projects/home/username/projects と同義である。macOSでは /Users/username がホームディレクトリになる。

Q3. 現在地(カレントディレクトリ)を表示するコマンドはどれか。
  • A. ls
  • B. cd
  • C. pwd
  • D. cat

正解: C. pwd

解説: pwd は Print Working Directory の略で、現在自分がどのディレクトリにいるかを絶対パスで表示する。ls はファイル一覧、cd はディレクトリ移動、cat はファイル内容表示のコマンドである。

Q4. 相対パスと絶対パスの違いを説明してください。

正解: 絶対パスはルート(/)から始まる完全なパス。相対パスは現在地(カレントディレクトリ)を起点とした相対的なパス。

解説: 絶対パスの例は /Users/username/projects/myapp、相対パスの例は ./src/index.ts../config.json. は現在のディレクトリ、.. は一つ上のディレクトリを指す。

Q5. rm -rf mydir/ コマンドについて正しい説明はどれか。
  • A. mydir ディレクトリを圧縮する
  • B. mydir ディレクトリを取り消し不可の状態でまるごと削除する
  • C. mydir ディレクトリを移動する
  • D. mydir ディレクトリの権限を変更する

正解: B. mydir ディレクトリを取り消し不可の状態でまるごと削除する

解説: -r は再帰的(ディレクトリ内のファイルもすべて対象)、-f は強制的(確認なし)を意味するオプション。GUIのゴミ箱と違い取り消しができないため、ドキュメントでは「注意」と明記されている。

Q6. 環境変数にAPIキーやデータベースURLを格納する理由はなぜか。

正解: 秘匿情報をコードに直書きしないようにするため

解説: コードに秘匿情報を直書きするとGitリポジトリに履歴が残り、意図せず公開されるリスクがある。環境変数として分離することで、コードとは独立して管理でき、本番・開発環境ごとに値を切り替えることも容易になる。

Q7. export MY_VAR=hello で設定した環境変数はどの範囲で有効か。
  • A. OS全体で永続的に有効
  • B. 現在のシェルセッション内のみ有効
  • C. 全ユーザーで共有される
  • D. 再起動後も引き継がれる

正解: B. 現在のシェルセッション内のみ有効

解説: export コマンドで設定した環境変数はセッション(ターミナルウィンドウを閉じるまで)の間のみ有効。永続化するには ~/.zshrc~/.bashrcexport 行を追加する必要がある。

Q8. drwxr-xr-x というパーミッション表示の意味として正しいものはどれか。
  • A. ファイルで、所有者は読み書き可能、グループは読み取りのみ
  • B. ディレクトリで、所有者は読み書き実行可能、グループとその他は読み取りと実行のみ可能
  • C. ディレクトリで、全ユーザーが読み書き実行可能
  • D. ファイルで、全ユーザーが読み取りのみ可能

正解: B. ディレクトリで、所有者は読み書き実行可能、グループとその他は読み取りと実行のみ可能

解説: 先頭の d はディレクトリを意味する(- はファイル)。rwx が所有者の権限(読み取り・書き込み・実行)、r-x がグループの権限(読み取り・実行のみ)、最後の r-x がその他ユーザーの権限を表す。

Q9. PATH 環境変数の役割は何か。

正解: nodegit などのコマンドをどのディレクトリで探すかを定義している

解説: PATH: 区切りで複数のディレクトリが並んでおり、コマンドを実行するときにこれらのディレクトリを順番に検索する。which node コマンドでコマンドの実体がどこにあるか確認できる。

Q10. WindowsでUnixコマンドを使うための推奨環境はどれか。
  • A. Git Bash のみで十分
  • B. WSL(Windows Subsystem for Linux)の導入が推奨される
  • C. PowerShellで代替できる
  • D. Cygwinが唯一の選択肢

正解: B. WSL(Windows Subsystem for Linux)の導入が推奨される

解説: WSLを使うとWindowsのエディタ(VS Code)とLinux環境をシームレスに組み合わせられる。Claude Codeを使う場合もWSL上での実行が多くのツールとの互換性を確保するとドキュメントに明記されている。

この章で手を動かすときの確認

この章は 導入編 の STEP 1にある 「手を動かす」 の章です。本文を読み終えたあと、次の観点だけ確認すると次へ進みやすくなります。

この章で確認すること:

  • 基本的なファイル操作コマンドを使える
  • パスと環境変数の意味を理解する

次に活きる章:

  • Git基礎
  • パッケージ管理(pnpm workspace)

対応する完成条件(checklist.yml):

  • N8

補助参照: