第5回 | vi で小さく直してもう一度実行する | 修正と再確認を短く繰り返す|UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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:wqEnter の順に操作して保存します。

変更したファイルを git add する

今回は「間違いがある状態」から修正後の差分を見るため、この状態を練習の開始地点としてGitへ記録します。Gitの記録方法はGit 入門第3回 git add と git commit で変更を選んで記録する で詳しく紹介しています。

まず最初に git add で、先ほど編集したファイルを指定します。

git add src/message.py

add したら、正しくできたかを確認するために、git status を使います。

git status

git 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 status

git 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.py

2行目のダブルクォート内にある 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つ直す。動かす。差分を見る。この単位を小さく保つと、落ち着いて進められます。

手を動かすミニ練習

  1. grep -Rni "Order" src で表示メッセージを探す
  2. vi src/message.py でファイルを開き、内容を確認する
  3. 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 を使い、修正前後を確認します。

さらに学びたいあなたへ

用途ごとに選ぶ Linux のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次