volumioをAmazon Alexaで音声コントロールする

今回の記事は、以下の環境で構築した際の備忘。
ハードウェア(ラズパイ):Raspberry Pi 2 Model B
ハードウェア(Amazon Alexa):Amazon Echo Dot(第一世代)
ソフトウェア(ラズパイ):volumio 2:volumio-2.587-2019-06-11-pi.img.zip
環境がアップデートされるとインストールが上手くいかなかったり、挙動が安定しなかったりするので注意(現時点でも安定しているかは微妙なのだが)。

今、自室で音楽をスピーカー環境で聴くのに、NASに入っている音楽をvolumio on Raspberry Piで再生し、Toppingの安物デジタルアンプからDALI ZENSOR PICOで流している。
どちらかと言うとBGM的に聞いているので夜寝ている間など小音量で流しっぱなしにしていたりする。
で、そのまま放置して翌朝寝ぼけながら支度をして出かける…と言う感じなのだが、音楽を切って出かけるのがめんどくさい。一番確実なのはアンプの電源を切ってしまうことなのだが、どっちかって言うとアンプの電源は入れっぱなしで放置している感じなので、それは避けたい。のでvolumioに停止コマンドを送ることになるのだが、PCをいったん起動してWeb UIから止めるのもめんどくさいし、Androidvolumioアプリを起動して停止コマンド送るのもめんどくさい(書いていて思うが、なんてものぐさなんだと思う)。
と言うことで、調べてみたところ、node-redと言う機能を活用してAmazon Alexavolumioをコントロールできるらしいと言うことを知った。ので試していたのだが、エラーが多くてなかなかうまく動いてくれない。最初は今年の4月頃に試行錯誤していた時に環境構築に成功したり、でも何かのはずみでvolumioを再起動すると環境が壊れてしまったり(サービス起動を忘れているわけでなく、node-redないしmpdのサービスが起動しなくなってしまう)…的なことを繰り返し、いったん環境構築を諦めた。
で、最近になってまた思い出し、試行錯誤したところなんとか動く体裁が整ったので、手順を備忘でメモ。

参考にしたサイト:
独身貴族のスマートホーム -Alexaからローカルの音楽を再生する- – Qiita
Alexaスマートホームスキル『Node-RED』を使ってみた | CHASUKE.com
Node-RED Alexa Home Skill Bridgeを設定する[On Onion Omega2+] – Qiita

手順は以下の通り。なお、緑の字は補足(失敗説明なども含む)なので読み飛ばしてもらっても構わない。

Node-RED Alexa Home Skill Bridge に登録作業をする

まずはRaspberry PiからもAmazon Alexaからも離れ、node-redを使うための前作業をする。
https://alexa-node-red.bm.hardill.me.uk/
に行き、アカウントを作成する。
Node-RED Alexa Home Skill Bridge
のデバイスのページで、デバイスを適当に登録する。

こんな感じで適当にNameDescriptionを登録し、ActionsON/OFF+%/-%をチェックする。もしかしたらApplication TypeLIGHTをチェックしておいた方がいいかもしれない。

なお、ここで指示したデバイス名でvolumioをコントロールすることになる。つまり、上記の例だと『アレクサ、カセットつけて』『アレクサ、カセット消して』など。この名前が若干やっかいで、音楽を管理するそれっぽい名前で、なおかつAlexaが認識しやすい簡単な名前がない。
・参考サイトだと「メディアサーバー」と名付けている:長くて言いにくい
・ヴォリューミオ(ボリューミオ):言いにくい
・ラズベリーパイ:長い
・ラズパイ:まあまあ妥当な選択肢か。3、4文字ぐらいが言いやすい。
・シーディー:言いにくかった
・オンガク:volumioではなく、Amazon AlexaのAmazon music?が勝手に再生になる。なお、うちの環境では何故か毎回真心ブラザーズのどか~んがかかる。
・いっそのこと好きなアニメキャラにする:「澤村・スペンサー・英梨々」にして、「エリリつけて」と声を掛けたら、「エーブイと言うデバイスは登録されていません」と答えやがった。アレクサは誤認識が多い。
とまあ、結構散々な目に合った(自業自得含む)。なお、最終的には『アレクサ、音楽つけて』『アレクサ、音楽消して』と言う定型アクションを登録する強引な技もある。また、デバイス名は後々で好きに変えたり追加したりも楽なのでいろいろ試すとよい。

Alexaスキル「Node-RED」を有効化

Amazon Alexaアプリを起動してセッティングしていくのもいいが、面倒なのでブラウザから制御できる部分はブラウザから。
https://alexa.amazon.co.jp/
スキルでNode-REDを検索し、有効化する。
上記のNode-RED Alexa Home Skill Bridgeに登録したアカウントでログインすると、スマートホームのデバイスでさっき登録したデバイスが検出できる。

なお、Node-RED Alexa Home Skill Bridgeでテスト的にいっぱいデバイス名登録したり更新したりすると、古いデバイスが削除されずいっぱい残ってしまうので、Amazon Alexa上で適宜削除する。

Raspberry Piにvolumioをインストール

Download |Get Started | Volumio
からvolumioのインストールイメージをダウンロードする。
イメージをWindowsPCmicroSDXCに焼く。僕の場合は
Win32 Disk Imager download | SourceForge.net
を使って焼いている。焼いたmicroSDXCRaspberry Piに装着し、電源を入れればvolumioの最初の起動画面が立ち上がる。
初期設定を一通り済ませて、以下の追加設定まで済ませておく。
・DHCPを切って固定IPに変更する。volumioのmpdとnode-redがかち合うせいか、エラーが出て接続できない場合があるので。固定IPに変更したらすぐに一回再起動する。結構時間がかかる場合もある。
http://volumio.local/dev/ でSSHアクセスをenableにする。sshでアクセスする。
> sudo dpkg-reconfigure tzdata でタイムゾーンをAsia/Tokyoにしておく。
ここまでやってnode-redをインストールする前準備が完了する。

volumioにnode-redをインストール

