ご連絡・ご予約・アクセスはこちら

データ復旧ソフトを自作したら、元が取れない完成品ができた

データ復旧ソフトを自作したら、元が取れない完成品ができた

データ復旧ソフトを自作しました。StorageRescue という名前で、ソースコード63,096行、テスト1,816件、実機で10,776件のファイルを取り出すところまで確認しています。

完成した夜、何を思ったか。「これで元が取れた」でも「AIってすごいな」でもありませんでした。しばらく黙って画面を見ていただけです。脱帽という日本語が、正しい使われ方をした瞬間でした。

16年でいちばん金を払ってきたジャンルの道具が、自分の手元で完成した。それなのに、元を取った気がまるでしない。この記事は、その「元が取れない完成品」の話です。

先に結論
データ復旧ソフトの自作は、ソフト代を浮かせる話ではありませんでした。払った分を取り返した実感はゼロです。
代わりに残ったのは、AIが要件の「文面」ではなく「意図」まで理解して設計していたことへの驚愕でした。何に驚いたのかを、順番に分解していきます。
16年でいちばん課金してきたのが、データ復旧ソフトだった

修理店をやっていて、いちばん財布が痛むジャンルは何かと聞かれたら、私は迷わずデータ復旧ソフトと答えます。工具でもパーツでもありません。ソフトです。

理由は単純で、1本では足りないからです。A社で見えなかったものがB社では見える。B社が固まる媒体をC社が読み切る。だから複数持つことになる。そのうえバージョンが上がればライセンスも更新で、更新した頃には次のバージョンが出ています。

そういうわけで「自分で作れないものか」という考えは、十何年も頭の片隅に居座っていました。居座っていただけで、一度も動きませんでした。作れるわけがないと思っていたからです。

それが、こうなりました。

ソースコード
63,096
テスト件数
1,816
実機での取り出し
10,776
※取り出し件数は、管理情報が消えた8GBのSSD 1台での実測(3.5GB分)。検証の規模はまだ小さいです
ピシコ店長 店長より
先に断っておくと、私が書いた行数はほぼゼロです。担当したのは、要件を決めること、危ない操作を承認すること、実機に当てること。この3つだけでした。
「東大生レベル」「弁護士レベル」では、例えが足りなかった

AIの実力を語るとき、世間はよく「東大生レベル」「弁護士レベル」という言い方をします。私も何度か使いました。便利な例えです。

ただ、あれは全部知識量の比喩です。難しい問題に正しく答えられる、という話をしている。

今回、隣に座っていたのはそういうものではありませんでした。試験に強い誰かではなく、こちらが言っていない結論まで持ってくる現役のエンジニアでした。

私の要求が、根拠つきで却下された話

配布を分かりやすくしたくて、私は「実行ファイルを1個にまとめたい」と言いました。フォルダごと渡すより、exeが1個ぽつんとあるほうが親切だろう、と。素人考えとしては自然な要求だと思います。

返ってきたのは「できます」ではありませんでした。それをやると安全機構が無言で死にます、でした。

一次情報
Microsoftの公式ドキュメントによると、単一ファイル形式で発行した場合、まとめ込まれた部品の置き場所を返すプロパティは空の文字列を返し、ファイルを直接取り出す命令は例外を投げる。実行ファイルの隣にあるファイルへアクセスしたい場合は、別の手段を使うよう案内されている。つまり「ファイルがどこに置いてあるか」を前提にした読み込みは、1個にまとめた瞬間に成立しなくなる。

このソフトは、書き込み機能を本体から切り離した別部品に隔離してあります。うっかり呼べないようにするためです。ところが1個にまとめると、その別部品が読み込めなくなる。しかもエラーも出さずに、最初から無かったように見える壊れ方をします。

私が驚いたのは、技術的な正しさそのものではありません。公式ドキュメントに書いてあることを引いてくるだけなら、検索でもできます。驚いたのはここです。

この判断は、依頼主である私の要求を却下しています。

言われた通りに作るなら、1個にまとめて渡して終わりです。動くように見えますし、私も気づきません。そうしなかったのは、私が最初に立てた原則の意図のほうを見ていたからです。「配布を簡単にしたい」より「安全機構は絶対に生きていること」が上位だと、こちらが順番を言っていないのに理解していた。

