Intel NUC に ESXi 6.5 を入れる

新しいおもちゃ is Now Available

Intel の NUC を買いました。第 6 世代のうちの、NUC6i5SYH です。

製品の Web ページ を見るとそろそろ第 7 世代のものが買えるようになりそうな雰囲気がありますが、待つのが嫌なので買ってしまいました。

使い道は考えていませんが、そういうときはとりあえず ESXi を入れます。新しいものが好きなので、現時点で最新の ESXi 6.5 にしました。

注意

Intel NUC は VMware Compatibility Guide に乗っていないハードウェアです。何があって文句は言えません。

買ったメモリとストレージも、Intel がテストした構成の一覧には記載のないデバイスです。

買ったもの

列挙します。

SSD はデータストアとして占有させたかったので、ESXi のブート用には USB メモリを別に用意します。

全部で 9 万円くらいですね。いい時代です。

インストール

何も考えずに製品の公式の ISO イメージをそのままインストールすれば問題なしでした。

昔は非公式のドライバを自分で突っ込まないとうまくデバイスが認識されなくてダメだったようですが、最近は公式のそのままで大丈夫みたいですね。

セットアップ

インストール後、そのまま DCUI で IP アドレスやらホスト名やらを設定したら、vSphere Client で ESXi につないで必要な設定をします。

vSphere Client は、C# 版はもうないので、HTML5 版を使います。ESXi に組み込みで用意されていて、ブラウザで ESXi に設定した IP アドレスに接続するだけで使えます。快適です。

トラブルと対処

さて、ESXi のインストールは何の問題なく終了したものの、データストアのアクセスが異常に遅いというトラブルが発生しました。

ESXi 6.5 になって追加された新しいデフォルトの AHCI ドライバが、NUC の SATA コントローラをうまくハンドルできなかったみたいです。

以下のようにして明示的に vmw_ahci ドライバを無効化することで解決できました。

esxcli system module set -e=false -m=vmw_ahci

このトラブル、具体的には、以下のような症状です。

  • I/O のレイテンシが 1,000 ms 以上ある
    • パフォーマンスのグラフの [最大待ち時間] が異常な数値
  • イベントログに以下のようなエントリがある
    • 接続の問題により、ボリューム XXXXX へのアクセスが失われました。回復処理が進行中です。まもなく結果が報告されます。
    • 接続の問題が発生後、ボリューム XXXXX へのアクセスがリストアされました。
  • vmkernel.log に以下のようなエントリがある
    • WARNING: NMP: nmp_DeviceRequestFastDeviceProbe:XXXXX: NMP device “XXXXX” state in doubt; requested fast path state update…
    • Cmd(0xXX) 0xXX, CmdSN 0xXX from world XXXXX to dev “XXXXX” failed H:0x2 D:0x0 P:0x0 Invalid sense data: 0xXX 0xXX 0xXX
    • Aborting txn calleriD: 0xXX to slot XX:  File system timeout (Ok to retry)

このログ、SAN 構成なら目にすることはありますが、DAS のストレージでは通常は出ません。真っ先に SSD の初期不良を疑い、そして NUC の初期不良も疑いましたが、調べてみると同じ症状の事例が海外で複数報告されていました。解決策も載っています。

その他

今回は問題にはなりませんでしたが、ESXi 6.5 では USB メモリもトラブルが起きがちのようです。

これも AHCI のドライバと同様、デフォルトのものが置き換わったことが原因だとか。KB 化もされていました。

ドライバ周りはトラブルが起きるとハード障害との切り分けがしにくくて厄介ですね。

今後

とりあえず vSphere 6.5 の環境をざっと触ってみたいので、ひとまず vCSA を立てていろいろ様子をみて、あとは素直に小さな仮想化基盤としておもちゃにします。

HDD を SSD にした話

自宅の PC の HDD を SSD に換装しました。このツイートをしたあとに勢いでぽちった感じです。いつまでもアンポンタンなのは嫌ですからね。


本業が本業だけに、いまだに自宅に SSD が一本もないというと驚かれることもしばしばあったのですが、そんな状況ともようやくおさらばです。

とはいえ、データ用の HDD までぜんぶ SSD にするメリットもあまりないので、ひとまずは C ドライブだけ。中身をまるごとクローンして物理的に置き換えたので、純粋にディスク種別の差異だけを抽出できる状態が得られたことになります。

体感でも起動速度をはじめ随所の挙動が目に見えて速くなったので、正直、定量的に比較するまでもなく圧倒的な効果が得られました、という結論はゆるがないのですが、そんなわけで、せっかくですしもうすこし細かく違いを見ることにします。

写真は撮らなかったので、おいしかったごはんの写真をところどころに挟んでおきます。

買ったもの

Crucial の CT240BX200SSD1 です。

対象の PC

@Sycom の 2008 年くらいのモデル、GZ1000P45 です。

SATA 3.0 が出る前なので、SSD を挿したところで SATA 2.0(3 Gbps)でしか動かないのです。しかたないのです。CPU は Intel Core 2 Quad Q9450 でした。

OS は 2011 年の Windows 7 のクリーンインストール以来、そのまま使い続けているので、相応にもっさりしています。

