eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

久々にアプリをリリースした話

リリースしたアプリ「やさしい漢字」

漢字の書き取りのために拡大表示する機能と、その漢字が何年生で習ったのかを表示するだけのシンプルなアプリ

なんでアプリを作ったのか

  • 自分自身、漢字の書き取りが苦手である
    • 子供の学習の手伝いすらできないレベルで苦手
  • 辞書で調べても字が小さい。もう少し大きく表示させたい
  • いつもスマホで調べてるが、拡大表示できたほうが便利
  • じゃあ作ろうか
  • という流れ

直接配布はできないのか?

  • 子供のスマホが、子供向けアカウントとしてセットアップされている
  • 色々面倒がありそうだし、子供の端末に裏口を作りたくない
  • デバッグモードにするより、正規ルートで配信することを目指してみた

仕様

  • もともとは結構いろんな機能があったが、「漢字」に絞ることで仕様を単純化してリリースすることを目指した
  • 目指していた機能については、アップデートで対応していく予定

技術

  • せっかくなので、Flutter + マルチプラットフォームで開発している
  • Webアプリは、子供にブラウザを使わせたくないので対応していない
  • iOS対応しているのは自分自身の学習のためでもある

Cursorの活用

  • 開発初期〜設計が確定する中期まではCursorのProプラン = $20 / 月を活用していた
  • ある程度アプリとしての設計が固まったここ1ヶ月くらいはComposer-1 + Slash-Commandの組み合わせで実装の7割くらいをAI Agentに任せる運用にしている
    • 開発速度は上がったが、財布が干上がる速度も上がった
    • 今では$20 / 月 + オンデマンド $10〜$20程度を課金している

AI Agent活用の所管

  • 設計を任せるのはまだ難しい。あっという間にContext Windowが枯渇して、全体を俯瞰するのがつらくなる。
  • 実装を任せることはできる
  • AI Agentが「設計」をしないようにタスクを切るのが良い
    • 最初に計画ファイルを作らせる -> 計画を監査(手動・自動両面で)する -> サマライズする -> 実装する
    • というステップを踏むと、Context Windowが足りないなりに実装だけを行わせられる
    • アーキテクチャレイヤーを明確に区切っているので、AI Agentには「データ層の作業を切り出す」「ユースケース層と、それ以外でタスクを分割」のように指示することでスコープを小さく指示できる
  • マルチモジュールを活用 + DIを活用することで、AI Agentが食べるContextのスコープを区切ることで対処しやすくなった
  • 初期に可能な限り(自分にとって)キレイな状態のプロジェクトとリファレンスとなる実装を作っておくことが重要で、ここで妥協しなかったのが大きいと思われる
  • 「完璧ではないが、自分にとって70点くらいの出力をコンスタントに出せる」くらいまでにはなってきてる
    • ただし金も出ていく

その他のAI活用

  • アイコン作成はGeminiにやらせた
  • アイコンの背景とかの調整はPhotoshopのAIにやらせた
  • アプリをリリースするだけで何枚画像を作らせるねん

今後の展望

  • 生成AI(Firebase AI Logic)を使った機能を予定しているが、悪意ある第三者の課金攻撃に耐えられる設計にしないといけないので仕様を調整しなければならない
  • 一番下の子供が小学校を卒業するまで、多分コツコツとメンテしていきそう
  • 楽しんでいろんな機能を作れるので、ヨシ