つくって測った記録
生成AIを使ったアプリを個人で作りながら、精度と速度を実際に測っています。 うまくいった話だけでなく、測ったら悪化していて差し戻した変更も残しています。 その方が次に作る人の役に立つからです。
書いた方法を、自分でも使っています
この進め方で、実際に30種類の計算ツールを運用しています
テストが通ったことだけでは信用せず、わざと間違いを混ぜて、 それを見つけられるかまで確かめてから公開しています。 その進め方で作ったのが、勤怠・給与・事務の無料ツールです。
- 30種類実際に使える計算ツール
- ブラウザ内入力値を外へ送らない
- 継続検証更新のたびにCIで確認
サーバーを持たず、鍵もあずからない作りにしてあるので、 HTMLを1行貼れば、そのまま自分のサイトでも動きます。
実測にもとづく記事
- 通っている検査が、狙いと違うものを測っていた9件
静的サイト2つに自動検査を16本書いた10日間で、9件は「書いたつもりの対象」と「実際に測っていた対象」がずれていました。全部が緑のまま守られていなかった事例を、気づいた経緯つきで並べます。
- 日本語の自動検査、指摘190件のうち58%が誤検出だった
textlintの技術文書向けプリセットを労働法の解説サイトへそのまま当てたところ、190件の指摘のうち111件が誤検出でした。規則を切った判断と、その理由を全部並べます。
- AIアプリの更新履歴は「見分けがつくこと」を書く
自動更新されるAIアプリでは、利用者は不具合が直ったのか古い版を掴んでいるのかを区別できません。8日間で38回更新したアプリで、更新履歴の書き方をどう変えたかを書きます。
- 合成ベンチマークが100%でも、実物の精度は何も保証されない
生成AIアプリの回帰テストとして自動生成した問題でベンチを組みましたが、その正答率は実物に対する正答率とは別物でした。テストもビルドも通ったまま精度が落ちた版を出荷した話です。
- AIの「思考量を減らす」最適化が精度も速度も悪化
書き写しに推論は要らないだろうと考えて思考量を下げたところ、正答率が落ちたうえに所要時間まで伸びました。差し戻すまでに分かったことと、代わりに効いた速度改善を書きます。
- AIに「写させる」だけで正答率が17%から94%に
画像の問題を生成AIに解かせると正答率17%でした。AIには図の書き写しだけをさせ、規則の探索は端末側のコードに任せる構成に変えたところ94%になりました。実測値と、この分け方が効く条件を書きます。
そのほかの記事
- APIキーを利用者に持ち込んでもらう設計と責任
生成AIのAPIキーをアプリに埋め込まず、利用者が各自で用意する形にしています。課金が利用者持ちになるぶん、呼び出し回数の設計が機能の一部になりました。
- 利用者のデータを端末の中だけに置く設計と、そこで諦めたこと
APIキーも履歴も、自分のサーバーを持たず端末内(IndexedDB)にだけ保存する構成にしました。AIを呼ぶときはブラウザから提供事業者のAPIへ直接送ります。得られたものと、代わりに諦めることになった機能を書きます。
- 無料枠の使用回数を数える設計と、時差でずれた話
生成AIの無料枠を使い切らないよう、この端末から送ったリクエスト数を自前で数えています。日付の区切りが現地時間ではなかったこと、複数タブで二重に数えたことなど、実装で踏んだ点を書きます。
- 自動再試行を503と504だけに限定した理由
生成AIのAPIが失敗したとき、何でも再試行すると無料枠を無駄に消費し、利用者の意図にも反します。再送する条件を2つの状態コードだけに絞った経緯を書きます。
- PWAで配ると決めたあとに踏んだ落とし穴 7つ
審査もストアも通さずWebアプリをそのまま配れるのがPWAの利点ですが、更新・キャッシュ・アイコン・インストール判定で実際に事故が起きます。自作アプリで踏んだものを対処つきで書きます。
- 月額ゼロで実用アプリを配る構成と、無料枠の現実的な制約
個人が作ったアプリを、サーバー代もストアの年会費も払わずに配っています。実際に使っている構成と、無料枠ゆえに起きる問題への対処を書きます。
- AIアプリの精度を毎日自動で測り差分で見つける
LLMを使うアプリは同じ入力でも出力が変わるため、通常の回帰テストが効きません。毎日ベンチを回して正答率だけをテキストに追記し、コミットして差分で気付けるようにした構成を書きます。
- 使う人が技術に詳しくない前提でアプリを作るときに決めたこと
家族が使う前提で議事録アプリを作りました。便利な既定値をあえて廃止した理由など、操作を減らすことより事故を減らすことを優先した判断を書きます。
- Codex と Claude Code を併用した開発構成
2つのコーディングエージェントを行き来して開発するとき、会話は共有されません。GitHubのmainだけを引継ぎ媒体にし、ルールを1ファイルに集約した運用を書きます。