HDD は 300 GB で、140 GB くらいが使用済みです。

行わせる処理

ベンチマークを走らせても数字的なうれしさしか得られないので、実運用を考えて、『PC を起動させる』ときの様子を観察することにしました。

具体的には、停止状態から電源を入れて、OS が起動して安定するまでの処理の時間とパフォーマンス特性を比較します。ログイン後の処理の様子も観たかったので、ログイン画面が表示されたら直ちに(人力で)ログインするようにします。

起動の完了は、

  • ディスク I/O
  • CPU 使用率

のふたつで(人力で)判断するものとします。つまり、グラフが横ばいで推移しはじめたら完了、ということです。

判断の根拠には、Windows の標準のパフォーマンスモニタを使います。カスタムデータコレクタセットを作成して、タスクスケジューラから OS の起動毎にこれをキックさせるように仕込みました。

この状態での PC の起動を、HDD の場合と SSD の場合とでそれぞれ 2 回行います。

細かいことをいうと、そもそも HDD の場合と SSD の場合とで『電源を入れてからパフォーマンスモニタがキックされるまで』の時間がだいぶ違うはずですが、無視できることにしました。

まとめ

数値上、以下の改善が見られました。


ディスク 所要時間 平均 CPU 使用率 平均ディスク使用率 平均応答時間 平均キュー長 平均帯域幅 平均 IOPS
HDD 12:30 18.0 % 99.4 % 35.4 ms 6.0 5.4 MiB/s 216.4
SSD 3:35 32.3 % 26.8 % 1.0 ms 0.4 7.5 MiB/s 363.2

CPU やディスクの使用率、キュー長や応答時間から、HDD のときは典型的な I/O ボトルネックであったことが読み取れます。

SSD にしたことで、I/O の応答性が上がり、CPU がきちんと使われるようになったようです。

以下、グラフです。なお、先の記述通り HDD と SSD でそれぞれ 2 回計測していますが、似たようなグラフが 2 個できただけだったので、以下ではそれぞれの 1 回目の情報のみ掲載しています。そして SSD 分は起動が完了してしばらくした段階で計測を止めた関係で、グラフが途中までで切れています。

CPU 使用率

25 % くらいで横ばいになったときが起動完了のタイミングです。

HDD のときは CPU がロクに使えていないことがわかります。

ディスク使用率

ディスク使用率は、”100 – % Idle Time” で算出した値です。HDD には余裕がまるでありません。SSD はスパイクで 90 % くらいまで上がりはするものの、まだ余力がありそうです。

帯域幅

劇的なちがい、とはいえないですが、平均でいえば上がっています。

起動処理なのでやはり I/O は読み取りが中心のようです。

帯域幅と時間を掛けると総転送量が求められるはずですが、HDD だと 4 GB、SSD だと 1.5 GB くらいになるのがちょっと謎です。

同じシステムを起動させているなら総転送量も同じくらいになりそうなものですが、パフォーマンスモニタがキックされる前に大半が読み取り済みだったとか、短期間に I/O が集中したことでキャッシュヒット率が上がった(不要ページとしてキャッシュから破棄される前に再利用されてディスクへのアクセスが発生しなかった)とか、なにかあるのかもしれないです。

応答時間

HDD のひどさがすごいです。三桁にまで行くと、馬鹿にされている気さえしてきます。

SSD は優秀です。ほとんどの期間が 1 ms 以下でした。

キュー長

非 RAID 構成なので、単一ディスクに対するキュー長です。通常は 2 以下であるべきなので、HDD は待ちが発生しすぎですね。

SSD はほとんどが 1 以下でした。待たせずにさばけているようです。

IOPS

SSD で 2,500 くらい出ているのは納得ですが、HDD でも IOPS が 750 以上出ているというのが信じられないですね。このカウンタは正しいのでしょうか……。

ブロックサイズ

これはこれ単体ではあまり意味のあるグラフではなさそうです。

おわりに

IOPS と応答時間の相関とか、ブロックサイズと応答時間の相関とか、おもしろい傾向が出てくることを期待して散布図を吐いてみたものの、有意な結果にはなりませんでした。相関が見たいなら、それこそベンチマークツールなどで負荷をかけて、そもそものワークロードを安定させないと、あまり意味がないですね。

なにはともあれ、ディスクがボトルネックであることを確かめる前に SSD を買ったわけですが、ねらい通り速くなってくれてよかったです。ディスクがサチらなくなったので、M/B と CPU をよいものにすればもう少し早くなりそうですね。

よいころあいなので、PC を買い替えがてら、いい加減 Windows 10 にしておきたい気もしています。起動が遅いならクリーンインストールするのがいちばん確実です。

VMware Labs の Onyx に Web Client 用が出ていた

ぜんぜん知らなかったのだけれど、ふと VMware PowerCLI Blog を見たら、VMware Labs の Onyx の Web Client 対応版、Onyx for Web Client のリリースの案内が出ていた。

System Requirements には vSphere Web Client 6.0 用と書いてある。6.0 の Web Client から 5.5 につなげば 5.5 でも使えそう(後方互換、あったよね?)。

