👻

【ターミナル,CLI入門】開発初学者が知っておくべき必須知識とツール

に公開

はじめに

「ターミナルって何?」「GUIで作業しているけど、ターミナルって必要なの?」そんな疑問を持っている方も多いのではないでしょうか。

実は、ターミナルを使いこなすことで、開発作業の効率が劇的に向上します。GUIでは時間がかかる作業も、ターミナルなら数秒で完了できます。また、多くの開発ツールやクラウドサービスは、ターミナル経由で操作することを前提としたライブラリ(道具箱のようなもの)を提供してくれています。

本記事は、ターミナルを使ったことがない開発初学者の方に向けて、ターミナルで必須の知識やおすすめのツールを網羅的に紹介します。GUIで作業している方も、ターミナル初心者の方も、この記事を読んで、充実したターミナルライフが速やかにスタートできることを期待しています。

他にも、おすすめの初期設定事項があればぜひコメントで教えてください。

※必須ツールについては、適宜、不要なものをスキップしてください

本記事で学べること:

  • ターミナルの基本操作とコマンド
  • 必須ツールの導入方法(Homebrew、npm、Git、Python、AWS CLI、Google Cloud SDK、Kubernetes関連ツールなど)
  • 作業効率を上げるaliasの設定方法
  • dotfilesによる設定ファイルの管理方法
  • 環境構築を自動化するインストールスクリプトの作成方法

1. ターミナルとは?

ターミナル(端末)は、コマンドラインインターフェース(CLI)を通じてコンピュータと対話するためのアプリケーションです。GUI(グラフィカルユーザーインターフェース)とは異なり、テキストベースでコマンドを入力して操作を行います。

1.1 ターミナルを使うメリット

  • 効率性: 繰り返し作業や複雑なタスクを迅速に実行できる
  • 自動化: スクリプトで一連のコマンドを自動化できる
  • 柔軟性: システムの深いレベルでの設定変更や管理が可能
  • リモートアクセス: SSHなどでリモートサーバーに接続して管理できる
  • 標準化: 多くの開発ツールやクラウドサービスがターミナル経由での操作を前提としている

1.2 ターミナルソフトウェアの導入

ターミナルを使用するには、ターミナルソフトウェア(ターミナルエミュレータ)が必要です。OSごとに標準でインストールされているものと、より高機能なサードパーティ製のものがあります。

1.2.1 macOS

macOSには標準で「ターミナル」アプリケーションがインストールされていますが、より高機能なターミナルソフトウェアを導入することで、作業効率が向上します。

標準のターミナル

# 起動方法
# 1. アプリケーション > ユーティリティ > ターミナル
# 2. Spotlight(Cmd + Space)で「ターミナル」と検索
# 3. Launchpadから「ターミナル」を選択

iTerm2(推奨)

iTerm2は、macOS用の高機能なターミナルエミュレータです。分割ペイン、タブ管理、検索機能など、多くの便利な機能を提供します。

brew自体のインストールは、後述の必須ツールの章をご確認ください。

# Homebrewでインストール
brew install --cask iterm2

# または、公式サイトからダウンロード
# https://iterm2.com/downloads.html

WezTerm(推奨)

WezTermは、クロスプラットフォーム対応のモダンなターミナルエミュレータです。GPUアクセラレーション、設定ファイルによるカスタマイズ、豊富な機能を提供します。

# Homebrewでインストール
brew install --cask wezterm

# または、公式サイトからダウンロード
# https://wezfurlong.org/wezterm/install.html

設定ファイルの場所

  • iTerm2: ~/.config/iterm2/ または iTerm2の設定画面から設定
  • WezTerm: ~/.config/wezterm/wezterm.lua

1.2.2 Linux

Linuxディストリビューションには、標準でターミナルエミュレータがインストールされています。

標準のターミナル

# 起動方法
# 1. Ctrl + Alt + T(多くのディストリビューションで共通)
# 2. アプリケーションメニューから「ターミナル」を選択

# インストールされているターミナルの確認
echo $TERM

WezTerm(推奨)

LinuxでもWezTermを使用できます。