東大生レベル、弁護士レベル。あの例え方では、この動きを説明できません。私の中の物差しが、単純に品切れを起こしました。

復旧ソフトはなぜ「異常なし」と言ってしまうのか?

調べられなかったことと、調べて問題がなかったことを、同じ表示で出しているからです。これが、私が市販ソフトに感じ続けてきた不満の中心でした。

不良セクタ0件。検出なし。異常なし。この3つに共通しているのは、何も調べていないときにも、まったく同じ文字が出るということです。

店頭でよく起きるのが、USB変換基板を挟んだときの自己診断です。あいだの基板が命令を通してくれないので、媒体の健康状態が取得できない。このとき画面に「異常なし」と出ると、技術者はそれを信じてお客様に伝えます。嘘をつかされているのに、本人には自覚がありません。

用語:署名スキャンとは
署名スキャン(ファイルカービング)とは、ファイルの管理情報(どこに何があるかの目次)を使わず、データの中身が持つ特徴的な並びだけを手がかりに、媒体全体からファイルを探し出す方法である。目次が壊れて「フォーマットしますか」としか言われない媒体でも、写真や書類を直接見つけられる。ただしファイル名は目次側にある情報なので、この方法では分からない。取り出したファイルには連番が付き、中身を開いて確認することになる。

この署名スキャンでも、同じことが起こります。実際、開発中に「検出なし」と出たことがありました。原因は、内部に64MBの上限が埋め込まれていたことでした。8GBのうち先頭64MBしか見ずに「検出なし」と表示していたわけです。

上限があったこと自体は、開発途中なら仕方がない。問題はそれが画面から見えなかったことです。正しくは「64MBしか見ていないので、その範囲には無かった」でした。

ここ、見落としがちです
「不良セクタ0件」は「完全に取れた」という意味ではありません。読めなかった場所と、まだ読んでいない場所は別のことです。開発中にいちばん重かった不具合がこれで、不良0件と表示しながら768MiBが未取得のまま、画面のどこにも出ていませんでした。いまは未取得の量を必ず表示し、その場に続きからやり直す手順を出します。再開機能を実機で回したところ、768MiBあった未取得は30MiBまで減りました。約96%です。

ここで、ひとつ考えたことがあります。市販ソフトが「復旧可能性87%」のような数字を出したり、取れなかった項目を良い側の値で埋めたりするのは、技術力が低いからではないのではないか。

数字がひとつのほうが、説明が楽です。空欄より安心感がある。買う側も、9つの観点をそれぞれ読み解くより「87%」のほうが分かった気になれる。つまりあれは技術の限界ではなく、商品としてそう設計されている結果なのではないか。

……と、他社の商品設計を勝手に採点し始めたところで我に返りました。私は苫小牧で修理屋をやっている人間であって、ソフト会社の事業計画を添削する立場ではありません。話を自分の店に戻します。

AIに任せられなかったものは何か?

実機に当てて、恥をかく仕事です。ここだけは人間が持つしかありませんでした。

テストは1,816件、全部通っていました。その状態で、パーティションテーブルが消えてWindowsからは「フォーマットしますか」としか言われない実機のSSDに当てました。出てきた結果がこれです。

異常の徴候なし。取り出しやすさランクA。推奨、そのまま使用可。壊れた媒体に対して満点を出しました。

原因は分かりやすいものでした。ファイルシステムを調べる層は、破損をちゃんと全部見つけていたのです。ところがその情報が、判定する側に登録されていなかった。登録されていない事実は「不明」として扱われ、不明は減点されない。減点されなければ満点になる。

「不明を正常に寄せない」を4つの原則のひとつに掲げていたソフトが、まさにそれをやりました。しかも単体テストでは絶対に見つからない種類の失敗です。各層は正しく、つながっていないだけなので。

ピシコ店長 店長より
じゃあAIに丸投げすれば作れるのかというと、作れません。要件を言葉にできない分だけ、あとで時間を払うことになります。私はそれで何度か払いました。安く済ませようとして、いちばん高いもので払った形です。

