VS魂 100連発! コンテンツ インデックス(3月13日更新) – 日本マイクロソフト株式会社 エバンジェリストチームのブログ – Site Home – MSDN Blogs の私家版が使いづらいので作り直し。
これならばずいぶんマシかと。グリッドテンプレートをそのまま活用。
ソースはこちら http://sdrv.ms/15UjCrq
VS魂 100連発! コンテンツ インデックス(3月13日更新) – 日本マイクロソフト株式会社 エバンジェリストチームのブログ – Site Home – MSDN Blogs の私家版が使いづらいので作り直し。
これならばずいぶんマシかと。グリッドテンプレートをそのまま活用。
ソースはこちら http://sdrv.ms/15UjCrq
VS魂 100連発! コンテンツ インデックス(3月13日更新) – 日本マイクロソフト株式会社 エバンジェリストチームのブログ – Site Home – MSDN Blogs を見て、Surface でぽちぽちとクリックするの面倒なので、私家版のストアアプリを作りました。
画面があまりチープなのですが、まあ、私家版としてはこれで十分かと。見た映像は保存できるとか、検索するとか(100個あればそれはそれで資料的な意味がでてくるので)できたほうがいいのですが、ひとまず Surface RTでタッチできるという程度で。
ソースはこちら http://sdrv.ms/ZAxqDG
パッケージはこちら http://sdrv.ms/ZAxt2d
自分でソースをビルドすれば、ストアにアップしなくても使えるし、ない場合でもパッケージがインストールが可能です(パッケージのインストール自体が powershell を使うので敷居が高いというのもあるのですが)。まあ、一例として。
100 個あるので、試しに画面いっぱいに並べてみたのですが、字が見えないですね、やっぱり。GridView を使ったバージョンで時間があれば直しましょう。バインドとか使って。
Community Open Day 2013 用のネタの続き
Acer w500 に Windows 8 を入れて、Vaio のノートを Windows 8 に変えてから常々悩んでいたのが、セカンドモニタ(実際にはセカンドPC)への動画表示です。自宅で作業をしているのもあり、PCファンの音を消すためもあり、動画を流し続けていることが良くあります。本体のPCパワーを喰われたくないので、ノートPCかタブレットPCで動かしていることが多いのですが、ちょっと動画の切り替えが面倒。動画はストア版のVideoで動かします。*.mp4か*.aviであれば、そのまま表示できるのでこれで。*.mkv の場合はちょっとパワーが足りなくて(特に Acer w500 の場合)、ってことで Video で。
さて、ストア版の Video ではいちいちファイルを開くで、*.mp4 を選択しないといけません。

続けて作業をするのに、いちいちピッカーを開くのは面倒です。
なので、もっぱらデスクトップから mp4 を動かすのですが、エクスプローラーのアイコンが小さくて、ちまちま押すが面倒です。大きなアイコンを使えばいいのですが、これもなかなか妙な感じで使いづらい。
そんな訳で、
ってことを考えていた訳です。子供に映画を見せるのに、エクスプローラーから選ぶってのも大変なので、そのたりも考えて。
■真面目な方法を考える
真面目に考えると、「ストアアプリでは実現できません」という結論になります。ストアアプリのセキュリティ上、ビデオファイルの選択はユーザーの手に委ねられるので、これの抜け道はありません。かつ、マイドキュメントやマイピクチャじゃなくて、ネットワークドライブ上(ほかのPCなど)に置かれているファイルはアクセスできません。おしまい、ってな感じですね。
ストアに出したい場合はそこでおしまいなのですが、ストアに出さないのであれば、いろいろ考えられます。
■私的に利用するだけを考える
いくつかアイデアを並べてみると、
正式にはストリームサーバーを用意するのが良いのですが、うーん、なんか面倒そうだし良くわかりません(これは、後で調べて実現したいかと)。初回だけコピーってのもいいけど、作りが面倒。なわけで、アプリに動画を含めてしまう方式をとってみました。
ワイドロゴも用意してみました。

プロジェクトに avi ファイルを追加していきました。

画面はこんな感じで。

