本文へスキップ

STORY · RESURU

完成していたアプリを、公開の前にほぼ作り直した判断の記録

石井和秀 · ClearDrop · 7 min readSHARE

機能は揃っていたResuruを、なぜ公開前に全面再構築したのか。旧実装から残した体験、捨てた土台、公開前に作り直すかを決めた基準を振り返ります。

半分だけ解体されたスマートフォンの模型と、隣に組み直された土台。「完成後に、作り直した。」の文字
この記事の目次

Resuruの旧版は、相手管理、返信生成、話題提案、定型文、バックアップまで一通り動いていました。それでも公開前に、コードの土台から作り直しました。動くことと、安心して出荷し、公開後も直し続けられることは別だったからです。この記事では、残した仕様、捨てた実装、全面刷新を選ぶまでの判断を順に振り返ります。 部分修正ではなく作り直しを選んだ基準と、旧実装から残した体験、そして作り直しのあいだ増やさなかったものを書きます。

機能は揃っていた。それでも出荷できなかった

旧版はFlutterで約3,700行あり、返信を考えるための主要機能はひと通り動いていました。画面を触るだけなら完成に近く見えます。しかし、公開前の確認で見えてきたのは、機能の不足ではなく、出荷後の運用に耐えない土台でした。

AIのAPIキーをアプリへ同梱していたこと、課金状態や無料回数を端末側の値で判定していたこと、開発用とリリース用の設定が十分に分かれていなかったこと。どれもデモでは見えにくい一方、実際に配布すれば不正利用、想定外の課金判定、障害調査の難しさにつながります。

さらに、メイン画面は約1,760行、生成画面も約1,000行ありました。表示、状態管理、API呼び出し、課金判定が同じ場所へ集まり、ひとつ直すたびに別の機能へ影響しやすい状態でした。完成していたのは目に見える操作であって、サービスとしての運用ではありませんでした。

「完成度が低いから捨てる」のではありません。機能は残し、出荷に耐えない土台だけを捨てると決めました。

部分修正ではなく、作り直すほうを選んだ基準

最初は、危険な箇所だけを順番に直すつもりでした。APIキーをサーバー側へ移し、課金判定を直し、大きな画面を少しずつ分割すればよいように思えます。部分修正なら、すでに動く画面を残せるため、短期的には速く見えます。

しかし、修正対象は互いにつながっていました。生成処理の移動は認証と利用回数に影響し、課金判定の変更は画面状態とエラー表示に影響します。大きな画面を残したまま責務だけを抜き取ると、新旧の経路が混在し、かえって確認範囲が増えます。

判断材料になったのは、既存利用者がまだいなかったことです。データ移行や旧版との互換性を守らず、構造を変えられる最後の時期でした。公開を一度急いでから大規模移行をするより、公開前に止まり、同じ仕様を新しい土台へ移すほうが総コストは低いと判断しました。

捨てたのは仕様ではなく、アーキテクチャだった

実際に使って練られていたものまでゼロに戻す必要はありませんでした。返信を3案出すこと、トーンと文章量を組み合わせること、相手ごとに履歴を持つこと、話題を提案すること。これらはユーザーが受け取る価値なので残しました。

  • 返信案は3つから選べる形を維持する
  • 相手ごとの履歴とメモは持ち越す
  • 生成時のトーンと文章量の考え方は残す
  • APIキー・無料枠・課金判定は端末の外へ移す
  • 画面から通信や永続化の責務を分離する

逆に、画面の都合に引っ張られた状態管理、複数の場所に散った判定、端末だけを信頼する仕組みは捨てました。作り直しは、過去の実装を否定する作業ではありません。体験として残すものと、これからの変更を邪魔する実装を切り分ける作業でした。

ホームを「機能一覧」から「会話一覧」へ変えた

旧版は、返信生成、話題提案、定型文などの機能ごとに入口があり、利用者がタブを行き来する構成でした。機能を説明するには分かりやすい一方、実際の利用場面では「どの機能を使うか」より「誰に返信するか」が先にあります。

新しいResuruでは、相手と会話履歴をひとつのスレッドとして扱います。相手を選べば、前回の流れを見ながら返信を考えられます。機能名を覚えてもらうのではなく、会話の続きを始めるだけで必要な機能へ届く構造に変えました。

Resuruのスレッド一覧画面。相手ごとに最近の会話が並んでいる
新しいホームは機能の入口ではなく、相手ごとのスレッド一覧です。

この変更で、データ構造も画面構造も「機能単位」から「会話単位」へ揃いました。見た目だけを変えるのではなく、利用者が考える順番と、アプリ内部が情報を扱う順番を同じにしたことが、全面刷新の中で最も大きな変更でした。

アプリに長く滞在させる設計のほうをやめた

Resuruを開く目的は、Resuruそのものを眺めることではありません。返信を作って、元のメッセージアプリへ戻ることです。滞在時間を伸ばすより、迷っている時間を短くするほうが、このプロダクトでは価値になります。

そこで、アプリ内のスレッドだけでなく、会話スクリーンショットの共有とキーボードからも同じ生成機能へ入れるようにしました。返信をじっくり考えるときはアプリ、今いる画面から離れたくないときはキーボードというように、状況に応じて入口を選べます。