# Ubuntu/Debian系
curl -LO https://github.com/wez/wezterm/releases/download/20230712-072601-f4abf8fd/wezterm-20230712-072601-f4abf8fd-Ubuntu22.04.deb
sudo apt install ./wezterm-*.deb

# または、公式サイトからインストール手順を確認
# https://wezfurlong.org/wezterm/install/linux.html

その他のおすすめターミナル

  • Alacritty: 高速で軽量なターミナルエミュレータ
  • Kitty: GPUアクセラレーション対応のターミナルエミュレータ
  • GNOME Terminal: GNOMEデスクトップ環境の標準ターミナル

1.2.3 Windows

Windowsでは、標準のPowerShellやコマンドプロンプトに加えて、WSL2(Windows Subsystem for Linux)やモダンなターミナルソフトウェアを使用できます。

PowerShell(標準)

Windows 10以降には、PowerShellが標準でインストールされています。

# 起動方法
# 1. Windowsキー + X > 「Windows PowerShell」または「ターミナル」
# 2. スタートメニューで「PowerShell」と検索
# 3. Windows Terminalを使用(後述)

# PowerShellのバージョン確認
$PSVersionTable.PSVersion

Windows Terminal(推奨)

Windows Terminalは、Microsoftが開発したモダンなターミナルアプリケーションです。PowerShell、コマンドプロンプト、WSL2など、複数のシェルを統合管理できます。

# Microsoft Storeからインストール(推奨)
# 1. Microsoft Storeを開く
# 2. 「Windows Terminal」で検索
# 3. インストール

# または、wingetを使用(Windows 11以降)
winget install Microsoft.WindowsTerminal

# または、Chocolateyを使用
choco install microsoft-windows-terminal

WSL2(Windows Subsystem for Linux 2)

WSL2を使用すると、Windows上でLinux環境を実行できます。開発作業に非常に便利です。

# PowerShellを管理者権限で実行して、WSL2を有効化
wsl --install

# インストール後、再起動が必要な場合があります
# 再起動後、UbuntuなどのLinuxディストリビューションが起動します

# WSL2のバージョン確認
wsl --version

# インストール済みのディストリビューション一覧
wsl --list --verbose

# デフォルトのディストリビューションを設定
wsl --set-default Ubuntu

Chocolatey(パッケージマネージャー)

Chocolateyは、Windows用のパッケージマネージャーです。コマンドラインからソフトウェアを簡単にインストール・管理できます。

# PowerShellを管理者権限で実行して、Chocolateyをインストール
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# インストール確認
choco --version

# Chocolateyでターミナルソフトウェアをインストール
choco install microsoft-windows-terminal  # Windows Terminal
choco install wezterm                     # WezTerm
choco install git                          # Git
choco install nodejs                      # Node.js
choco install python                       # Python

WezTerm(Windows)

WindowsでもWezTermを使用できます。

# Chocolateyでインストール
choco install wezterm

# または、公式サイトからインストーラーをダウンロード
# https://wezfurlong.org/wezterm/install/windows.html

推奨されるWindows環境のセットアップ

  1. Windows Terminalをインストール
  2. WSL2をインストールしてUbuntuなどのLinux環境を構築
  3. Chocolateyをインストールしてパッケージ管理を効率化
  4. Windows TerminalでWSL2とPowerShellの両方を使用

1.3 ターミナルの起動方法(まとめ)

各OSでの標準的な起動方法:

  • macOS:
    • 標準ターミナル: アプリケーション > ユーティリティ > ターミナル、またはSpotlightCmd + Space)で「ターミナル」と検索
    • iTerm2/WezTerm: アプリケーションから起動、またはCmd + Spaceで検索
  • Linux: Ctrl + Alt + T、またはアプリケーションメニューから「ターミナル」を選択
  • Windows:
    • PowerShell: Windowsキー + X > 「Windows PowerShell」または「ターミナル」
    • Windows Terminal: スタートメニューから「Windows Terminal」を検索
    • WSL2: Windows Terminalから「Ubuntu」などのディストリビューションを選択

2. ターミナルの基本操作

ターミナルを使い始める前に、基本的なコマンドを覚えましょう。

2.1 基本的なコマンド

# 現在のディレクトリ(フォルダ)を表示
pwd