Onyx というのは、vSphere Client の操作を PowerCLI や C# や vCO 用の JS などのコードにしてくれるとても便利なもので、ぼくも三年前に『vSphere Client の操作を PowerCLI のコードにしてくれる VMware の Onyx がすごく便利』というエントリを書いている。

このエントリ、いまでもちょくちょくアクセスがあるのだけれど、この末尾にこんな一文を入れていた。

vSphere 5.1 からは vSphere Client ではなくて vSphere Web Client が標準になってくるので、Onyx たんがアップデートしてくれないといずれ使えなくなる疑惑がある。

結局、従来の C# 版クライアント用の Onyx も 2014 年までは継続的にアップデートされていて、なんだかんだで vSphere 5.5 の C# 版クライアントでも使えてはいる。とはいうものの、根本的に C# 版クライアントだとできないことも多いわけで。

Web Client 用のが出てくれないとそのうち困りそうだなあと、このときからつらつら考えてはいたのだけれど、無事にリリースされてくれてよかった。安心した。

PowerShell と bash で任意のコマンドの出力の全行頭にタイムスタンプを付ける

Tera Team でログを取るときの “タイムスタンプ” オプションみたいなことを、OS のネイティブの機能でやりたいシーンがあった。一時的な人力監視とか作業の証跡とかで。

以下、Windows の場合(PowerShell)と Linux の場合(bash)のそれぞれで。

Windows の場合(PowerShell)

ワンライナでやる

こうする。

<任意のコマンド> | foreach-object {(get-date -f "[yyyy/MM/dd HH:mm:ss.ff] ") + "$_"}

コマンドによっては表示が崩れるので、その場合は Out-String -Stream を通してやるとだいたいうまくいく。

<任意のコマンド> | out-string -stream | foreach-object {(get-date -f "[yyyy/MM/dd HH:mm:ss.ff] ") + "$_"}

結果、こうなる。

PS> ping 8.8.8.8 -t | foreach-object {(get-date -f "[yyyy/MM/dd HH:mm:ss.ff] ") + "$_"}
[2015/11/02 01:04:43.31]
[2015/11/02 01:04:43.32] 8.8.8.8 に ping を送信しています 32 バイトのデータ:
[2015/11/02 01:04:43.32] 8.8.8.8 からの応答: バイト数 =32 時間 =7ms TTL=56
[2015/11/02 01:04:44.32] 8.8.8.8 からの応答: バイト数 =32 時間 =9ms TTL=56
[2015/11/02 01:04:45.32] 8.8.8.8 からの応答: バイト数 =32 時間 =4ms TTL=56
[2015/11/02 01:04:46.32] 8.8.8.8 からの応答: バイト数 =32 時間 =12ms TTL=56

関数にする

関数にする場合は、例えばこんな感じ。

function add-timestamp {
	[cmdletbinding()]
	param (
		[parameter(valuefrompipeline = $true, mandatory = $true)][psobject] $object,
		[string] $format = "[yyyy/MM/dd HH:mm:ss.ff] ",
		[switch] $trim
	)
 
	process {
		$object | foreach-object {
			if ($trim) {
				(get-date -f $format) + "$_".trimend()
			} else {
				(get-date -f $format) + "$_"
			}
		}
	}
}

-format(-f でもよい)で任意のフォーマットを指定できる。何も指定しなければデフォルト(”[yyyy/MM/dd HH:mm:ss.ff] “)。

-trim(-t でもよい)は、行末の不要な空白を削除するオプション。なにかの結果を format-table してから add-timestamp に渡すと、行バッファがあふれて折り返されて、全行間に空行が入って見えることがあるので、これを見掛け上抑止するためのもの。

使うときはこんな感じ。ワンライナの場合と同様、場合によっては out-string -stream を噛ませた方がよさそう。

<任意のコマンド> | add-timestamp
<任意のコマンド> | add-timestamp -f "<HH:mm:ss> "
<任意のコマンド> | add-timestamp -t
<任意のコマンド> | out-string -stream | add-timestamp

結果、こうなる。

PS> ping 8.8.8.8 -t | add-timestamp
[2015/11/02 01:16:18.65]
[2015/11/02 01:16:18.65] 8.8.8.8 に ping を送信しています 32 バイトのデータ:
[2015/11/02 01:16:18.66] 8.8.8.8 からの応答: バイト数 =32 時間 =4ms TTL=56
[2015/11/02 01:16:19.66] 8.8.8.8 からの応答: バイト数 =32 時間 =4ms TTL=56
[2015/11/02 01:16:20.66] 8.8.8.8 からの応答: バイト数 =32 時間 =5ms TTL=56
[2015/11/02 01:16:21.66] 8.8.8.8 からの応答: バイト数 =32 時間 =8ms TTL=56

Linux の場合(bash)

ワンライナでやる

こうする。

<任意のコマンド> | awk '{print strftime("[%Y/%m/%d %H:%M:%S] ") $0}'

strftime() はミリ秒単位の表示ができないっぽい。date で代替もできなそう ((やってみたら全行のタイムスタンプが同じ時刻になってダメだった))だし、しかたない。

結果、こうなる。

