EXERCISE 90分

演習:質問文を作成しよう

ストーリー

「質問のフォーマットは覚えたね。じゃあ実際に書いてみよう」

「はい!5つのシナリオで練習するんですね」

「そう。いろんなパターンの質問を書けるようになれば、実際の仕事でも困らないよ」


ミッション概要

5つのシナリオを読み、それぞれ適切な質問文を作成してください。

達成条件

  • 5つのシナリオすべてで質問文を作成した
  • 「やりたいこと + 現状 + 試したこと」の3点セットが含まれている
  • 相手が1回読むだけで状況を把握できる

シナリオ 1: 技術的なエラー

状況

あなたはReactでTodoアプリを作っています。「追加」ボタンをクリックしたら、Todoリストに新しいアイテムが追加される機能を実装中です。しかし、ボタンをクリックしても何も起こりません。ブラウザのコンソールに TypeError: setTodos is not a function というエラーが表示されています。

公式ドキュメントでuseStateの使い方を確認し、変数名のスペルミスがないか確認しましたが、問題が見つかりませんでした。

タスク: Slackで田中さんに質問文を書いてください

(ここに質問文を書く)
<details> <summary>解答例</summary>
@田中さん お忙しいところすみません。
TodoアプリのTodo追加機能について質問です。

【やりたいこと】
「追加」ボタンをクリックしたら、Todoリストに新しいアイテムを追加したい

【現状】
ボタンをクリックしても何も起こらず、コンソールに以下のエラーが表示されます
TypeError: setTodos is not a function

【試したこと】
- 公式ドキュメントでuseStateの使い方を確認 → 書き方に問題はなさそう
- 変数名のスペルミスを確認 → 問題なし
- console.logでsetTodosの値を確認 → undefinedと表示された

【コード】
(関連するコードを貼る)

何か見落としている点があれば教えていただけますか?
お手すきの際にお願いいたします。
</details>

シナリオ 2: 仕様の確認

状況

あなたは「ユーザー一覧画面」を作成するタスクを任されました。仕様書には「ユーザーの一覧を表示する」とだけ書かれています。以下の点がわかりません。

  • 1ページに何件表示するのか(ページネーションの有無)
  • どの項目を表示するのか(名前だけ?メールアドレスも?)
  • 並び順はどうするのか(名前順?登録順?)

タスク: 先輩の田中さんに仕様を確認する質問文を書いてください

(ここに質問文を書く)
<details> <summary>解答例</summary>
@田中さん ユーザー一覧画面の仕様について確認させてください。

仕様書に「ユーザーの一覧を表示する」とありますが、
以下の点が不明なため教えていただきたいです。

【確認したい点】
1. 表示件数: 1ページに何件表示しますか?
   → ページネーションは必要でしょうか?
   → 自分の想定: 20件/ページ + ページネーションあり

2. 表示項目: どの情報を表示しますか?
   → 自分の想定: 名前、メールアドレス、登録日
   → アイコン画像や電話番号なども必要でしょうか?

3. 並び順: デフォルトの並び順はどうしますか?
   → 自分の想定: 登録日の新しい順
   → ソート機能(名前順に切り替え等)は必要でしょうか?

この認識で進めてよろしいでしょうか?
追加の仕様があれば教えてください。
</details>

シナリオ 3: 環境構築の問題

状況

チームの開発環境をセットアップしようとしています。手順書に従って npm install を実行したところ、大量のエラーが表示され、インストールが完了しませんでした。エラーメッセージの中に ERESOLVE unable to resolve dependency tree と書かれています。

Node.jsのバージョンを確認したところ v18.17.0 でした。手順書には特にバージョンの指定はありませんでした。Google検索で同じエラーを調べ、npm install --legacy-peer-deps を試しましたが、別のエラーが出ました。

タスク: チームのSlackチャンネルに質問を投稿してください

(ここに質問文を書く)
<details> <summary>解答例</summary>
チームの皆さん、お疲れ様です。
開発環境のセットアップで問題が発生したので質問させてください。

