EXERCISE 90分

演習:報告書を作成しよう

ストーリー

「報告書の書き方を一通り学んだね。じゃあ実際に書いてみよう」

「週報と障害報告書、両方ですか?」

「うん。シナリオを用意したから、それをもとに書いてみて」


ミッション概要

2つの報告書を作成してください。

達成条件

  • 週報がテンプレートに沿って書けている
  • 障害報告書がテンプレートに沿って書けている
  • 結論ファーストで書けている
  • 具体的な数値や日付を使っている
  • 箇条書きで読みやすくまとまっている

Part 1: 週報を書こう

シナリオ

あなたはWebアプリ開発プロジェクトのフロントエンドエンジニアです。 以下が今週の活動内容です。

今週の活動(4月7日〜4月11日):

月曜日:
- チーム定例ミーティングに参加(認証機能の仕様が確定)
- ログイン画面のコンポーネント設計を開始

火曜日:
- ログイン画面のUIを実装(React + Material UI)
- フォームのバリデーション実装

水曜日:
- ログイン画面の実装完了
- 単体テスト12件を作成(全件パス)
- コードレビューを依頼

木曜日:
- コードレビューで指摘された2件を修正
  1. エラーメッセージの表示位置
  2. パスワード入力フィールドのアクセシビリティ対応
- ユーザー登録画面の実装に着手

金曜日:
- ユーザー登録画面のUI実装(50%完了)
- 来週の作業計画を整理

課題:
- バックエンドAPIのエラーレスポンス形式がまだ決まっておらず、
  エラーハンドリングの実装ができていない
  → 田中さん(バックエンド担当)に確認中。4/14までに回答予定

来週の予定:
- ユーザー登録画面の完成
- エラーハンドリングの実装(API仕様確定後)
- パスワードリセット画面の着手

学んだこと:
- Material UIのカスタムテーマの設定方法
- Reactのフォームバリデーションライブラリ(React Hook Form)の使い方

タスク

上記の内容をもとに、週報を作成してください。

<details> <summary>解答例</summary>
markdown
# 週報 2025-04-07 〜 2025-04-11

## 報告者
(あなたの名前)

## 今週の成果

### 完了したタスク
- ログイン画面のUI実装完了(React + Material UI)
- フォームバリデーション実装完了
- 単体テスト12件作成(全件パス)
- コードレビュー指摘事項2件の修正完了
  - エラーメッセージの表示位置修正
  - パスワード入力フィールドのアクセシビリティ対応

### 進行中のタスク
- ユーザー登録画面のUI実装: 50%(来週前半に完了予定)

## 来週の計画

1. ユーザー登録画面の実装完了(優先度: 高)
2. エラーハンドリングの実装(優先度: 高 / API仕様確定後)
3. パスワードリセット画面の着手(優先度: 中)

## 課題・リスク

- **バックエンドAPIのエラーレスポンス形式が未確定**
  - 影響: エラーハンドリングの実装が着手できない
  - 対応: 田中さんに確認中(4/14までに回答予定)

## 学んだこと・気づき

- Material UIのカスタムテーマ設定方法を習得した
- React Hook Formでのバリデーション実装を学んだ
</details>

Part 2: 障害報告書を書こう

シナリオ

以下の障害が発生しました。この内容をもとに障害報告書を作成してください。

発生日: 2025年4月10日(木)

何が起きたか:
- 午前9:00頃、ユーザーから「ログインできない」という問い合わせが3件来た
- 午前9:05に、監視ツール(Datadog)からアラートが届いた
  「認証サービスのエラー率が50%を超過」
- 午前9:10に、田中さんが調査を開始した
- ログを確認したところ、認証サービスが使用しているAuth0との
  通信でタイムアウトエラーが発生していた
- 午前9:20に、Auth0のステータスページを確認したところ、
  Auth0側でシステム障害が発生中であることが分かった
- 午前9:25に、Auth0の障害が復旧し始めた
- 午前9:30に、自社サービスの認証も正常に戻った
- 午前9:35に、全機能の動作確認を実施し、問題がないことを確認した

