0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】目的がわからなかったドキュメント

0
Posted at

はじめに

案件に参加すると、プログラムを書く以外にも、さまざまな作業が発生します。

  • SQLのステップ数の確認
  • 障害管理表の更新
  • データマートの要件とのすり合わせ(結合テスト)

PMに言われるがままにやってはいたものの、

なんでこれやってるんだろう?
記帳に何の意味があるのか。

という気持ちがずっとありました。

この記事では、当時つまずいたポイントをベースに、「なぜ必要なのか」を整理します。

目次

  1. SQLのステップ数の確認
  2. 障害管理表の更新
  3. データマートの要件とのすり合わせ(結合テスト)

1. SQLのステップ数はなぜ確認するのか

これが一番「意味わからない」と思っていました。

実際、SQLは正しく結果が返ってくれば、それで目的は達成しているように見えます。

そもそもステップ数ってなにかわからないし、、

でも調べてみると、目的、内容はシンプルでした。

ステップ数とは、
SQLやプログラムの「量」を数値で表したもの

目的は、

  • 規模を把握するため
  • 見積もりやレビュー量を決めるため

つまり、どれくらいの作業量かを測るための指標です。

例えば、

  • 数行の簡単なSQL修正
  • 複数テーブルを結合する複雑なSQLの新規作成

では、必要なレビュー時間やテスト量が全く違います。

これを感覚だけで判断すると、

  • レビューが足りない
  • テストが不足する
  • 見積もりがズレる

といった問題が起きやすくなります。

そこで、ステップ数という「ある程度の基準」を使って、規模を見える化します。

ただし重要なのは、ステップ数はあくまで目安であって、品質そのものではないという点です。

例えば、次のSQLは1行ですが非常に危険です。

DELETE FROM orders;

WHERE句がないため、全データが削除されます。

逆に、長いSQLでも、意図が明確で安全に書かれていれば問題ありません。

つまり、SQLのステップ数は、

品質を測るものではなく、作業量や影響範囲を把握するための指標

として使われています。

2. 障害管理表はなぜ必要なのか

これも最初はただの作業に見えていました。

「バグ見つけたら直せばいいじゃん」と思っていましたし、わざわざ表に書く意味が分かりませんでした。

でも実際にプロジェクトが進むと、障害管理表がないとかなり混乱します。

例えば、

  • 誰が対応するか分からない
  • 修正済みかどうか分からない
  • 同じバグが何度も報告される
  • 修正したはずなのに再発する

といった状態になります。

特に人数が増えるほど、「誰が何をやっているか」が見えなくなります。

障害管理表は、それを整理するためのものです。

また、書き方も重要で、単に「バグがある」と書くだけでは意味がありません。

最低限、次の3つを分けて書く必要があります。

  • 何が起きたか(事象)
  • なぜ起きたか(原因)
  • どう直したか(対応)

例えば、

  • 事象:特定の日付のデータが取得できない
  • 原因:日付条件の比較方法が誤っていた
  • 対応:検索条件を修正した

このように整理することで、

  • 同じ原因のバグを防げる
  • 類似箇所の確認ができる
  • 後から見ても理解できる

ようになります。

また、障害管理表は「記録」としても重要です。

後から振り返ったときに、

  • どんなバグが多かったか
  • どこでミスが起きやすいか

といった傾向も見えてきます。

つまり、障害管理表は単なるメモではなく、

バグを確実に潰し、再発を防ぐための仕組み

です。

3. データマートの要件とのすり合わせ(結合テスト)

これも最初は「なんでこんな確認するの?」と思っていました。

単体テストで動いているなら、それで十分に見えてしまうからです。

でも実際は、ここでズレがかなりの確率で見つかります。

例えば、

  • データの結合条件が違う
  • 想定しているデータ範囲が違う
  • NULLの扱いが違う
  • 集計ロジックが要件とズレている

といった問題です。

単体テストでは「その処理単体が正しいか」しか見ていません。

一方で、結合テストでは、

  • 他のテーブル
  • 他のシステム
  • 実際のデータ

と組み合わせたときにどうなるかを確認します。

ここで初めて、

「仕様として正しいか」

が見えてきます。

特にデータマートのような集計系では、

  • 元データの粒度
  • 結合キー
  • 集計単位

が少しでもズレると、結果が大きく変わります。

そしてこのズレは、コードだけ見ていても気づきにくいです。

実際にデータを流してみて初めて分かります。

結合テストは、

実際の利用に近い状態で動かして、仕様とのズレを確認する工程 です。

つまり、

「動くかどうか」ではなく「正しいかどうか」を確認するための作業 です。

まとめ

  • SQLのステップ数
  • 障害管理表
  • 結合テストでの要件とのすり合わせ

あたりが特に「なんでやるの?」状態でした。

でも整理すると、それぞれの役割はシンプルです。

項目 目的
SQLのステップ数 作業量を把握する
障害管理表 バグを確実に管理する
結合テスト・すり合わせ 仕様どおり動くか確認する

全部に共通しているのは、

認識ズレと漏れを防ぐため

という点です。

  • ステップ数 → 作業量の認識ズレを防ぐ
  • 障害管理表 → 対応漏れや再発を防ぐ
  • 結合テスト → 仕様とのズレを防ぐ

最初は意味が分からなくても大丈夫ですが、
「何を防ぐための作業なのか」を意識すると理解しやすくなります。

ただ言われたことをやるだけでなく、
「これは何のためにあるのか」「なんで工数を取って作業する必要があるのか」を考えるようになると、
仕事の見え方が少し変わってくると感じました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?