Goでマジサバ試験サイトを作る
from Goを学ぶ, マジサバ試験サイトを作る
2026/1/31までに完了させたい. 爆速で作るため, Geminiに細かく依頼しよう
xStep 2.1: 環境構築とルーティング (Echo + Templ)
xTemplの導入
xgo install でTemplを導入
xgo generate でGoコードへトランスパイルするビルドフローを確立
xルーティング定義: MVPの画面遷移に合わせて e.GET を設定
x/ > トップ・登録
x/exam > 試験
x/result > 結果
xハンドラ実装: 単なる文字列でなく,Templコンポーネントをレンダリングして返す. component.Render
xStep 2.2: データ構造の設計 (Struct) - "Markdown to Struct" (3-5h)
xQuestion構造体
Markdownテキストからパースした問題文 / 選択肢 / 正解を保持する構造体を定義
xSession/Answer構造体
ユーザーの解答状況(未解答/解答済み)と一時保存データを管理する構造体を設計
xStep 2.3: ロジック実装 (Markdownパーサーと問題読み込み) (5-8h)
xMarkdownパーサー実装
テキストファイル(問題データ)を読み込み,Step 2.2の Question 構造体に変換するロジックを実装
正規表現や bufio.Scanner を用いて,問題文と選択肢を分離して格納
!Step 2.4: フロントエンド連携 (Templ + htmx + Alpine.js) (6-10h)
xマークシートUI
TemplとTailwindで「共通テスト風」の見た目を構築
Alpine.jsで選択状態(塗りつぶし)のUI挙動を制御
!解答の自動保存
htmx (hx-post, hx-trigger="change") を使用
選択肢をクリックするたびにバックグラウンドで解答状況をGoサーバーへ送信・保存
!タイマー
Alpine.jsを用いてクライアントサイドで時間を管理
時間切れで /result へ強制遷移
xStep 2.5: 採点システムと結果表示 (3-5h)
x採点ロジック
終了ボタン押下時 (POST /submit) ,保存されたユーザーの解答と正解データ(Struct)を比較してスコアを計算
x結果レンダリング
合否判定ロジックを通し,結果画面のTemplコンポーネントを生成して返す