# 現在のディレクトリ内のファイルやフォルダを一覧表示
ls

# 詳細情報も含めて表示(隠しファイルも表示)
ls -la

# ディレクトリを移動
cd ディレクトリ名

# 親ディレクトリに戻る
cd ..

# ホームディレクトリに移動
cd ~
# または
cd

# 新しいディレクトリを作成
mkdir ディレクトリ名

# ファイルを作成
touch ファイル名.txt

# ファイルの内容を表示
cat ファイル名.txt

# ファイルをコピー
cp 元のファイル コピー先

# ファイルを移動(または名前変更)
mv 元のファイル 移動先

# ファイルを削除
rm ファイル名

# ディレクトリを削除(空の場合)
rmdir ディレクトリ名

# ディレクトリを削除(中身があっても削除)
rm -r ディレクトリ名

2.2 タブ補完とコマンド履歴

ターミナルには便利な機能がいくつかあります:

  • タブ補完: コマンドやファイル名の入力中にTabキーを押すと、自動的に補完されます
  • コマンド履歴: キーで過去のコマンドを呼び出せます
  • 履歴検索: Ctrl + Rでコマンド履歴を検索できます

3. 必須ツールの導入

開発作業を効率的に行うために、以下のツールを導入しましょう。macOSを前提に説明しますが、Linuxでも同様の手順で導入できます。

3.1 Homebrew(パッケージマネージャー)

Homebrewは、macOS用のパッケージマネージャーです。多くのソフトウェアを簡単にインストールできます。

# Homebrewのインストール(公式サイトから最新のコマンドを取得してください)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# インストール後、パスを通す(Apple Silicon Macの場合)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

# インストール確認
brew --version

3.2 Node.jsとnpm

Node.jsは、JavaScriptをサーバーサイドで実行するためのランタイムです。npmは、Node.jsのパッケージマネージャーです。

# Node.jsとnpmをインストール
brew install node

# インストール確認
node --version
npm --version

# npmのグローバルパッケージのインストール先を確認・設定(オプション)
npm config get prefix
npm config set prefix ~/.npm-global

# パスを通す(~/.zshrcに追加)
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

3.3 Git

Gitは、分散型バージョン管理システムです。ソースコードの変更履歴を管理するために必須のツールです。

# Gitをインストール
brew install git

# インストール確認
git --version

# 初期設定(初回のみ)
git config --global user.name "yourname"
git config --global user.email "your.email@example.com"

# 設定確認
git config --list

3.3.1 GitHub CLI(gh)

GitHub CLIは、GitHubをコマンドラインから操作するためのツールです。プルリクエストの作成やIssueの管理などが簡単に行えます。

# GitHub CLIをインストール
brew install gh

# GitHubにログイン
gh auth login

# インストール確認
gh --version

3.3.2 ghq(Gitリポジトリ管理ツール)

ghqは、Gitリポジトリを一元管理するためのツールです。リポジトリをクローンする際のパスを統一できます。

# ghqをインストール
brew install ghq

# インストール確認
ghq --version

# 設定(~/.zshrcに追加)
# リポジトリを保存するディレクトリを指定(推奨: ~/src)
echo 'export GHQ_ROOT=$HOME/src' >> ~/.zshrc
source ~/.zshrc

# ディレクトリを作成(存在しない場合)
mkdir -p ~/src

ghqを使用すると、リポジトリをクローンする際に自動的にGHQ_ROOT配下に整理された構造で保存されます。

# ghqでリポジトリをクローン
ghq get https://github.com/username/repository.git

# リポジトリは以下のパスに保存されます
# ~/src/github.com/username/repository

# リポジトリに移動
cd $(ghq root)/github.com/username/repository
# または
ghq look username/repository

3.4 Pythonとuv

Pythonは、汎用プログラミング言語です。uvは、高速なPythonパッケージマネージャーです。

# Pythonをインストール
brew install python

# インストール確認
python3 --version

# uvをインストール(公式の推奨方法)
curl -LsSf https://astral.sh/uv/install.sh | sh

# インストール確認
uv --version

3.5 AWS CLI

AWS CLIは、AWSサービスをコマンドラインから操作するためのツールです。

