Crystal Dew World [ja]

CrystalDiskInfo、累計1億ダウンロード達成! ~18年間の出会いと感謝~

1. はじめに

2008年に公開したCrystalDiskInfoの累計ダウンロード数が、ついに1億回を突破しました!18年間も開発を続けていると、いろいろなことがあるものですね。開発を始めた頃は、こんなに長く続けることになるとは思っていませんでしたし、まさか1億ダウンロードという日を迎えることになるとは、夢にも思っていませんでした。

これまでCrystalDiskInfoを使ってくださった皆様、本当にありがとうございます。

CrystalDiskInfoは、私一人の力でここまで成長したわけではありません。多くのユーザーの皆様からご意見やご要望をいただき、技術的に困ったときにはプログラマーの皆様に助けていただき、翻訳や動作確認など、本当に多くの方々にご協力いただきました。

今回の節目に、CrystalDiskInfoの開発を始めたきっかけや、特に印象に残っている出来事を振り返ってみたいと思います。昔の話が中心になりますが、少々お付き合いいただければ幸いです。

1億ダウンロードの根拠:OSDN.net(消滅)+ SourceForge.net での実績合計
※世界中で多数転載されておりますがその実績は含んでおりません。
※ダウンロード実績には、ソースコードや関連データも含まれていますがごく一部のため考慮しておりません。

2. CrystalDiskInfo開発のきっかけ

CrystalDiskInfoを開発するきっかけの一つとなったのは、2007年にGoogleが発表した『Failure Trends in a Large Disk Drive Population』という論文でした。多数のHDDの故障傾向を分析した研究で、S.M.A.R.T.情報とHDDの故障には一定の関係があることが示されていました。

もちろん、S.M.A.R.T.情報だけですべての故障を予測できるわけではありません。それでも、故障の兆候に早めに気付くことができれば、大切なデータを失う前にバックアップを取ったり、HDDを交換したりできるかもしれません。当時もストレージの健康状態を確認できるソフトウェアは数多くありましたが、これが決定版というものは見当たりませんでした。

それなら自分で作ってみようかな、……と、ここまでは真面目な開発理由なのですが、実はもう一つ、少々説明しづらいきっかけがあります(笑)。2007年末、当時開発していたCPU情報ソフト「CrystalCPUID」が行き詰まり、今後どうしたものかと悩んでいた頃のことです。

なんとなく動画サイトを眺めていたところ、「月のお姫様がホームステイにやってくる」という夢のような設定のゲームプレイ動画に出会いました。オーガスト様の『夜明け前より瑠璃色な』です。

すっかり夢中になって見ていたのですが、一番良いところ(?)で動画が終わってしまいました。続きが気になって仕方がなかったので、大急ぎでPS2版を購入。年末年始はすっかりゲーム三昧となりました。そして、年が明けた頃、なぜか月のお姫様から「ストレージ情報ソフトを作ってほしい」という天啓を受けたのです(笑)。

ちょうどCrystalDiskMarkを開発していたこともあり、ストレージ情報ソフトなら相乗効果も期待できます。以前開発したCrystalMark 2004でストレージ情報を取得した経験もありました。何より、ストレージ関連は標準化が進んでいるので、いったん作ってしまえば、新製品が出るたびに大幅な修正が必要になることもないだろうと考えていました。

今となっては、何を根拠にそんなことを考えたのか分かりません。無知って怖いですね(笑)。結局、新しい規格やベンダー独自仕様への対応に、18年間ずっと苦労することになるわけですが……。

ともあれ、Googleの論文から受けた刺激と、オーガスト作品との出会いが重なり、CrystalDiskInfoの開発が始まりました。私の開発人生に大きな影響を与えてくださったオーガスト様には、今でも心から感謝しています。

3. 某巨大掲示板の一言

2008年3月、CrystalDiskInfo 1.0のベータ版を公開し、3月31日の正式リリースに向けて準備を進めていました。当初は、S.M.A.R.T.情報を取得して一覧表示できれば、ひとまず十分だろうと考えていました。ところが、某巨大掲示板でこんなコメントをいただきました。