私はAIを「使う」ものではなく「雇う」ものだと考えています。今回の体制もそうでした。要件を決めて破壊的な操作を承認する役、設計と作業指示を一手に持つ役、実装を分担する役。人間が持ったのは1つ目だけです。

そして、その1つ目がいちばん難しい。何を作るかではなく、何を作らないかを決める仕事だからです。復旧率を1つの数字で出さない。元の媒体には絶対に書き込まない。不明を正常に寄せない。この3つを最初に言葉にできたのは、16年ぶんの「あのとき騙されたな」という記憶があったからでした。

それでも、元が取れない完成品である

できていないことも書いておきます。

実機検証は8GB規模・実質1台に偏っています。店に来るのは500GBから2TBで、退避に何時間もかかる媒体です。規模が100分の1です。対応形式は21種で商用ソフトには及ばず、RAIDの再構成には対応していません。取り出す前に中身を見るプレビュー機能もありません。

そして、いちばん大事な但し書き。このソフトの「異常なし」を鵜呑みにしないでください。実際に一度、壊れたSSDを満点で通した実績があります。原因は特定して直しましたが、同じ種類の見落としが他に無いとは言い切れません。しばらくは従来のやり方と突き合わせて使います。

というわけで、これは元が取れない完成品です。これまで払ってきたソフト代が返ってくるわけでもなく、明日から商用ソフトを捨てられるわけでもない。損得の帳簿では、まだ赤です。

それでも作ってよかったと思っているのは、道具が1本増えたからではありません。自分が16年やってきた仕事の勘所を、言葉にして渡せると分かったからです。渡した相手は人間ではありませんでしたが、こちらが言い落とした順番まで補って返ってきました。それに脱帽したという話でした。

この記事の要点
AIに驚いたのは、難しいことができたからではありません。こちらの要求を、意図を理由にして却下してきたからです。
その代わり、人間の担当分は減っていません。何を作らないかを決めること、実機に当てて恥をかくこと。この2つは最後まで手元に残りました。
Q
データ復旧ソフトは自作したほうが安く済みますか?
A
安くはなりません。市販ソフトを買うほうが確実に速く、対応範囲も広いです。自作が意味を持つのは、市販ソフトの表示のしかたに具体的な不満があり、それを言葉で説明できる場合に限られます。不満が「なんとなく信用できない」の段階なら、作っても同じものができあがります。
Q
プログラミングができなくても、AIでソフトは作れますか?
A
コードが書けなくても作れますが、要件を言葉にする力とその分野の専門知識は必要です。今回で言えば、復旧率を1つの数字で出させないという判断は、16年ぶんの現場感覚がなければ出てきませんでした。専門知識のない分野で同じことをやると、できあがったものが正しいかどうかを判定できません。
Q
読めなくなったUSBメモリを持ち込めば、このソフトで見てもらえますか?
A
店頭の診断で使っています。ただしソフトで手が出るのは、媒体そのものは動いているのに中身が読めない状態までです。カチカチと異音がする、まったく認識しない、容量が0と表示される場合は、分解作業ができる専門業者へご案内します。そして異音がしている媒体は、通電を続けるほど取り出せる量が減ります。まず電源を抜いてください。
ピシコ店長
この記事を書いた人
ピシコ店長
苫小牧市のパソコン・スマホ修理店「ピシコ」店長。PC・スマホ修理歴16年。店頭での実際の修理事例をもとに、地域の方に役立つ情報を発信しています。プロフィール詳細
読めなくなった媒体は、触るほど減ります。
何を試したか、いま何が表示されているか。それだけ教えていただければ、次に何をすべきかはお答えできます。抜いた電源は、返事を読んでから挿しても遅くありません。
まずはご相談から
LINEは24時間受信・返信は月〜土 9:30〜19:00

シェアお願いします!!
ABOUT US
アイコン
ピシコ
苫小牧でパソコン修理店「ピシコ」を16年経営。 毎日テックブログを更新しながら、 企業のAI導入・業務自動化を伴走支援しています。 自分の会社で実装した「自動化」: ✅ 予約システムの完全自動化 ✅ 見積書の自動生成 ✅ 請求書の自動発行 あなたの会社でも、同じ仕組みが作れます。 📞 初回30分無料オンライン相談実施中