チェックリストの作り方
ストーリー
「チェックリストが大事なのはわかりました。でも、何を書けばいいんですか?」
「いい質問だね。3つのステップで作れるよ」
「3つだけ?」
「うん。過去のミスから学ぶ、カテゴリ分けする、優先順位をつける。これだけ」
チェックリスト作成の3ステップ
ステップ1: 過去のミスから学ぶ
最も効果的なチェック項目は、過去に実際に起きたミスから生まれます。
過去のミス → チェック項目:
× console.logを消し忘れてコミットした
→ [ ] 不要なconsole.logを削除したか
× テストを実行せずにPRを出した
→ [ ] テストが全てパスしているか
× 環境変数をハードコードしてしまった
→ [ ] 機密情報がコードに含まれていないか
「失敗ノート」をつけておくと、チェックリストの材料が自然に溜まります。
ステップ2: カテゴリ分けする
チェック項目が増えてきたら、カテゴリに分類します。
■ コード品質
- [ ] 変数名・関数名は意味が伝わるか
- [ ] コメントは適切に書かれているか
- [ ] 重複コードはないか
■ 動作確認
- [ ] 主要な機能が正しく動くか
- [ ] エラー時の動作を確認したか
- [ ] 境界値を確認したか
■ セキュリティ
- [ ] 機密情報がコードに含まれていないか
- [ ] 入力値のバリデーションがあるか
■ その他
- [ ] 不要なファイルが含まれていないか
- [ ] コーディング規約に準拠しているか
ステップ3: 優先順位をつける
すべてのチェック項目が同じ重要度ではありません。
| 優先度 | 基準 | 例 |
|---|---|---|
| 必須 | これを忘れると重大な問題 | 機密情報チェック、テスト実行 |
| 重要 | 品質に大きく影響する | エラーハンドリング、命名規則 |
| 推奨 | あるとより良い | コメントの充実、リファクタリング |
良いチェックリストの特徴
1. 具体的であること
× ダメな例: [ ] コードの品質を確認する
○ 良い例: [ ] 変数名がキャメルケースになっているか
[ ] 関数が50行以内に収まっているか
2. 行動に結びつくこと
× ダメな例: [ ] セキュリティに注意する
○ 良い例: [ ] .envファイルがコミット対象に含まれていないか
[ ] APIキーがソースコードに直書きされていないか
3. 適度な量であること
× 多すぎ: 50項目(疲れて確認が雑になる)
× 少なすぎ: 2項目(チェックの意味がない)
○ 適切: 10〜20項目(集中して確認できる)
チェックリストのテンプレート
新人向けスターターキット
以下のテンプレートを出発点にして、自分用にカスタマイズしていきましょう。
markdown
## コミット前チェックリスト
### 必須
- [ ] コードが正しくコンパイル/実行できる
- [ ] テストが全てパスしている
- [ ] 機密情報(パスワード、APIキー等)が含まれていない
- [ ] 不要なデバッグコード(console.log等)を削除した
### 重要
- [ ] 変数名・関数名が意味を伝えている
- [ ] エラーハンドリングが実装されている
- [ ] チケットの受入条件を全て満たしている
### 推奨
- [ ] コードにコメントを適切に追加した
- [ ] 同じコードの重複がない
- [ ] コーディング規約に準拠しているチェックリストの育て方
チェックリストは生き物です。定期的に見直しましょう。
| タイミング | やること |
|---|---|
| ミスをしたとき | 項目を追加する |
| レビューで指摘を受けたとき | 指摘内容を項目に追加する |
| 1ヶ月ごと | 不要になった項目を削除する |
| 新しい技術を学んだとき | 関連する項目を追加する |
チェックリストの成長サイクル:
[ミスする] → [原因を分析] → [チェック項目に追加]
↑ ↓
[新しいミスに遭遇] ← [同じミスを防げた!]
まとめ
| ポイント | 内容 |
|---|---|
| 作成3ステップ | 過去のミスから学ぶ → カテゴリ分け → 優先順位 |
| 良い特徴 | 具体的、行動に結びつく、適度な量 |
| 育て方 | ミスや指摘のたびに更新する |
チェックリスト
- チェックリスト作成の3ステップを説明できる
- 良いチェックリストの特徴を3つ挙げられる
- テンプレートを元に自分用のチェックリストを作れる
次のステップへ
チェックリストの作り方が理解できましたか?
次のセクションでは、コーディング中に特に注意すべきチェックポイントを 学びます。 実際のコードを書くときに使える具体的なポイントを押さえましょう。
推定読了時間: 30分