「S.M.A.R.T.値を表示するだけだとなあ、一工夫ほしいところ」
さらには、
「S.M.A.R.T.そのまま表示するだけであんまし意味ねえ。w」

うーん、確かにそうなんですよね。当時も国内外からいろいろな要望をいただいていたのですが、まずは正式版を公開して、その後のバージョンアップで順次対応していけばよいと考えていました。でも、よくよく考えてみると、最初に公開したソフトウェアが大したことのないものだったら、その後どんなに改良しても、もう一度使ってもらえるとは限りません。せっかく新しいソフトウェアを作るのに、それではあまりにももったいない。

そこで、予定していた正式リリースを延期し、もうひと頑張りすることにしました。本来は次のバージョンで実装する予定だった常駐機能、通知機能、グラフ機能などを、一気に実装しました。当時の開発記録を読み返すと、ものすごい勢いで開発しています。確か、会社の仕事も結構忙しかったはずなのですが……。

一体いつ開発していたんでしょうね(笑)。
※働き方改革前・・・・・・の昭和スタイルだったような気がします。当時は。

こうして、2008年5月22日にCrystalDiskInfo 1.0を正式リリースすることができました。もし、当初の予定どおり3月31日に公開していたら、何の変哲もないストレージ情報ソフトとして、ほとんど話題にならずに消えていたかもしれません。

もちろん、実際にどうなったかは分かりません。ただ、最初からある程度の機能をそろえ、きちんと使っていただけるものに仕上げたことが、その後の普及につながったのではないかと思っています。

18年たった今でも、あのとき率直な意見をくださった名無しさんには感謝しています。

4. ネ申降臨! USB-HDD対応への道

CrystalDiskInfoを公開すると、世界中のユーザーの皆様から、さまざまな要望をいただくようになりました。その中でも特に多かったのが、USB接続HDDへの対応です。今ではUSB-HDDのS.M.A.R.T.情報を取得できるのは当たり前のように感じますが、当時はまったく事情が違いました。そもそも、USB接続のHDDにATAコマンドを送る方法がよく分からないのです。

インターネットで調べたり、技術資料を読んだり、いろいろ試したりしてみたのですが、解決の糸口すら見つけられませんでした。困ったなぁ……と思っていたところ、2008年8月15日、突然その日はやってきました。

Crystal Dew World(私の公式サイト)の掲示板に、ネ申が降臨したのです!「HGST使い?」さんという方が、SCSI/ATA Translationに対応するパッチを提供してくださったのです。

ネ申パッチキタ━━━━(゚∀゚)━━━━!!

早速取り込んでみると、USB-HDD対応への道が一気に開けました。ただし、これで万事解決というわけではありません。当時のUSB-ATA変換チップは、ベンダー独自のコマンドを使う製品が多く、チップごとに個別対応が必要でした。しかも、独自コマンドの仕様書は基本的に公開されていません。

仕方がないので、USB-HDDケースや変換アダプターを購入し、ベンダー純正のユーティリティが送信するコマンドをUSBプロトコルアナライザーで調査。解析した内容を実装して、実機で動作確認する。

これをひたすら繰り返しました。

購入してみたものの、結局対応できない製品もありました。動かないことを確認するためだけに数万円かかることもあり、なかなか大変です。しかも、一度検証が終わった機器も、将来の再検証に使うかもしれないので捨てられません。結果として、我が家の押し入れには大量のUSB-HDDケースが保管されることになりました。家族の理解があってこそ続けられる趣味ですね(笑)。

こうして少しずつ対応機器を増やしていった結果、2008年12月には、なんと窓の杜大賞を受賞することができました。正式リリースから約半年。まさか、こんなに早く大きな賞をいただけるとは思っていませんでした。本当に嬉しかったです。何より、あの神パッチがなければ、USB-HDD対応を実現することすら難しかったかもしれません。

自分一人ではどうにもできなかった問題を、オープンソースに協力してくださった方のおかげで乗り越えられた。この経験は、その後の開発スタイルにも大きな影響を与えました。

5. 人生の分岐点、Shizuku Edition

