1
@.NETラボ 勉強会 2018年8月
2018/8/25(土)
世界中のユーザーに愛される
ソフトウェアを作りたい!!
宮崎 典行
Twitter: @openlibsys
https://crystalmark.info/ 80 PAGES
2自己紹介
名前:宮崎 典行, hiyohiyo/ひよひよ
年齢:39歳
家族:愛妻, 愛娘, 愛息子
出身:北海道
趣味:ソフトウェア開発 (約20年)
所属:CLR/H
Microsoft MVP (Jan. 2014 – June 2019)
3Crystal Dew World 20年の軌跡
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
大学
大学院
修士
埼玉勤務 札幌勤務
東京
勤務
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
HiyOS
WinRing0
CrystalRes
4
開発で心がけていることを共有
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
水晶雫
本日内容
5
ベンチマークソフトで
一番になりたい!!
大学生になった時の目標
6
チャレンジ1
~総合ベンチマークソフト~
7Crystal Dew World 20年の軌跡
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
大学
大学院
修士
埼玉勤務 札幌勤務
東京
勤務
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
HiyOS
WinRing0
CrystalRes
8【伝説】WindSock (Win16用総合ベンチマーク)
9【目標】HDBENCH
http://www.hdbench.net/ja/
10ベンチマークソフトで一番を目指してやったこと
ハードウェア情報ソフト(総合ベンチマーク)
CPU情報 GPU情報 ベンチマークストレージ情報
CrystalMark08 CrystalMark 2004CrystalMark06
ベンチマークランキング
11CrystalMark06
?
なぜこんなUIになったかは本当に謎!?
12CrystalMark 2004
人生を変えた代表作!!学生時代最後の日にリリース!!
13
頑張ってはみたものの
グローバル知名度は
ほぼ0
14
• 全てにはフォーカス出来ない
• クオリティが低い
世界一にはなれませんでした・・・
ハードウェア情報ソフト(総合ベンチマーク)
CPU情報 GPU情報 ベンチマークストレージ情報
ベンチマークランキング
15私のソフトウェア開発における基本戦略
特定領域に特化し、その中で世界一を目指す!!
16
チャレンジ2
~CPU情報ソフト~
17Crystal Dew World 20年の軌跡
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
大学
大学院
修士
埼玉勤務 札幌勤務
東京
勤務
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
HiyOS
WinRing0
CrystalRes
18CrystalCPUID の戦略
ハードウェア情報ソフト
CPU情報 GPU情報 ベンチマークストレージ情報
大好きなCPUで世界一を目指す!!
19【目標】WCPUID
1996年から2004年頃まで
世界中で広く利用された日本発のCPU情報ソフト
20CrystalCPUID
主な特徴
• 独自のクロック周波数制御機能
一瞬だけ世界中のオーバークロッカー&
アンダークロッカー(省電力化)が活用!!
2002年から2008年頃まで
世界一を目指して私が開発していたCPU情報ソフト
新CPUに対応し続けることができずフェードアウト・・・
21【参考】プロジェクト LoveHammer
AMD Athlon 64 (K8) の倍率変更機能をユーザーを人柱
(ブルースクリーン連発)になってもらい、実機なしで実装!!
約半年後の 2004/03/10頃ようやく購入!!
開発資金超重要!!
22CPU-Z
圧倒的シェアNo.1のCPU情報ソフト
※月間ダウンロード数220万回以上(公式情報)
https://www.cpuid.com/
23なぜ勝てなかったのか?
ハードウェア情報ツールの開発に必要なこと
高度な技術力
(リバースエンジニアリング力)
潤沢な資金力
(新製品が出たら検証用に買う)
※配偶者の理解も超重要
ベンダーの
サポート
(詳細仕様は一般的に非公開)
私には情熱だけしかなかった
そしてCPU-Zとの圧倒的な差に情熱も潰えた
24致命的な一撃
CPU-Z が Intel/AMD をパートナーに迎える
25圧倒的敗北 ~開発終了時の市場シェア(推定)~
26
1番を目指しても
1番になれるとは
限らない!!!!!!!!!
失敗から得られた教訓
27
チャレンジ3
~ストレージベンチマーク~
28Crystal Dew World 20年の軌跡
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
大学
大学院
修士
埼玉勤務 札幌勤務
東京
勤務
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
HiyOS
WinRing0
CrystalRes
29【目標】FDBENCH
http://www.hdbench.net/ja/
30
ストレージに特化
すればイケるかも
31CrystalDiskMark の戦略
総合ベンチマーク
GPU
ベンチマーク
ストレージ
ベンチマーク
メモリー
ベンチマーク
CPU
ベンチマーク
世界で一番愛される
ストレージベンチマークソフト
を目指す!!
32CrystalDiskMark の戦略
• スクリーンショットがすべて
※CrystalMark の反省を生かして…
• 多言語対応(40カ国語以上)
※CrystalMark の反省を生かして…
• オープンソース(MITライセンス)
とにかくシンプル
シンプルさを損なう機能追加はしない
33CrystalDiskMark と言えば・・・
https://forest.watch.impress.co.jp/article/2008/01/15/crystaldiskmark200.html https://forest.watch.impress.co.jp/article/2008/02/04/crystaldiskmark210.html https://forest.watch.impress.co.jp/article/2008/09/16/crystaldiskmark220.html
こんなにバグバグな
ベンチマークソフト見たことない!!
34CrystalDiskMark 3, 4-6 でリカバリー
https://forest.watch.impress.co.jp/docs/news/356338.html https://forest.watch.impress.co.jp/docs/news/701198.html https://forest.watch.impress.co.jp/docs/news/1089912.html
NCQ対応(Ver.3)
DiskSpd採用(Ver.4-6)
35CrystalDiskMark 4 リリース秘話
インテル様からご提供
いただいた検証用機材
あのインテル
から連絡がきた!!
36CrystalDiskMark の戦略
全領域テストなどは
専門的なソフトで!!
とにかくシンプル
国内外から多数の要望をいただいておりますが…
37CrystalDiskMark 7 -Marginality- 鋭意開発中!!
CDHtmlDialog はトラブルばかり!!
脱HTML UI!!
38CrystalDiskMark 7 -Marginality- 鋭意開発中!!
MFC + GDI/GDI+
39CrystalDiskMark の戦略
• スクリーンショットがすべて
⇒ ユーザーにとってはUIがすべて
• 多言語対応(40カ国語以上)
⇒ ユーザーは母国語で使いたい!!
• オープンソース(MITライセンス)
とにかくシンプル
シンプルさを損なう機能追加はしない
40【参考】ユーザーにとってはUIがすべて
ユーザーにとってはUIがすべて:UIデザイン原則をソシオメディアが語る
ユーザーにとってはUIがすべて 検索
【2008年9月29日】
出典 https://builder.japan.zdnet.com/ria-ajax/20381259/
41【参考】ユーザーにとってはUIがすべて
ユーザーにとってはUIがすべて 検索
42【余談】Crystal Dew World パクリリスペクト伝説
EP82改/かず氏 H.Oda! 氏
CrystalRes
QuickDes
43
チャレンジ4
~ストレージ情報ソフト~
44Crystal Dew World 20年の軌跡
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
大学
大学院
修士
埼玉勤務 札幌勤務
東京
勤務
CrystalMark
CrystalCPUID
CrystalDiskMark
CrystalDiskInfo
HiyOS
WinRing0
CrystalRes
45CrystalDiskInfo 開発のきっかけ
CrystalCPUID の開発も頓挫したし、
CrystalMark の次期バージョンも作れそうにないし、
一体私はどうしたら良いんだorz
1.年末のある日
「月のお姫様がホームステイ」
という設定のゲームプレイ動画
に偶然出会う(謎
2.一番良いところ(一般ゲーです)
で動画が終了!!
3.大急ぎで PS2 版を買いに走る!!
4.年末年始を萌え過ごす!!
5.ストレージ情報ソフトを作ろう!!
46
人生何が転機か
わかりませんね!!
47CrystalCPUID 5 -Estel- vs CrystalDiskInfo -Feena-
司祭のお嬢様 月のお姫様
48某巨大掲示板での出来事
CrystalCPUID 5 -Estel- も頑張ることにしたし、
CrystalDiskInfo -Feena- は、ディスクの情報を
一覧できるだけのシンプルなソフトにしよう!!
https://pc11.5ch.net/test/read.cgi/software/1173061928/
某巨大掲示板での評価
S.M.A.R.T.値を表示するだけ
だとなあ、一工夫ほしいところ
S.M.A.R.T.そのまま表示する
だけであんまし意味ねえ。w
49
S.M.A.R.T.情報を
表示するだけのソフト
を作って誰が喜ぶの?
50
サンプルレベルではなく本気で取り組もう!!
CrystalDiskInfo -Feena- リリース!!
51ネ申降臨によるUSB-HDD対応!!(ちょうど10年前)
神パッチ
いわゆるネ申降臨
キタ━━━━(゚∀゚)━━━━!!
52SCSI/ATA Translation (SAT)
シリアルATA /パラレルATA
USB-ATA
変換チップ
USB パケット or IEEE 1394 パケット
特殊な SCSI コマンド (ベンダー固有)
普通の ATA コマンド
53情熱の新規USB-HDD対応作業
54窓の杜大賞受賞(2008年)
https://forest.watch.impress.co.jp/prize/2008/result.html
55
名無しさんの一言が
人生を変えた・・・
56
人生何が転機か
わかりませんね!!
572015年私は悩んでいた・・・
NVMe SSD の S.M.A.R.T. 情報が
Windows 上から読めない!!
日本語の (*´Д`)ハァハァ ツイートに韓国の神から反応が!!
グローバルな活動が呼んだ奇跡か!?
58
https://naraeon.net/
https://github.com/ebangin127/nvmetools
ネ申再臨によるNVMe対応!!(約3年前)
59夏休みの自由研究
出典 https://www.cnx-software.com/2018/06/11/asm2362-usb-pcie-nmve-ssd-chip/
出典 https://www.golem.de/news/jmicron-jms583-der-erste-usb-auf-nvme-pcie-
controller-ist-da-1806-134868.html
ベンダーからの要望を受けJMS583とASM2362に世界初対応!!
JMicron JMS583
ASMedia ASM2362
ダウンロード数
400万回以上/年
60SCSI/NVMe Pass Through
USB-NVMe
変換チップ
USB パケット
特殊な SCSI コマンド (ベンダー固有)
NVMe コマンド
NVMe SSD
(M.2)
61SCSI/NVMe Pass Through (ASMedia)
sptwb.Spt.Length = sizeof(SCSI_PASS_THROUGH);
sptwb.Spt.PathId = 0;
sptwb.Spt.TargetId = 0;
sptwb.Spt.Lun = 0;
sptwb.Spt.SenseInfoLength = 24;
sptwb.Spt.DataTransferLength = 512;
sptwb.Spt.TimeOutValue = 2;
sptwb.Spt.DataBufferOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS, DataBuf);
sptwb.Spt.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS, SenseBuf);
sptwb.Spt.DataIn = SCSI_IOCTL_DATA_IN;
sptwb.Spt.CdbLength = 16;
sptwb.Spt.Cdb[0] = 0xE6; // NVME PASS THROUGH
sptwb.Spt.Cdb[1] = 0x02; // GetLogPage
sptwb.Spt.Cdb[3] = 0x02; // S.M.A.R.T.
sptwb.Spt.Cdb[7] = 0x7F;
length = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS, DataBuf) + sptwb.Spt.DataTransferLength;
bRet = ::DeviceIoControl(hIoCtrl, IOCTL_SCSI_PASS_THROUGH, &sptwb, length, &sptwb, length, &dwReturned, NULL);
62CrystalDiskInfo がうまくいき始めている理由
ハードウェア情報ツールの開発に必要なこと
高度な技術力
(リバースエンジニアリング力)
潤沢な資金力
(新製品が出たら検証用に買う)
※配偶者の理解も超重要
ベンダーの
サポート
(詳細仕様は一般的に非公開)
神待ち お仕事頑張る!? 連絡待ち
ユーザーが増えることでチャンスが広がる!!
63
ユーザー増
神降臨
(開発協力者)
対応ハード
ウェア増
ユーザー増
ベンダー
サポート
対応ハード
ウェア増
圧力
世界一を目指し続けることで生まれた好循環
これでNVMe対応
イケるんじゃね!!
※韓国人、当時大学院生
⇒ SAMSUNG
新製品を出すので
対応お願いします!!
64
チャレンジ5
~水晶雫~
65
オープンソースカンファレンス
2011 北海道
(2011/6/11)
66
①メール設定
②メール通知をチェック
CrystalDiskInfo 4 の新機能メール通知機能をアピール
67懇親会にて
橘べるちぇ氏
メール通知なんてレガシー技術!!
時代は音声通知ですよ・・・そうだ!!
声優さんに喋ってもらいましょう!!
そっ、それはいいですねぇ(棒)
軽く流しておくか
68
橘べるちぇ氏
声優さんに喋ってもらったから
これを使ってください。
あっ、ありがとうございます・・・
ネタじゃないw
こっ、これはネ申降臨なのか???
69CrystalDiskInfo 5 Shizuku Edition 爆誕
70
人生何が転機か
わかりませんね!!
71まじめなふりしてたんで・・・大反響
ひよひよ氏どうした?
出典:http://gigazine.net/news/20120620-crystaldiskinfo-5-shizuku-edition/出典:http://www.forest.impress.co.jp/docs/news/20120618_541019.html
HDDが壊れて悲しい気持ちになってた
けどこれを導入したら今度はHDDの異
常が楽しみになってきててやばい
コレはよい和服美少女。
CrystalDiskInfo愛用してるけどこんな
路線になるとは思わなかったww
結構お固いソフトだと思って
ただけに意外。でもかわいい。
なにこれやたらかわいい
(:.;゚;Д;゚;.:)ハァハァ
可愛すぎて導入したい
72
お堅いプログラマ
だと思われていた
ようですが・・・
73CrystalDiskInfo の開発コードネーム
1.0: Feena
2.0: Earthlight
3.0: Moonlight
4.0: Licia
5.0: Cynthia
6.0: Freesia
7.0: Marguerite
8.0: Marginality
第
一
世
代
第
二
世
代
©AUGUST
74CrystalDiskInfo 9 の開発コードネーム【予定】
©DMM GAMES
©AUGUST
アルファベット表記わからんorz
75
http://www.slideshare.net/hiyohiyo/mddwin32
ソフトウェア開発で一番大切
なことを紹介しています!!
【宣伝】第二世代萌え駆動開発
第二世代萌え駆動開発 検索
76
8K(7680x4320)他 40種類以上の壁紙サイズを用意!!
https://水晶雫.com/
壁紙
77水晶雫プロデュースで一番意識したこと
もの凄く良いものにすること
ちょっと良い程度では寧ろマイナス
• 皆が萌えたいわけではない
• そもそも萌えようがない
世界展開を見据える
• 和服美少女+黒髪+清楚
• 17歳 (X18ダメ絶対!!)
78
まとめ
79愛されるソフトウェアになるために心がけていること
• もの凄く良いものにすること
ちょっと頑張った程度では選んでいただけない
• コミュニケーションを大切にすること
要望に耳を傾け決断する(取捨選択が重要)
• 継続すること
ユーザーからの評価は積み重ね
80継続するために心がけていること
• エゴサーチ
好意的な記事やツイートを見つけると嬉しい
• ユーザーの声に振り回されないこと
ユーザーサポートに疲弊して開発終了・・・割と良くある
• 開発資金を確保すること
お金がなければハードウェア系ソフトは書けない

世界中のユーザーに愛される ソフトウェアを作りたい!!