影響:
- 約30分間、全ユーザー(推定800名)がログインできなかった
- データの損失はなし
- ユーザーからの問い合わせ: 合計12件

原因:
- Auth0(外部サービス)側のシステム障害
- 自社サービスにAuth0障害時のフォールバック(代替手段)がなかった

対応:
- Auth0のステータスを監視し、復旧を待った
- 復旧後に全機能の動作確認を実施した

再発防止として考えたこと:
- Auth0のステータスページを監視対象に追加する
- Auth0障害時のキャッシュ認証(一定時間内の再ログインは許可)を検討する
- ユーザー向けの障害通知ページを用意する

タスク

上記の内容をもとに、障害報告書を作成してください。

<details> <summary>解答例</summary>
markdown
# 障害報告書: 認証サービス障害によるログイン不可

## 概要

| 項目 | 内容 |
|------|------|
| 報告者 | (あなたの名前) |
| 発生日時 | 2025-04-10 09:00 〜 09:30(約30分間) |
| 検知方法 | ユーザーからの問い合わせ + 監視アラート(Datadog) |
| 影響範囲 | 全ユーザー(推定800名)のログイン機能 |
| 重要度 | Critical |

## タイムライン

| 時刻 | イベント |
|------|---------|
| 09:00 | ユーザーから「ログインできない」の問い合わせ(3件) |
| 09:05 | Datadogアラート発報(認証サービスエラー率 > 50%) |
| 09:10 | 田中が調査開始。Auth0通信のタイムアウトエラーをログで確認 |
| 09:20 | Auth0ステータスページでAuth0側の障害を確認 |
| 09:25 | Auth0側の障害が復旧開始 |
| 09:30 | 自社認証サービスが正常復旧 |
| 09:35 | 全機能の動作確認を完了。問題なし |

## 原因

### 直接原因
Auth0(外部認証サービス)側でシステム障害が発生し、認証APIへの通信がタイムアウトした。

### 根本原因
- 外部サービス(Auth0)の障害時にフォールバック(代替手段)が用意されていなかった
- Auth0のステータスを自社監視に組み込んでいなかった

## 対応内容

1. Auth0のステータスページで障害発生を確認
2. Auth0側の復旧を待機
3. 復旧後、全APIエンドポイントの動作確認を実施

## 影響

- 約30分間、全ユーザーのログイン機能が利用不可
- データ損失: なし
- ユーザーからの問い合わせ: 合計12件

## 再発防止策

| 対策 | 担当 | 期限 |
|------|------|------|
| Auth0ステータスページの監視追加 | 鈴木 | 2025-04-14 |
| Auth0障害時のキャッシュ認証の設計・実装 | 田中 | 2025-04-25 |
| ユーザー向け障害通知ページの作成 | 佐藤 | 2025-04-18 |

## 教訓

- 外部サービスへの依存がある場合、障害時の代替手段を事前に用意すべき
- 外部サービスのステータスも自社の監視対象に含めるべき
</details>

Part 3: 自分の週報を書いてみよう

タスク

あなた自身の今週の学習内容をもとに、週報を作成してください。

  • 今週学んだこと(このミッションの内容でOK)
  • 来週の計画(次に取り組むStep)
  • 課題があれば記載

実際の学習を振り返ることで、報告書を書く練習にもなり、学習の定着にもつながります。


達成度チェック

チェック項目Part 1Part 2Part 3
テンプレートに沿った構成
結論ファーストで書けている
具体的な数値・日付がある
箇条書きで読みやすい
主語が明確

まとめ

この演習で実践したこと:

項目内容
Part 1シナリオをもとに週報を作成
Part 2シナリオをもとに障害報告書を作成
Part 3自分の学習内容で週報を作成

重要なポイント

  1. テンプレートに沿って書けば構成に迷わない
  2. 結論ファースト + 箇条書きで読みやすく
  3. 課題には「影響」と「対応」をセットで

次のステップへ

報告書の作成は実践できましたか?

次のセクションでは、Step 3の理解度をチェックするクイズです。


推定所要時間: 90分