CrystalDiskInfoの開発を振り返ると、人生の分岐点だったと思う出来事がいくつかあります。その中でも特に大きかったのが、Shizuku Editionの誕生です。

2011年6月11日、オープンソースカンファレンス2011 Hokkaidoに出展し、CrystalDiskInfo 4の新機能であるメール通知機能を紹介しました。当時は結構頑張って実装した機能だったので、ぜひアピールしたかったのです。

ところが、橘べるちぇさんという方から、思いがけないコメントをいただきました。

「メール通知なんてレガシー技術! 時代は音声通知ですよ!」
さらに、声優さんにしゃべってもらいましょう! と。

いやいや、そんな簡単に言われても……。その後の懇親会でも、音声通知がいかに重要か、延々と説明していただいたような記憶があります。ほとんど初対面の方だったので、なかなかの衝撃でした(笑)。

正直なところ、その場では軽く受け流していたのですが、しばらくして、とんでもないことが起こりました。

プロの声優さんに収録を依頼し、完成した音声ファイルを送ってくださったのです!

しかも、ものすごいクオリティー。
一体どういうことなのか。
あとから高額な請求書が届いたりしないだろうか。
本当に大丈夫なのか……。
いろいろ心配になりました(笑)。

とはいえ、ここまでしていただいたのですから、中途半端なものにはしたくありません。

音声だけではなく、せっかくならキャラクターも登場させたい!そこで、今度はこちらからキャラクター展開を提案し、橘べるちぇさんにイラストレーターの手配までお願いしてしまいました。知り合ったばかりなのに、なかなか図々しいですね(笑)。

そんな無茶なお願いにも応えていただき、プロのイラストレーターである桐野霞先生にキャラクターデザインをお願いできることになりました。こうして、CrystalDiskInfoの公式応援キャラクター「水晶雫」が誕生しました。

せっかく作るのですから最高のものにしたい。キャラクターの魅力を生かしながら、ストレージ情報ソフトとしての実用性も損なわないよう、じっくりと企画を練りました。そして、2012年6月16日、オープンソースカンファレンス2012 Hokkaidoで、CrystalDiskInfo 5 Shizuku Editionを公開しました。

すると、想像以上の反響がありました。窓の杜やGIGAZINEなど、多くのメディアで紹介していただき、ユーザーの皆様からもさまざまなコメントをいただきました。

「可愛すぎて導入したい」
「結構お固いソフトだと思っていただけに意外。でもかわいい」
「こんな路線になるとは思わなかったww」
……そうなんです。

それまで、まじめなソフトウェア開発者のふりをしていたのです(笑)。

このShizuku Editionの実績があったからこそ、その後のMSI Mei Mihoshi EditionやA1Data Erika Editionなど、企業とのコラボレーションも実現できたのだと思います。

そして、何より大きかったのは、CrystalDiskInfoの開発が、それまで以上に楽しくなったことです。

それまでは、新しいハードウェアへの対応や機能追加が開発の中心でした。もちろん、それはそれで楽しいのですが、Shizuku Editionでは、イラストレーターさんや声優さんなど、これまで接点のなかった分野の方々と協力して、一つの作品を作る楽しさを知りました。ソフトウェア開発って、本当にいろいろな可能性があるんですね。

あのとき、橘べるちぇさんに声をかけていただかなければ、まったく違う開発人生になっていたかもしれません。企画や制作に携わってくださった皆様、そしてShizuku Editionを応援してくださった皆様に、改めて感謝したいと思います。

6. 一人のユーザーの要望からUIを全面刷新

CrystalDiskInfo 5までは、UIをHTMLとCSSで構築していました。見た目を自由に調整できるので、なかなか便利だったのですが、Internet Explorerのバージョンや設定によって表示が崩れることがあり、困っていました。

そんなある日、海外のユーザーさんから、変わった要望をいただきました。
「CrystalDiskInfo 5 Shizuku EditionがServer Coreで動かないんだ! 何とかしてほしい!」
Server Coreは、Windows Serverを最小限の構成で動かすための環境です。
Internet Explorerに依存したUIでは、正常に動作させることができません。