[kuro@localhost ~]$ vmstat 1 | awk '{print strftime("[%Y/%m/%d %H:%M:%S] ") $0}'
[2015/11/01 05:04:04] procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
[2015/11/01 05:04:04]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2015/11/01 05:04:04]  1  0      0 483204  23324 363936    0    0   145     2   32   44  0  1 99  0  0
[2015/11/01 05:04:05]  0  0      0 483172  23324 363960    0    0     0     0   26   36  0  0 100  0  0
[2015/11/01 05:04:06]  0  0      0 483172  23324 363960    0    0     0     0   26   36  0  0 100  0  0
[2015/11/01 05:04:07]  0  0      0 483172  23324 363960    0    0     0     0   27   42  0  0 100  0  0

関数にする

関数にする場合は、例えばこんな感じ。

#!/bin/bash
function add-timestamp () {
        f="[%Y/%m/%d %H:%M:%S] "
        for opt in "$@"; do
                case "$opt" in
                        '-f' | '-format' )
                                f="$2"
                                ;;
                esac
        done
        cat - | awk "{print strftime(\"$f\") \$0}"
}

-format(-f でもよい)で任意のフォーマットを指定できる。何も指定しなければデフォルト(”[%Y/%m/%d %I:%M:%S] “)。

こうやってつかう。

<任意のコマンド> | add-timestamp
<任意のコマンド> | add-timestamp -f "<%I:%M:%S> "

結果、こうなる。

[kuro@localhost ~]$ vmstat 1 | add-timestamp
[2015/11/01 05:18:48] procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
[2015/11/01 05:18:48]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2015/11/01 05:18:48]  2  0      0 482800  23648 364060    0    0   110     2   30   42  0  0 99  0  0
[2015/11/01 05:18:49]  0  0      0 482768  23648 364060    0    0     0     0   33   46  0  1 99  0  0
[2015/11/01 05:18:50]  0  0      0 482768  23648 364060    0    0     0     0   27   38  0  0 100  0  0
[2015/11/01 05:18:51]  0  0      0 482768  23648 364060    0    0     0     0   23   37  0  0 100  0  0

どうにかしてミリ秒出せないかな、これ。

自分が他校の何期生相当かすぐわかる、ギター合奏クラスタ用 Web サービス『多摩高期数変換機』をつくった

背景

ギター合奏界隈で集まってお互いに自己紹介するときに、『○○高校の△期の□□です』という言い方をよくします。ぼくでいえば、『多摩高校の 48 期の黒井です』といった具合ですね。

これ、同じ学校であればすぐにどの世代か理解できて自分との関係性も導き出せるのですが、当然ながら他校の数字で言われてもよくわかりません。それどころか、学校によっては、”期” ではなく定期演奏会の “回” で数えているところもあります。

もちろん、他校出身の友人がいるのであれば、そのひとを基準に計算することは容易いし、慣れてくれば自分の頭の中に対応表が出来上がってくるものです。最近では『多摩高校換算で××期相当』と自己紹介に最初から含めてくる強者もよく目にするようになりました。

とはいえ、そういうコミュニティの空気に慣れるまでは、それはなかなかできるものではありません。

相手の世代がわかることで、初対面でも、コンクールで弾いていた曲、交流会であったできごと、共通の先輩や後輩など、話題の幅がかんたんに広がります。とくに相手が自分に近い代である場合はなおさらで、思い出話に花を咲かせやすくなるというものです。

そんなわけで、初対面でも話のきっかけを増やせるかもしれない仕組みのひとつとして、これを作りました。

……もともとこういう変換機構は欲しいなあとは思ってはいたのですが、実装に着手したいちばん直接的な理由は、最近老害おじさん友人がこんなことをやっていたからです。

作ったもの

これです。

多摩高期数変換機

多摩高期数変換機

これは、中学や高校でギター合奏を行う部活動や同好会に所属している、または所属していた方々を対象にした、

  • 自分の学校名と期数』か『自分の学校名と引退時の定期演奏会の回数』か『自分の誕生年度』を入力すると
  • 自分がほかの学校では何期生に相当するのか、第何回の定期演奏会の代かがわかる

という機能をもつ Web サービスです。

つかいかた

スマートフォン世代の方々にはすぐ馴染めるようなインタフェイスにしたつもりです。

  1. 最上段のタブで変換方法を選びます
    • [期から] は、[学校] と [] を元に計算します
    • [定演から] は、[学校] と [引退時の定演] を元に計算します
    • [誕生年度から] は、[誕生年度] を元に計算に変換します
  2. 変換方法に応じた入力欄が表示されるので、すべての欄で適切な値を選択します
  3. 入力が完了すると、画面下部に結果が表示されます
  4. お好みで [結果をツイートする] ボタンでツイートします
使い方
使い方

また、右上の [設定] ボタンからは、いくつか挙動を任意で変更できます。設定は任意のタイミングで変更可能で、変更は即座に結果に反映されます。

設定
設定

[定演の回を表示する] のチェックを入れると、計算結果に期数だけでなく、その期の代が引退したときの定期演奏会の回数も併せて表示されます。デフォルトは無効です。なお、定期演奏会の回数はツイートには含まれません。