ここが一番の問題。
Node-RED日本ユーザ会 : インストール
Node-RED日本ユーザ会 : Raspberry Piで実行する
などを参考に、

bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

をやると失敗する。インストール時にエラーメッセージが出る。そのまま強引に進めると再起動したときにmpdないしnode-red(またはその両方)が起動せず、無反応になる。

失敗する原因を調べていくとどうやら2つあって、1つの原因はbcryptのインストールに失敗すること。と言うのも、bcryptがvolumioで使えるバイナリの配布をやめてしまったからっぽい。上記スクリプトが作られた当時はバイナリがあったっぽい…。でいろいろやってみたが、volumio用のmakeが見つからなくて、僕の場合はソースからのコンパイルのやり方が分からなかった(単に素人ともいう)。
ログを見ると
node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.5/bcrypt_lib-v3.0.5-node-v64-linux-arm-glibc.tar.gz
みたいなメッセージが出る。
もう1つの原因は、volumioで使うnode.jsとnode-redで使うnode.jsのバージョンが違うからっぽい。例えばvolumio 2.587では
> node -v
でバージョンを確認するとNode.js v8.11.1なのだが、上記コマンドでnode-redをインストールするとNode.js LTS 8.xあたりになってしまい、再起動後にnode-redはサービス起動するがmpdがサービス起動しなくなったりするのだ。この辺の挙動はvolumioのバージョンが変わるとまた違ってくるだろうが、いずれにせよ上記コマンドはraspbianなら動くのかもしれないけど現状volumioでは動かなさそうな感じだ。

と言うことで、スクリプトを使わずにインストールする。

> sudo npm install -g npm
> sudo npm install -g –unsafe-perm node-red

のコマンドを実行でnode-redをインストールする。これでも結局bcrypt(404)だよ!的に怒られるが強引に進める。

次にもし可能なら

> sudo systemctl enable nodered.service
> sudo npm install -g node-red-contrib-alexa-home-skill

をしておく。1つ目のコマンドはnode-redのサービスをvolumio起動時に自動実行、2つめのコマンドはnode-red起動後にどっちみち必要なスキルをあらかじめコマンドでインストール。
が現状僕の環境ではどっちもうまくいかなかった(bcryptがインストールエラーを吐いているせいなのか?)ので、1つめは以下の強引な手法で、2つめはnode-red起動後に作業する。

まず、
> sudo nano /opt/node-red.sh

#!/bin/sh
sudo node-red

で起動するスクリプトを作成。
sudo chmod a+x /opt/node-red.sh
で権限も与えておく。
次に、
sudo nano /etc/systemd/system/node-red.service

[Unit]
Description = simple service
After=network.target

[Service]
Type=simple
ExecStart= /opt/node-red.sh

[Install]
WantedBy = multi-user.target

でサービスを作って
sudo systemctl enable node-red.service
で強引にサービスを登録する。まあよく分かってる人から見るとすごくダサい解決法なのだろうけど…
これでrebootすると
http://volumio.local/
http://volumio.local:1880/
volumiompdvolumionode-redにアクセスできるようになる。

node-redでスキルをデプロイ

まずは右上のバーガーメニューから
→パレットの管理→ノードを追加
node-red-contrib-alexa-home-skillを検索して追加する。
これで左端に並んでいるノードにalexaが追加される。

次に、こんな感じでノードを並べる。

左上の灰色ノード:alexa:alexa home
左二番目の黄土色ノード:機能:switch
左三番目のサーモン色ノード(4つ):全部 その他:exec
一番右のウグイス色ノード:出力:debug

それぞれのノードの内容はこんな感じ。

アカウントでNode-RED Alexa Home Skill Bridgeのアカウントにログインする。すると下のデバイスに登録したデバイスが表示される(失敗することがあるので、ログインしなおしたり更新したりするとよい)。


スイッチは上からis true→1に、等々の順番を間違えないように。switchから出ていく線が上から順番に1、2、3、4なので間違えないように。
is true →1
is false →2
== 25 →3
== -25 →4


execのコマンドはそれぞれ以下の通り。

1:再生:bash -c “mpc play”
2:停止:bash -c “mpc pause”
3:音量+:bash -c “mpc volume +5”
4:音量-:bash -c “mpc volume -5”

本当はmpc stopで停止するはずなのだが、うちの今の環境では何故かmpc next相当の動作をする…。
この辺のコマンドが正しいかどうかは、volumiosshで接続して直接コマンドを打って確認した方が手っ取り早いです。
mpc(1) – Linux man page
一応コマンドはここに出ているけど、うちの場合、挙動としては
・volumio再起動時:mpcコマンドを打つとstatus:stopとなっている。この状態ではmpc playを入れても再生開始しない。
・Web UIで再生ボタンを押すと、当然だがstatus:playとなる(mpc 無印コマンドで確認)。この状態でmpc stopを入れると何故か次の曲を再生する。
status:playまたはstatus:pausempc playを打つと再生、同様にstatus:playまたはstatus:pausempc pauseを打つと一時停止になるのでこの動きなら問題ないものとする。

これで一通りnode-redの設定は終わり。デプロイする

alexaとvolumioの連携を確認する

すべて設定が終わったら、アレクサに命令して動作確認する。
『アレクサ、カセットつけて』
『アレクサ、カセットけして』
『アレクサ、カセットあかるくして』
『アレクサ、カセットくらくして』
など。メッセージがヘンテコなのは、Alexa上では電灯のデバイスとして認識されている都合上、仕方ない。