Server CoreでShizuku Editionを使いたいとは、なかなか熱心なユーザーさんです(笑)。
しかし、せっかくのご要望です。それならばと思い切って、Internet Explorerへの依存をなくし、GDI/GDI+を使ってUIを全面的に作り直すことにしました。これが結構大変でした。特に苦労したのが、HiDPIへの対応と、Shizuku Editionの見た目を維持することです。4ピクセル単位の固定レイアウトを採用し、拡大率に合わせて画面全体を構築し直しました。大変な作業でしたが、結果として長年の課題だったInternet Explorer依存から脱却することができました。きっかけは、たった一人のユーザーさんからの要望です。

本当に、どこから新しい可能性が生まれるか分からないものですね。

7. 再びネ申降臨! 今度は韓国から

2015年、またしても大きな壁にぶつかりました。NVMe SSDへの対応です。NVMeは新しいSSD向けのインターフェースで、それまでのATAとは大きく仕組みが異なります。何とか対応したいと調べていたのですが、当時のWindows環境では、必要なNVMeの管理コマンドを簡単に送ることができませんでした。

いろいろ調べてみても、どうしてよいのか分かりません。

そこで、SNSで「NVMeに対応したいけれど、どうすればよいのか分からない」という話をしていました。すると、なんと韓国の技術者、Minkyu Kimさんから返信が届いたのです。日本語でつぶやいていたのに、韓国から反応が!

しかも、非常に具体的な技術情報を教えてくださったのです。

当時、Minkyu Kimさんは韓国の大学院で博士課程に在籍されていました。Delphiで書かれていたコードを、CrystalDiskInfoで利用できるようC++に書き換えてくださるなど、本当に多くのご協力をいただきました。

ネ申、再び降臨です!!

おかげさまで、NVMe SSDへの対応を大きく前進させることができました。実は、彼が書いてくださったコードは、2026年の今でもCrystalDiskInfoの一部として使われています。2008年のUSB-HDD対応に続き、今回も外部の技術者の方に助けていただきました。

自分一人でできることには限界がありますが、困っていることを発信し、オープンソースとして開発を続けていると、世界中の誰かが手を差し伸べてくださることがあります。もちろん、いつも助けてもらえるわけではありません。

それでも、こうした出会いがあるからこそ、オープンソース開発は面白いのだと思います。Minkyu Kimさん、本当にありがとうございました。

8. 継続は力なり

CrystalDiskInfoの開発を始めた頃は、ストレージベンダーに技術資料をお願いしても、返信すらいただけないことがありました。仕方がないので、実機を購入して、自分で調べるしかありませんでした。USB-HDD対応では、仕様の分からないベンダー独自コマンドをひたすら解析していましたし、NVMe対応でもさまざまな問題に悩まされました。

そんな開発を何年も続けているうちに、少しずつ状況が変わってきました。
2018年には、JMicron、ASMedia、Realtekの各社から、USB-NVMeブリッジチップ(JMS583、ASM2362、RTL9210)への対応を直接ご依頼いただけるまでになったのです。しかも、データシートや開発用サンプルまでご提供いただきました。

これには本当に驚きました。以前は新製品が発売されてから購入し、どうすれば情報を取得できるのかを調べるしかありませんでした。それが、発売前から技術情報やサンプルをご提供いただき、あらかじめ対応を進められるようになったのです。

長く続けていると、こんなこともあるんですね。また、CrystalDiskInfoは、COMPUTEXやCESなどの国際展示会で、新しいストレージ製品を紹介する際にも使っていただけるようになりました。自分が作ったソフトウェアが、世界のどこかで新製品の紹介に使われていると思うと、やっぱり嬉しいものです。こうしたことも、長年応援してくださったユーザーの皆様や、技術協力をしてくださった方々のおかげだと思っています。

開発を続けてきて、本当に良かったです。

9. なぜ18年間も続けてこられたのか

CrystalDiskInfoを開発していて、何より嬉しいのは、世界中のユーザーの皆様からいただくメッセージです。特に、
「CrystalDiskInfoのおかげで、データを失う前に気付くことができました」
というコメントをいただくと、本当に作って良かったなぁと思います。

