File tree Expand file tree Collapse file tree 1 file changed +19
-16
lines changed
Expand file tree Collapse file tree 1 file changed +19
-16
lines changed Original file line number Diff line number Diff line change 7979
8080## バックエンド
8181
82- ### 3層アーキテクチャ(Controller / Service / Repository)
82+ ### 🏗️ 3層アーキテクチャ(Controller / Service / Repository)
8383
84- 責務を明確に分離し、各層をインターフェースで接続することで依存性を注入(DI)している。
84+ - ** 責務の分離とDI** :
85+ 各層の責務を明確に分離し、インターフェースで接続することで依存性を注入(DI)しています。Controller層はHTTPリクエストの受付・レスポンス返却、Service層はビジネスロジック、Repository層はDBアクセスを担当しています。
8586
86- - ** Controller層** :HTTPリクエストの受付・バリデーション・レスポンス返却
87- - ** Service層** :ビジネスロジック(Gemini呼び出し、答え合わせ、ブックマーク管理など)
88- - ** Repository層** :GORM を用いたDBアクセス
87+ ### 🤖 Gemini API 連携
8988
90- ### Gemini API 連携
89+ - ** プロンプト調整** :
90+ 京都人と大阪人のキャラ付け、前半→中盤→終盤で難易度が段階的に下がるヒント構成など、クイズとして成立するよう細かく指示を設計しました。
91+ - ** JSON構造化出力** :
92+ レスポンスのMIMEタイプとJSONスキーマを指定することで、Gemini の出力を確実にパース可能な JSON 形式に制約しています。
93+ - ** 生成パラメータの調整** :
94+ 毎回異なるお題・会話が生成されやすいように生成パラメータを設定し、ランダム性を高めつつ日本語として破綻しないラインを狙いました。
9195
92- - ** プロンプト調整** :京都人と大阪人のキャラ付け、前半→中盤→終盤で難易度が段階的に下がるヒント構成など、クイズとして成立するよう細かく指示を設計した。
93- - ** JSON構造化出力** :レスポンスのMIMEタイプとJSONスキーマを指定することで、Gemini の出力を確実にパース可能な JSON 形式に制約している。
94- - ** 生成パラメータの調整** :毎回異なるお題・会話が生成されやすいように生成パラメータを設定し、ランダム性を高めつつ日本語として破綻しないラインを狙った。
96+ ### ✅ 答え合わせの仕組み
9597
96- ### 答え合わせの仕組み
98+ - ** 表記ゆれを網羅した正解判定** :
99+ 事前に想定される正解を、漢字・ひらがな・カタカナ・英語・略称など考えうる表記ゆれを含めて複数パターン用意し、いずれかに一致すれば正解と判定します。ただしユーザに提示する正解表示は代表的な1つのみとし、シンプルな体験を保っています。
97100
98- 事前に想定される正解を、漢字・ひらがな・カタカナ・英語・略称など考えうる表記ゆれを含めて複数パターン用意し、いずれかに一致すれば正解と判定する。ただしユーザに提示する正解表示は代表的な1つのみとしている。比較には大文字小文字を無視する。
101+ ### 🔒 簡易的な不正対策
99102
100- ### 簡易的な不正対策
103+ - ** 答え取得までの時間制限** :
104+ ログイン機能を実装しない構成の中で、ゲーム開始から一定時間(90秒)が経過するまでは答えを取得できないようにしました。APIを直接叩いて即座に答えを見るような行為を防ぐ、簡易的なセキュリティ対策として実装しています。
101105
102- ログイン機能を実装しない構成の中で、ゲーム開始から一定時間(90秒)が経過するまでは答えを取得できないようにした。APIを直接叩いて即座に答えを見るような行為を防ぐ、簡易的なセキュリティ対策として実装している。
106+ ### ⚠️ エラーハンドリング
103107
104- ### エラーハンドリング
105-
106- エラーを独自の型として定義し、型によってエラーの種別を判定している。文字列比較に頼らないため、エラーメッセージの変更に対応しやすくした。Controller層ではエラー種別に応じて適切なHTTPステータスコード(400 / 403 / 404 / 500)を返し分けている。
108+ - ** 型によるエラー判定** :
109+ エラーを独自の型として定義し、型によってエラーの種別を判定しています。文字列比較に頼らないため、エラーメッセージの変更に対応しやすくしました。Controller層ではエラー種別に応じて適切なHTTPステータスコード(400 / 403 / 404 / 500)を返し分けています。
107110
108111---
109112
You can’t perform that action at this time.
0 commit comments