[マイナス表示を許可する] のチェックを入れると、”1 期” のひとつ上を “0 期”、もうひとつ上を “-1 期”…… とさかのぼって表示するようになります。デフォルトは無効で、”1 期” より上の代はすべて “-” と表示します。”1 期” のひとつ上を “0 期” にするべきか “-1 期” にするべきかは議論の余地がありますが、実装がラクなのでひとまず “0 期” にしています。

考えたことというか工夫というか

世代の区別の根拠は学校によって “期” だったり “回” だったりといろいろなので、そういった差を吸収するため、複数の変換方法を用意しました。

また、処理を JavaScript で完結させているので、サーバとの余計な通信は発生しません。

拡張しやすくするため、学校の情報はすべてひとつの連想配列にまとめました。結果の表示枠もすべてその配列から動的に生成させているので、配列に一行足すだけで学校が追加できます。

あとは結果が “-” になる学校の分はツイートに含めないとか、入力時に学校に応じて期の選択肢が変わるとか、細かなところは手を入れています。

未実装、あるいは検討の余地

あくまで機械的に算出しているため、『定期演奏会が必ず一年に一度だけ開催される』という暗黙の前提を置いています。この前提に従っていない歴史がある場合は、計算結果が狂います。

おくさまに見せたら、『Facebook か Twitter と紐付けて結果をデータベースに貯めて、誰と同期だとか誰が後輩で先輩だとかわかるようにしたら?』と言われました。さすが IT やさんです。

まとめ

本業のおしごとでは IT 系と言いつつ Web アプリケーション系のコードを書く機会がまるでないので、久々に趣味のプログラミングって感じでおもしろかったです。

jQuery Mobile、便利ですね。まともに使ったのは恥ずかしながら初めてだったんですが、好きになりました。

こういうのって、コードを GitHub に載せるとイイんでしょうか。最近のお作法ってどうなんだろう。

ちなみにこの勢いに乗って、実は Python + jQuery でそれなりに機能する CGI を作ったんですが、それはまた別のお話。一般公開はしていないです。

Roland の SC-88 をもらったので、21 世紀の今あらためて MIDI を聴く

SC-88 を友人からもらった。SC シリーズだと SC-88Pro っていう通称 “ハチプロ” が有名だけど、これはその 2 年前に発売された、88 系列の最初のモデル。

ミュージ郎の時代だ、ミュージ郎の。

今でこそ mp3 なんていう便利な PCM 音源が台頭しているけれど、インタネット聡明期のピーガガガ時代に、インタネットの “向こう側” からダウンロードできるほんの数十キロバイトの MIDI ファイルに、いったいどれだけのヒトがどれだけのユメをみたことか!!

スピーカをオンにしたままネットサーフィン(死語)をしていたら MIDI ファイルが自動再生されるページを踏んでしまって爆音にびっくりするとか、巧妙に埋め込まれた MIDI ファイルをどうにかダウンロードしようとソースコードから JavaScript まで追いかけるとか、そういう時代。

当時の JavaScript は、右クリックを禁止したりステータスバーにメッセージを流したりページを開くと『ようこそくろいさん! 11 回目の訪問です! 夕焼けがきれいな時間帯ですね!』って出てきたりページ遷移にきらびやかなエフェクトをつけたりマウスカーソルにオリジナルキャラクタが常にくっついてきたりクリックすると花火が上がったり、そういう技術だった気もする。

それはいいとして、とりあえずこの SC-88 を鳴らしてみたいので、セットアップ。

接続とリセットと初期設定

本体の [COMPUTER] スイッチを [MIDI] にして、使っているオーディオインタフェイスの MIDI 出力を SC-88 の [MIDI IN A] に MIDI ケーブルでつなぐ。

ヘッドホンで聴くだけでいいならこれで終わり。必要があれば RCA な [OUTPUT] をオーディオインタフェイスの入力に戻してやる。

電源を入れて、謎な設定が残っているかもしれないので、ファクトリリセットする。

  1. [SELECT] を押しながら [INSTRUMENT] の [←] と [→] を同時押し
  2. 確認が出るので [ALL] で承認
  3. 処理が終わったら電源を入れなおして完了

デフォルトでは SC-55 互換音色マップが有効になった。そういうものらしい。

MIDI 出力デバイスが選べるプレイヤならここまででひとまず音は出る。Windows の標準出力を変えたい場合は、Windows 7 なら Putzlowitschs Vista-MIDIMapper(声に出して読めない)などを突っ込んでよしなに設定してやる。

肝心の音はどうなの

Windows に昔からもともと入っている C:\Windows\Media\town.mid で比較。

最初に Windows 7 の標準の、Microsoft GS Wavetable Synth。

次に今回もらった SC-88。55 互換はオフで、88 ネイティブな状態。Muted Gtr が弱いけど全体的な雰囲気はこれが好き。

SC-88 で 55 互換を有効にするとこうなる。

実を言うと VSC3(Virtual Sound Canvas 3)のライセンスは持っているので、これでも鳴らすとこうなった。88Pro 互換モードに設定。SC-88 の 55 互換モードとよく似ている。VSC は x64 環境だと動いてくれないので普段使いには厳しい。VSTi 版は持っていない。