# AWS CLIをインストール
brew install awscli

# インストール確認
aws --version

# 設定(初回のみ)
aws configure
# AWS Access Key ID、Secret Access Key、リージョン、出力形式を入力

3.6 Google Cloud SDK

Google Cloud SDKは、Google Cloud Platform(GCP)をコマンドラインから操作するためのツールです。

# Google Cloud SDKをインストール
brew install --cask google-cloud-sdk

# インストール確認
gcloud --version

# 初期化(初回のみ)
gcloud init

# ログイン
gcloud auth login

3.7 Kubernetes関連ツール

Kubernetesクラスターを操作するためのツールをインストールします。

# kubectl(Kubernetesクラスターを操作するためのツール)
brew install kubectl

# インストール確認
kubectl version --client

# k9s(Kubernetesクラスターを視覚的に操作するためのツール)
brew install k9s

# Helm(Kubernetesパッケージマネージャー)
brew install helm

# インストール確認
helm version

4. リポジトリの配置場所とディレクトリ構造

開発用のリポジトリをホームディレクトリ直下に配置すると、ホームディレクトリが散らかってしまいます。以下のような構造で管理することをおすすめします。

4.1 推奨されるディレクトリ構造

# 開発用のディレクトリを作成
mkdir -p ~/dev          # または ~/development, ~/projects, ~/workspace
mkdir -p ~/src          # ghqを使用する場合(推奨)

# ディレクトリ構造の例
~/dev/                   # 開発プロジェクト用
  ├── my-project/        # 個人プロジェクト
  ├── work-project/      # 仕事用プロジェクト
  └── ...

~/src/                   # ghqで管理するリポジトリ(推奨)
  └── github.com/
      └── username/
          └── repository/

~/.dotfiles/            # dotfiles(設定ファイル)

4.2 リポジトリの配置方法

4.2.1 ghqを使用する場合(推奨)

ghqを使用すると、リポジトリが自動的に整理された構造で保存されます。

# ghqでリポジトリをクローン
ghq get https://github.com/username/repository.git

# リポジトリは以下のパスに保存されます
# ~/src/github.com/username/repository

# リポジトリに移動
cd $(ghq root)/github.com/username/repository
# または
ghq look username/repository

4.2.2 手動でgit cloneする場合

ghqを使用しない場合は、~/devなどのディレクトリ配下に配置します。

# 開発用ディレクトリを作成(存在しない場合)
mkdir -p ~/dev

# リポジトリをクローン
cd ~/dev
git clone https://github.com/username/repository.git

# リポジトリは以下のパスに保存されます
# ~/dev/repository

4.2.3 ディレクトリ名の統一

複数の環境で作業する場合、ディレクトリ構造を統一しておくと便利です。~/.zshrcに以下のようなaliasを追加すると、どの環境でも同じパスでアクセスできます。

# 開発用ディレクトリへのエイリアス
alias dev='cd ~/dev'
alias src='cd ~/src'

# ghqで管理しているリポジトリに移動
alias ghqcd='cd $(ghq root)'

4.3 ディレクトリ構造の選択肢

ディレクトリ 用途 推奨度
~/src ghqで管理するリポジトリ ⭐⭐⭐ 推奨
~/dev 開発プロジェクト全般 ⭐⭐
~/projects プロジェクト全般 ⭐⭐
~/workspace 作業スペース
~/.dotfiles dotfiles(設定ファイル) ⭐⭐⭐ 推奨

推奨: ghqを使用している場合は~/src、手動で管理する場合は~/devを使用することをおすすめします。

5. aliasの設定

頻繁に使用するコマンドに短縮名(alias)を設定することで、作業効率が大幅に向上します。

4.1 基本的なalias設定

~/.zshrcファイルに以下のaliasを追加します(Bashを使用している場合は~/.bashrc)。

# ~/.zshrcを開く
nvim ~/.zshrc
# または
code ~/.zshrc  # VS Codeを使用している場合

以下の内容を追加します:

# Git関連
alias g='git'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gs='git status'
alias gd='git diff'
alias gl='git log'
alias gb='git branch'
alias gco='git checkout'

