本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第5回 | vi で小さく直してもう一度実行する | 修正と再確認を短く繰り返す|UNIX Cafe

CLIで開発する | 第5回
コードを修正するときは、変更を大きくしすぎないことが大切です。小さく直せば、結果を確認しやすく、問題があったときも原因を追いやすくなります。
今回は、画面に表示されるメッセージのスペルミスを vi で直します。修正後は同じコマンドでもう一度実行し、最後に git diff で差分を見ます。
この記事で学べること
- 変更前の状態を確認する理由
grepで修正箇所を探す方法viで小さく直して再実行する流れ- ファイルを絞って
git diffを見る方法
練習を始める前の準備
今回も、第3回で作成した unix_cafe_order ディレクトリを使用します。ターミナルで unix_cafe_order ディレクトリにいる状態で、まず現在の表示を確認します。
python3 src/app.py現在のサンプルでは、次のように表示されます。
Order total: 1800 yen今回の練習では、ここから修正前のタイプミスの状態を自分で作ってから調査を始めます。
vi で1か所だけタイプミスを作る
vi src/message.py続けて、viで message.py を開きます。変更前は次の状態です。
def format_total(total):
return f"Order total: {total} yen"ファイルの中身が確認できたら、2行目のダブルクォート内にある Order total だけを Order totla に変更します。
変更後は次の状態です。
def format_total(total):
return f"Order totla: {total} yen"入力で終わったら、Esc、:wq、Enter の順に操作して保存します。
変更したファイルを git add する
今回は「間違いがある状態」から修正後の差分を見るため、この状態を練習の開始地点としてGitへ記録します。Gitの記録方法はGit 入門の 第3回 git add と git commit で変更を選んで記録する で詳しく紹介しています。
まず最初に git add で、先ほど編集したファイルを指定します。
git add src/message.pyadd したら、正しくできたかを確認するために、git status を使います。
git statusgit status を実行すると、次のような表示になります。
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/message.py各行の意味はこうです。
| 表示 | 意味 |
|---|---|
On branch main | 今いるブランチ |
Changes to be committed: | 次の commit に含まれる予定の変更 |
modified: src/message.py | このファイルを追加として add 済みの状態 |
Changes to be committed: の欄にファイルが表示されていれば、add は正しく通っています。modified: は以前の記録から変更があった場合に表示されます。
git commit で、選んだ変更を履歴として残す
Prepare typo practice というコメントを付けて、git commit を行います。
git commit -m "Prepare typo practice"うまくいくと、次のような出力が表示されます。
[main 385012b] Prepare typo practice
1 file changed, 1 insertion(+), 1 deletion(-)各行の意味はこうです。
| 表示 | 意味 |
|---|---|
[main 385012b] | ブランチ名・初回コミットの印・コミット ID |
Prepare typo practice | 自分が書いたコミットメッセージ |
1 file changed, 1 insertion(+), 1 deletion(-) | 変更されたファイルの数と、追加・削除された行数 |
最後の行は、1つのファイルが変更され、1行が追加、1行が削除されたことを示しています。
ここで Git が行うのは、ファイルの上書きではありません。「この変更をいつ、どんな目的で加えたか」という記録を履歴に追加する操作です。
| 操作 | 何をするか |
|---|---|
| 保存(Ctrl+S など) | 今のファイルの内容を書き込む |
git commit | 何をいつ変えたかを履歴として積み重ねる |
commit したら、正しくできたかを確認するために、git status を使います。
git statusgit status を実行すると、次のような表示になります。
On branch main
nothing to commit, working tree clean修正前の表示を見る
python3 src/app.py練習用のタイプミスを保存して commit した後は、次のように表示されます。
Order totla: 1800 yen表示文字列が Order totla になっています。小さなミスですが、どこに書かれているかを探してから直します。
grep で場所を探す
grep -Rni "totla" src実行すると、src/message.py の2行目にあることが分かります。今回直す対象は、2行目の表示文字列 Order totla です。
src/message.py:2: return f"Order totla: {total} yen"行番号を使って vi で開く
検索結果で行番号が分かったら、その近くからファイルを開けます。
vi +行番号 src/app.py行番号 の部分には、直前の grep で表示された番号を入れます。今回は2行目を開くので、次のように入力します。
vi +2 src/message.py2行目のダブルクォート内にある Order totla だけを Order total に直して保存します。
1 def format_total(total):
2 return f"Order total: {total} yen" 同じコマンドでもう一度動かす
python3 src/app.py表示が次のように変われば、修正結果を確認できます。
Order total: 1800 yen修正したら、すぐに同じ実行方法で確かめる。この短い反復が、CLIで開発するときの基本になります。
git diff で変更を見る
最後に、変更したファイルだけを指定して差分を確認します。
git diff -- src/message.py-- の後ろにファイル名を書くと、そのファイルに絞って差分を見られます。今回は1行だけの変更だと確認できます。
- return f"Order totla: {total} yen"
+ return f"Order total: {total} yen"
16:12 unix_cafe_order %
初心者が意識したいこと
修正中に別の場所も気になったとしても、最初は一度に直しすぎない方が確認しやすくなります。1つ直す。動かす。差分を見る。この単位を小さく保つと、落ち着いて進められます。
手を動かすミニ練習
grep -Rni "Order" srcで表示メッセージを探すvi src/message.pyでファイルを開き、内容を確認するgit diff -- src/message.pyで変更が1行だけかを見る
練習を終えた後の片付け
修正した src/message.py を次回へ引き継ぐため、正しい表示に直した変更をGitへ記録します。
git add src/message.py
git commit -m "Fix total label typo"この2つのコマンドで、今回の修正内容が履歴に残ります。これで python3 src/app.py を実行したときに Order total: 1800 yen と表示される状態を、次回の練習でも使えます。
次回予告
次回は、画面表示だけでは判断しにくい計算処理を扱います。Python標準の unittest を使い、修正前後を確認します。




