バイブコーディングの土台

Day 5プログラムはどう動くか

状態(state)=今の状況

状態とは「今どうなっているか」の記録。信号機やゲームのセーブデータのように、プログラムは状態を持って動く。

状態とは「今の状況」

[[statclienrequest(状態)とは、プログラムが今どうなっているかを表す情報のことです。難しく考えず「今の状況」と読み替えて大丈夫。ログイン中かどうか、カゴに何個商品が入っているか、電源がオンかオフか。こうした「今の様子」が全部、状態です。

たとえるなら

信号機を思い浮かべてください。今が「赤」か「青」かが状態です。信号機の作りは変わらないのに、状態が変わると私たちの行動(止まる/進む)が変わります。プログラムもまったく同じで、状態によって次にすることが変わります。

もう一つのたとえはゲームのセーブデータ。レベル、所持金、今いる場所。これらをまとめたものが「今のゲームの状態」です。セーブ(保存)すれば、電源を切っても続きから遊べます。状態は「覚えておくべき今の中身」なのです。

  • 信号機の色(赤/青)= 今の状態
  • ゲームのレベルや所持金 = 今の状態
  • ログインしているかどうか = 今の状態
  • 買い物カゴの中身 = 今の状態

状態は変わる、そして覚えられる

状態の大事な性質は二つ。「変わる」ことと「覚えていられる」ことです。信号は赤から青に変わり、カゴには商品が増えたり減ったりします。そしてプログラムは、その最新の状況を[[variablclienrequest(変数=名前つきの箱)に入れて覚えています。

たとえるなら

状態を入れておく箱が変数です。「所持金」というラベルの箱に今の金額を入れておき、買い物したら中身を書き換える。箱の場所は同じでも、中身(状態)は変わっていきます。

TEXT
// 疑似コード: 状態を箱に入れて、書き換える
signal = "赤"      // 今の状態は赤
signal = "青"      // 状態を青に更新

cart = 0          // カゴは空
cart = cart + 1   // 商品を1つ追加(状態が変わる)
状態は箱(変数)に入れて、必要なときに書き換える。考え方はどの言語でも同じ。

状態を意識しない考え方

「なぜかログイン画面に戻される」の原因を、見た目のせいだと思い込む。実は状態(ログイン中かどうか)が消えているのが原因。

PHP
現象: 操作するたびログイン画面に戻る

状態を疑う考え方

「今どういう状態?」と問い直す。ログイン状態が保持されていないのでは、と当たりをつけられる。

PHP
問い: ログイン状態が保存されている?

AIにはこう頼む

不具合を相談するとき「このバグは、どの状態が原因で起きていそう?候補を挙げて」と頼むと、状態の観点から原因を整理してくれます。状態を疑えると[[debu用語](原因さがし)がぐっと速くなります。

気をつけたい点

「今の状態」を思い込みで決めつけると事故ります。実際に今の中身がどうなっているかを確認する癖をつけましょう。状態は変わるものだからこそ、今を確かめることが大事です。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

プログラムにおける「状態(state)」を最もよく表しているのは?

Q2

状態の性質として正しい組み合わせは?

Q3

「ボタンを押しても画面が変わらない」というバグに出会いました。状態(state)という言葉を使って、原因を探る第一歩を説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。