# kubectl関連
alias k='kubectl'
alias ka='kubectl apply'
alias kd='kubectl describe'
alias kg='kubectl get'
alias kl='kubectl logs'

# ディレクトリ操作
alias ll='ls -la'
alias la='ls -la'
alias l='ls -l'
alias ..='cd ..'
alias ...='cd ../..'

# ファイル操作
alias cp='cp -p'  # タイムスタンプを保持してコピー

# その他
alias c='clear'  # 画面をクリア
alias h='history'  # コマンド履歴を表示

設定を反映させるには、以下のコマンドを実行します:

source ~/.zshrc

4.2 よく使われるaliasの例

以下は、多くの開発者が使用しているaliasの例です:

# Docker関連
alias d='docker'
alias dc='docker compose'
alias dps='docker ps'
alias dimg='docker images'

# プロセス管理
alias psg='ps aux | grep'

# ネットワーク
alias pingg='ping google.com'

# ディレクトリ移動
alias ~='cd ~'
alias dev='cd ~/dev'  # 開発プロジェクト用ディレクトリ
alias src='cd ~/src'  # ghqで管理しているリポジトリのディレクトリ

6. dotfilesの管理

dotfiles(ドットファイル)は、設定ファイル(.zshrc.vimrc.gitconfigなど)の総称です。これらのファイルをGitHubで管理することで、環境を簡単に再現できるようになります。

6.1 dotfilesリポジトリの作成とGitHub管理

dotfilesをGitHubで管理することで、新しい環境でも簡単に設定を再現できます。以下の手順で個人リポジトリを作成しましょう。

推奨: dotfilesリポジトリは、ホームディレクトリを汚さないよう、**隠しディレクトリ(~/.dotfiles)**に配置することをおすすめします。ghqを使用している場合は、~/src/dotfilesに配置することもできます。

6.1.1 ローカルリポジトリの準備

# 方法1: 隠しディレクトリに配置(推奨)
mkdir ~/.dotfiles
cd ~/.dotfiles

# 方法2: ghqを使用している場合、srcディレクトリ配下に配置
# mkdir -p ~/src
# cd ~/src
# git clone https://github.com/あなたのユーザー名/dotfiles.git dotfiles
# cd dotfiles

# Gitリポジトリとして初期化
git init

# 設定ファイルをコピー(.dotfilesを使用する場合)
DOTFILES_DIR="$HOME/.dotfiles"
cp ~/.zshrc "$DOTFILES_DIR/.zshrc"
cp ~/.gitconfig "$DOTFILES_DIR/.gitconfig"
cp ~/.vimrc "$DOTFILES_DIR/.vimrc"  # Vimを使用している場合
mkdir -p "$DOTFILES_DIR/nvim"
cp ~/.config/nvim/init.vim "$DOTFILES_DIR/nvim/init.vim"  # Neovimを使用している場合

# AWS CLI設定(存在する場合)
mkdir -p "$DOTFILES_DIR/aws"
cp ~/.aws/config "$DOTFILES_DIR/aws/config"
# 注意: credentialsファイルは含めないこと(後述の.gitignoreで除外)

# Google Cloud SDK設定(存在する場合)
mkdir -p "$DOTFILES_DIR/gcloud"
cp ~/.config/gcloud/configurations/config_default "$DOTFILES_DIR/gcloud/config_default"

6.1.2 .gitignoreファイルの作成

認証情報や機密情報を誤ってコミットしないよう、.gitignoreファイルを作成します。

# .gitignoreファイルを作成(.dotfilesを使用する場合)
cat > ~/.dotfiles/.gitignore << EOF
# 認証情報(絶対にコミットしない)
**/credentials
**/secrets
**/*.key
**/*.pem
**/id_rsa
**/id_rsa.pub

# AWS認証情報
aws/credentials
.aws/credentials

# 環境変数ファイル
.env
.env.local

# OS固有のファイル
.DS_Store
Thumbs.db

# エディタの一時ファイル
*.swp
*.swo
*~
.vscode/
.idea/
EOF

6.1.3 README.mdの作成

dotfilesリポジトリの使い方を記載したREADME.mdを作成します。

# README.mdを作成(.dotfilesを使用する場合)
cat > ~/.dotfiles/README.md << 'EOF'
# Dotfiles

