本文へスキップ
Ruminbo工房
MOBILE APP

けいさん

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

開発中 / おけいこの姉妹アプリ / 仕様 v1.0 確定
React NativeExpoTypeScriptreact-native-svgexpo-speechJest / React Native Testing Library
けいさん の画面
PROBLEM

解決した課題

「おけいこ」の算数版として、4〜9歳が数の概念から四則演算までを段階的に学べるものにしたい。ただし対象年齢の幅が広く、絵を数える段階の子と、数字だけで複合計算をする段階の子を、同じアプリの中に収める必要がありました。

APPROACH

設計アプローチ

「かぞえる → 絵で+− → 数字で+− → ×÷ → 複合」の5段階に分け、レベルが上がるほど具体(絵)から抽象(数字)へ移します。出題生成・式の評価・採点はすべて副作用のない純粋関数として domain 層に置き、乱数はシードを注入して決定論的に検証できる構造にしました。姉妹アプリと同じく完全オフライン・データ収集ゼロです。

HIGHLIGHTS

技術的に難しかった点

  • 制約を満たす出題だけを作る生成器

    わりざんは割り切れる組合せのみ、複合計算は途中・最終の値がすべて0以上の整数になる組合せのみ。作って条件を破ったら捨てる rejection sampling で、解ける問題だけを出す。

  • シード注入で決定論的にしたドメイン層

    domain 層では Math.random() を呼ばず、シード可能な乱数を引数で受け取る。同じシードなら同じ出題になるため、出題ロジックを固定シードのテストで担保できる。層をまたぐ import は ESLint で機械的に禁止。

  • 桁数を伏せたままの数値入力

    0〜9パネルで左から組み立て、自動確定はしない(答えの桁数をヒントにさせない)。先頭の余分な0は無視しつつ、5−5 のように答えが0のときだけ「0」単独の入力を許す判定にしている。

  • TTSの読み揺れ対策

    助数詞や演算子の読みをデータ側に持たせ、端末読み上げの誤読を抑える。読み上げが使えない端末でも、視覚だけで遊べるようにしている。

SCREENS

画面

他の制作実績を見る

同じような開発を相談する

「こういうアプリを作りたい」のご相談、歓迎です。内容をお聞かせください。
フォームへ進む