Linux入門:コマンド操作のきほん
開発環境での Linux 活用例
開発環境での Linux 活用例 とは
開発現場でLinuxがどのように活用されているか、具体的な例を通して学びます。本レッスンでは、開発環境での Linux 活用例 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
ここまで学んできたコマンド群は、単体で覚えるだけでなく、日々の開発フローに組み込まれて初めて価値が出ます。Git でコード管理し、Docker でアプリを動かし、SSH でクラウドへ入り、CI/CD で自動化する。これらはすべて Linux の知識がベースで、ファイル、プロセス、ネットワーク、シェルスクリプトの基礎が分かっていれば、トラブル時に「何が起きているか」を自分で追跡できるようになります。
このレッスンでは、本コース全体で学んだコマンドが「実際の開発現場のどこに現れるか」を俯瞰します。Git, Docker, SSH 経由のリモート開発, WSL2, CI/CD の各シーンで Linux が背骨になっている様子を一つの絵で繋ぎ、次に学ぶべき方向性まで示します。
全体像 開発者が触る Linux
ローカル PC からスタートし、シェル経由で Git / Docker / SSH を叩く。Git push をきっかけに CI が回り、Docker イメージを作って本番サーバーへデプロイする。この一連のワークフローの構成要素は、ほぼすべて Linux 上で動いています。
Git とシェル
ターミナル
# 現在のブランチをプロンプトに出す
PS1='\u@\h:\w$(__git_ps1 " (%s)") \$ '
# 直近 10 件のコミットを 1 行ずつ
git log --oneline -10
# 変更ファイル一覧をエディタへ
git status --short | awk '{print $2}' | xargs codeGit は Linux カーネル開発のために生まれたツールで、設計思想がシェルと相性抜群です。alias を ~/.gitconfig に書き、コマンド出力を awk/sed で繋ぐと、開発フローが一気に速くなります。
Docker は Linux カーネルの上に建つ
ターミナル
# 走っているコンテナとプロセスツリーを並べる
docker ps --format '{{.ID}}\t{{.Image}}\t{{.Names}}'
# コンテナに入ってシェル操作
docker exec -it myapp bash
# コンテナの環境変数を覗く
docker exec myapp env | sort
# ログを末尾追跡
docker logs -f --tail 100 myappDocker コンテナの中身は Linux そのもの。コンテナ内で ps, ls, cat /etc/os-release, df -h がそのまま使えます。「コンテナの調子がおかしい」と感じたら、まず exec で中に入って ps, ls -la, cat /proc/1/cmdline を打つのが定石です。
Docker は仮想マシンではなく、ホスト Linux カーネルの上で namespace と cgroup によってプロセスを隔離しているだけです。だからカーネルバージョンはホストに依存し、Mac や Windows ではアダプタ的に Linux VM を裏で動かしています。これを知っているとイメージサイズや起動速度の差が腑に落ちます。
SSH と リモート開発
ターミナル
# 鍵ベースで接続
ssh -i ~/.ssh/id_ed25519 user@app01.example.com
# 多段 SSH (踏み台経由)
ssh -J bastion.example.com user@app01.internal
# ローカル 8080 をリモート 80 にトンネル
ssh -L 8080:localhost:80 user@app01.example.com
# rsync で同期
rsync -av --delete ./dist/ user@app01:/var/www/html/クラウドサーバーへのアクセスは SSH が事実上の唯一手段で、~/.ssh/config にエイリアスを書いて使い回します。VSCode の Remote-SSH 拡張や JetBrains の Gateway は、内部で SSH トンネルを張ってリモートのファイルとプロセスをローカルのように扱える機能です。
WSL2 と macOS
ターミナル
# WSL2 (Windows 上の Linux)
wsl -l -v
wsl --install -d Ubuntu
# macOS は Darwin
uname
# DarwinWSL2 は Windows 上に本物の Linux カーネルを VM として動かす仕組みで、エンジニア向け Windows 開発の事実上の標準です。macOS は BSD 系 Unix で、ls cd grep などはほぼ同じ感覚で使えますが、sed や date などコマンド単位でフラグが微妙に異なるため、スクリプトを Linux と Mac で共有する場合は GNU 版 (gsed, gdate) を入れて統一する流派もあります。
「本番は Linux、開発機は Mac か Windows」が現実的に最頻パターンです。WSL2 や Docker を介してローカル開発を Linux 化すると、本番との差分が減り、デプロイ時の事故も減ります。
CI/CD ランナーの正体
ターミナル
# GitHub Actions のワーカーは Ubuntu LTS
# .github/workflows/test.yml
jobs:
test:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- run: |
uname -a
node --version
npm testGitHub Actions, GitLab CI, CircleCI のランナーはほぼ Ubuntu です。CI が落ちたとき、ジョブログには ls, cat, grep の結果がそのまま出ます。Linux のコマンドを直接読めることが、CI 失敗のデバッグ速度を決めます。
エディタとシェルの組み合わせ
ターミナル
# 最近編集した markdown を fzf で選んで開く
find . -name '*.md' -mtime -7 | fzf | xargs code
# 大量のファイルを一括置換
grep -rl 'old_api' src | xargs sed -i 's/old_api/new_api/g'IDE 内蔵の Find & Replace だけでなく、grep / sed / xargs を使えると、IDE が手につかない巨大リポジトリやリモート環境でも同じ感覚で作業できます。
ファイル管理の癖を再利用する
本コースで学んだ次のコマンドは、開発現場の至るところで再登場します。
findでビルド成果物を一括削除tar/gzipでログをまとめてダウンロードls -laでコンテナ内のパーミッション確認chmod 600で SSH 鍵の権限を直すps aux | grep nodeで固まったプロセスを掴む
次に学ぶと良いこと
- bash よりさらに高機能な zsh / fish と starship プロンプト
- systemd の Unit ファイル設計 (サービス / timer / socket)
- Ansible / Terraform などの構成管理 / IaC
- Linux のシステムコール (strace, perf, eBPF) を使った詳細トラブルシュート
- ネットワーク詳細 (iptables 後継の nftables, tcpdump, Wireshark)
よくある間違い
- Docker コンテナ内なら自由に書き換えていいと思い、コミット忘れで消える
- SSH 鍵を
chmod 644のままで動かず原因不明と勘違いする - WSL2 と Windows のファイルシステム間 (/mnt/c) を頻繁に行き来し、I/O が遅くなる
- 本番サーバーで
apt upgradeを打って、依存ライブラリの巻き込みで service が落ちる
まとめ
- Git / Docker / SSH / CI のすべてが Linux カーネルとシェルの上に立っている
- コンテナの中も同じ Linux であり、これまで学んだコマンドはほぼそのまま通用する
- 本番が Linux なら、開発機を WSL2 や Docker で Linux 化すると差分が減って事故が減る
- 開発フローを高速化するには、シェル芸 (find / grep / sed / xargs / fzf) と alias の活用が効く
- 次のステップは systemd, IaC, システムコール解析、現代ネットワーク (nftables / eBPF) へ広げる
次のレッスン
次は 総合チェック で、開発現場でLinuxがどのように活用されているか、具体的な例を通して学びます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- 開発環境での Linux の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. 開発環境での Linux とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン