📄
概念 📚 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

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

基本コマンド

Terminal window
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などの秘匿情報は、コードに直書きせず環境変数で管理します。

Terminal window
echo $HOME # 環境変数の参照
echo $PATH # 実行ファイルの検索パス(:区切りで複数のディレクトリ)
export MY_VAR=hello # 一時的に環境変数をセット(セッション内のみ有効)

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

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

パーミッション

Terminal window
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 = その他のユーザーの権限
Terminal window
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

補助参照: