Building
私は過去に録音を失ったことがあります。アプリクラッシュ、バッテリー切れ、システムフリーズ。全部一瞬で消える。
「大事なことを10分かけて話したのに失った」というあの落下感は本当にきつい。
Reso を作り始めたとき、私は一つ約束しました。これは二度と起こさない。
従来方式(となぜ失敗するか)
多くの録音アプリはこう動きます。
1. 録音開始 -> 音声はメモリにバッファ
2. 録音停止 -> その後ディスクへ書き出し
3. ファイルパスを返す
問題: 1 と 2 の間で落ちたら、音声は永遠に失われます。
macOS アプリは落ちます。電源ケーブルは抜けます。kernel panic も稀に起きます。
解決策: 増分書き込み
録音後ではなく、録音中に書けばいいのでは?
Shadow Recording は次の流れです。
1. 録音開始と同時に、タイムスタンプ付き M4A を即作成
2. 音声 chunk が来るたび、ディスク上のファイルへ追記
3. 途中で落ちても、ファイル自体は残っている
結果: Reso が話の途中で落ちても録音は生き残る。
実装の詳細
単純そうですが、M4A は複雑です。生バイトを雑に追記すると壊れます。
必要だったのは以下です。
1. 増分書き込み対応の streaming encoder を使う
2. 途中停止でも M4A コンテナを有効状態に保つ
3. 古い shadow 録音の掃除を行う(無限に積まない)
shadow 録音は 7 日保持し、その後自動削除します。安全網を持ちつつ、ストレージ肥大化を防ぎます。
学んだこと
最高の機能は、使い手が気づかない機能です。
Shadow Recording はクラッシュから多数の録音を救いました。でも使い手は「shadow recording すごい」とは言わない。「Reso は信頼できる」と言う。
それが狙いでした。
信頼性は派手じゃない。デモ映えもしない。でも信頼の土台です。
アイデアが守られると分かっていると、使い方が変わります。未完成の考え、実験、失敗まで記録できるようになる。
そのときツールは単なる utility を超えて、思考プロセスの一部になります。
これは宣伝ではなく、作りながら実際にはまった落とし穴の記録です。