【やりたいこと】
手順書に従って開発環境をセットアップしたい

【現状】
npm install を実行すると以下のエラーが出て、
インストールが完了しません。

ERESOLVE unable to resolve dependency tree

【環境】
- OS: macOS 14.0
- Node.js: v18.17.0
- npm: 9.6.7

【試したこと】
1. 手順書通りに npm install を実行 → 上記エラー
2. Google検索で同じエラーを調査
3. npm install --legacy-peer-deps を実行
   → 別のエラーが発生(permission denied)

手順書にはNode.jsのバージョン指定がなかったのですが、
推奨バージョンはありますか?
または、他に確認すべき点があれば教えてください。
</details>

シナリオ 4: やり方がわからない

状況

GitHubでプルリクエスト(PR)を作成するように言われました。しかし、PRを作ったことがありません。git push まではできましたが、その先の手順がわかりません。GitHubの画面を開きましたが、どこをクリックすればいいかわかりませんでした。

タスク: 先輩に質問文を書いてください

(ここに質問文を書く)
<details> <summary>解答例</summary>
@田中さん プルリクエストの作成方法について教えてください。

【状況】
feature/user-profile ブランチで実装を完了し、
git push まで完了しました。
この後、プルリクエストを作成する必要がありますが、
PRを作成するのが初めてで手順がわかりません。

【調べたこと】
- GitHubの公式ドキュメントを確認しました
- リポジトリのページに「Compare & pull request」という
  ボタンがあることは見つけました

【わからない点】
- PRのタイトルや説明文はどのように書けばよいですか?
  (チームのルールがあれば教えてください)
- レビュアーは誰を指定すればよいですか?
- マージ先のブランチは main で合っていますか?

お手すきの際に教えていただけると助かります。
</details>

シナリオ 5: 複数の選択肢で迷っている

状況

ユーザーのプロフィール画像をアップロードする機能を実装することになりました。画像の保存方法として、以下の2つの方法を見つけました。

  • 方法A: Base64でエンコードしてデータベースに直接保存
  • 方法B: AWS S3にアップロードして、URLをデータベースに保存

どちらの方法で実装すべきか判断がつきません。

タスク: 田中さんに相談する質問文を書いてください

(ここに質問文を書く)
<details> <summary>解答例</summary>
@田中さん プロフィール画像のアップロード方法について
相談させてください。

【課題】
プロフィール画像の保存方法を決める必要があります。

【選択肢A: Base64 + DB保存】
メリット:
- 実装がシンプル
- 外部サービスへの依存なし
デメリット:
- DBの容量を圧迫する可能性
- 画像サイズが約33%増加する

【選択肢B: S3 + URL保存】
メリット:
- DBの容量を節約
- 画像の配信が高速
デメリット:
- S3の設定が必要
- 実装が少し複雑になる

【自分の考え】
今回はプロフィール画像(1枚/ユーザー)だけなので、
シンプルに実装できる方法Aが良いかと思いますが、
将来的な拡張性を考えると方法Bのほうが良いのか迷っています。

チームの方針や、今回のプロジェクトに適した方法は
どちらでしょうか?
</details>

振り返り

5つの質問文を書いてみて、どうでしたか?

チェックポイント

  • 「やりたいこと + 現状 + 試したこと」の3点セットが含まれているか
  • 1回読むだけで状況を把握できるか
  • 具体的に書けているか(曖昧な表現がないか)
  • 相手に何をしてほしいかが明確か
  • 礼儀正しい表現になっているか

まとめ

シナリオ質問のポイント
技術的エラーエラーメッセージ + コード + 試したこと
仕様確認自分の理解 + 不明点のリスト
環境問題環境情報 + 再現手順 + 試したこと
やり方不明調べたこと + 具体的にわからない点
選択肢の相談選択肢の比較 + 自分の考え

次のステップへ

5つのシナリオで質問文が書けましたね。お疲れさまでした。

次のセクションでは、Step 3の理解度チェックです。 質問の仕方がどのくらい身についたか確認しましょう。


推定所要時間: 90分