もう少しまともにする方法としては、Alexaアプリを開きマイ定型アクションを設定していくしかない(ブラウザ上のhttps://alexa.amazon.co.jp/からは設定できない)
アプリ上で「マイ定型アクションの追加」で
実効条件を追加:「アレクサ、音楽つけて」
アクションを追加:スマートホーム→デバイスをコントロール→カセット→電源:オン
などと設定してあげる。

自宅PCをWindows10 1803→1903に上げた

自宅のデスクトップPCを大型アップデートでWindows10 1803から1903(19H1)に上げたので備忘メモ。
もともと、近いうちにデスクトップPC自体をリプレースする計画も立てているのだけど、それと並行して大型アップデートもやってみた。もう今のPCの環境の廃棄が近いので、普段はあまりやりたくないような少し環境の汚れる作業のテスト環境も兼ね始めた感じ。

大型アップデートって昔ならサービスパックって言うのだろうなあと思うけど、もう少し更新頻度なんとかならないのかなと思う。半年に一回なんてやる気がしない、できれば1年半(18ヶ月)に一回ぐらいのペースが一番手頃だと思う。
僕は去年の9月頃に1803をインストールしたので使用期間9ヶ月ぐらい。もう半年ぐらいはせめて使いたかった感じだ。
とはいえ、1803のサポート期限は19H2にはギリギリ間に合わなさそうなので、仕方ないところではある。
また、今回のアップデート、本当はGWの10連休でチマチマとやりたかったところだが、1809で失敗した関係もあって1903のリリースがだいぶあと伸ばしになってしまい、GWには間に合わなかった。

閑話休題。

アップデートにあたっては、既存環境のバックアップを取る。僕の場合は、EaseUS Todo BackUp(https://jp.easeus.com/backup-software/free.html)でCドライブのイメージをNASにバックアップしたあと、RealSyncというソフトでCドライブのファイルを一つ一つバックアップしている。
EaseUS ToDo BackUpはどちらかと言うと最終手段のバックアップ的なイメージで、僕の場合はWindowsにEaseUS ToDoをインストールするのではなく、バックアップ・リカバリ用DVDメディアを作っておいてバックアップするという手順でバックアップを残してある。なお、リカバリ用メディアはPCの構成が変わったら(特にCPU/MB/VGAを変えたら)作成しなおしたほうが良さそうなので、DVD-RWメディアの方が便利な感じだ。
EaseUS Todo BackUpでバックアップをとるとファイル単位ではなく独自のファイルイメージになってしまうので後で問題があったときにバックアップからファイルを取り出すのは若干めんどくさい。そこでRealSyncで個々のファイルをNASにバックアップも取るのだが、こちらはとても時間がかかる。EaseUS Todo BackUpは約120GBのCドライブのイメージをバックアップするのに作業時間小一時間で済むが、RealSyncは24時間でも終わらなかった。C:¥Windowsディレクトリとか実際にはバックアップしてもしょうがないので、バックアップすべきフォルダをもう少し絞って作業を簡略化したい感じだ。

上記バックアップでほとんどのデータは保存できるので、改めて個別にバックアップする必要はないが、
C:¥Users¥username 以下
IMEのユーザー辞書
辺りは改めてバックアップしておいた方が無難だろう。以前はブラウザのお気に入りだのメールデータだののバックアップも必須だったが、今はその辺はクラウド側にあるのが普通だろう。

その後、大型アップデートを適用する。WIndows Updateから適用するのでもいいが、Windows Media Creation Toolからダウンロードして適用することにした。Windows Media Creation Toolからの場合はUSBメディアを作る場合とPCに直接適用する場合があるが今回は直接適用で行った。
この作業が意外に時間がかかり、イメージのダウンロードに30分、イメージの適用?に30分、そのごWindowsの更新に15分ぐらいかかった気がする。新規インストールのほうがよほど時間がかからない。

適用自体は特に問題なく終了した。
適用後エラーが出たものとしては
Explorer Constructionはライセンスが初期化されて改めてライセンス認証を求められた。作者のHPで登録作業をするだけなのでそれほど大変ではない。
UltraMon3.4.0がChromeでエラーを吐いて止まってしまった。配布サイトを見たら3.4.1が配布になっていたので適用したらエラーはなくなった。
・設定アプリの内容は殆どリセットされたものはなかった。せっかくなので一通り確認したあと、今回はダークモードを適用してみた。今の所いまひとつしっくりこないが、慣れるかどうか半月ほどは試す予定。
・高速スタートアップの設定が大型アップデートで初期化されるという話があったが、特にリセットされず高速スタートアップ使わない設定が維持された。すでにhybernate.sysを切っているので、改めて高速スタートアップ適用まで行かないのかもしれない。
・タスクバーなどのフォント設定は初期化された。ソフトでMeiryo適用し直すだけなのですぐにもとに戻せる。
・その他、ボタンっぽいものの影の付き方とか、エクスプローラーのアイコンとか、右クリックメニューの表示がごくごく若干だが見た目は変わった。

新PC設置計画(1)スペック等の構想

家で、未だにSandyおじさんなPCを使っているのでそろそろ新しいPCに買い換えようと考え始めて1年ぐらい。当面の対案でWindows10だけ現行PCに導入していたのだけど、そろそろPC購入の予算にも目処が立ちそうなので、具体的な計画を立て始めた。その計画を備忘的に。

うちのPC設置に関してはコンセプトは以下の通り。
・デスクトップPC。収納スペースの関係から、高さ39cm横幅25cm奥行き50cmの制限付き。特に高さ制限が影響厳しく、ATX対応PCケースを設置するのはかなり困難。昨今は詰め込んでATXのM/Bが入る高さ40cm未満のケースも有るようだが、メンテナンス性が著しく悪化しそうなので検討していない。
・メモリは32GBで検討。今のPCでの経験からすると16GBで足りる気もするが、なんとなくスペックダウンするのは悲しいので。以前はこの制約から、8GBx4スロットがほぼ確定で、mini-ITXは検討範囲外になり、上記収納スペースの命題からATXも検討範囲外になり、となってmicro-ATXしか検討先がなかったのだが、今は16GBx2が検討できるのでmini-ITXも視野に入ってはいる(が結局mini-ITXでは魅力的なマザーボードがなかった)。
静音重視。今のPCはフロントファン・リアファン・CPUファン・PCI-eファン(ビデオカード自体はファンレスで別途12cmファンでゆるゆる風を当てている)がついていて、どれも夏場でも1000rpm未満で回している感じなので、同じような構成で静音しようと思う。のでファンは高級静音ファンを最初から検討していて、ほぼNoctuaしか考えてない。
長寿命重視。結局の所、今のPCも8年ぐらい使い続けた(中身は若干更新したけど)ので、同じ程度は使い続ける方針。今やPCに新たな性能を求める機会も減ってきたし、今回は内部パーツの交換すらもほとんど必要なく8年使うかもしれない。のでパーツ類はなるべく高耐久性のものを。
・静音重視、長寿命重視なのでOCする気はサラサラなし
・ここのところBTOで済ませていたけど、フルに自作しようかなあという気持ち(だった)。詳しくは後述、次回以降の記事になるけど検討スペックにほぼピッタリのBTOがあったことから、そっちの検討優先になってしまう。

ということで検討したところ、今の所概ね以下の通りのスペックを検討中になった。
CPU:検討中(後述)
メモリ:16GBx2…とか言いつつ16GBx4になってたりして。あんまり高周波数のものを求めたりはしない。
M/B:ASUS TUF Z390M-PRO GAMING
ビデオカード:Palit Microsystems NE5105T018G1-1070H(手持ちの既存品)
システムSSD:PLEXTOR M9Pe(G) PX-1TM9PeG
データSSD:SANDISK SSD PLUS SDSSDA-960G
電源:SilverStone NJ520 (SST-NJ520)…と思っていたが多分変更になりそう(後述)
PCケース:Antec P5
CPUファン:Noctua NH-U12S
ケースファン:Noctua NF-A12x25 PWM 複数個
CPUグリス:適当に

ところで、現時点ではAMDで最新CPUとPCI-e Gen4対応品が出てきて話題になっているので、最新で高速なものを選びたいならそちらの方がいい。僕はそこまで高速命じゃないので長く使うことも考えてINTELでいくけど。

・CPUについて:

概ねの選択基準は
・INTEL、第9世代Core-i5またはCore-i7。できればR0ステッピングの方がいい?
・ハイパースレッディングはあまり好きじゃないので、6C6T8C8Tのもの。周波数はあまり追求しない。
TDP65Wで十分な性能が出せそうなのでTDP95Wは優先度低めに検討している。
という感じで、候補は
Core i5-9400系(今の所9400Fしか売っていない)
Core i5-9500系(発表になったばかりで今の所売ってない)
Core i5-9600系(無印がいいのだけど発表になったばかりで売ってない、i5-9600Kは優先度低い)
Core i7-9700系(無印がいいのだけど発表になったばかりで売ってない、i7-9700Kは優先度低い)
9600K、9700KはTDP95Wになるので、別に常用時に問題はないだろうけどそこまでいらないかなあという感じ。だがこれ以外だと9400Fしか選択肢がない(現行だと型番だけ存在してるけどまだ発売に至っていないもの多数)のがなあ。
できればi5-9600無印、i7-9700無印が入手できればと思うのだけど…
あとはどれを選ぶかは予算総枠との相談かな。

・マザーボードについて:

冒険する気がないので無難にASUSで。micro-ATXmini-ITXの製品をいくつか検討した。と言ってもオーバークロックをするわけでもなく、オンボードに無線LANが必要なわけでもなく、という感じだとどれを選んでも変わらないよなって状態。
結局、高耐久を謳うTUFシリーズが一番魅力を感じた。とは言ってもTUFシリーズってOCなども含めてタフに使う環境で高耐久っていうコンセプトっぽい感じで、僕の用途のようなあまり負荷をかけないけどほとんど24時間365日使いっぱなし、的な場合での高耐久ではないのだろうけど。
mini-ITXにタフなモデルがあればそれでもいいかと思ったけど、特に見当たらなかった。micro-ATXだと、無駄にメモリスロットが空いているととりあえず差してしまおうと言う誘惑に駆られるのが困るのだが。
と言うことで、ASUS TUF Z390M-PRO GAMINGに確定。

・ビデオカードについて:

手持ちのPalit Microsystems NE5105T018G1-1070Hで。GeForce GTX 1050Tiでは貴重なファンレスタイプ。別にゲームをするわけでもないので、もうiGPUでいいかな、等とも考えはしたが、それでもスペック的にはiGPUより数倍の数字を出すみたいだし、手元に余らせておいても仕方ないので、使う予定。
これが手元にあるので、CPUはF型番(iGPUが無効になっている)を購入しても問題ない。

・SSDについて:

特にめぼしいあてはないのだけど、システムSSDはNVMe(M.2接続)、1TBぐらいの容量で、と考えているので
PLEXTOR M9Pe(G) PX-1TM9PeG辺りが無難かなあと。できればTLC NAND(QLCは避ける)、冷却性能が安定している製品が良いと思う。
SSDやメモリは今下落幅が大きいので買うタイミングや製品、悩みどころではある。
今まで使っている2.5インチSATA SSDが余ってしまうのでSANDISK SSD PLUS SDSSDA-960Gはデータ置き場ということで。実際には残りの大量のデータはNAS送りになっているが、そのうち10TB SATA SSDとかが現実的な価格で購入できるようになったら、再びNAS廃止でPCに全データ入れっぱなしになるのだろう。

・PC電源について:

耐久性重視なので、ここはケチる気はサラサラなし。ファンレス、高耐久、フルプラグイン、SeaSonic OEMということでSilverStone NJ520 (SST-NJ520)が有力候補。めっちゃ高いけど。
…と思っていたけど、後述するように完全自作ではなくBTOで済ませられる、と言うプランが有ることがわかったのでここは思いがけない悩みどころになってしまった。BTOで僕の検討プランほぼ完遂できるのだが、唯一電源だけ選択肢を再検討しないといけなかったからだ。

・PCケースについて:

マザーボードをmicro-ATXにした時点でそれほど選択肢はなし。高耐久高寿命を考えると、空気の流れの悪くなる変則レイアウトなコンパクトすぎるケースはあまり検討する気になれない。
が、高さ40cmの制約がかかっているのでmicro-ATXケースの中から選び放題、というほどでもない気がする。
その他のポイントとしては、
光らせる気はない(むしろ寝室兼用の自室に置くので目立たないほうがいい)。したがってクリアパネルのものはなるべく選びたくない(もしそれしか選択肢がなかったら制振ゴムなどで覆ってしまう予定)。
・この辺の製品はリアファンが9cmのものが意外に多かった。前後ともに12cmファンがのるケースが良い。上面/下面/側面パネルにはファンはいらないかなあ。
などと言った観点で検討した結果、超無難だがAntec P5でいいかということになった。フロントパネル二段開きとか、その中に5.25インチトレイがあるとかは全く不要な要素なのだけど。3.5インチ2.5インチ兼用ベイが内部にあり、中途半端な位置なので若干邪魔そうに思えたが、取り外せるようなので基本的に取り外して使うことになるだろう。ストレージはM.2の他は2.5インチが一つ入れば十分なので、マザーボード背面スペースや5.25インチベイの下にある隠し2.5インチベイで十二分。高さや奥行きが今ひとつ大きすぎる気がするが、脚というかインシュレータというかを無理やり外してしまえば設置できる(外さなくてもギリギリ設置できそう)のでこれで行こうかなあと。

・CPUファン、ケースファンについて:
静音、高耐久ということをふまえて遠慮なくNoctuaの高級品で。今のケースにもNoctuaの前の世代のがついているけど、印象はすこぶる良い。Antec P5の場合、ケースフロントファンが12cmx2がいいのか14cmx1がいいのかはよくわからない。

という感じでほぼほぼ内定したのだけど、「さて、この組み合わせで相性問題とかないか、念の為似たような構成で組んでる例がネットに載っていないかな?」と検索したところ、SycomのBTOがほぼほぼこの構成で販売していることがわかり、びっくり。なんとNoctuaファンまで搭載で、自分の構想と違うところがPC電源しかない、と言う状態だった。
しかも値段的には自分でパーツを細々買うよりもBTOで買ったほうがトータルの金額が安くなるのだ(BTOだとメモリやシステムドライブ、ビデオカードの設置でやや割高の値段をとって利益を確保していると思われるが、僕の場合そのへんまるっと不要な構成で頼んでしまえる分とても安くつく)。
自分でCPUグリス塗り塗りして楽しみたいなあと思う反面、そのへんの面倒なのをせずに、しかも安くつくし、余計なパーツの箱(なんだかんだで保管しておいてもこの辺のパーツのものは再売却の機会が少ないので、意味がない気がする)も向こうで処分だろうし、すごく魅力的に思えてきた。

という感じで、BTOにするなら、という事で電源パーツをどれにするか、と言う観点を中心に次回の記事に書きたい。

備忘メモ:モバイル用テーマを再構築した

うちのサイトは、いい加減に作ってあるので仕様についてちょいちょいgoogleさんに怒られる。
で、ここ最近
サイト https://www.chatarou.net/ で「モバイル ユーザビリティ」の問題が新たに 検出されました
と言うマイナートラブルが出ていたのをちょっと改善させたので備忘メモ。

この問題、簡単に言うとスマホ用サイトに対応できてなくて、PC用サイトの表示だとスマホで見づらいよ、と言う苦情なのだが、一応うちのサイトはモバイルサイト用にカスタムCSS適用できるプラグインを適用していたはず…なので大丈夫なはずなのになんでだろうなあ…とおぼろげに思っていたが、原因が判明した。
少し前にwordpressのバージョンがメジャーアップデートして5.0になった際に、モバイルサイト用CSSを適用してくれているWPtouchプラグインが非対応になっていたのだ。放っておけばそのうちWPtouchwordpress 5.x対応になってくれるかもしれないが、どうやら2か月近く対応されないまま放置されているっぽいので、この機会にWPtouchプラグインの利用をやめて、将来的にレスポンシブWebデザインとやらに地道に対応していくことにした。
正式なレスポンシブWebデザインと言うのは、html(と言うかテーマファイルのひな型php)は同じものを出力しつつ、css内にスマホ用・タブレット用・PC用と表示を変える記述をしておき、実際のアクセス時に表示を変えるということらしいが、とりあえずめんどくさいのでスマホ用(兼タブレット用)テーマファイルを書いておき、Multi Device Switcherプラグインでテーマファイル適用を変えるという実に玉虫色な解決することにした(これじゃあMulti Device Switcherプラグインが使えなくなったらまた同じトラブルにはまるんじゃないかと言うツッコミがありそうではあるのだけど)。
まあMulti Device Switcherプラグインはwordpress 5.xでも動くようなので当座は問題ないし。

モバイル用テーマ作成及び適用の大まかな手順としては
・まずプラグインの中でモバイルサイトを自動出力するようなもの(上記WPtouchやjetpackなど)の機能を停止させる。
・さらにプラグインの中でキャッシュ作成するようなものも停止させる。僕はこの機会にキャッシュ系プラグインは削除してしまった。あまり有効になった気がしないし。
・モバイル用のテーマをどこかから用意する。僕の場合はPC用ページで使っている自作のChatarou HTML5StyleのテーマをffftpでコピーしてChatarou HTML5StyleMobileとし、そのテーマファイル内のphpやcssを書き換えていった。僕のサイトは手抜きで非常に単純なthemeファイルなのでまあ手書きでシコシコ書き換えでなんとか対応できている(きちんときれいなファイルになっているかはわからないが)。
・モバイル用テーマの作成にあたっては、PC用の装飾をカットして、画面めいっぱい表示できるかつ文字が細かくなり過ぎないように、あたりが目安か。とりあえずやったこととしては、PC用サイトの装飾的なヘッダーやパンくずリストは廃止、文字色のベースをPC用はダークにしているがスマホ用はライトに変更、PC用ではトップサイトで概要表示せず先着記事4件をベタ表示しているがスマホ用では概要表示にする、そして後述の通りスマホ用表示タグを若干書き込んだ。

・スマホ用対応としては、まずhtmlのヘッダ記載部分(うちだとheader.php)に

<meta name=”viewport” content=”width=device-width,initial-scale=1″>

を書き足す。viewportとは何ぞやって言うのはこの単語で検索するのが早いが、まあ要するにスマホサイトなどでは小さい画面で対応できるように実際の画面画素数とは別に仮想的な画面サイズを用意しているので、そっちに依存するように変更してやるということ。これにより、文章本文の文字が細かくなりすぎて見づらくなるのを防ぐ
なお、viewportが絡んでくるのでスマホ用のレイアウトを厳密にやるのは非常に困難らしいので、スマホ用サイトは割とあきらめと言うか、凝ったことをせずに文字を右に配置か、左に配置か、ぐらいにとどめておくのが良いと思う。
さらに、style.css

@media only screen and (max-device-width : 480px) {
img {
width:100%;
height: auto;
}
}

を書き足し、画像表示が無難に収まるようにしておく。

・上記のモバイル用テーマを書き上げたら一旦適用し、PCやスマホなどで簡単に確認して問題ないかチェックしておく。問題なければ、テーマファイルをPC用のものに戻した後、Multi Device Switcherプラグインを起動し、プラグインの設定(外観の設定のマルチデバイスに組み込まれている)からスマホ用等のテーマを随時適用して終わり。ガラケー用とかゲーム端末用とかまでテーマファイル適用設定があるが、まあうちみたいな適当サイトでは全部スマホ用テーマで充分だろう。

といった感じでとりあえず問題は回避した。
うちのサイトではこれ以外でも
サイト https://www.chatarou.net/ で「対象範囲」の問題が新たに 検出されました」(なぜかFirefoxでは表示できるURLがChromeでは500エラーだったりする)
とかの問題も出てたりするが原因も分からないので無視。
そう言えばFlickr badgeプラグインもChromeサイトでは動かなかったりするけど無視してるなあ…。いつか対策しなきゃいけないだろうか。

備忘:自宅PCをWindows10pro64bitにアップデートした

自宅のPCをWindows10にアップデートしたので作業等を備忘メモ。
もともと、今年か来年あたりに自宅PCをWindows7からWindows10に上げようという計画はしていたのだけど、どうせ上げるのなら新しくパソコン組もうかなあなんて思ったりしていたので延び延びになっていた。
が、職場のPCがついに先行してWindows10に上げられてしまったので、せっかくの機会だし自宅PCも上げてしまえ、とハードウェア更新もせずやってしまった。のでサンディおじさんのままWindows10に格上げの挑戦になる。

Windows10にアップデートする動機等

Windows10に上げる動機としては、上記を含め
・職場のPCがWindows10に上がったので、Windows10の設定関連諸々をいじったり確認したりできる環境として自宅のPCをWindows10にしたい。
・僕のPCのWindows7は今年はじめぐらいからどうにも調子が悪く(主な原因としてはSpectre/Meltdown対策の緊急アップデート関連にあるのだろうと思う)WindowsUpdateに失敗して古いアップデートがいつまでも入らない状態が続いていた。かと言って、Windows7の再インストールはWindowsUpdateが正常に動くまで特別な手順が必要だったりでめんどくさくなっているので、改めてWindows7を入れようという気にはならなかった。
参考:終わらないWindows Updateの問題を解決する(2016年9月版)
・現時点で動作が怪しいソフトがちらほら。特に、TVeletは動作が超不安定でだましだまし使っていた。
・もちろん、Windows7はあと2年弱でいよいよ終了になるというのもある。
といった感じ。

一方で、Windows10に上げる際の懸念点としては
SandyBridgeというかP67チップセット)はWindows10対応のドライバがないと言う噂を聞いた(ので出来れば新しいPCを組みたかった)。
・また、我が家のPCはマザーボードとビデオカードの相性問題が出ていて動作不安定なので、この動作不安定縛りを回避しつつWindows10が入れられるかは不安。
無償アップデート期間中に一旦Windows10お試しなんてことはやらなかったので、Windows10を有料で買うのはめんどくさかった。出来ればWindows10proの方が良いし。
・Windows10になると動かなくなるだろう常用ソフトがありそうな点が懸念。特にペースター(クリップボード拡張ソフト)はソフトウェア開発が終了しソフト提供サイトも閉鎖されているので動かない可能性が高い。tclocklightも動くかどうか微妙なところ。
といった感じ。
結果的には、懸念点で実際に問題なったところはなく、マザーボードとビデオカードの相性問題もなんとか回避できた。

Windows10にアップデートする前の下準備

・Windows7環境を可能な限りバックアップしておく
僕の場合は、RSyncと言うファイルコピーをするソフトでCドライブをまるっとファイルコピーでNASにバックアップを取った上で、EaseUS Todo BackUpでドライブのイメージをバックアップでNASに取った。

僕の環境下ではCドライブはおおよそ200GBの使用容量があったが、RSyncのバックアップでおおよそ3時間弱要した。おおよそ20MB/s弱のバックアップスピード(PC⇔NAS間はギガビットイーサで繋げてある)とちょっと遅めだが、整合チェックなど走りながらのバックアップなのでこんなものかと思う。なお、ファイルバックアップではファイルパスが深すぎるものだったりファイルにシステム試用中のロックが掛かっていたりでコピーに失敗するものがあるので注意。システムロックのかかるようなファイルはどっちみちバックアップを取っておいても使いみちがないので構わないが、パスが長かったりパスに禁則文字が入っていたりのエラーは、確認して別途書庫圧縮してコピーなどしておいたほうが無難。僕の場合は長いことこの手のバックアップにRSyncと言うソフトを愛用しているが、別に他のソフトでもファイルコピーできるなら何でも構わないと思う。エラーが出ても一旦は最後までコピーが走り切ることと、エラーが出たファイルがどれなのか確認できれば充分。

上記のようにファイルコピーでは完全なバックアップは担保できないので、環境を戻しやすいということもありディスクイメージのバックアップもとっておいた。これはEaseUS Todo BackUpでリカバリ作業用のDVDディスクを作っておき、そのDVDでブートするとイメージバックアップ専用のOSがWindowsPEベースで起動するので、それを使えばいい。
リカバリ作業用のDVDは一回作っておけばその後はEaseUSTodo BackUpをインストールしなくても環境の差し戻しぐらいはできるから作っておくのを勧める。というかEaseUSTodo BackUp自体は広告モリモリの若干うざいソフトなのでバックアップ用DVDメディア作ったらアンインストールしてしまっている。EaseUSTodo BackUpをインストールしておくとバックアップイメージを直接開いてファイルアクセスできるようになるが、それはあまり便利だとは思わなかった。
同じく、僕の環境下でCドライブ約200GBのイメージバックアップでおおよそ1時間半かかった。ファイルコピーの約半分の時間で済んだ。こっちの方がイメージを固めて送ってる?分効率がいいのだろう。

その他、バックアップできるものは可能な限りバックアップしておく。最近はクラウド上に設定データがバックアップされているものも多いし、OfficeあたりはOneDrive上にバックアップできているからいいが、意外にバックアップを忘れるのがIMEの辞書登録。IMEのユーザー辞書ツールからエクスポートをしておこう。
その他、僕の場合はTweetenの設定のエクスポートをしておいた。その他のソフトでも環境をエクスポートできるものがあるかもしれない。
また、多くのソフトでは設定がC:¥Users¥username¥AddData¥Roamingあたりに入っているので、新しいPCにその辺のデータをまるっと上書きすると環境復活したりもする。

・Windows10用のアプリのアップデートファイルを可能な限り用意しておく
最低限として、常用しているソフトのインストーラは予めかき集めておいたほうが手っ取り早いと思う。Windows10になってから集めてもいいが、わりかしめんどくさい。
最低限として、アーカイバ(LhaplusExplzhあたり)のインストーラ、Chrome等ブラウザのインストーラ、Becky!等メーラのインストーラは用意しておこう。
あと、ドライバ類も可能な限り集めておいたほうが良い。マザーボードのチップセットドライバなどはWindows10が勝手に集めてくれるがやはり用意しておいたほうがいいし、nVidia/AMDのビデオカードドライバは絶対に用意しておいたほうがいいだろう。その他、僕の場合はLogicool関係のドライバも先行して集めておいた。

・Windows10に入れ替える際に必要だったり、差し替えたりするハードウェアを用意する
僕はUSBメモリからインストールした。のでUSBメモリはあった方がいい(8GB以上が絶対に良い)。あるいはDVDインストールする人はDVDドライブブランクDVDメディアの用意は当たり前か。
あと、僕は今回のアップデートに際してトラブルが合っても切り戻ししやすいように新しいSSDを買ってそのドライブにインストールするようにしたので、SSDを1台用意した。容量は使い方にもよるが、まあ256GBあればOSと一通りのファイルサイズの大きいソフトを入れても充分だろうとは思う。ユーザデータを入れるならそこに上積みで見積もる感じ。
僕はSanDiskの960GBのSSD、SSD PLUS SDSSDA-960G-J26を用意した。少し古い製品だが、SSDは古い方が製造プロセスが古い分なんとなく安心な無駄な印象がある。SanDiskでも新しい型番で1024GBのがほぼ同じ値段で買えるのだが、プロセス微細化してたり3D TLC NANDになったりしてる分、なんとなく書き換え限界早そうだなあと言うイメージが…。

Windows10にアップデートする手順

別に対して難しいことはない。
以下のサイトからブータブルイメージを作成できるので手順に従えばいい。DVDで作ってもUSBメモリで作ってもどっちでもいいが僕はUSBメモリで作った。多分DVDに書き込んだりDVDから読み込むほうが速度は若干遅いだろう。
Windows 10 のダウンロード

インストール時の手順としてはインストール途中のライセンス認証画面では一旦「プロダクトキーがありません」でスルーする点だろうか。なぜそうしたらいいのか知らないが世の中のサイトにはそっちの方が標準手順で書かれている。おそらくシリアルを入れちゃうとクリーンインストールにならなかったり、OS種類などが強制的に決めうちになるのだろうか。
そしてインストール完了後、セットアップ画面になりコルタナさんが話しかけながら設定していくようになる。別にそこでも難しいことはなにもない。なお、今回はインストール時にアカウントをローカルアカウントMicrosoftアカウントかを選ぶことができる。どうしようか悩んだが僕はOffice365を買ってあるMicrosoftアカウントに紐付けてしまった。結果的に今までのインストールアカウントと名前が変わるので、Userフォルダのパスが変わったり、NASのアカウントを変更しないといけなかったりの手順が発生する。
そしてインストール完了後、正常に立ち上がったところで改めてシリアルを入れて登録作業を完了させよう。
なお、僕の環境下ではWindows7 Professional 64bitで使っていたものを(以前の無償アップデート期間はまるで無視していて)登録してみたのだけど、何も問題なく認証された。古いWindowsライセンスがあればWindows10の認証は全く問題ないようだ。更にいうと、僕が使っていたWindows7ライセンスはDellのOEMロゴが入っていたりする感じの限りなくブラックに近いグレーライセンスなのだが、それでも全く問題なかった。

Windows10にアップデート後、最初にすること

アップデートが終わったら、何はともかくデバイスマネージャを開いてドライバが正常に認識されているか確認しよう。
今のところ(1803)では、新しい[設定]ウィンドウからデバイスマネージャに飛ぶ方法はないらしく、旧来通り[コントロールパネル]→[ハードウェアとサウンド]の中から飛ぶか、[コンピュータの管理]からデバイスマネージャを開く。[コントロールパネル]はスタートメニューの[Windowsシステムツール]フォルダ内にあり、[コンピュータの管理]は[Windows管理ツール]フォルダ内にある。どちらも微妙に見えにくい場所に隠れてしまっているので、設定を頻繁に触る当面の間はスタートにピン留めなどしてしまうほうが手っ取り早い。
で、デバイスマネージャで不明なデバイスがないか確認する。特に、真っ先にビデオドライバを確認しよう。iGPUを使っている人は[Microsoft基本ディスプレイアダプター]が一旦あたっているので早急に更新する。予めネットでダウンロードしてきておくのが無難だが、この段階でドライバをインターネットから探してもWindowsさんがちゃんとドライバを見つけてきてくれるので多分大丈夫だと思う(Windowsがドライバを見つけてくるとドライバ名が製品名に置き換わる)。
同様に、ディスクリートGPUを使っている人もまっさきにここでドライバを当てよう。ドライバの当て方や認識に問題があるとこの時点でWindowsの画面出力に支障が出てしまい再インストールをする羽目になるからだ(僕の環境は特殊なせいでここで数回ドツボにはまった)。
ビデオカードドライバが当たれば他のデバイスはドライバが上手くあたったり当たらなかったりで致命的なエラーになることはそうそうないと思うので、のんびり確認していけばいい。

Windows10にアップデート後、見直すべき設定

・電源オプション
コントロールパネ内から変更。
・通知領域の時計表示
コントロールパネル→日付、時刻、または数値の形式の変更→yyyy/MM/dd'(‘ddd’)’:これを変更するとデスクトップ右下の通知領域に曜日が表示されて便利なのだが、一方でエクスプローラの表示にも曜日が出てしまう諸刃の剣。僕は結局通知領域はtclocklightで表示を変えているのでこの設定は廃止した。
レジストリで秒表示:
・視覚効果
コントロールパネル→システム→システムの詳細、パフォーマンス、可能な限り無駄なアニメーションは使わない設定で。
・Winodwsの機能の有効化または無効化
コントロールパネル→プログラム→Winodwsの機能の有効化または無効化
・非アクティブタイトルバーの背景変更
・自動ログイン
Win+Rで netplwiz
・Clear typeの調整

Win+R, control fonts
・フォント
フリーソフトを使う
僕の場合は基本的に全部メイリオで、タイトルバーだけMS UI Gothicを使っている。
・アンチウイルスソフト
Windows Defenderでいい
・各種レジストリ登録の実行
・仮想メモリサイズの変更
・環境変数の変更
・リモートアシスタンスの禁止
・WindowsUpdate

その他、新しい[設定]は一通りチェックする。

Windows10にアップデート後、入れたソフトメモ

(1)事前にインストール
(x64)Explzh (7zip、tarはdllを別途インストール)
(2)各種ドライバインストール
(x86)EPSON
Logicool?
(3)その他通常インストール
(x64)UltraMon
(x86)ペースター
(x86)System Explorer

(x86)GPU-Z
(x86)CrystalDiskInfo
(x64)CrystalDiskMark

(x64)Google Chrome
(x86)Microsoft Office
(x86)PDF-XChange PDF Viewer
(x86)Becky!2

(x64)Adobe CC
(x64)MediaPlayerClassic – BE
(x64)Mozilla Firefox ESR

(x64)ExpConst (ExplorerConstruction(3.1)):ライセンス認証にメールが必要なのでメールが読めない環境のうちは急いでインストールはしない

(4)特殊フォルダからのコピー

【C:\Program Files (x86)からそのままコピー】
(x86)サクラエディタ→個別設定にする、インストール後、旧フォルダを上書き

【C:\Applications (x86)からそのままコピー】
(alphacalc)
(exiftoolgui)
(FFFTP)
(foobar2000)
(IGDUtility)
(JaneView)
(leeyes)
(Pitaschio)
(PSSTPSST)
(Rsync)
(STEP_K)
(STEP_M)
(TeraTerm)
(TVelet)

(6)その他特殊作業
foobar2000→C:\Users\username\AppData\Roaming\foobar2000を上書き
Firefox→C:\Users\username\AppData\Roaming\Mozillaを上書き

その他、雑感

一応、一通りインストールしてWindows7の頃と似たりよったりの環境構築まではたどり着いたが、やはり配色などが変わった分の違和感はまだ残ってはいる。じきに慣れるだろうとは思うが、以前はあったタイトルバー(アクティブのみ残っているが非アクティブなタイトルバーの色変更等は公式にはサポートしていないし、メニューの選択項目の色設定の変更項目などもない)の色変更ができなかったり、フォントの変更ができなかったり(レジストリでバイナリ項目を弄くるのはかなり危険性が高いので、フリーソフトに頼るほうがどう考えても良い)、Windows10は全般として「ユーザが自分好みの設定を作る」ことを排除にかかっているのかなあという印象を覚えた。

エクスプローラに関しても同様で、クイックアクセス/ユーザーアカウントフォルダ/OneDrive/ライブラリ/PCといくつものアプローチ方法が提案されていることは良いと思うが、普通の人はこれら全部を使うことはほぼありえないわけで、「すべてのフォルダーを表示」オプションではなく各々のアクセスポイントを表示する/表示しないという設定の仕方でいいのではないかと思う。

OneDriveの挙動に関しても謎があって、「デスクトップフォルダを同期」しているのはどうかと思う。デスクトップをショートカット置き場にしている人も多いと思うが、デスクトップをテンポラリにしている人も多くて、ネットからダウンロードしたファイルや、圧縮ファイルを解凍したものが一旦デスクトップに展開される人は多いのではないかと思うのだが、OneDriveの初期設定だとこれらは展開されると同時にOneDriveを通じてクラウドにアップロードされていって、非常に回線的に無駄だ。僕はOneDriveの同期フォルダを選択的に変更してデスクトップの同期を切ってしまったが、その過程でよく見てみるとC:¥Users¥username¥DesktopとC:¥Users¥username¥OneDrive¥Desktopが存在していて、どっちかが[Desktop]で、どっちかが[デスクトップ]で同期されていたりとか挙動が煮詰まっていない感じを受けた。

また、現時点でWindows10はどうも挙動が一瞬遅い、引っ掛かりを感じる。Firefoxあたりのソフトの起動はもともとたいして早くなかったので気にならないが、以前は一瞬で起動したサクラエディタがなぜかワンクッション置いてからの起動になるし、JaneViewなんかは爆速がウリなのにウィンドウ描画が一瞬見えるような錯覚を感じるのはとても不満だ。このへんはWindowsDefender辺りが絡んでいるのか?他になにか原因はないのか?と探しているのだが、今の所解決策が見つかっていない。