Step4: 動作確認する
実装したコードが正しく動くかを確認するステップです。「動かしてみたら動いた」ではなく、意図通りに動いているかを確認することが重要です。
なぜ動作確認が重要なのか
初心者あるある: 「エラーが出ないから大丈夫」→ 実は正しく動いていない
動作確認を怠ると、以下のような問題が起こります:
- バグの発見が遅れる: テスト工程や本番で初めて問題が発覚
- 原因特定が困難: 時間が経つほど「どの変更が原因か」分からなくなる
- 手戻りが大きい: 後工程で見つかるほど修正コストが増大
バグ発見タイミングと修正コスト
実装直後 : ████ 1時間で修正
単体テスト: ████████ 数時間
結合テスト: ████████████████ 1日
本番環境 : ████████████████████████████ 数日〜
動作確認の3つのレベル
レベル1: コンパイル・構文チェック
確認すること: コードが文法的に正しいか
✅ チェックポイント
- コンパイルエラーがないか
- 構文エラーがないか
- 型の不一致がないか
方法:
- IDEの赤線(エラー表示)を確認
- ビルドコマンドを実行
# Java
mvn compile
# TypeScript
npm run build
# Python
python -m py_compile script.py
レベル2: 実行確認
確認すること: プログラムが動くか
✅ チェックポイント
- 実行時エラーが出ないか
- 処理が最後まで完了するか
- 明らかな異常動作がないか
方法:
- アプリケーションを起動
- 対象の機能を実行
- ログやコンソール出力を確認
レベル3: 仕様通りの動作確認
確認すること: 仕様通りに動いているか(最も重要)
✅ チェックポイント
- 期待した結果が返ってくるか
- 画面に正しい値が表示されるか
- データベースに正しく保存されるか
- エラーケースで適切に処理されるか
動作確認の具体的な方法
方法1: 手動で動かして確認
最も基本的な方法です。
Webアプリの場合:
1. ブラウザで画面を開く
2. フォームに値を入力
3. ボタンをクリック
4. 結果を目視で確認
APIの場合:
# curlでリクエストを送信
curl -X POST http://localhost:8080/api/orders \
-H "Content-Type: application/json" \
-d '{"itemId": 1, "quantity": 2}'
# レスポンスを確認
{"orderId": 123, "status": "created"}
バッチ処理の場合:
1. 入力データを用意
2. プログラムを実行
3. 出力結果を確認
4. DBの状態を確認
方法2: デバッガで動作を追う
処理の流れを詳細に確認したい場合に有効です。
デバッガの基本的な使い方
1. ブレークポイントを設置
- 確認したい行にブレークポイントを設定
2. デバッグ実行
- 通常の実行ではなくデバッグモードで起動
3. ステップ実行
- F10: 次の行へ(Step Over)
- F11: 関数の中に入る(Step Into)
- Shift+F11: 関数から出る(Step Out)
4. 変数の値を確認
- 各変数の中身をリアルタイムで確認
方法3: ログ出力で確認
本番に近い形で動作を確認する場合に有効です。
// 確認用ログを追加
logger.debug("注文処理開始: orderId={}", orderId);
logger.debug("在庫確認結果: stock={}", stock);
logger.debug("計算結果: total={}", total);
注意: 確認用に追加したログは、確認後に適切なレベルに修正するか削除しましょう。
方法4: 単体テストを書いて確認
再現性のある確認方法です。
@Test
public void 正常な注文が登録できること() {
// 準備
Order order = new Order();
order.setItemId(1);
order.setQuantity(2);
// 実行
OrderResult result = orderService.createOrder(order);
// 確認
assertEquals("created", result.getStatus());
assertNotNull(result.getOrderId());
}
何を確認すべきか
正常系の確認
まずは「うまくいくケース」を確認します。
確認項目例(注文登録機能の場合)
□ 商品ID: 1, 数量: 1 で注文できる
□ 商品ID: 1, 数量: 10 で注文できる
□ 注文後、DBにレコードが登録されている
□ 注文後、確認メールが送信される
境界値の確認
「ぎりぎりの値」を確認します。
境界値の例
数量の境界値:
- 最小値: 1(注文可能な最小)
- 最大値: 99(注文可能な最大)
- 境界: 0, 1, 99, 100
文字列の境界値:
- 空文字: ""
- 最大長: 100文字ちょうど
- 最大超過: 101文字
異常系の確認
「うまくいかないケース」も確認します。
異常系の例
□ 必須項目が空の場合、エラーになるか
□ 数量に0を入れたら、エラーになるか
□ 存在しない商品IDでエラーになるか
□ 在庫不足の場合、エラーになるか
確認結果の記録
なぜ記録が必要か
- 証拠として残る: 「確認しました」の裏付け
- 再現性: 同じ確認を誰でもできる
- レビュー材料: コードレビューで確認方法を説明できる
記録の方法
1. スクリーンショット
確認画面のスクショを撮る
→ 「正常に登録できました」画面
→ エラーメッセージの画面
2. ログの保存
実行時のログを保存
→ 正常終了のログ
→ エラー発生時のログ
3. テストケースとして残す
自動テストとして記録
→ 後からいつでも同じ確認ができる
→ 回帰テストとして活用
動作確認でよくある失敗
失敗1: 正常系しか確認しない
❌ 「商品を1個注文したら登録できた。OK!」
→ 0個や100個、存在しない商品IDは?
→ エラーケースで適切にエラーになる?
対策: 異常系・境界値も必ず確認する
失敗2: 目視で「なんとなくOK」
❌ 「画面にデータが表示された。たぶんOK!」
→ 表示されている値は正しい?
→ 計算結果は期待通り?
対策: 期待値を事前に決めて、照合する
失敗3: 一度だけ確認して終わり
❌ 「さっき動いたから大丈夫」
→ その後コードを修正していない?
→ 環境が変わっていない?
対策: コード修正後は再度確認する
失敗4: 本番環境と違う条件で確認
❌ 「ローカルでは動いた」
→ 本番のデータ量では?
→ 本番の設定では?
対策: できるだけ本番に近い条件で確認する
実践チェックリスト
動作確認時は、以下を意識しましょう:
確認の網羅性
- [ ] 正常系を確認した
- [ ] 異常系を確認した
- [ ] 境界値を確認した
確認の質
- [ ] 期待値を事前に決めて照合した
- [ ] 結果を目視だけでなく、データも確認した
- [ ] 確認結果を記録した
確認のタイミング
- [ ] コード修正後に再確認した
- [ ] コミット前に確認した
次のステップ
動作確認で問題が見つかったら、デバッグに進みます。