自分のWordPressで学ぶPHP講座(AIの変更を判定する)

区分3 差分を判断する★★★

No.06 差分の読み方と控え

AIが「直しました」と言った時に、実際に何が増えて何が消えたかを自分の目で見るための単元です。コードの中身が読めなくても、差分の形が読めれば、事故の半分は見つかります。区分3の入口なので、しっかりやります。
目次
  1. 第0章 前提知識
  2. 第1章 差分の読み方
  3. 第2章 控えと構文チェック
  4. 第3章 元に戻す
  5. 確認問題

第0章 前提知識

① 差分(diff) :2つのファイルを並べて、違う所だけを出した物

直す前のファイルと、直した後のファイルを比べて、違う行だけを取り出したものが差分です。 コマンドの名前も diff といいます(コマンドは、ターミナルに文字で打って動かす命令のことです)。

校正刷りにたとえると近いと思います。 原稿を全部読み直さなくても、赤字が入った所だけ見れば、何が変わったかが分かります。AIの変更を確かめる時も同じで、ファイル全体は読まず、差分だけを読みます。

② 控え(バックアップ) :直す前の状態を別名で取っておいたファイル

差分は「前」と「後」の2つが無いと作れません。 前の状態を残しておくのが控えで、控えがあるから差分も出せるし、戻すこともできます。この単元は、差分・控え・構文チェック・戻し方の4つで1セットです。

③ 似た言葉との違い

何のことか
差分 前と後の違い。「何が変わったか」を見る物
控え 前の状態の丸ごとのコピー。「戻れるか」を決める物
構文チェック 文法の誤りだけを見る検査。動作の正しさは見ない
下見 本番に反映する前に、自分だけに見せて確かめること

第1章 差分の読み方

① 足した行と消した行 必ず覚える

差分の読み方は、記号を2つ覚えれば足ります。 新しい方に増えた行が「足した」、古い方から無くなった行が「消した」です。

表示の書き方は2種類あります。AIや人によって、どちらも出てきます。

消した行(前にあった) 足した行(後で増えた)
普通の表示(diff 前 後) < で始まる > で始まる
統一形式(diff -u 前 後) - で始まる + で始まる

どちらの表示でも、コマンドに並べた順が「前、後」で、ここを逆にすると足した・消したも逆になります。 矢印が内側(>)か、プラス(+)なら、足した行。この1点で読み始められます。

実物で見てみましょう。子テーマの functions.php を、10月8日の追記の前の控えと比べた結果の先頭です。