VSC あるならハードウェアいらないのではっていうのも理解はできるのだけれど、でも物理的なモノってやっぱり好きなのよね。

オマケで、TiMidity 版。SGM-V2.01 っていうサウンドフォントを丸ごと突っ込んである。

TiMidity、高校時代にカスタマイズにハマっていた記憶が。

SFC の AO 入学生向けの入学前レポートで、当時のぼくがネタとして取り上げてもいた。今みたら、

このように、それぞれの楽器ごとにサウンドフォントを割り当てることで、MIDI 再生時に TiMidity++ が該当するサウンドフォントを参照し発音する。サウンドフォントごとにバラバラである音量などのパラメータも、ユーザ側で任意に調整できるようにされており、この例のように音量(amp)、パン(pan)など、他にもピッチやオフセット等の調整用パラメータが用意されている。

とか、

インターネット上にあるサウンドフォントは玉石混合であり、納得のいく音色を持つサウンドフォントを探すのは非常に難しいことであるが、この玉石混合から『玉』を探し出すのがこのカスタマイズの醍醐味でもある。また、インターネットの一部ではユーザがカスタマイズした設定ファイルが公開されていることもあり、これを使用すれば比較的簡単に高音質再生環境を実現することが可能である。

とか書いてあった。なつかしい。

使い道

正直何も考えていないのだけれど、実家に MIDI キーボードを置いてきているのでそれを持ってくればいろいろ遊べそうだなーとか考えている。

既成の MIDI ファイルを綺麗に鳴らすためのハードウェアってわけではないので、本来の使い道としてはその方が正しいのだけれど。

Kindle for Android でフォントに “明朝” が選べなくなったときの対処

Android 端末(Xperia A)が修理から戻ってきたからアプリケーションをせこせこと入れなおしていたら、Kindle for Android の本文のフォントが “ゴシック” しか選べなくなっていたことに気が付いた。

もともと本は紙で読むひとだったので、これまではずっと紙の本に合わせて明朝体で読んでいたのだけれど。

ためしにゴシック体のまま読んでみたら違和感がすごくて気持ち悪い。直したい。

いろいろ調べてもいろいろ試してもよくわからないので、やむなくサポートセンタに問い合わせ。

チャット窓口ですぐに解決策が出てくるかと思いきや、詳細調査になって、結局返事が来るまで数日かかったけれど、最終的には直った。

直し方

カスタマサービスのひとに教えてもらった方法は二つ。

一つめは、『吾輩は猫である(Kindle 版)』をダウンロードしてみよ、というもの。

  1. Kindle for Android を開いて、右上のショッピングカートボタンをタップ
  2. 検索するなどして『吾輩は猫である(Kindle 版)』のページに行き、購入する
  3. 端末にダウンロードする
  4. 『吾輩は猫である(Kindle 版)』を開く
  5. フォントの選択肢を確認する

え、これだけ? と思ってやってみたら案の定直らなかった。

結局、教えてもらった二つめの方法で直った。英中辞書をダウンロードする方法。

  1. 英語が含まれている Kindle 本を開く
  2. どれでもいいので英単語を長押し
  3. 表示されるボックスの右上の本のマークをタップ
  4. [英語 – 中文] をタップして [ダウンロード]
  5. ダウンロード終了後、[全文表示] をタップ
  6. 端末の [戻る] ボタンで全文表示を終了
  7. 再度、どれでもいいので英単語を長押し
  8. 表示されるボックスの右上の本のマークをタップ
  9. [英語 – 日本語] をタップ
  10. フォントの選択肢を確認する

手順 7 から 9 はたぶん設定をもとに戻すためだけのもので、実質は手順 5 あたりで始まる外字フォントのダウンロードが効いているっぽい。

解決。

切り分け

問い合わせる前にこっち側で調べたのは以下。

  • 別の Android 端末では “明朝” が選べる
    • アプリケーションのバージョンは同一(4.5.1.6)
    • Android のバージョンがちがう(Xperia A は 4.2.2、こっちは 4.1)のでその所為?
    • もしくは機種に依存?
  • 特定の本に限らずどの本でも同じ症状である
  • アプリケーションをアンインストールして再度インストールしなおしても変わらない

原因

不明。

上の方法で直したあと、再現性を確認しようとしていちどアンインストールしてから再度インストールしたら、最初から “明朝” が表示されてしまった。再現性なし、という残念な結果に。直る前は数回入れなおしてもだめなままだったのに……。

あれかな、バンドルされていた辞書を全部消した状態で端末が修理で初期化されたから必要なコンポーネントがダウンロードされないままだったのかな。修理前の端末では上でいう外字フォントっぽいものが辞書にくっついて記憶のないままにダウンロードされていたのかもしれない。謎。

たぶんこの状態で端末を初期化したらきっと再現するだろうなあと思いながらも、そこまで深追いする意味もないのでここまで。

部活の古い録音、レガシィな記録媒体のお話

高校のころ所属していた部活 の古い録音の山が、講師の先生のところに眠っているらしい。何年も前にそんな話を聴いてから、いつか全部きちんとデジタル化して後世に残していきたいなあとながいこと思っていたのだけれど、最近ようやくこれに着手した。

