1週間で何が起きたのか

2月3日(月)から2月9日(日)の7日間で、chatweb.aiに93コミットが入った。1日平均13コミット。しかも、ただ量が多いだけじゃない。この1週間で追加された機能をリストアップすると、自分でも驚く。

新ツール 15個:

  • Slack連携(メッセージ送信・チャンネル検索)
  • Notion連携(ページ作成・データベースクエリ)
  • YouTube連携(動画検索・字幕取得)
  • GitHub連携(Issue作成・PR一覧)
  • Google Calendar連携
  • ほか10個のユーティリティツール

基盤改善:

  • PWA対応(ホーム画面に追加可能に)
  • 多言語対応(日本語・英語・中国語・韓国語)
  • ストリーミングレスポンスの安定化
  • モバイルUIの全面リニューアル

正直、人間だけでやったら3ヶ月はかかる量だと思う。

Claude Codeとの共同作業

これだけの量を出せた理由は明確で、Claude Codeとの開発フローが完全に噛み合ったからだ。

朝、その日作りたい機能を3つ決める。Claude Codeに「Slack連携のツールを作って。既存のGitHub連携ツールと同じパターンで」と指示する。すると、既存コードを読み込んで、同じアーキテクチャで新しいツールを生成してくれる。型定義、エラーハンドリング、テスト。全部揃った状態で出てくる。

僕がやるのは:

  1. 方向性を決める — 「次はNotion連携」
  2. レビューする — 生成されたコードの品質チェック
  3. エッジケースを指摘する — 「APIレートリミットに引っかかった場合は?」
  4. 統合テスト — 実際にSlackにメッセージが飛ぶか確認

コードを書く時間より、レビューする時間の方が長い。これが今の開発スタイルだ。

一番大変だったのはPWA化

15個のツール追加は正直、パターンが決まればサクサク進んだ。一番大変だったのはPWA(Progressive Web App)対応だ。

chatweb.aiはRust(axum)でサーバーサイドレンダリングしている。HTMLはinclude_str!()でバイナリに埋め込み。この構成でService Workerを動かすには、いくつかハマりどころがあった。

  • キャッシュ戦略: AIチャットの応答はキャッシュしちゃダメだけど、UIアセットはキャッシュしたい
  • オフライン対応: ネット切れた時に「オフラインです」と出すだけでも、Service Workerの登録が必要
  • manifest.json: include_str!()で埋め込むか、別エンドポイントで返すか

結局、/manifest.json/sw.jsを専用ルートとして追加し、Service Workerはネットワークファースト戦略にした。オフラインキャッシュは最小限にして、AIチャットという性質上「ネット必須」と割り切った。

ユーザー数の変化

この1週間のリリースラッシュの結果、ユーザー数が目に見えて動いた。

  • DAU(デイリーアクティブ): 45 → 120
  • ツール利用率: 新ツールを1つ以上使ったユーザーが全体の34%
  • セッション時間: 平均4分 → 11分

特にSlack連携が人気だった。「chatweb.aiの画面からSlackにメッセージ送れるの便利」という声が多い。AIと会話しながら、その結果をそのままSlackに投げられるのが刺さったらしい。

学んだこと

93コミットを振り返って思うのは、**「速度は品質の敵ではない」**ということだ。

AI支援開発では、パターンが決まっていれば品質を保ったまま速度を上げられる。逆に、パターンが決まっていない新しい領域(PWA化のような)は、AIに任せきりにすると変な設計になる。

使い分けが大事だ。「既存パターンの横展開」はAIに全振り。「新しいアーキテクチャ判断」は人間が考える。この切り分けがうまくいった1週間だった。

来週はStripe決済の統合に取り掛かる。これは「新しいアーキテクチャ判断」側なので、じっくり設計してからAIに渡すつもりだ。


技術的な詳細はこちら → 93コミットの技術的な内訳