docoach

文章読解問題アプリ 仕様・設計まとめ(v0.1)

  1. 目的
    • 小学4・5・6年生向けの文章読解力向上
    • 単なる正誤判定ではなく
「どの読解スキルが苦手か」を可視化する
    • iPad単体で完結し、オフラインでも利用可能
  2. 対象環境 項目 内容 デバイス iPad mini OS iPadOS 開発環境 macOS + Xcode 言語 Swift UI SwiftUI DB SQLite(ローカル) ネット接続 不要(将来拡張あり)
  3. システム全体構成

┌──────────────────────────┐ │ iPad mini │ │ ┌────────────────────┐ │ │ │ 文章読解アプリ │ │ │ │ │ │ │ │ UI / UX層 │ │ │ ├ 文章表示 │ │ │ ├ 設問表示 │ │ │ ├ 解答入力 │ │ │ └ 結果・解説 │ │ │ │ │ │ アプリロジック層 │ │ │ ├ 出題制御 │ │ │ ├ 正誤判定 │ │ │ ├ 時間計測 │ │ │ └ 学年制御 │ │ │ │ │ │ 分析・推薦層 │ │ │ ├ 学習ログ集計 │ │ │ ├ 苦手タグ算出 │ │ │ └ 次回出題最適化 │ │ │ │ │ │ データ層 │ │ │ ├ 問題DB │ │ │ ├ タグDB │ │ │ └ 学習ログDB │ │ └────────────────────┘ └──────────────────────────┘

  1. 問題データ設計 4.1 基本方針
    • 問題は 文章+設問 で構成
    • 設問単位で 2〜4個のタグ を付与
    • タグは「教えたい力」ではなく
「間違える理由」 を表す
  2. タグ設計(定義値) 5.1 MVP必須タグ(8個)

主題把握 要点抽出 指示語 心情理解 因果関係 推論 抽象理解 具体⇄抽象

5.2 タグカテゴリ カテゴリ 内容 skill 読解スキル thinking 思考レベル structure 文構造 vocab 語彙・表現 5.3 タグ例(拡張含む) 読解スキル系

多義語

  1. DB設計(SQLite) 6.1 テーブル構成

Question Tag QuestionTag AnswerLog

6.2 Question(問題)

Question

id TEXT PRIMARY KEY grade INTEGER text TEXT difficulty INTEGER created_at DATETIME

6.3 Tag(タグマスタ)

Tag

id TEXT PRIMARY KEY category TEXT name TEXT priority INTEGER

6.4 QuestionTag(多対多)

QuestionTag

question_id TEXT tag_id TEXT

6.5 AnswerLog(学習ログ)

AnswerLog

id TEXT PRIMARY KEY question_id TEXT is_correct BOOLEAN time_sec INTEGER answered_at DATETIME 設計方針

  1. 学習ログ取得指標 指標 用途 正誤 理解度 解答時間 読解負荷 タグ 苦手分類 日時 成長推移
  2. 苦手分析ロジック 8.1 タグ別正答率

誤答率 = 誤答数 / 全回答数

8.2 タグ別平均時間

平均解答時間 = time_sec の平均

8.3 苦手度スコア(例)

苦手度 = (誤答率 × 0.7) + (時間超過率 × 0.3)

8.4 出題制御ルール(初期)

苦手タグ問題:60% 通常問題  :40%

  1. 処理フロー(1問)

起動 ↓ 学年選択 ↓ 問題選択(分析結果) ↓ 文章表示 ↓ 解答入力 ↓ 正誤判定 ↓ AnswerLog保存 ↓ 次の問題

  1. DB配置

iPad内 └ Documents/ └ reading.db

  1. クラウド方針 フェーズ 方針 初期 クラウドなし 中期 iCloudバックアップ 将来 ログ同期・保護者画面
  2. MVPでやらないこと
    • 集計結果テーブル作成
    • スコアの永続化
    • 初期クラウド連携 👉 すべて動的計算
  3. 次フェーズ候補
    • 記述式答案ログ(answer_text)
    • 学年別タグ重み
    • 保護者用ダッシュボード
    • 問題自動生成(LLM連携)
  4. まとめ
    • Swift + SQLite + オフライン完結
    • タグ中心設計で「苦手の理由」を可視化
    • 小さく始めて、壊さず拡張できる構成