「どこで覚えたか」まで記録する日本語単語帳アプリを個人開発
日本に住むインドネシア人エンジニアとして、日常で拾った日本語をすぐ忘れて しまうという自分の課題を解決するために作った、個人用の日本語単語帳アプリです。 企画・設計・実装・デプロイまで一人で行いました。 ■ コンセプト 単語を覚えるとき「どこで聞いたか」の記憶が半分を占めると考え、 ・記録する(Capture)… 単語を打つだけで、ふりがな・インドネシア語/英語の意味・ 例文が自動で入力される。さらに「深夜食堂 S2 第3話」「職場の佐藤さん」など 出典を構造化して残せる ・見返す(Browse)… テーブル/ベントーグリッド表示、出典・習熟度・復習期限で絞り込み ・練習する(Practice)… SM-2アルゴリズムの間隔反復フラッシュカード という3つの体験に絞って設計しました。 ■ 技術的にやったこと ・自動入力パイプライン … Jisho APIで正確な読み・品詞・JLPTレベルを取得し、 辞書にないスラングやインドネシア語訳・例文は Gemini で補完。 入力はデバウンス+IME変換中のガードを入れ、無駄なAPI呼び出しを防止 ・間隔反復エンジン … SM-2を3ボタン方式で実装。純粋関数として切り出し、 Vitestでユニットテスト済み ・セキュリティ … Google OAuth+メールアドレスのallowlistをミドルウェアで強制。 さらに全テーブルにPostgresの行レベルセキュリティ(RLS)をかけ、 鍵が漏れてもデータが露出しない構成に ・PWA対応(インストール可能・オフラインシェル)、 UIライブラリを使わずTailwindでレトロ/ブルータリズム風のデザインシステムを自作 ■ 技術スタック Next.js 16 (App Router / Server Actions) / React 19 / TypeScript / Tailwind CSS / Supabase (Postgres + Auth + RLS) / Vercel AI SDK v6 + Gemini / Vitest / Vercel ■ 結果 すべて無料枠のみで運用でき、今も自分が毎日使っています。 単一ユーザー向けアプリのため、公開用に /about ページを用意し、 機能を一通り紹介できるようにしました。