Resuruのキーボード画面。返信候補を選んで入力欄へ挿入できる
キーボードでは、元のアプリを離れずに返信案を選んで挿入できます。

キーボード拡張にはフルアクセスの説明など、通常の画面とは違う配慮も必要です。設計時に確認した内容は「フルアクセスを許可」が怖い。Resuruのキーボードが何をするかに、会話データを端末側へ置く判断は会話をサーバーに置かないと決めた。Resuruのデータ設計と機種変更に分けてまとめています。

作り直しのあいだに、あえて増やさなかったもの

全面刷新を始めると、せっかくなので新機能も入れたくなります。しかし、新しい要件まで同時に足すと、移植の不具合と新機能の不具合を切り分けにくくなります。そこで最初の目標を「旧版で価値が確認できた体験を、安全な構造で再現すること」に限定しました。

画面を美しくする変更も、構造の確認を終えてから進めました。先に通信、保存、認証、課金の境界を作り、その上に既存の体験を戻します。途中で発見した改善案はその場で全部実装せず、別の課題として残しました。

作り直しの範囲を広げすぎないために、「新しい価値を足す」より「既存の価値を安全に戻す」を先に置きました。

再構築のあとは、公開前の確認方法も変えた

コードが整理されても、実際の利用経路を確認しなければ安心とは言えません。アプリ単体、共有からの起動、キーボード、通信失敗、未ログイン、利用回数の境界など、入口と状態の組み合わせを洗い出しました。

とくに、正常時だけでなく失敗時の戻り方を確認します。AIから返事が来ない、ネットワークが切れる、権限が足りないといった場面で、入力内容を失わず、次に何をすればよいか分かるかを見ます。公開後に直し続けられる構造とは、変更しやすいコードだけでなく、壊れ方を確認できる状態でもあります。

一度にすべてを自動化できなくても、公開前のチェック項目として残せば次の更新にも使えます。完成を「画面が動いた瞬間」ではなく、「主要な利用経路と失敗時の挙動を説明できる状態」と捉え直しました。

確認結果は、その場の記憶だけで終わらせません。どの入口から、どの状態で、何を確認したかを残します。次の更新で同じ画面を触ったとき、前回の確認を再利用できるからです。個人開発では確認担当を別に置けないため、未来の自分が迷わず同じ経路を試せることが、品質を保つ助けになります。

全面刷新は、遠回りではなく公開への最短路だった

目の前の問題だけを直せば、もっと早く一度は公開できたかもしれません。ただし、APIキー、課金、拡張機能、端末内データ、画面構造が互いに絡んだ状態で修正を重ねれば、公開後により高いコストを払うことになります。

作り直している期間は、進んでいないようにも見えました。完成済みの画面を捨て、同じ機能をもう一度作るからです。それでも、新しい土台では修正箇所と影響範囲を説明しやすくなり、次の機能を足す前にどこを確認すべきかも明確になりました。

「もう動いているから残す」ではなく、「これから直し続けられるか」で残すものを決める。 Resuruを作り直して、一番大きく変わった判断基準です。完成に見える段階でも、利用者へ渡した後の運用を想像すると、止まって作り直すほうが早い場合があります。

もちろん、すべてのアプリで全面刷新が正解になるわけではありません。既存利用者のデータ、移行手段、止められる期間、問題の局所性によっては段階的な修正のほうが安全です。今回は公開前で、問題が複数の層へまたがり、守るべき体験が明確だったから選べた方法でした。作り直すこと自体ではなく、選んだ理由を説明できることが大切です。

Resuru公開中Resuruマッチングアプリの返信文を、AIが3案とアドバイスで提案します。

JOURNAL

KEEP READING
  1. 光る空の展示台と、無地のカードに囲まれた調査ノート。「公開9日、利用者0人。」の文字STORYRESURU公開9日で利用者0人。118本を調べて、返信AIが選ばれにくい理由を見直したResuruは主要な検索語で上位に出ていたのに利用者0人。周辺118本を調べて分かったことと、次に何を測るか、範囲そのものを疑った過程を書きます。2026.09.08 · 4 min read
  2. 緑の合格印の隣で、開いた箱から六つの警告の印が出てくる。「テスト通過。でも問題が6つ。」の文字STORYRESURUテストは全部通った。それでもアプリの公開後に6つ問題が出たコードのテストは成功していたのに、公開後に設定・メタデータ・出荷物の問題が見つかりました。人力監査を1コマンドの提出前チェックへ変えるまでの話です。2026.09.01 · 4 min read
  3. 紺の角丸アイコンに本のマーク。そこから「日本語」と「EN」の二枚の札が下がっている。「日本語アプリなのに「英語」」の文字STORYRESURU日本語アプリなのにApp Storeでは「英語」。原因は説明文ではなかった日本語だけのアプリなのにApp Storeの言語表示が英語になっていました。原因だった開発言語の設定と、本体・拡張・キーボードまでビルド後の実物で確認した話です。2026.09.01 · 4 min read
Journalへ戻る