LESSON 30分

コーディング時のチェックポイント

ストーリー

「コードを書いているとき、何に気をつければいいんですか?」

「大きく4つのカテゴリがあるよ。変数名、コメント、エラーハンドリング、セキュリティ」

「4つ...覚えられるかな」

「一度に全部じゃなくていい。1つずつ意識していこう」


1. 変数名・関数名

なぜ重要か

コードは書く時間より読む時間のほうが圧倒的に長いです。 わかりやすい名前をつけることは、品質に直結します。

チェックポイント

× 悪い例:
let d = new Date();
let n = users.length;
function proc(x) { ... }

○ 良い例:
let currentDate = new Date();
let userCount = users.length;
function validateEmail(email) { ... }
チェック項目確認ポイント
意味が伝わるかdcurrentDate のように名前から内容がわかるか
命名規則に準拠しているかキャメルケース、パスカルケースなどチームのルール通りか
略語を避けているかbtnbuttonmsgmessage
動詞から始まる関数名かgetDatavalidateInputcalculateTotal

2. コメント

なぜ重要か

コメントは未来の自分やチームメンバーへのメッセージです。 3ヶ月後の自分はコードの意図を覚えていないと思いましょう。

チェックポイント

javascript
// × 悪いコメント: 何をしているかを書いている(コードを見ればわかる)
// iに1を足す
i++;

// ○ 良いコメント: なぜそうしているかを書いている
// APIのレスポンスが0始まりのため、表示用に1を加算
i++;
チェック項目確認ポイント
「なぜ」が書かれているかコードの意図・背景を説明している
古くなっていないかコード変更時にコメントも更新したか
TODOコメントは必要か残すべきTODOと消すべきTODOを判別したか
コメントアウトされたコードがないか不要なコードは削除する(Gitに履歴がある)

3. エラーハンドリング

なぜ重要か

「正常に動くコード」を書けるのは当たり前。 「異常なときに壊れないコード」 を書けるのがプロです。

チェックポイント

javascript
// × エラーハンドリングなし
const data = JSON.parse(response);
const name = data.user.name;

// ○ エラーハンドリングあり
try {
  const data = JSON.parse(response);
  if (!data || !data.user) {
    throw new Error('ユーザーデータが取得できません');
  }
  const name = data.user.name;
} catch (error) {
  console.error('データの処理に失敗しました:', error.message);
  // 適切なエラー処理
}
チェック項目確認ポイント
nullやundefinedの確認変数がnullになる可能性を考慮しているか
try-catchの使用失敗する可能性のある処理を囲んでいるか
エラーメッセージユーザーに親切なメッセージを表示しているか
境界値の考慮空の配列、0、マイナス値などを考慮しているか

よくあるエラーパターン

入力が空だったら?        → バリデーションが必要
ネットワークが切れたら?  → タイムアウト処理が必要
データが存在しなかったら? → nullチェックが必要
数値が想定外だったら?    → 範囲チェックが必要

4. セキュリティ

なぜ重要か

セキュリティの問題は、ユーザーの個人情報漏洩や金銭的被害につながります。 新人でも最低限の意識は必要です。

チェックポイント

チェック項目確認ポイント
機密情報のハードコードパスワード、APIキーがソースコードに直書きされていないか
入力値の検証ユーザー入力をそのまま使用していないか
エラー情報の露出スタックトレースがユーザーに見えていないか
HTTPS通信が暗号化されているか
javascript
// × 危険: APIキーのハードコード
const API_KEY = "sk-abc123456789";

// ○ 安全: 環境変数から取得
const API_KEY = process.env.API_KEY;
javascript
// × 危険: ユーザー入力をそのまま使用
const query = `SELECT * FROM users WHERE name = '${userInput}'`;

// ○ 安全: パラメータ化クエリを使用
const query = `SELECT * FROM users WHERE name = ?`;

コーディング時チェックリスト(まとめ)

markdown
## コーディング時チェックリスト

### 変数名・関数名
- [ ] 名前から意味が伝わるか
- [ ] チームの命名規則に準拠しているか

### コメント
- [ ] 「なぜ」が書かれているか
- [ ] コメントアウトされた不要なコードがないか

### エラーハンドリング
- [ ] nullやundefinedの確認をしているか
- [ ] 失敗する可能性のある処理にtry-catchがあるか
- [ ] エラーメッセージが適切か

### セキュリティ
- [ ] 機密情報がハードコードされていないか
- [ ] ユーザー入力を適切に検証しているか

まとめ

カテゴリ重要ポイント
変数名意味が伝わる名前をつける
コメント「なぜ」を書く、不要なコードは削除
エラーハンドリング異常系を考慮した堅牢なコード
セキュリティ機密情報の保護、入力値の検証

チェックリスト

  • 各カテゴリのチェックポイントを理解した
  • 良い例と悪い例の違いが分かる
  • コーディング時チェックリストを活用できる

次のステップへ

コーディング時のチェックポイントが理解できましたか?

次のセクションでは、コミット前に確認すべきチェックポイントを学びます。 コードを書いた後、チームに共有する前の最終確認です。


推定読了時間: 30分