293a294,476
> 
> /* ===== LP風デザイン ここから貼る(2026-10-08) =====
>  * 子テーマの functions.php の一番下に、この行から最後までを貼る。
>  * 上にある JSON-LD・FAQ・robots.txt・/line/ の noindex は触らない。

1行目の 293a294,476 は、「前のファイルの293行目のあとに、後のファイルの294〜476行目が追加された」という意味です。 真ん中の a は追加(add)で、ほかに d(削除)と c(変更)があります。その後ろに > の行が183行続き、< の行は1つもありません。つまりこの差分は、何も消さずに、最後にまとめて足したものです。

もう1つ、ごく小さな例も見ておきます。スライドの最大枚数を 8 から 6 に変えた場合の差分は、こうなります。

45c45
<     return 8;
---
>     return 6;

c は変更で、< が前、> が後です。1行を直した形は、この「消して足す」の1組になります。

② 差分の「形」で最初に見る所 必ず覚える

中身を読む前に、形から分かることがあります。

差分が大きい時は、全部を1行ずつ読もうとしないでください。 「足した183行は、何を何のために、どのフックで動かすのか」を3点に分けてAIに説明させ、それが差分の中身と合っているかを見る方が、現実的です。

③ 差分を出してもらう頼み方 さらっと

差分は、頼めばAIが出してくれます。

「直す前に控えを取って、直したあとに diff -u で前後の差分を出して。足した行・消した行の数も添えて」

AIが「直しました」とだけ言って差分を出さない時は、この一言で必ず出させてください。 差分が出ない変更は、判断の材料が無いので、OKを出さないのが基本です。

第2章 控えと構文チェック

① 控えの名前の付け方 必ず覚える

実物の子テーマのフォルダには、functions.php の控えが何本も並んでいます。

functions.php
functions.php.bak-20260504-001157
functions.php.bak-20260506-line
functions.php.bak-20261008-2113
functions.php.bak-20261008-2127-pre-all
functions.php.bak-20261008-btn

名前は、元のファイル名の後ろに .bak- と、日付や理由を付けた形です(bak は backup の略)。 日付と時刻(20261008-2113 は10月8日21時13分)が付くものと、line・btn・pre-all のように「何のために」が付くものがあります。

この名前は、見ただけで「いつの、どの変更の前か」が分かることが目的です。 控えの名前に、日付か理由のどちらかが入っているかを確かめてください。functions.php.bak だけだと、次に直した時に上書きされて、本当に戻したい時点が消えてしまいます。

もう1つの注意があります。控えを、公開されているフォルダ(子テーマのフォルダなど)に置く場合、拡張子が .php ではなくなるので、サーバーの設定によっては、中身がそのまま閲覧できてしまう恐れがあります。パスワードなどが書かれたファイルの控えは、公開フォルダの外(ホームの直下など)に置くのが安全です。

② php -l :構文チェック 必ず覚える

PHPのファイルには、コマンド1つで文法の間違いだけを調べる機能があります。

php -l functions.php

問題が無ければ、次のように表示されます。

No syntax errors detected in functions.php

-l は lint(文法検査)の頭文字です。 括弧の閉じ忘れや、行末の ; の付け忘れのような、書き方の誤りを見つけてくれます。

ただし、見つけられるのは書き方の誤りだけです。「文法は合っているが、動きが間違っている」コードは通ります。 たとえば、cookie を消すつもりが残してしまうコードも、No syntax errors detected と出ます。php -l は「サイトが真っ白になる事故」を防ぐ最低限の検査で、OKの根拠は、差分を読んだ判断の方にあります。

functions.php に文法の間違いが入ると、サイトの全ページが表示されなくなる(真っ白になる)ことがあります。 だから、本番の functions.php を書き換える前に、別の場所に書いたファイルで php -l を通してから置く、という順にすると安全です。

③ 下見から本番へ 必ず覚える

直した結果をいきなり全員に見せない、という考え方が下見です。 実物の追記には、その仕組みが入っています。

if ( ! defined( 'LOOK_FOR_ALL' ) ) {
  define( 'LOOK_FOR_ALL', true ); // ← 本番切替はここ。true にすると、cookie が無い人にも全員に出る
}

コメントには、「URLに ?look=on を付けて開いた人だけに新しいデザインを出し、全員に出す時はここを true にする」という段取りが書かれています。 つまり、下見の間は一部の人だけが見て、確認ができたら1か所を変えて本番に切り替える、という作りです。

AIの変更を受け取る時は、下見の手段があるか、本番に切り替える場所が1か所に決まっているかを確かめてください。 下見の手段が無い変更は、反映した瞬間に全員に出ます。そうなった時の戻し方が、次の章です。

第3章 元に戻す

① 戻す手順 必ず覚える

変更に問題が見つかった時の戻し方は、控えを使うのが基本です。 手順は、次の順に行います。

  1. いま動いている functions.php を、別名で控える(functions.php.bak-今の日付と時刻-failed のように)
  2. 戻したい時点の控えを、functions.php という名前に戻す
  3. php -l functions.php で構文チェックを通す
  4. サイトを開いて、表示を確かめる

最初の手順が飛ばされやすい所です。 今の状態を捨ててしまうと、「何が悪かったか」を後で調べる材料が無くなります。戻す時も、先に控えを取ります。

頼み方の例を挙げておきます。 「functions.php を2026-10-08 21時13分の控えに戻して。戻す前の今の状態も別名で控えて、戻した後に php -l と表示確認をして」

サイトが真っ白になっていて管理画面も開けない時は、WordPressの画面からは戻せません。 サーバー(Xserver)のファイルマネージャーか、ターミナルからの操作で戻すことになります。AIに頼む時は、あらかじめ「真っ白になった時の戻し方も用意して」と添えておくと、いざという時に困りません。

○ よくある勘違い:「php -l が通ったから安全」→ 文法だけの検査です。動作は別に確かめます
○ よくある勘違い:「差分が小さいから安全」→ 1行でも、判定の条件を逆にすれば全体が変わります
○ 控えは、変更の前に取ります。変更の後に「元の状態を再現」した控えは、控えとして頼れません
○ 差分に含まれる文字(パスワード・API キー・個人情報)は、AIに見せる前に消すか、見せない約束にします
○ 関係する単元:No.07(差分の中の入力・出力の見方)/No.08(本文の一括置換と控え)/No.11(5つの問い)

差分は、足した行(>、+)と消した行(<、-)を見る。変える前に、日付か理由の付いた控えを取る。php -l は文法だけ。戻す前にも、今の状態を控える。

確認問題

問1 AIが差分を出してきました。先頭が 12d11 で、次の行が「< define( 'DEBUG_MODE', true );」です。意味として正しいのは?

問2 AIが「functions.php を直しました。php -l でエラー無しでした」と報告しました。この報告だけでOKにしてよいですか?

問3 AIが「控えを取りました」と言って、functions.php.bak というファイルを作りました。前にも同じ名前で作った控えがあります。何が問題ですか?

問4 新しい処理を入れたらサイトの表示が崩れました。戻す時、最初にやることは?

出典:GNU diffutils マニュアル(https://www.gnu.org/software/diffutils/manual/)/PHP公式「コマンドラインオプション」の -l(https://www.php.net/manual/ja/features.commandline.options.php)/WordPress公式「Child Themes」(https://developer.wordpress.org/themes/advanced-topics/child-themes/)/自分のサーバーの子テーマの functions.php と、その控え(functions.php.bak-…)。