コードはこんな感じで。
/// <summary>
/// ビデオを再生する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void VideoClick(object sender, RoutedEventArgs e)
{
string path = "";
switch ( (string)((Button)sender).Content)
{
case "第1話": path = "hidamari-01.avi"; break;
case "第2話": path = "hidamari-02.avi"; break;
case "第3話": path = "hidamari-03.avi"; break;
case "第4話": path = "hidamari-04.avi"; break;
case "第5話": path = "hidamari-05.avi"; break;
case "第6話": path = "hidamari-06.avi"; break;
case "第7話": path = "hidamari-07.avi"; break;
case "第8話": path = "hidamari-08.avi"; break;
case "第9話": path = "hidamari-09.avi"; break;
case "第10話": path = "hidamari-10.avi"; break;
case "第11話": path = "hidamari-11.avi"; break;
case "第12話": path = "hidamari-12.avi"; break;
}
if (path == "") return;
path = @"video\" + path;
var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(path);
var ret = await Windows.System.Launcher.LaunchFileAsync(file);
}
■出来上がったファイルを Surface RT に転送する
お手軽私的利用のアプリを早速Surface RTに転送する訳ですが、リモート接続で転送しようとすると video フォルダ内が 2GB ぐらいあって、ちょっとやそっとじゃ終わらない。なので、パッケージを作って転送しています。アプリケーション パッケージのローカルな共有 (Windows ストア アプリ) パッケージを作って、かつインストールします。
で、なんやかやでインストールができると、無事自作アプリからビデオで動画が表示できます。画像がついていないボタンなので内容がわかりづらいですが、子供用に画像をつけてやれば、それっぽいアプリになるかと。
日曜大工気分でプログラムは30分、転送などが1時間(苦笑)というパターンで出来上がるって訳です。
来る 5月11日(土曜日)に 東京会場 で登壇します。13:00からなので、お昼を食べた後ですね。今年は午前中からセッションをやっているので、結構長丁場な気が。去年は MS さんのセッションが午前中にあっただけのような気が。
去年は、Acer w500 を持っていってデバッグ講座っぽいものをやったのですが(準備がまずくて、ちょっとアレでしたが)、今年は Surface RT を持っていってアレします。
タイトルは「サンデープログラミングから始めるWindows ストア アプリ入門」ってことになっていますが、テーマは「守破離の”破”」をお話しします」ってことになっています。更に言えば、ターゲットは「初心者」ってことになっていますが、Windows ストア アプリの「初心者」だけど、パソコンを弄ることに関しては「上級者」ってことで準備をします。ええ、毎度のことながら、タイトルとテーマから決めた後付なんですけどね。
例えば、Windows ストア アプリの実行ファイルって、何処に置いてあるの?って解説とか。以前、ML に流れていたのですが、C:\Program Files\WindowsApps\ の中にあります。実は、この中には UI の XAML がそのまま入っていて改変が可能です、って話とかします。DDLとか画像ファイルとかも入っているので「抜く」こともできます、ってことで画像を抜かれたくない場合は、Webから随時取ってくるようにしてね、ってのが MS の見解だそうです。XAML の改変については、対処されたかどうかはちょっと不明ですね。