個人の開発環境設定ファイルを管理するリポジトリです。

## 含まれる設定ファイル

- `.zshrc` - Zsh設定
- `.gitconfig` - Git設定
- `.vimrc` / `nvim/init.vim` - Vim/Neovim設定
- `aws/config` - AWS CLI設定(認証情報は含みません)
- `gcloud/config_default` - Google Cloud SDK設定

## セットアップ方法

### 1. リポジトリをクローン

```bash
# 方法1: 隠しディレクトリにクローン(推奨)
git clone https://github.com/あなたのユーザー名/dotfiles.git ~/.dotfiles
cd ~/.dotfiles

# 方法2: ghqを使用している場合
ghq get https://github.com/あなたのユーザー名/dotfiles.git
cd ~/src/github.com/あなたのユーザー名/dotfiles

2. シンボリックリンクを作成

# 既存の設定ファイルをバックアップ(存在する場合)
[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.backup
[ -f ~/.gitconfig ] && mv ~/.gitconfig ~/.gitconfig.backup

# シンボリックリンクを作成(.dotfilesを使用する場合)
DOTFILES_DIR="$HOME/.dotfiles"
ln -s "$DOTFILES_DIR/.zshrc" ~/.zshrc
ln -s "$DOTFILES_DIR/.gitconfig" ~/.gitconfig
ln -s "$DOTFILES_DIR/.vimrc" ~/.vimrc  # Vimを使用している場合
mkdir -p ~/.config/nvim
ln -s "$DOTFILES_DIR/nvim/init.vim" ~/.config/nvim/init.vim  # Neovimを使用している場合

# AWS CLI設定
mkdir -p ~/.aws
ln -s "$DOTFILES_DIR/aws/config" ~/.aws/config

# Google Cloud SDK設定
mkdir -p ~/.config/gcloud/configurations
ln -s "$DOTFILES_DIR/gcloud/config_default" ~/.config/gcloud/configurations/config_default

3. 設定を反映

source ~/.zshrc

更新方法

設定ファイルを変更したら、以下のコマンドでコミット・プッシュします。

# .dotfilesを使用する場合
cd ~/.dotfiles
git add .
git commit -m "Update dotfiles"
git push origin main

注意事項

  • 認証情報(AWSのアクセスキー、GitHubのトークンなど)は含めていません
  • 新しい環境でセットアップする際は、各サービスの認証情報を個別に設定してください

EOF


#### 6.1.4 GitHubにリポジトリを作成してプッシュ

```bash
# ファイルをステージング
git add .

# 初回コミット
git commit -m "Initial commit: dotfiles"

# ブランチ名をmainに変更(GitHubのデフォルトに合わせる)
git branch -M main

# GitHubにリポジトリを作成してプッシュ
# プライベートリポジトリにする場合は --private オプションを追加
gh repo create dotfiles --private --source=. --remote=origin --push

# または、公開リポジトリにする場合
# gh repo create dotfiles --public --source=. --remote=origin --push

注意: リポジトリ名はdotfilesのままで問題ありません。GitHub上のリポジトリ名とローカルのディレクトリ名(~/.dotfiles)は異なっていても構いません。

6.1.5 新しい環境でdotfilesを適用する

新しいPCや環境でdotfilesを適用する場合は、以下の手順を実行します。

# 1. リポジトリをクローン(隠しディレクトリに配置)
git clone https://github.com/あなたのユーザー名/dotfiles.git ~/.dotfiles
cd ~/.dotfiles

# または、ghqを使用している場合
ghq get https://github.com/あなたのユーザー名/dotfiles.git
cd ~/src/github.com/あなたのユーザー名/dotfiles

# 2. シンボリックリンクを作成(5.2を参照)

# 3. 設定を反映
source ~/.zshrc

# 4. 各サービスの認証情報を設定
# AWS CLI
aws configure

# Google Cloud SDK
gcloud init

6.2 シンボリックリンクによる管理

設定ファイルを直接コピーする代わりに、シンボリックリンクを使用することで、dotfilesリポジトリの変更が即座に反映されます。

6.2.1 手動でシンボリックリンクを作成