ストレージの故障によって大切なデータを失ってしまうのは、とても悲しいことです。もちろん、CrystalDiskInfoですべての故障を事前に検知できるわけではありません。それでも、誰かがデータを失うリスクを減らすお手伝いができたのであれば、開発者としてこれほど嬉しいことはありません。また、CrystalDiskInfoを長年使い続けてくださる方々や、友人や家族、職場の同僚などに薦めてくださる方々がいることも、大きな励みになっています。

私は以前から、「情けは人の為ならず」という言葉を大切にしています。
誰かに喜んでもらえることを続けていると、巡り巡って自分にも幸運が訪れる。
CrystalDiskInfoの開発では、まさにそんなことが何度もありました。

最初はユーザーの皆様から改善のアイデアをいただき、困っているときには技術者の方々に助けていただき、対応機器が増えることでさらに多くのユーザーの皆様に使っていただけるようになりました。そして、ユーザーが増えることで、今度はストレージベンダーの皆様からもご協力いただけるようになりました。

こうして振り返ると、私は本当に多くの方々に助けられてきたのだと思います。そして、もう一つ大切なことがあります。

今でも、ソフトウェア開発が楽しいのです。

新しいハードウェアへの対応ができたときも、難しい不具合を解決できたときも、新しいキャラクターエディションが完成したときも、やっぱり嬉しいです。もちろん、思いどおりにいかないこともたくさんあります。それでも、作りたいものがある限り、これからも開発を続けていきたいと思っています。

10. これまで本当にありがとうございました

CrystalDiskInfoを公開してから18年。振り返ってみると、本当に多くの出会いがありました。

厳しいながらも的確なご意見をくださったユーザーの皆様。
技術的な問題を解決するために、コードを書き、パッチを提供してくださったプログラマーの皆様。
世界中の方々に使っていただけるよう、翻訳に協力してくださった皆様。
不具合報告や新機能のご提案、動作確認などにご協力くださった皆様。
データシートや検証機材をご提供くださったストレージ関連ベンダーの皆様。
CrystalDiskInfoをさまざまなメディアで紹介してくださった皆様。
Shizuku Editionをはじめとするキャラクターエディションの企画・制作に携わってくださった皆様。
そして、18年間、CrystalDiskInfoを使い続け、応援してくださった世界中のユーザーの皆様。
本当にありがとうございます。

皆様のおかげで、CrystalDiskInfoは少しずつ成長し、累計1億ダウンロードという節目を迎えることができました。これからもストレージ技術は進化し続けるでしょうし、新しい規格や製品が登場するたびに、きっと頭を悩ませることになると思います。

18年前は、ストレージ関連は標準化されているので、新製品が出るたびに対応しなくてもよいだろうと考えていたわけですが……。まあ、そんなに甘くはなかったですね(笑)。それでも、新しい技術を調べ、試し、対応していくことは、やっぱり楽しいものです。

これからも、ユーザーの皆様のお役に立てるソフトウェアを目指して、少しずつ改良を続けていきたいと思います。

18年間、本当にありがとうございました。

これからもCrystalDiskInfoをよろしくお願いいたします!


付録:CrystalDiskInfo歴代開発コードネーム

CrystalDiskInfoの歴代メジャーバージョンには、オーガスト作品にちなんだ開発コードネームを付けています。

公開年バージョンコードネーム由来
20081Feena夜明け前より瑠璃色な
20082Earthlight夜明け前より瑠璃色な
20093Moonlight夜明け前より瑠璃色な
20114Licia穢翼のユースティア
20125Cynthia夜明け前より瑠璃色な
20136Freesia夜明け前より瑠璃色な
20167Marguerite夜明け前より瑠璃色な
20188Marginality夜明け前より瑠璃色な
20239Rugeniaあいりすミスティリア!

最初のCrystalDiskInfo 1.0は「Feena」。あれから18年、今でも当時の気持ちを忘れずに開発を続けています。
素晴らしい作品を通じて、長年にわたり開発への情熱を与えてくださったオーガスト様に、改めて感謝申し上げます。

参考資料

Return Top