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連携ツールと同じパターンで」と指示する。すると、既存コードを読み込んで、同じアーキテクチャで新しいツールを生成してくれる。型定義、エラーハンドリング、テスト。全部揃った状態で出てくる。
僕がやるのは:
- 方向性を決める — 「次はNotion連携」
- レビューする — 生成されたコードの品質チェック
- エッジケースを指摘する — 「APIレートリミットに引っかかった場合は?」
- 統合テスト — 実際に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コミットの技術的な内訳