# dotfilesディレクトリのパスを設定(.dotfilesを使用する場合)
DOTFILES_DIR="$HOME/.dotfiles"

# 既存の設定ファイルをバックアップ
[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.backup
[ -f ~/.gitconfig ] && mv ~/.gitconfig ~/.gitconfig.backup
[ -f ~/.vimrc ] && mv ~/.vimrc ~/.vimrc.backup

# シンボリックリンクを作成
ln -s "$DOTFILES_DIR/.zshrc" ~/.zshrc
ln -s "$DOTFILES_DIR/.gitconfig" ~/.gitconfig
ln -s "$DOTFILES_DIR/.vimrc" ~/.vimrc

# Neovim設定
mkdir -p ~/.config/nvim
ln -s "$DOTFILES_DIR/nvim/init.vim" ~/.config/nvim/init.vim

# AWS CLI設定
mkdir -p ~/.aws
ln -s "$DOTFILES_DIR/aws/config" ~/.aws/config

# Google Cloud SDK設定
mkdir -p ~/.config/gcloud/configurations
ln -s "$DOTFILES_DIR/gcloud/config_default" ~/.config/gcloud/configurations/config_default

6.2.2 シンボリックリンク作成スクリプト

複数の設定ファイルを一括でシンボリックリンクするスクリプトを作成すると便利です。

# dotfilesリポジトリに setup.sh を作成(.dotfilesを使用する場合)
cat > ~/.dotfiles/setup.sh << 'EOF'
#!/bin/bash

set -e

# dotfilesディレクトリのパス(スクリプトがあるディレクトリを自動検出)
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# シンボリックリンクを作成する関数
link_file() {
    local src="$DOTFILES_DIR/$1"
    local dst="$HOME/$2"
    
    # 既存のファイルをバックアップ
    if [ -f "$dst" ] || [ -d "$dst" ]; then
        echo "バックアップ: $dst -> ${dst}.backup"
        mv "$dst" "${dst}.backup"
    fi
    
    # ディレクトリが存在しない場合は作成
    local dst_dir=$(dirname "$dst")
    if [ ! -d "$dst_dir" ]; then
        mkdir -p "$dst_dir"
    fi
    
    # シンボリックリンクを作成
    echo "リンク作成: $src -> $dst"
    ln -s "$src" "$dst"
}

# 各設定ファイルのシンボリックリンクを作成
link_file ".zshrc" ".zshrc"
link_file ".gitconfig" ".gitconfig"
link_file ".vimrc" ".vimrc"
link_file "nvim/init.vim" ".config/nvim/init.vim"
link_file "aws/config" ".aws/config"
link_file "gcloud/config_default" ".config/gcloud/configurations/config_default"

echo "✅ セットアップが完了しました!"
echo "📝 次のステップ: source ~/.zshrc を実行して設定を反映してください"
EOF

# 実行権限を付与
chmod +x ~/.dotfiles/setup.sh

このスクリプトを実行すると、すべての設定ファイルのシンボリックリンクが自動的に作成されます。

cd ~/.dotfiles
./setup.sh

6.3 設定ファイルの管理例

dotfilesリポジトリには、以下のようなファイルを含めることができます:

dotfiles/
├── .zshrc              # Zsh設定
├── .bashrc             # Bash設定(Bashを使用している場合)
├── .gitconfig          # Git設定
├── .vimrc              # Vim設定
├── .gitignore          # Git除外設定(認証情報などを除外)
├── README.md           # セットアップ手順
├── setup.sh            # シンボリックリンク作成スクリプト
├── nvim/
│   └── init.vim        # Neovim設定
├── aws/
│   └── config          # AWS CLI設定(認証情報は含めない)
└── gcloud/
    └── config_default  # Google Cloud SDK設定

6.4 設定ファイルの更新と同期

dotfilesリポジトリの設定ファイルを更新したら、GitHubにプッシュして同期します。

cd ~/.dotfiles

# 変更を確認
git status

# 変更をステージング
git add .

# コミット
git commit -m "Update .zshrc: add new alias"

# GitHubにプッシュ
git push origin main

他の環境で最新の設定を取得する場合は:

cd ~/.dotfiles
git pull origin main

# 設定を反映(必要に応じて)
source ~/.zshrc

6.5 dotfilesディレクトリの配置場所について

dotfilesリポジトリの配置場所には、以下の選択肢があります:

  1. ~/.dotfiles(推奨): 隠しディレクトリとして管理。ホームディレクトリが汚れず、一般的な方法です。
  2. ~/src/dotfiles: ghqを使用している場合、~/src配下で統一管理できます。GHQ_ROOT=$HOME/srcを設定している場合に便利です。
  3. ~/.config/dotfiles: 設定ファイル用のディレクトリ配下で管理。XDG Base Directory仕様に準拠しています。

本記事では、~/.dotfilesを推奨していますが、ghqを使用している場合は~/src/dotfilesも選択肢として検討してください。

注意: 認証情報(AWSのアクセスキー、GitHubのトークンなど)は、絶対にdotfilesリポジトリに含めないでください。.gitignoreファイルで除外するか、環境変数として管理してください。誤ってコミットしてしまった場合は、GitHubのドキュメントを参照して、履歴から削除してください。

7. インストールスクリプトの管理

新しい環境をセットアップする際に、手動でツールをインストールするのは時間がかかります。インストールスクリプトを作成してGitHubで管理することで、環境構築を自動化できます。

7.1 インストールスクリプトの作成

install.shというファイルを作成します:

#!/bin/bash

set -e  # エラーが発生したらスクリプトを終了

echo "🚀 開発環境のセットアップを開始します..."

# Homebrewのインストール(未インストールの場合)
if ! command -v brew &> /dev/null; then
    echo "📦 Homebrewをインストールします..."
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
else
    echo "✅ Homebrewは既にインストールされています"
fi

# 必須ツールのインストール
echo "📦 必須ツールをインストールします..."
brew install git node python

# GitHub CLIのインストール
echo "📦 GitHub CLIをインストールします..."
brew install gh

# ghqのインストール
echo "📦 ghqをインストールします..."
brew install ghq

# uvのインストール
echo "📦 uvをインストールします..."
curl -LsSf https://astral.sh/uv/install.sh | sh

# AWS CLIのインストール
echo "📦 AWS CLIをインストールします..."
brew install awscli

# Google Cloud SDKのインストール
echo "📦 Google Cloud SDKをインストールします..."
brew install --cask google-cloud-sdk

# Kubernetes関連ツールのインストール
echo "📦 Kubernetes関連ツールをインストールします..."
brew install kubectl k9s helm

echo "✅ セットアップが完了しました!"
echo "📝 次のステップ:"
echo "   1. dotfilesをクローンして設定を適用"
echo "   2. GitHub CLIでログイン: gh auth login"
echo "   3. AWS CLIを設定: aws configure"
echo "   4. Google Cloud SDKを初期化: gcloud init"

7.2 スクリプトの実行

# 実行権限を付与
chmod +x install.sh

# スクリプトを実行
./install.sh

7.3 インストールスクリプトの管理

インストールスクリプトもGitHubで管理しましょう:

# 新しいリポジトリを作成
mkdir ~/dev-setup
cd ~/dev-setup

# インストールスクリプトを配置
cp install.sh ~/dev-setup/

# Gitリポジトリとして初期化
git init
git add install.sh
git commit -m "Initial commit: development environment setup script"

# GitHubにプッシュ
gh repo create dev-setup --public --source=. --remote=origin --push

8. まとめ

本記事では、ターミナル入門として、以下の内容を紹介しました:

  • ターミナルの基本操作: 基本的なコマンドと便利な機能
  • 必須ツールの導入: Homebrew、npm、Git、Python、AWS CLI、Google Cloud SDK、Kubernetes関連ツールなど
  • aliasの設定: 作業効率を上げるための短縮コマンドの設定方法
  • dotfilesの管理: 設定ファイルをGitHubで管理する方法
  • インストールスクリプトの管理: 環境構築を自動化する方法

ターミナルを使いこなすことで、開発作業の効率が劇的に向上します。まずは基本的なコマンドから覚えて、少しずつツールを導入していきましょう。aliasやdotfilesを活用することで、より快適な開発環境を構築できます。

参考リンク

Discussion