MOBILE APP
けいさん
子ども向けの、かず・けいさんを絵と音声で段階的に学ぶ学習アプリ(おけいこの姉妹アプリ)。

PROBLEM
解決した課題
「おけいこ」の算数版として、4〜9歳が数の概念から四則演算までを段階的に学べるものにしたい。ただし対象年齢の幅が広く、絵を数える段階の子と、数字だけで複合計算をする段階の子を、同じアプリの中に収める必要がありました。
APPROACH
設計アプローチ
「かぞえる → 絵で+− → 数字で+− → ×÷ → 複合」の5段階に分け、レベルが上がるほど具体(絵)から抽象(数字)へ移します。出題生成・式の評価・採点はすべて副作用のない純粋関数として domain 層に置き、乱数はシードを注入して決定論的に検証できる構造にしました。姉妹アプリと同じく完全オフライン・データ収集ゼロです。
HIGHLIGHTS
技術的に難しかった点
制約を満たす出題だけを作る生成器
わりざんは割り切れる組合せのみ、複合計算は途中・最終の値がすべて0以上の整数になる組合せのみ。作って条件を破ったら捨てる rejection sampling で、解ける問題だけを出す。
シード注入で決定論的にしたドメイン層
domain 層では Math.random() を呼ばず、シード可能な乱数を引数で受け取る。同じシードなら同じ出題になるため、出題ロジックを固定シードのテストで担保できる。層をまたぐ import は ESLint で機械的に禁止。
桁数を伏せたままの数値入力
0〜9パネルで左から組み立て、自動確定はしない(答えの桁数をヒントにさせない)。先頭の余分な0は無視しつつ、5−5 のように答えが0のときだけ「0」単独の入力を許す判定にしている。
TTSの読み揺れ対策
助数詞や演算子の読みをデータ側に持たせ、端末読み上げの誤読を抑える。読み上げが使えない端末でも、視覚だけで遊べるようにしている。
SCREENS
画面