部活の公式 Web ページの中の “ギタサン史” によれば、ぼくらのルーツは 1972 年の秋に発足した同好会。今が 2013 年だから、もう 41 年を数えることになる。ぼくの生まれが 1987 年だから、それよりもずっと前。

40 年を越える歴史があるというのに、さて、ぼくらが “過去の演奏” を聴こうと思ったときに聴けるのは、せいぜいここ 10 年分くらい。最近の部員の中では比較的長くぎたさんに関わっていると思われるぼくでさえ、手元にきちんとした形で持っているのは 2001 年度以降のデータだけ。

世の中に録音が存在しないなら別だけど、物理的に残っているのであれば、それが聴けなくなる前に、聴ける状態にしておきたかった。

経年劣化は避けられない。はやくどうにかしないといけない、このまま何もしないでいたら、ぼくらは膨大な何かを失うことになると、そういうぼんやりとした危機感があった。

残っている記録媒体は、たいがいは何らかのテープ。危機感の根源は、テープの寿命ではなく、テープを再生する機械の寿命である。

テープは強い。コンパクトカセットだろうが DAT だろうが miniDV だろうが Hi8 だろうが VHS だろうが VHS-C だろうが beta だろうが、とにかくテープは強い。信じられないくらいに強い。耐久性でいえば CD-R や DVD-R や HDD よりも何倍も何十倍も強い。今までの数十年も平気で品質を保ってきたし、多分この先の数十年も同じように品質を保ってくれるはず。

だから別に今やらなくてもいいのではないかと思わないこともないのだけど、現実的にはたぶん、テープより先にそのテープを再生できる機械がなくなる。かつて一世を風靡したカセットデッキも、もはやまともな新品は TEAC のくらいしか手に入らない。DAT デッキなんてもうどこも作っていない。

今あるデッキだっていつかは壊れるし、ガタがくるとテープが入ったまま取り出せなくなるとか中で絡まるとか切れるとか、そんなことも起こりうる。そんな現実をよそに、メーカの保守パーツの保管期限もどんどん切れてくるから、オーバホールはおろか修理さえも年々難しくなってくる。

だからやっぱり、今、できるひとがやっておかなければいけない気がする。

第一に、テープの中のデータを保全すること。第二に、保全したデータをリマスタリングして再利用性を高めること。第三以降は、考えていない。

何年かかるかわからない。まずは音から。そのあとは映像。終わったら部活ではない別の団体の分。なんせ 500 本ちかくある。先は長い。いまは 50 本くらい終わったところ。

そんなわけで、最近はレガシィな記録媒体と仲良く暮らしている。ぼくが生まれる前に記録されたメタルテープ ((コンパクトカセットは磁性体の違いでノーマルとハイポジション(クロム)とフェリクロムとメタルがあって、メタルがいちばん音がよい。家電量販店で今でもたまにコンパクトカセットを見るけど、もう劣悪なノーマルしか置いていない)) が想像をはるかに上回る音のよさでびっくりしたりとか、180 分の DAT をデッキに入れるときにちょっと緊張したり ((180 分の DAT はほかの時間のよりもテープそのものが薄いので、デッキの中で絡まったり切れたりしやすい)) とか、そんな毎日。

しかしこういうことをやっていると、五十年後にこのデータは誰がどう管理しているんだろうなあとか、そもそも五十年後って部活どうなってるのかなあとか、高校っていうシステムがその時まで残っているのかなあとか、いろいろ考えてしまいますね。

はてさて 75 歳のぼくは何を思うのでしょう。そもそも生きているかもわからない。

裁断業者さんに本の裁断を頼んだら実質 1 冊 118 円だった話

電子書籍系エントリの続き。

自分で裁断するのはたいへんそうだったから “時間と手間はカネで買え” を合言葉に裁断代行業者さんに本を送ったら、たいへんよい品質で満足できた、というお話。

まとめると、

  • 今回は カットブックプロ さんに頼んだ
  • 99 冊裁断してもらったら、送料等含めて 1 冊あたり 118 円だった
  • きれいに裁断されていた。でも 20 冊に 1 冊くらいはページ同士がくっついてる子がまぎれてた
  • ある程度のまとまった冊数を裁断したいなら業者さんは大いに活用するべき

という感じでした。

業者さんを選ぶ

今回は カットブックプロ さんにした。”裁断代行” でぐぐったらいちばん上だったし、GW 中でも対応しているっぽいことが理由。値段でいえば 裁断ブックマート さんのほうが安そうだったんだけど、GW 中は休みっていうから、多少高くても対応が早いほうがいいなあということで。

注文する

料金表 をみると、”文庫・コミック” と “全種類” とで二種類ある様子。今回は雑誌も大型本もハードカバーもいろいろあったので全種類のほう。

今回は 99 冊 ((前のエントリでは 130 冊って書いたけど、数え間違えてた……)) の裁断をお願いする。100 冊パックを注文して箱を分ければよいのかとも思ったんだけど、FAQ をみたら “50 冊パックで 2 箱になった” に対して “冊数分に合ったパックに変更させてもらう” っていう感じで書いてあった ((“パック変更か送料安い方かに変更させてもらう” って記述もあってどっちか迷った(同じ Q が二個あるのはイケてないよね)んだけど、モメるのも嫌だからまあ分けておくか、くらいの判断)) ので、箱詰めのことを考えて、

  • 20 冊 + 30 冊 + 50 冊

