
データ復旧ソフトを自作しました。StorageRescue という名前で、ソースコード63,096行、テスト1,816件、実機で10,776件のファイルを取り出すところまで確認しています。
完成した夜、何を思ったか。「これで元が取れた」でも「AIってすごいな」でもありませんでした。しばらく黙って画面を見ていただけです。脱帽という日本語が、正しい使われ方をした瞬間でした。
16年でいちばん金を払ってきたジャンルの道具が、自分の手元で完成した。それなのに、元を取った気がまるでしない。この記事は、その「元が取れない完成品」の話です。
修理店をやっていて、いちばん財布が痛むジャンルは何かと聞かれたら、私は迷わずデータ復旧ソフトと答えます。工具でもパーツでもありません。ソフトです。
理由は単純で、1本では足りないからです。A社で見えなかったものがB社では見える。B社が固まる媒体をC社が読み切る。だから複数持つことになる。そのうえバージョンが上がればライセンスも更新で、更新した頃には次のバージョンが出ています。
そういうわけで「自分で作れないものか」という考えは、十何年も頭の片隅に居座っていました。居座っていただけで、一度も動きませんでした。作れるわけがないと思っていたからです。
それが、こうなりました。
店長より
AIの実力を語るとき、世間はよく「東大生レベル」「弁護士レベル」という言い方をします。私も何度か使いました。便利な例えです。
ただ、あれは全部知識量の比喩です。難しい問題に正しく答えられる、という話をしている。
今回、隣に座っていたのはそういうものではありませんでした。試験に強い誰かではなく、こちらが言っていない結論まで持ってくる現役のエンジニアでした。
配布を分かりやすくしたくて、私は「実行ファイルを1個にまとめたい」と言いました。フォルダごと渡すより、exeが1個ぽつんとあるほうが親切だろう、と。素人考えとしては自然な要求だと思います。
返ってきたのは「できます」ではありませんでした。それをやると安全機構が無言で死にます、でした。
このソフトは、書き込み機能を本体から切り離した別部品に隔離してあります。うっかり呼べないようにするためです。ところが1個にまとめると、その別部品が読み込めなくなる。しかもエラーも出さずに、最初から無かったように見える壊れ方をします。
私が驚いたのは、技術的な正しさそのものではありません。公式ドキュメントに書いてあることを引いてくるだけなら、検索でもできます。驚いたのはここです。
この判断は、依頼主である私の要求を却下しています。
言われた通りに作るなら、1個にまとめて渡して終わりです。動くように見えますし、私も気づきません。そうしなかったのは、私が最初に立てた原則の意図のほうを見ていたからです。「配布を簡単にしたい」より「安全機構は絶対に生きていること」が上位だと、こちらが順番を言っていないのに理解していた。
東大生レベル、弁護士レベル。あの例え方では、この動きを説明できません。私の中の物差しが、単純に品切れを起こしました。
調べられなかったことと、調べて問題がなかったことを、同じ表示で出しているからです。これが、私が市販ソフトに感じ続けてきた不満の中心でした。
不良セクタ0件。検出なし。異常なし。この3つに共通しているのは、何も調べていないときにも、まったく同じ文字が出るということです。
店頭でよく起きるのが、USB変換基板を挟んだときの自己診断です。あいだの基板が命令を通してくれないので、媒体の健康状態が取得できない。このとき画面に「異常なし」と出ると、技術者はそれを信じてお客様に伝えます。嘘をつかされているのに、本人には自覚がありません。
この署名スキャンでも、同じことが起こります。実際、開発中に「検出なし」と出たことがありました。原因は、内部に64MBの上限が埋め込まれていたことでした。8GBのうち先頭64MBしか見ずに「検出なし」と表示していたわけです。
上限があったこと自体は、開発途中なら仕方がない。問題はそれが画面から見えなかったことです。正しくは「64MBしか見ていないので、その範囲には無かった」でした。
ここで、ひとつ考えたことがあります。市販ソフトが「復旧可能性87%」のような数字を出したり、取れなかった項目を良い側の値で埋めたりするのは、技術力が低いからではないのではないか。
数字がひとつのほうが、説明が楽です。空欄より安心感がある。買う側も、9つの観点をそれぞれ読み解くより「87%」のほうが分かった気になれる。つまりあれは技術の限界ではなく、商品としてそう設計されている結果なのではないか。
……と、他社の商品設計を勝手に採点し始めたところで我に返りました。私は苫小牧で修理屋をやっている人間であって、ソフト会社の事業計画を添削する立場ではありません。話を自分の店に戻します。
実機に当てて、恥をかく仕事です。ここだけは人間が持つしかありませんでした。
テストは1,816件、全部通っていました。その状態で、パーティションテーブルが消えてWindowsからは「フォーマットしますか」としか言われない実機のSSDに当てました。出てきた結果がこれです。
異常の徴候なし。取り出しやすさランクA。推奨、そのまま使用可。壊れた媒体に対して満点を出しました。
原因は分かりやすいものでした。ファイルシステムを調べる層は、破損をちゃんと全部見つけていたのです。ところがその情報が、判定する側に登録されていなかった。登録されていない事実は「不明」として扱われ、不明は減点されない。減点されなければ満点になる。
「不明を正常に寄せない」を4つの原則のひとつに掲げていたソフトが、まさにそれをやりました。しかも単体テストでは絶対に見つからない種類の失敗です。各層は正しく、つながっていないだけなので。
店長より
私はAIを「使う」ものではなく「雇う」ものだと考えています。今回の体制もそうでした。要件を決めて破壊的な操作を承認する役、設計と作業指示を一手に持つ役、実装を分担する役。人間が持ったのは1つ目だけです。
そして、その1つ目がいちばん難しい。何を作るかではなく、何を作らないかを決める仕事だからです。復旧率を1つの数字で出さない。元の媒体には絶対に書き込まない。不明を正常に寄せない。この3つを最初に言葉にできたのは、16年ぶんの「あのとき騙されたな」という記憶があったからでした。
できていないことも書いておきます。
実機検証は8GB規模・実質1台に偏っています。店に来るのは500GBから2TBで、退避に何時間もかかる媒体です。規模が100分の1です。対応形式は21種で商用ソフトには及ばず、RAIDの再構成には対応していません。取り出す前に中身を見るプレビュー機能もありません。
そして、いちばん大事な但し書き。このソフトの「異常なし」を鵜呑みにしないでください。実際に一度、壊れたSSDを満点で通した実績があります。原因は特定して直しましたが、同じ種類の見落としが他に無いとは言い切れません。しばらくは従来のやり方と突き合わせて使います。
というわけで、これは元が取れない完成品です。これまで払ってきたソフト代が返ってくるわけでもなく、明日から商用ソフトを捨てられるわけでもない。損得の帳簿では、まだ赤です。
それでも作ってよかったと思っているのは、道具が1本増えたからではありません。自分が16年やってきた仕事の勘所を、言葉にして渡せると分かったからです。渡した相手は人間ではありませんでしたが、こちらが言い落とした順番まで補って返ってきました。それに脱帽したという話でした。