※Word 2013 で投稿のテスト。新しい図形キャンバスの中に図形を入れれば一括で画像にしてくれる模様。
あと、開発者ライセンスとか身内だけに配布する方法とか。MS や Apple の審査を通さなくても(個人で使う分には審査を通す必要がないので)良いですとか。
そんな訳で、「サンデープログラム」≒「趣味プログラミング」的なネタを用意していきます。業務的には役に立たないけど(業務に使うと危ないけどという意味で)、個人的に作っていくとWindows ストア アプリってのは結構便利な存在なんですよ、という話を。
ヨドバシで郵送というスタイルで購入したので、午前中から触ってみた感想を少し。
箱の中は本体と電源コネクタだけです。キーボード等は別売りなので、今回はパス。iPad で使っていた Bluetooth キーボードが息子(2歳)に投げられて壊れてしまっていたので、これを機に再購入しました。Bluetooth 自体はさっくりとつながります。ただし、iBuffelo の BSKBB06 キーボードは何故か英語配列で認識さえれてしまうので、Windows 8 でキーボードが英語配列キーボードとして認識される あたりを参考にしてキーボードのドライバーを更新しています。Surface RT の場合は、「HID キーボードデバイス」になっているので適当に「Microsoft Basic Keyboard(106/109)」を選びます。ひとまず、106 キーボードで「半角/全角」で IME の切り替えができるようになります。
インストール自体は、iPad よりは手間です。初回はアプリを動かすたびに Microsoft アカウントを入力していかないといけないのが…、いずれ、Surface タイプのタブレット PC が量販店に出るようになれば、iPad と同じように「セッティングして売ってくれる」パターンになるのでは?ってところですね。よくわからない場合には、適当な Microsoft アカウントを取っておかないと、Windows ストア アプリがダウンロードできないし、Office も動かせないので家に帰ったときい困ることになりそうです。
■Visual Studio 2012 のデバッグモードで動かす
Visual Studio 2012 から Surface RT へのリモートデバッグが可能です。Windows 8 Pro などと同じように、リモートデバッグの ARM 版をインストールします。ダウンロード | Microsoft Visual Studio 2012 から「Remote Tools for Visual Studio 2012」を開いて、「Remote Tools for Visual Studio 2012(ARM)」をダウンロードして、インストールすれば ok です。
初回だけは開発者ライセンスを要求されれるので、Microsoft アカウントを入力して更新します。開発者ライセンスは3か月ごとに更新を諭されるのですが、それさえやれば(多分)半永久的に自作のWindows ストア アプリを入れることができます。
■リモート アシスタンスで接続する
タブレット PC の場合は、何が面倒かというと初期設定が面倒なのです。小さ目の画面でキーボードとマウスを駆使してぽちぽちと設定するのは大変です。タブレットなのだから指の操作でできるような画面にすればいいのですが、コントロールパネルなどは、いままでのデスクトップ アプリのままなので指で打つのは大変。ソフトウェアキーボードも大変です。
なので、いつもはリモート デスクトップで接続して設定をするのですが、Windows RT の場合はこれができません。「リモート アシスタンス」しかないのです。Windows リモート アシスタンス: よく寄せられる質問 で Windows RT でも使えると書いてあるのですが、アプリケーションの「検索」で「Windows リモート アシスタンス」と打ってもでてきません。実は「msra」というコマンドとして隠れています…つーか、忘れてると思う。那覇レポート: windows8でリモートアシスタンスを使う方法 にあります。使い方は、招待キーを送って諸々面倒ではあるのですが、こんな風に自分で自分を招待することができます。
何故か、この PC からだと「簡易接続」ができないので、新しく接続するたびに招待キーを打たないといけないのが面倒なのですが、まあ、いくつかの設定はこれで ok かと。なぜか、Win キーは送れないので、本体のホームボタンを押します。そうそう、Surface のホームボタンは iPad のように押し込むタイプではなく、触って反応する(静電式?)タイプです。Acer w500 の場合はボタン式なので、これは Windows RT の機種によるでしょう。ただ、Surface の場合はスタンドで立てておくことが多いので、このホームボタンを「押し込む」という力を掛けることなく反応するのはかなり良いです。あまり強く推すと倒れてしまいますからね。iPad をスタンドに立てても、ホームボタンをぐっと押すときに倒れそうになるのが問題で、これは後発の Surface にワンポイントかと。
■Excel VBA は動かない
Surface RT には、Office 2013 の home and bussiness というバージョン(Word, Excel, PowerPoint, OneNote)が入っています。が、Outlook は入っていません…まあ、それはいいんですが、Windows ストア アプリの Mail は POP3 が使えないんですよね。うーん、どうしたものか。
さて、Excel で作業できるのはいいんですが、業務 Excel アプリとして必須?な Excel VBA は入っていません。
マクロ付きの *.xlsm を読み込ませると、こんな風にエラーが出ます。
Word VBA もつかないですね。
ひとまず、ここで区切って。後はプリンターとかスクリプトの動作とかの話を。
Windows ストア アプリで C++/CX を使ってゲームを使えば、グラフィックボードの性能を最大限に引き出せることが分かっているのですが、では、XAML でのアニメーション(主に storyboard)の場合は、どのくらいグラフィックボードの GPU を使っているか?ってのを調べてみます。
目的としては「小難しい C++/CX とか DirectX を使わなくても、XAML のアニメーション効果を使えばそこそこゲームが作れるのでは?」ってところです。実際、C++/CX は高度な3D効果の使い、単純なテキスト表示などは XAML で表示させる、という手法が Microsoft より紹介されているわけで、そのあたりは、そのあたりで。
■ベンチマークアプリを作る
単純に5000個の円(Ellipse)を表示させて、storyboard で動かしています。storybaord クラスのコピーには、以前作った Storyboard.Clone を少し修正して使っています。
List<Storyboard> sbs;
/// <summary>
/// 円を作成
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CreateClick(object sender, RoutedEventArgs e)
{
var rnd = new Random();
// 100個のEllipseを適当に並べる
var xml = @"
<Ellipse
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
Fill=""#FFF4F4F5"" HorizontalAlignment=""Left""
Height=""50"" Margin=""94,137,0,0"" Grid.Row=""1"" Stroke=""Black"" VerticalAlignment=""Top""
Width=""50"" RenderTransformOrigin=""0.5,0.5"">
<Ellipse.RenderTransform>
<CompositeTransform/>
</Ellipse.RenderTransform>
</Ellipse>
";
sbs = new List<Storyboard>();
for (int i = 0; i < 5000; i++)
{
object obj = XamlReader.Load(xml);
Ellipse el = obj as Ellipse;
Canvas.SetLeft(el, 0);
Canvas.SetTop(el, 0);
canvas.Children.Add(el);
var sb = sbMove.Clone();
sb.SetTarget(el);
sb.AutoReverse = true;
sb.RepeatBehavior = RepeatBehavior.Forever;
int x1 = rnd.Next(800);
int y1 = rnd.Next(800);
int x2 = rnd.Next(800);
int y2 = rnd.Next(800);
((DoubleAnimation)sb.Children[0]).From = x1;
((DoubleAnimation)sb.Children[1]).From = y1;
((DoubleAnimation)sb.Children[0]).To = x2;
((DoubleAnimation)sb.Children[1]).To = y2;
TimeSpan ts = new TimeSpan(0, 0, rnd.Next(5) + 1);
((DoubleAnimation)sb.Children[0]).Duration = ts;
((DoubleAnimation)sb.Children[1]).Duration = ts;
((ColorAnimation)sb.Children[2]).Duration = ts;
switch (rnd.Next(3))
{
case 0: ((ColorAnimation)sb.Children[2]).To = Windows.UI.Colors.Red; break;
case 1: ((ColorAnimation)sb.Children[2]).To = Windows.UI.Colors.Yellow; break;
case 2: ((ColorAnimation)sb.Children[2]).To = Windows.UI.Colors.Blue; break;
}
sbs.Add(sb);
}
}
private void StartClick(object sender, RoutedEventArgs e)
{
// アニメーション開始
foreach (var sb in sbs)
{
sb.Begin();
}
}
private void StopClick(object sender, RoutedEventArgs e)
{
// アニメーション停止
foreach (var sb in sbs)
{
sb.Stop();
}
this.sbMove.Stop();
}
動かすとこんな感じになります。円が5000個(半分ほど見えていませんが)うにょうにょと動きます。
■CPU と GPU の負荷を見てみる。
Process Explorer で XamlBenchMark の負荷をみていくと、GPU を 25% ほど使った状態になります。この PC だとそれほど重くないのですが、うまく動かない場合は、1000 個位に減らして動かしてみてください。
この時の CPU 負荷は、26% 程度です。GPU を使わない場合(グラフィックボードを積まない場合)がどうなるのかは、別の PC で検証したいと思います。
プログラムを修正して、ぱらぱらアニメを1000個位動かしてみたいですね。体感速度がそれほど落ちるものでなければ、それなりのアクションパズルゲームとかが C#+XAML+storyboard の組み合わせでできるのではないか、と考えています。
■サンプルのダウンロード
ベンチマークのダウンロードは以下からできます XamlBenchMark.zip
目次はこちら 最強.NET開発PC
さて、円安(2013/03時点で 1ドル94円)の折りに、輸入パーツを買い集めるのはどうかと思うのですが — 実際、SSD の値段は年末から徐々に上昇していて冷や冷やしましたが — 一度、予算を決めてしまえば、その予算に応じて組むことになります。最初の予算は、ソフトウェア代抜きで 20 万円前後と決めていて、上限が 25 万円ということです。多少、人柱的な要素を含んでいるので予算は高めに設定しましたが、オーバークロック専用機やゲーマーご用達の高価な趣味マシン、本格的なデザイナー系のマシンに比べれば、予算は低いほうですね。まあ、私の場合は .NET 開発PC ≒ 自宅の業務 PC という位置づけなので減価償却(3,4年程度)を見越した金額になっています。OS 無しの PC が 4,5 万程度で BTO で買える、そこそこのゲーム用 PC が 10 万程度で買える時代ですから、それ以上の使い勝手 — 似た値段/パーツを使っていたとしても、トータルとして「.NET 開発 PC」に求められるところを追及した PC にする必要があります。
■パーツの価格(2013年02月中旬時点)
| 型番 | 単価 | 計(税込) | |
| CPU | Intel i7-3820 | 27,800 | |
| MEMORY | XMS3 8GBx2 x4 | @9,480 | 37,920 |
| 水冷クーラー | HYDRO SERIES H60 | 7,980 | |
| マザーボード | X79 Extreme9 | 29,980 | |
| ケース | PCK9X | 12,940 | |
| DVDドライブ | LITEON iHAS524 | 1,980 | |
| グラボ | ZOTAC GTX650 | 14,980 | |
| SSD | Plextor PX-512M5P | 39,990 | |
| HDD | WD20EZRX SATA3 2TB x2 | @7.980 | 15,960 |
| 電源 | AX760i | 30,780 |
締めて、220,310円(税込)というところです。20万円の予算を若干オーバーしているのは、消費税分の計算を忘れていたのと(苦笑)、電源ボックスに見栄を張ったからからですね。グラフィックボードに関しては、ここまで必要なかったかも、という阪口氏の話なのですが、Windows ストア アプリを作成するときに XAML 描画で GPU を結構使うので、これはこれで実験用に必要と感じています。
価格を抑えたい場合は、前の PC から流用したり、後々に買い揃えるというパターンにします。今回は、初期投資ということで一括秋葉原で揃えましたが、普及した時点で少しずつ買い揃えるのもよいでしょう。
■パーツの調達先
秋葉原での購入先は、ドスパラさん、ツクモさん、ソフマップさんです。購入時に店内での写真を撮影させて頂きました。写真や記事(詳しいパーツ情報など)は、このブログとは別に正式な記事にして仕上げてさせて頂きます。
購入時のパーツ選定、パーツの組み立ては、リンクスインターナショナルの阪口さん、デザインラボの加藤さんにご協力頂いてます。ご協力ありがとうございました。
パーツの価格については、購入した時の時価になるため、現時点では変わっている可能性が大…というか、変わっているので店員さんにお尋ねください。
■ソフトウェアの価格
今回、OS や Visual Studio 2012 などは、私が MSDN を使っているので購入費がかかっていません。全体的に安く仕上がっているのは Windows 8 Pro の OS 代金が入っていないためでもあります。これだと BTO と違ってきてしまうので、ソフトウェア代も算出しておきましょう。
| Windows 8 Pro | 16,000 |
| Visual Studio 2012 Pro | 60,000 |
| Micrsoft Office 2012 Pro | 50,000 |
| SQL Server 2012 Express Edition | 0 |
| IIS + ASP.NET 4.5 | 0 |
| VMWare Workstation 9 | 36,000 |
買うとなると締めて、162,000円になります。ただし、この中で必須のものは Windows 8 だけで、.NET のWindows ストア アプリを作るときには、Visual Studio 2012 Express Edition という無償のものあるので、これを使うことができます。仮想環境も VMWare Player や Virtual Box を使えば費用は掛かりません。私の場合は、仕事用に必須なので MS-Office が入っていますが、今後は Office 365 と OpenOffice を併用する — MS-Office との互換を Office 356 に任せる — というコストダウンの方法もあります。
■これからがスタート
.NET 開発 PC は組み終わりましたが、実はこれから本格的なスタート。この組み合わせ実際に .NET 開発がどれだけ「快適」になるのかを検証していきます。いくつか検証ツールを作ることになるので、ちょっと間を置いて再開しましょう。
目次はこちら 最強.NET開発PC
最強.NET開発PCが完成しました…と、その前に「.NET開発PC」なので、.NET の開発環境を入れないといけません。というか、更にその前に OS を入れないとダメですね。今回 .NET の開発環境といして準備するのが、以下の環境です。
といったところです。他にも、xamp、Perl、OpenCV などを入れていますが、ひとまず、.NET アプリの開発をするときは、上記の環境で ok です。あと、ソース管理用に Team Foundation Server Express 2012 を入れていきます。
数々の開発環境を何処にいれるのか?という問題があります。今回の PC は 512 GB の SSD を積んでいるので、あらゆる環境を C ドライブに入れています。かなり突っ込んだ状態で、150GB 程度使っている状態ですね。このうち 50GB ぐらいは試験的に VM に割り当てているので、開発環境としては 100 GB ぐらいで収まっているはずです。
なので、C ドライブの SSD の容量としては、256 GB 程度あればあまり容量を気にせずに使えると思います。それ以下となると残り容量が気になったりするので、精神的によくありません。そういう場合は、アプリケーションの多くを D ドライブなどの別に領域に移すとよいでしょう。ただし、ツールによっては C ドライブに固定されているものもあるので(テスト的に作ったものとか)、それに対する先行きのトラブルの対処時間を考えると C ドライブにまとめておけるような容量を使ったほうが「作業コスト」が安くなります。
■仮想メモリを調節する
この開発 PC には、64 GB のメモリを積んでいます。なので、仮想メモリは自動で 128 GB 取ることになります…といいますか、貴重な SSD の容量をたかだか仮想メモリ(ページング)のために 100 GB 以上の消費するのはばかばかしいです。64 GB あると普通の作業をしている間はキャッシュアウトはしません。なので、仮想メモリの容量を「0」にしてしまいます。
多分、32 GB の場合も 0 にしてしまって ok です。16 GB の場合は微妙な時がありますが、VMWare などの仮想環境を使わないのであれば、 0 にしてもよいかもしれません。そのあたりは実際に運用して調節していきます。
■ディスク構成を考える
最初に構成を考えていたので、最強.NET開発PCを作るよ(その1) この構想の通りにインストールをしています。
| ハード | 容量 | 用途 | |
| C | SSD | 512 GB | システム、開発系アプリ |
| D | HDD | 2 TB | ツール系、作業エリア |
| E | HDD | 2 TB | データベース |
| G | HDD | 1 TB | VMWare |
※ F ドライブは DVD です。
C ドライブは、OS と 開発系のアプリを入れます。SSD で高速に動作するのと、一度突っ込んでしまえば、あとは Read だけで済むようなアプリの実行ファイルを入れます。仮想メモリを使っている場合だと、HDD はそれ専用のほうが高速に動作します。今回は、仮想メモリが 0 なので関係はありませんが。あと、デフラグや OS 領域のクラッシュの関係から、作業領域とは別のドライブにしています。
D ドライブは、数々のツールの類(テスト的に作ったものや、他のツール)、プログラムのソースコードなどを置きます。ソースコードをコンパイルすると、一時ファイルがたくさんできるので、実はこの領域は Read/Write が高速なほうが良いのです。が、今回はコスト上の関係から HDD にしています。それでも、OS 領域と別にとることでビルドが高速になるのと、OS 領域のクラッシュに無関係なように別のドライブに配置させます。
E ドライブと G ドライブは、それぞれ SQL Server 専用、VMWare 専用領域にしています。データベースも仮想領域も、それぞれ頻繁に HDD にアクセスするものなので、シーク時間を短縮させるために別のドライブにします。ここも SSD にすると高速化するだろうなと思われます。HDDのアクセススピードは VMWare に影響するのか? で実験したように、同じドライブに複数の VMWare を置いてしまうと仮想されている OS が遅くなる可能性があります。この実験では、ドライブに対する書き込みしか調べていないので、コンパイルや実行時間、仮想メモリを頻繁にアクセスさせるなど、いくつかの実験ツールを作って試してみたいところです。
■故障と復旧時間を考える
私が非常にノーマルな状態でアプリや PC を組むのは、
という、MTBF(平均故障間隔), MTTF(平均復旧時間) というのを考慮するためです。サーバー系の場合には当然の考え方なのですが、プログラミング環境やアプリケーションを使う場合も同じで、トラブルにあたる頻度は少ないに越したことhあありません。ですが、サーバーの場合とは違い、開発 PC には、最新の危うい技術/アプリを入れ込む必要が多々あります。これは、別に危険なツールを入れるという意味ではなくて、Visual Studio 2012 のアップデートを頻繁に入れるとか、なんらかのパッチを入れるとかという作業が頻発するのです。そのたびに、開発環境自体が壊れる(動かなくなる)というリスクが少なからず発生します。この頻度は、普通にゲームをしたり、普通に業務アプリを動かしている場合とは比率が異なります。逆に業務アプリを動かしている PC は、OS もアプリも最初のままというパターンになります。
かつ、仕事柄、最新の OS に付き合うパターンも含まれるので、OS がバージョンアップするタイミングで、OS の入れ替えと、しばらくしてから PC 自体の入れ替えが交互に発生します。このパターンで考えると、減価償却的な意味合いの消耗品としての PC と、開発効率を優先させるための投資先としての PC が混在しているのです。そんなこともあって、結構ノーマルな形で開発 PC を使っています。
目次へ 最強.NET開発PC
今回は筐体とCPUクーラーの選定です。
水冷クーラー Hydro Series H60
筐体 PCK9X
会社で使う PC の場合、バックグラインドで流れている雑音が大き目なので PC のファンの音が気にならないのですが、家の場合(私の場合は事務所兼なので)には、かなり静かななのでファンの音が気になります。また、夜中にウォーンと鳴っているのは家族持ちはちょっと無理なんですよね。ひとり暮らしだったとしても、PC の音であまりよく寝られないというのは困ったものです。
なので、音に関するところでは、
を低く抑えたい。できれば「無音」にしたいところです。
無音PC作成
http://adpn.sakura.ne.jp/kusunoki/silent_pc2/
というのを見つけたのですが、これはさすがに…業務では使えないし。ってことは、やはり「静音」なのですね。ちなみに、完全無音という意味では Linux で動く Raspberry Pi などがあります。 Raspberry Pi はブラウジングはそこそこできるのですが、開発向けではないでが。
さて、筐体を買って、いざ組み上げて家で動かしてみると、なかなか煩い。この筐体は静音ボディということなのですが、静音の工夫としては、HDD トレイにゴムが入っているのと、筐体の足にゴムが使ってあります。ビスにゴムがつけてあって、HDD を浮かす感じになっています。これで HDD の振動が床に伝わらない形になっているのですね。コンクリートの床だといいのでしょうが、フローリングあたりだと微妙に振動します。ひょっとすると畳の場合は、振動は帳消しになるかもしれません。
このPCをそのまま動かすと、
ということになります。サーバー機でもないので、HDD を冷やすための FAN は消してしまいました。筐体の前面にあるファンは意外とうるさいのです。BIOS を使って消してもよいし、電源ケーブルを直接抜いてしまってもよいでしょう。電源ボックスのファンは AX760i が制御するので手を付けないので、残りは水冷クーラーに接続している背面のファンです。
水冷クーラーでない場合は、筐体自体のファンと、CPU の空冷ファンがあるので、ここの静音効果は大きいと思います。まあ、一番良いのが、PC 自体は別の部屋(サーバールームとか)に置いてしまって、リモートで制御するってのでも良いのですが、.NET 開発 PC の場合は XAML などのグラフィクを多用することになるので、モニタと PC は近い位置になってしまいます。
最強.NET開発PCを作るよ(その5) で書きましたが、マザーボードの BIOS で背面ファンの回転数を落しています。冬なのでフルパワーで冷やす必要はないのと、水冷の効果は大きいのではないか?というのを期待して、回転数を上げすぎないようにしています。これは室温にも関係するので、また夏になったらチェックしていみます。サーバールームとは違って、人がいる傍で PC が動作するので、室温はそれなりに上下します。いまのところ、いままで使っていた BTO の PC を少し下回るぐらいには音が減っています。
主に稼働する OS の領域を SSD にすることで、HDD の回転音が減ります。作業領域は HDD なので、それに頻繁にアクセスしているとき(Visual Studio で作業をしてたり、Office を使っているとき)は回転音が聞こえるのですが、エディタを使って編集作業をしている程度であれば、ほかの HDD は止まっている状態です。
気になる節電効果ですが、これは後ほどワットチェッカーを使って具体的に調べていきます。Core Temp で調べると、20 ~ 40 ワットの間を推移しているので、かなり低くなっているのでは?と想像ができます。これは、手元にある以前の PC を比較して調べていきます。
これでハードウェアは一通りおしまいです。次回は、OS の設定を少しだけ解説して、実際のコストを算出します。
目次へ 最強.NET開発PC
今回は電源ボックスの選定です。
ぶっちゃけ、私はPC の電源ボックスなんて、電源が入れば何でもいいんじゃないの?という手合いなので、筐体に付属していない電源ボックスを見たのは初めてなんですが、結構いろいろとあるのです。
私がいままで PC を使っていて壊れやすいのが、グラフィックボードと HDD です。グラフィクボードはオンボードのものや PCI のものもありますが、1か月か半年前ぐらいになんらかの兆候がでてきます。経験上、グラフィクボードが壊れる前は、何回かブルースクリーンになります。グラフィックドライバーとの整合性がボード上のチップとおかしくなるのか、突如として OS が落ちます。グラフィクドライバーは、Windows ではカーネルモードで動いているので、ここで不整合が起こると OS が落ちるんですね。チェックとしては別のグラフィックボードを差し込めばいいのですが、最近はオンボードのものが多くってなかなか大変です。安めのを1枚予備で持っておくと、緊急時にいいと思います。BIOS とかも見れませんから。
HDD がおかしくなるのは、みなさん兆候があるので、カリカリという音が続くと突如として落ちます。この場合、さりげなくバックアップを取っておくのが良いのですが、OS 領域とデータ領域が分離してないとちょっと交換は大変です。なわけで、私の PC には常に 2台の HDD がついています。
加藤さんのブログを見ていくと、業務系(サーバー仕様が多いと思うのですが)の場合は、電源系がやられることが多いみたいですね。大電流が流れているのと、落雷でアウトになるパターンがあるようです。私の PC の場合、幸いに落雷でやられたことがありません。まあ、事前に電源を切っていることが多いというのもあるし、連続運転時間も運用系に比べれば 1/10 ぐらいかもしれません。運用系の場合には、同じ PC を 10 年以上使うことが多いのですが、開発 PC の場合は 3 年位で OS ごと買い直しというパターンが多いですからね。
今回購入した AX760i は、 80PLUS PLATINUM認証 ということで、耐久性と低発熱、そしてデジタル制御ができるというのが売りです。デジタルで変換効率を監視・実現しているので、無駄のない高出力が…ってことになっていますが、正直私にはよくわかりません(苦笑)。

ちらっと聞くと、自作 PC ご用達の「高級電源ボックス」だそうです。性能とかなんとかよりも、この真黒な艶消しのボディがよいとかなんとか、確かに箱を開けたときの高級感は、他のパーツにはないものがありますね。ケーブルがビニール袋ではなく布製の袋に入っているところとか。そんな訳で、この電源ボックスを入れたときには、筐体をスケルトンにして LED でぴかぴかさせないとダメらしいんですが(中身を見せないともったいないらしい)。
ちなみに ハイブリッド・サイレントファンコントロール機能 というのが入っていて、負荷が少ないときはファンが止まるそうです。なので、こんな風にエディタで物書きをしている間(さほど CPU を使っていないとき)は、ファンが止まっていて煩くありません。
このあたりは、筐体の付属のファンもあるので、静音に関してはもうちょっと実測していきたいところです。
ちなみに、電源ボックスはいくつか勧められた中で一番高いものを選んでいます。これは「高い電源ボックスって意味があるの?」ってのを実体験したかったからなんですね。なので、このあたりは HDD をつなげたりとか、節電効果だとか、いろいろ調べたいと思っています。