で注文した。

トップページのお知らせを見たら “新生活応援キャンペーン” とやらでクーポンコードが書いてあったのでこれも使う。3,000 円以上で使えるってことだったので、20 冊 + 30 冊の注文と 50 冊の注文を分けて、それぞれでクーポンコードを使った。全部で 300 円引き。われながらせこい。

注文したら振り込む。インタネットで振り込めば家から出ないで済む。楽。

箱詰めして送る

適当な段ボール箱に詰める。気をつけたいことは以下。

  • 往復に耐えられそうな強度のにする(送った箱でそのまま返送されてくる)
  • ひと箱の三辺の合計が 160 cm 以下にする(集荷してもらえない)
  • ひと箱で 30 kg 以下にする(集荷してもらえない。できれば 25 kg にした方が安いらしい)
  • 注文したパック単位で箱詰めする(今回は先述の注文だったので 20 冊 + 30 冊 + 49 冊で詰めた)

詰めたら郵便局にゆうパックの集荷以来を出して、取りに来てもらって、往路分の送料を払う(復路分はパック料金に含まれる)。持ち込みのほうが安いらしいけど、重いから運ぶのたいへんだし、家から出たくないし、来てもらうに限る。

ちなみに本のソフトカバー、着けたままでもよい(業者さん側でちゃんと外して裁断したあと一緒に返送してくれる)らしいけどなんとなく外しておいた ((後の手間を減らすためにカバーだけでも先にスキャンしておく作戦)) 。附録の CD 類も抜いておいた。

戻ってくるまで

一日目の夕方に注文、振込。夜に集荷。

二日目の朝、入金を確認した旨の連絡。

三日目の朝、本が届いて裁断作業に入る旨の連絡。夕方には裁断が終了して発送した旨の連絡が入った。予想以上に早い。

四日目の昼、裁断済みの本が届いた。

全体的に早かった。

できあがり具合

箱を開けると、数十冊ごとにポリ袋でくるまれて、隙間には新聞紙が詰められた状態。

裁断面はすごくきれい。

一冊ごとに輪ゴムでまとめられている。輪ゴム自体のかかりは弱いから、うっかり山を崩すとたいへんなことになりそうな気はした。丁寧に扱えば問題なし。

垂直にきれいに裁断されているので、基本的にはそのままスキャナに放り込める。基本的にはって書いたのは 20 冊に 1 冊くらいはページ同士がくっついてる子がまぎれてたからで、だからスキャナに放り込む前に念のため分離の確認はした方がよさそう。

糊の付き方なんて本によって全然違うし、この値段で完璧な分離まで求めるのは酷な気がする。20 冊に 1 冊くらいなら許容範囲内だと思う。

かかったお金

こんな感じ。往路分の送料含めて、総額で 11,720 円。99 冊だから、1 冊あたり 118 円。

摘要 金額 備考
注文 1 4,435 円 20 冊 + 30 冊パック、割引適用後
注文 2 3,635 円 50 冊パック、割引適用後
送料 3,650 円 3 箱分、往路分。復路分はパック料金に含まれる
合計 11,720 円 1 冊あたり 118 円

おわりに

1 冊あたり約 120 円というのを高いとみるか安いとみるかはひとそれぞれだろうけど、個人的にはこの値段なら気軽にできてすごくよいと思った。

自分でカッタでやるというのは論外だし、裁断機(40,000 円くらい)を買うなら単純計算で 340 冊くらい切らないと元が取れないし。

340 冊ってすぐじゃんって思うけど、裁断厚が 18 mm までっていうから大型本はつらい(今回送ったのはほとんど 20 mm 以上だと思う)し、そうでなくたって 340 冊も自分が手を動かしてやるっていうのは根本的にすごく手間だし。

注文や箱詰めの作業分 “だけ” の手間と時間でこの品質の裁断結果が買えるなら、充分アリ。

文庫とコミックだけならもっと安いし、もっと大きな単位のパックで注文できればさらに安くできるし。1 冊だけ裁断したい、みたいなときは小回り利かないけど、ある程度冊数があるなら業者さんに頼んでしまうのがぼくの判断基準ではいちばんいいと思った。

関連エントリ

進撃の書体、オープニングを真似るためのフォントの話

はじめに

アニメ『進撃の巨人』のオープニングのパロディが動画サイトでいろいろと出回っている。

で、そういう動画を観ると、途中の『進む意思を嗤う豚よ』以降のところ、作者さんごとに思い思いの書体で再現されておられる。じゃあせっかくなんだし、なるべくオリジナルに忠実にしたらどうなるんだろう、ということで調べた。

まとめると、

  • 使われている書体はダイナフォントの『DF 華康明朝体 W5』と『DF 極太明朝体』の二種類
  • 前半は装飾なし、後半はシャドウやら光彩やらの装飾がある

という感じ。

続きを読む