ConoHaとArch LinuxではじめるLinux

ごあいさつ

Hi, there! はるかみです。

この記事はConoha Advent Calendar 2018の7日目として書かれたものだよ。 いままでChienomiを見たことある人もない人も楽しんでいってね。

基本的にChienomiはedgeな記事を書くことが多いけれど、Advent Calendarのときだけは初心者向けの記事を書いたりしているんだ。 Chienomiでは最近で最もアツかったのは高EQ AIに関する記事だよ!

本当はConoHa WINGに関する記事を書こうかと思ったけど、Advent Calendarで書くようなものじゃないと思ったんだ。 考えていたものは検証に5, 6日必要だとわかったから協賛でもしてもらわないと無理だとわかったんだよ。

それにConoHa WINGでConoHa Advent Calendarのハードルも下がって、今年はWINGに関する記事がたくさん載るだろうからね。え?毒が少ないって?さすがに同じAdvent Calendarの記事に毒を吐くのは来年にとっておくよ。

あなたはLinuxを使っているだろうか。

最近はLinuxというとドヤりツールになっていたり、あるいはミーハーなものになっていたりもする。 あとは、仕事のための箔付けだろうか。

それはLinuxのなんたるかがわかっていない…と思うのだが、ここではそんな話はおいて、とりあえずLinuxを触ってみたいという人のお手伝いをしよう。

この記事にかかれていることはかなりの部分、過去の記事や他で書いたことと重複してしまうのだが、Advent Calendarの記事ということでご容赦願いたい。

今回はLinuxを全く使ったことのないWindowser向けにエクスプレスで進めていく。 スキル不足が直接に迷惑になるサーバー構築ではなく、またデスクトップ用途でもない。

なお、Linuxそのものを体験して評したいのならばメインマシンにLinuxをインストールするよりない。 LinuxのUXはWindowsのそれよりはるかに優れているが、それはさすがにVPSでわかるようなものではない。

また、副次的に性能の低いコンピュータを使っている人の場合、月1000円から2000円程度で強力なコンピュータにオフロードできる、という面でも話していこうと思う。

SSHを用意する

Windows 10では2017 Fall Creator UpdateからOpenSSHが標準採用になっている。ちなみに、2018 Aprilではサーバーも入っている。 とりあえずまだWindows 10ですらない、という人のことはあまり考えたくないので、そこから話を進めよう。

まずはcmdを検索、あるいは“プログラムを指定して実行”からcmd

Windowsでcmd.exeを探す

ssh -VでOpenSSHを確認。

C:\Users\Harukamy>ssh -V
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4

ssh-keygenで鍵を作成する。 Microsoftが提供するWindowsアプリでありながらUnixスタイルとWindowsスタイルが混在してとてもわかりづらいことになる。 OpenSSHが使うディレクトリは相変わらず%HOME%\.sshなのだが、Explorerでドットファイルが作れないのでコマンドライン上で行う。

>mkdir .ssh

その上でSSH鍵を生成する。

>ssh-keygen -f .ssh/conoha_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/conoha_rsa.
Your public key has been saved on .ssh/conoha_rsa.pub.
The key fingerprint is
SGA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX harukamy@HACKMAN
the key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+---[RSA 2048]----+

このパスフレーズは秘密鍵を暗号化しておき、使用するときに解除して使用するためのパスフレーズである。 システムが十分に安全かつ強固に保護され、運用されているのであれば(物理的に盗まれることも、ネットワークごしに盗まれることも、ディスクをコピーされたとしても使われることも)ないのであればパスフレーズはなくても構わないし、まず考えられない程度に強固なのであればほどほどに強固なパスフレーズでも構わないだろう。

これでホームディレクトリ以下.ssh/conoha_rsa(秘密鍵)と.ssh/conoha_rsa.pub(公開鍵)のペアが作成される。

Explorerではとてもホームディレクトリにアクセスしづらいので、そこをなんとかしておこう。 ExplorerでC:\Users\ユーザー名に移動し、“クイックアクセス”を右クリックして“現在のフォルダーをクイック アクセスにピン留め”を選択する。

あと、適切なエディタがないのも困るので、インストールしておくといい。 無難なのはみんな大好きNotepad++。

ConoHaでサーバーを立てる

ConoHaでの契約については公式のページをみてほしい。

それではConoHaにログインし、“サーバー追加”からサーバーを追加しよう。 練習用なら512MBで良いだろうし、パフォーマンスオフロードを期待するなら1GB以上にしよう。 OSはもちろん、Arch Linuxである。

ConohaでArch Linuxインスタンスを立てる

Rootパスワードは本当に強固なものにすること。 ここはあまり心配のない部分だが、それでも24文字以上くらいにはして欲しいところだ。

オプションを開き、接続許可ポートを設定する。 IPv4/IPv6ともSSHのみを許可するように設定する。 IPv6のない環境からアクセスするのであればIPv4のみでも構わないし、IPv6でのアクセスが確実な接続形式をとっているのならIPv6のみのほうが良い。

ConohaでポートとSSHキーの設定

そしてSSH Keyセクションは “キーを新規作成” を選択し、“登録方法”に“インポート”を選択する。 そして“パブリックキー”のところに、作成した~/.ssh/conoha_rsa.pub (.pubファイル!!!)の内容をコピペする。

この時点で鍵登録しておくとSSHのパスワード認証が無効化された状態でインスタンスが立つので安全な状態になる。

インスタンスを作成し、起動したら、ConoHaのサーバー一覧からサーバーを開くと“VPS設定”からI逆引きホスト名を知ることができる。

それでは例えばここがv0-0-0-0.a00a.tyo0.static.cnode.ioだと仮定しよう。

SSHでログインする

ではいよいよWindowsに戻ってログインしよう。 OpenSSHの-iオプションに秘密鍵を指定する。引数はSSHのホストだが、その前にユーザーが必要だ。

>ssh -i .ssh/conoha_rsa root@v0-0-0-0.a00a.tyo0.static.cnode.io

ログインできたらexitして一旦SSHを抜ける

# exit

もう少し楽にログインできるように設定をしておこう。 .sshディレクトリにconfigというテキストファイルを作成する。拡張子はない。 UTF-8+LFで編集してくれるエディタを使うのが良いかもしれない。

このファイルは次のような感じだ。

Host conoha-root
  HostName v0-0-0-0.a00a.tyo0.static.cnode.io
  Port 22
  User root
  IdentityFile .ssh\conoha_rsa

これで

>ssh conoha-root

とするだけでログインできるようになる。

OpenSSHが使えない場合

TeraTermを使う方法が公式で紹介されている。

TeraTermの使い方公開鍵の使い方が紹介されている。

ユーザーを作成する

Windowsでは歴史的経緯から曖昧だが、rootユーザーというのは全権を持つ「神」であり、普段使うべきではない。 それどころか、rootのシェルプロセスがあるだけでも望ましくないくらいだ。

Archはインストール時にユーザーを作成しない。自ら作成する必要がある。

ではログインして作業しよう。 ユーザー作成コマンドはuseraddだが、オプションとしては-U(ユーザープライマリグループを作成する), -G(グループを指定する), -m(ホームディレクトリを作成する)を使用する。 このユーザーは管理ユーザーとなるのでwheelグループに加えておこう。

# useradd -U -G users,wheel -m conohachan

ユーザーのパスワードを設定する。とても強固なものが良い。

# passwd conohachan

ユーザー用の鍵を登録しよう。ここではOpenSSHを前提に進める。 Windowsでもうひとつcmdを立ち上げ、先程と同じ要領でキーを作る。

>ssh-keygen -f .ssh/conoha-user_rsa

configを追加する。今度は鍵とユーザーが異なる。

Host conoha
  HostName v0-0-0-0.a00a.tyo0.static.cnode.io
  Port 22
  User conohachan
  IdentityFile .ssh\conoha-user_rsa

鍵をアップロードする。まだrootでしかログインできないので、rootで送る。

>scp .ssh/conoha-user_rsa.pub conoha-root:.

これでConoHaのrootホームディレクトリにコピーされるので、これをSSHに戻ってセットアップする。 まずはユーザーの.sshディレクトリを作る

# mkdir ~conohachan/.ssh

そして、authorized_keysというファイルとして配置する。

# mv conoha-user_rsa.pub ~conohachan/.ssh/authorized_keys

このままだとrootユーザー所有ファイルになってしまうので、直しておく。

# chown -R conohachan:conohachan ~conohachan

.sshディレクトリはオーナーのみアクセス可能であることが求められるため、パーミッションを修正する。

# chmod 700 ~conohachan/.ssh

これでユーザーとしてログイン可能になったはずだ。

>ssh conoha

初期設定

まだrootのセッションも閉じないでおこう。 この状態では管理作業ができるのはrootだけなので、conohachanにも許すようにしたいところだ。

/etc/sudoersというファイルを編集するのだが、これは直接編集してはならない。 visudoというコマンドを使う。エディタにVIが入っていないのでエディタも指定してあげる必要がある。

# EDITOR=nano visudo

下の方にこんな行がある。

# %wheel ALL=(ALL) ALL

このコメントアウトを外しておく。次のように。

%wheel ALL=(ALL) ALL

オーケー。Ctrl+Oして保存し、Ctrl+Xで終了しよう。

ConoHaでは最近、script側でアップデートするようなので不要に思えるけど、一応アップデートしよう。この作業は定期的にしなければならない。

# pacman -Syu

カーネルパッケージ(linuxというパッケージ)が更新対象に含まれていた場合は再起動する。SSHのセッションは切られる。

# reboot

もう少し使いやすく…

とりあえずここからはLinuxを長年使っている身として「それなりに使いやすい環境を整える」ところをやっておきたいと思う。 特にArch Linuxはミニマルなので足りないと感じるものは色々あるだろう。

パッケージを揃える

まずはユーザーログインする。

>ssh conoha
Enter passphrase for key 'C:\Users\harukamy\.ssh\conoha-user_rsa':

$

ちょっとrootでの作業が続くのでrootになる。

$ sudo bash -l
[sudo] password for conohachan: 
# 

サーバーなら必要ないのだけど、まずはユーザーで電源切ったり再起動したりできるようにしておこう。pacmanはArch Linuxのパッケージ管理ソフトウェアであり、ソフトウェアをインストールしたりアンインストールしたりアップグレードしたりできる。

# pacman -S polkit

これでsystemctl poweroffsystemctl rebootがユーザーでできるようになる。

VI, vim, Zshはなくてはならないソフトウェアだ。あと、ターミナルデュプレクサも欲しいのでtmuxも入れておこう。 Zshはgrml-zsh-configパッケージをインストールするとすごく使いやすくなる。 あと、このあとyayを入れる関係でgoとgitも入れておく。

# pacman -S vi vim vim-plugins zsh grml-zsh-config tmux go git

いい感じになってきた。ここで一旦rootを抜け、tmuxを起動する。

# exit
$ tmux

tmuxはプレフィックスキーを押したあとになにかキーを押すとtmuxに対する指示になるようになっている。 デフォルトのプレフィックスキーはCtrl+bで、?を入力することによりキーバインドの一覧が表示される。

とりあえずcが新しいウィンドウを作成するコマンドなので、Ctrl+b Ctrl+cと入力しよう。

これでわかりにくいがふたつのウィンドウができた。nコマンドによりこのウィンドウを行き来できる。

pacmanが扱うことができるのはArch Linuxの公式パッケージだけだ。 AURという、非公式の(しかし、運営自体は公式に行われている)パッケージも扱いたいので、yayというソフトウェアをインストールする。 手順は

  1. Gitを使ってyayのリポジトリをコピー
  2. yayディレクトリに移動
  3. makepkgでパッケージを作成
  4. pacmanで作成したパッケージをインストール
$ git clone 'https://aur.archlinux.org/yay.git'
$ cd yay
$ makepkg
$ sudo pacman -U *.pkg.tar.xz

これでAURのパッケージもインストールすることができる。 もし、yayに不満ならばついでにもうひとつのAURヘルパーであるtrizenもインストールしておこう。pacmanと違い、AURヘルパーはユーザーとして実行する。

$ yay -S trizen

yayやTrizenは公式のパッケージも扱うことができる。

見やすく、使いやすく

まずはすごく簡単な話として、Bashなど投げ捨ててZshにしよう。 Bashなんてゴミだ。

まずは.zshrcを作っておく。

$ touch .zshrc

オーケー。Zshにしよう。

$ chsh
Changing shell for conohachan.
Password: 
New shell [/bin/bash]
> /bin/zsh

chshはログインシェルを変更するだけなので、今のシェルは変更されない。 一刻も早くBashやZshに変えたいので、Zshでログインしよう。

$ zsh -l
%

Poifect! grml-zsh-configをインストールしているのでとても快適に仕上がっているはずだ。 とりあえず途中でわからなくなったら、わかるところまで打ってからTAB連打で切り抜けられる。オプションやオプション引数なんかもだ。 あと、f/b/b<TAB>foo/bar/bazに展開する、なんてこともできるようになる。

さらにZshを強化して、Zshから離れられない体にしてやろう。

$ yay -S zsh-completions zsh-syntax-highlighting

Syntax Highlightを使用するため、.zshrcに次のような記述を行う。 vimが使えるならvimを使えばいいし、ダメならnanoでもいい。

grml-zsh-configはヒストリを辿ったときに「既に第一ワードを入力している場合は第一ワードを確定として、途中の場合は第一ワードの検索開始時カーソル位置までを確定として辿り、カーソルは末尾に移動する」という挙動になっているのだが、「常にカーソル位置までを確定として履歴を辿る」という機能も欲しいのではないだろうか。 というわけで、PgUp/PgDownでそのような検索ができるように.zshrcを追記する。

うーん、beautiful!

さて、ここからはちょっと複雑なことをする。 わかりやすく美しいZshプロンプトのPowerlevel9kを使いたいと思うのだが、これはWindowsだとひと手間ふた手間ある感じだ。

とりあえずインストールだけはしておこう。

$ sudo pacman -S zsh-theme-powerlevel9k

ここからは一旦ログアウトして(各シェルのログアウトしたあとSSHからログアウトするのを忘れずに)Windowsだ。まずはGit for Windowsをインストールする。

これで様々な問題を解消できるようになる。別にMSYS2を入れてもらっても構わないのだが、Git Bashが各種設定を済ませてあるので話が早い。

そして、次にCicaフォントをインストールする。 完全なPowerlineグリフを持っているので話が一番てっとりばやい。このフォント、グリフが豊富で見やすく、制限された状況で本当に便利だ。

で、Git Bashを起動して、右クリックからのOptionsで、フォントをCicaにする。ここまでやっておかないと後で困る。 それではGit Bashからログインしてみよう。

$ ssh conoha

通常Git Bashでも.exeは省略できないのだが、sshはGit Bash側で定義されており、省略できる。

minttyになったことでだいぶ見やすくなったのではないだろうか。Cicaフォントだし。 で、powerlevel9kなのだけど、とりあえず私がサーバーで使っている設定を晒そう。

これはVIモードで使うことを前提にしているので、一般化すると次のような感じか。

で、powerlevel9kなのだけど、とりあえず私がサーバーで使っている設定を晒そう。

grml-zsh-configを使っている関係で先にprompt offするのは必須。 FOREGROUNDとBACKGROUNDの色はお好みで、という感じだ。 Zsh上で(つまり、ログインしたConoha上で)

% for i in {000..255}; do print -P "$i %K{$i}     %k"; done

とやれば、番号ごとにどんな色か把握できる。 もちろん、もっと好みに設定を変更しても構わないだろう。

これも.zshrcに記述する。

この設定は作業中のミスをなくすために行っているもので、実のところ私は普段はPowerlevel9kを使っていない。 だが、SSHから入ったときだけPowerlevel9kになるようにしており、ホストごとに色を変えてある。このことにより、「ローカルホストかリモートホストかを間違える」事故を防止している。

実際、普段はgrmlデフォルト

このホストにSSHで入るとこうなる。

フォントが設定されていないcmd.exeから入ると表示が乱れている。右側のウィジットが次行に表示されているので使えないこともないが…

Git Bashなら正しく表示される。

Powerlevel9kの利用は好みの問題だと思うけれど、Git Bash + Cicaという組み合わせはやって損がないのではないだろうか。

Powerlevel9kの利用は好みの問題だと思うけれど、Git Bash + Cicaという組み合わせはやって損がないのではないだろうか。

自動アップグレード

とりあえず毎日朝6時にアップグレードするようにしてみよう。 Arch LinuxのinitであるSystemdというものを利用する。SystemdにはSystemdタイマーというジョブスケジューラがあるので、これを使うのだが、説明はとても難しいのでとりあえず例示にとどめよう。

rootとして/etc/systemd/update.serviceを作成する。

% sudo nano /etc/systemd/update.service

続いて/etc/systemd/update.timerを作成する。

% sudo nano /etc/systemd/update.timer

時は来たれり

バッチリだ。ここまで来れば、 サービスや他者に迷惑をかけない範囲であれば 君が学んだことを存分に発揮できる場が出来上がったはずだ。

例えばvimを練習したいのなら

% vim vim-training-file

とかやればいいし、Pythonでプログラムを書きたいなら

% vim myfirst.py

とかやればいい。

Linuxについて教えると話は無限に長くなるし、そもそもここまでの一連の作業でそれなりにLinuxに慣れる要素もあったので、Advent Calendarの記事としてはこれくらいで良いではないかと思っている。 この記事のソースファイルはこの行が606行目だし。

というわけで、世の中の人がちょっとでもLinuxに、そしてコンピュータに関心を持ってくれれば幸いだ。 ついでに、こんなふうに簡単にサーバーを立てて、練習やアウトソースにも使えるConoHaは素晴らしいサービスです!(おべっか)

Linuxについての突っ込んだ話はこのChienomiでしているから、関心がある人はぜひチェックして欲しい。 コンピュータやLinuxについて学びたい、教えて欲しいという人はぜひMimir Yokohamaへどうぞ。

それでは今年もこのへんで。はるかみ☆でした♪

McAfeeの「パソコン動作を軽くする対策8選」 のおはなし

スラドで記事になっていたので 少し触れてみようと思う。

結論としては、

  • McAfeeの記事は「懐かしい」
  • 批判している記事のほうは知識があまりに足りないのでひどいものだ

内容的にはWindows 98の頃に常識的tipsと言われていたものなので、検証もしないまままだいい続けている人がいるのか…という感じではある。

個別に

常駐アプリケーションの無効化

これは確実に効果がある。 だが、現在(Windows 10)は多くのケースにおいて「効果のある変更はできない」のが実情だ。

批判記事のほうではメモリの問題と考えているようだけれど、常駐アプリケーションに関してはメモリの問題はかなり小さい。 なぜならば、メモリが常駐アプリケーションのために不足するほど少ないことは稀だし(常駐アプリケーションの中身次第だけども)、メモリのアクセス速度は比較的速いため速度低下に通じる条件は割と狭い。

常駐アプリケーションが重くなる最大の理由は、「遅いリソースに対するアクセス」であり、一番はディスクアクセスである。 ほんのわずかでもディスクアクセスが入れば全体的に結構遅くなる。 ディスクからインデックスを作るようなタイプのプロセスは走っているときにエクスペリエンスを著しく落とすことがあるので、こういうのは切ると効果が大きい。

ネットワークアクセスも場合によっては重い。直接接続されているインターフェイスが高速ならいいのだが、不安定なWi-Fiなどにつながっているときの挙動が全体の動作に影響を及ぼす場合も(だいぶ稀だが)ある。 ただ、このような挙動を示すものはWindowsでは少ない。スマートフォンの場合全体の中でネットワークに依存する度合いが高いこともあってネットワークアクセスするバックグラウンドプロセスの存在は全体のエクスペリエンスに大きな影響を及ぼす。 これはWindowsでも大きな通信を常時している場合や低速なインターネット接続である場合は同様の問題があるだろう。

スリープ、あるいはブロックしないタイプのプロセスの場合は定期的にCPUを要求することになり、プロセススケジューラ的に負担になる。 さらにいえば、そこで負担のかかる処理をしているとCPU時間的にも重くなる。 これは「重い処理をするプロセスは」と捉えるかもしれないが、そんなことはない。Windowsにはforkはないけれど、例えばLinuxの場合はジョブスケジューラによってシェルスクリプトを定期実行しておくようにしたりすると、シェルスクリプトがコストの高いfork(2)を定期的に発行することになるので、結構重くなる。

これらの問題が体感的に重くなるかどうかはかなり様々な条件によって変わるのだが、そもそも記事自体が「重いと感じている」ことを前提として、「どのように重いと感じているかの究明はしない」というスタンスで「やってみれば軽くなるかもしれない」という記事を書いているのだから間違ってはいない。

容量の大きいファイルの削除、移動

「データ量が増えるとアクセス速度が遅くなる」のはそもそもHDDの物理的特性に依存している。 HDDでデータが増えるとデータが物理的に遠くなるのでかなり遅くなる。 ランダムアクセス速度はさらに遅くなる。

HDDはコンピュータの中で現在多くの場合最も遅いデバイスなので、これが遅くなるとCPUから見るととんでもなく低速化したことになる。

実際に記事はハードディスクドライブ、と明示されているので正しい。

これはファイルシステムとディスクデバイスの問題とは別である。

使っていないアプリケーションの削除

様々なリスクを低減することにはなるが、エクスペリエンスへの直接的な影響は基本的にない。

ただし、バックグラウンドでの動作を抑制し、ディスク要領を空けるという意味はあるので前2項と同じ話だろう。

デフラグをかける

ハードディスクでは物理的な移動量を減らすことにより効果がある。 ただし、昔ほど劇的な効果はない。 ディスクへのダメージを考えると「余程のことがない限りしないほうが良い」というのが近年の考え方だ。

ディスクのクリーンナップをする

これも空き要領を増やすのとだいたい同じなのだが、他にも効果がある。

キャッシュ自体がインデックス対象になるケースと、キャッシュが増えることでオーダーも増えるケースだ。 だが、そんなクソ実装なソフトウェアをイマドキ使っている人はあまりいないと思う。

ブラウザのキャッシュをクリアする

これは恐らく間違っている。

昔のInternet Explorerはそもそもキャッシュをプリロードする仕組みだったし、キャッシュヒットの計算量もキャッシュ量によって増加するようになっていた。

けれど、今はだいたいsqliteだったりするので、キャッシュ量がパフォーマンスに与える影響というのは無視できるレベルである。 それよりはキャッシュがないことによって発生するネットワークアクセスに伴うパフォーマンスへの悪影響のほうがずっと大きいだろう。

ちょっとハードディスクに対する容量管理に対して神経質すぎるのではないだろうか。

ディスク容量という意味ではブラウザキャッシュはものすごいサイズになることが多いので、むしろ容量の少ないSSDのほうが消したいかもしれない。

視覚オプション(アニメーション表示)の解除

批判のほうでメモリ云々言っているけれど、Windowsのアニメーションのロードは別にアニメーションを行うときに読まれるわけではないので、メモリに対する影響はない。

しかしこれはパフォーマンス上は効果がない。 今Windowsのアニメーションはハードウェアアクセラレーションによって実行されるようになっており、CPUに対する負担が(ほぼ、あるいは全く)ない。 ハードウェアアクセラレーションのできないPC構成は現代のものとはとても言えないだろう。

ただ、エクスペリエンスという点に限って言えば意味がないとも言い切れない。 なぜならば、アニメーションには時間がかかるので、「待ち時間が遅い=重い」と感じるかもしれないからだ。

記事中では

視覚効果を出すための動作はパソコンのパフォーマンス・動作スピードを落とす原因にもなります。

とあるが、動作スピードは落ちてもパフォーマンスは落ちない。

再起動を行う

再起動を行うことで問題が解消されるケースについて説明しまう。

昔定期的に再起動が必要だったのはメモリリークによるものである。 メモリリークとはメモリに領域を確保して開放しないままプロセスが終了してしまうことによりメモリを占有したままとなり、メモリの空きを減らしていってしまう問題だ。

だが、現在は処理系やOSの改善もあり、このようなケースは比較的少ない。

どちらかといえば終わるべきプロセスが終わらない、本来ひとつしか起動しないはずのプロセスが複数起動してしまう、ロックファイルが消えない、FIFOが多重に書かれて上書きされる、起動処理に失敗する、変数がバグって変なループにおちる、待ち合わせタイミングがおかしくなってブロックしつづける、マルチスレッドのプログラムが一部スレッドだけ落ちる、といった異常な状態が解消できる(ファイル残りなどは解消できない場合もあるが)。

だが、このような問題はごく最近、劇的に少なくなった。 以前はデスクトップユースで数日に渡って連続使用するというのは結構難しかったのだが、現在はWindowsでもLinuxでも1ヶ月程度の連続稼働はなんということもなくこなしてしまう。 こうした不整合による問題は非常に起こりにくくなったのだ。

だから、「不快なエクスペリエンスを解消するために再起動」というのは網羅的に書けば出てくるけれど、あまり重要ではないと思う。

ただし、書くこと自体には問題ないとも思う。 モデルライフで意識的に再起動したことが一度もない、というユーザーを私は結構知っているし、そこまでになると再起動することで解消することもままあるし、初心者向けに書かれていることから再起動という知識がないケースも想定されるのであっていいと思う。

以上を終えて

放っておいてもよかったような内容だが、なんとなく批判のほうが正しく、McAfeeが悪いような空気になっていたので書いてみた。

それぞれがどのような知識、どのような思考で書いたのかは容易に想像できる書き方であったが、 McAfeeのほうは本当に初心者を想定して、理解を度外視して手順だけを並べたのだろう。 だから意味的には同じものも書かれている。

しかし、私はどちらに対してもどうこう言いたいのではなく、 どちらかと言えばMcAfeeの書いていることが「懐かしいねぇ、2000年ごろは至るところでこんなことが書かれていたねぇ」と微笑ましく読むところだろう。

P720 * Windows 10 にDTM環境を構築した

Windows 10でDTM環境を作った

前回の記事の流れで諦めてWindows 10のDTM環境を作った。

Windows 10でDTM環境を整備

もう、すごくめんどくさくて、これに何日使ったかわからない。

色々と買い揃えている人ほどではないが、全部入り上位パッケージを買うタイプなのでこれはこれでひと財産という感じである。

環境としては

  • Cakewalk SONAR X3 PRODUCER
  • FL STUDIO PRODUCER Signature Bundle
  • Internet Ability 2.5 Pro
  • KOMPLETE 9 ULTIMATE
  • Air Music Technology Xpand! 2
  • Air Music Technology Hybrid 3
  • CeVIO Creative Studio 2 初回限定盤パッケージ (6.1アップグレード)
  • Soundspot Nebula

という構成になっている。

Windows 10 * SONAR X3 Producer

Windows 10上でSONAR X3 Producer自体は動作する。

ただし、動作しない(みつからない)プラグインがいくつかある。 dllをレスキューすればいける、みたいな話もあるのだけど、全プラグインを把握しているわけではないので確認はできていない。

SONAR X3をWindows 7上で使っている人はWindows 10に移したら完全には動作しない可能性を考えたほうがいい。

SONAR X3 Producerに付属しているAddictive DrumsなどはSONARとは独立してそのまま利用することができる。

非常に使える戦力なので、ぜひ活用していきたい。 今のところ一番イケてるドラム音源だと思う。

スタイリッシュになったものの難易度の上がったFL Studio 20

Macに対応したりして注目を集めるFL STUDIO。 変化が大きかったのでしばらく12と併存でいくのかと思いきや、バッサリとリリースと同時に12を切ってきた。

今までの使い方がわかっている人にとってはアクセスしやすくなって素晴らしいのだけど、そうでない人にとっては操作方法のヒントが激減した。

まぁ、デザイン重視なのはFLの伝統でもある。

プリセット設定ができてわかりやすくなったプラグインはインストールプラグインと扱いが異なるためわかりづらくなった。 インストールしたプラグインの操作はFile Settings -> Manage plugins -> Start Scanとやったあと、Plugin Database -> Installed という流れになっている。

ちなみに、私はSignature Bundle使いなのだけど、いつもバージョンがあがったあとアクチベーションするとPRODUCER - Signature Bundleと表示されるようになるのが好き。

FL STUDIO 11 のときは背景はFL-chanだったし、読み上げもしてくれていたのに、 12からはなくなってしまって残念。

なんだか懐かしいAbility

Singer Song Writerといったら初心者御用達のDAWだったし、割と舐められてた気がするのだけど、Abilityになってスタイリッシュになった。

SONARが終わったときに異様なまでのセールでAbilityが出ていて、まさにこういう事態(DTM環境のWindows 10化が避けられない)のために買っておいた。 いつも通りというか、最上位のAbility 2.5 Proである(パッケージ的には2.0)。

ちなみに、私はSinger Song Writerは使ったことがない。

もう一言で言うと

すごーく、シーケンサっぽい。

私はもともとXGWorksを使っていて、MIDIを組むのがお仕事だったりした。 当時はレコンポーザとかがあった。 そしてその他のライバルとしてRolandが売っているミュージ郎というパッケージがあって、それにシーケンサとしてSinger Song Writerがバンドルされていた。 ミュージ郎はそのうちCakewalkと組んでCakewalk(こっちはソフト名)をバンドルしたバージョンを出して、その後CakewalkがSONARになった。 RolandがCakewalkと組んだからインターネット(これは会社名)が出ていったのか、それともインターネットがSinger Song Writerの商品力で勝負しようとしたからRolandが見放したのかはわからないけれども。

Singer Song Writerはそれなりに波乱に満ちた歴史があって、wikipediaの記事を読むと面白いかもしれない

YAMAHAだってSOLがあったからXGWorksというとお手軽MIDIソフトだったのだけれど、販売面でいうとミュージ郎のほうビキナーパック感があった。 ちなみに、プロでSOL使っている人はすごく少なかった。当時はオーディオ化がコンピュータで完結しなかったので、オーディオになったあとの面倒をみるところをMIDIを組んでいるソフトでやる必要がまったくなかった。 ほぼProToolsの独壇場だったけれど、Cubaseを使っている人はまぁまぁいた印象。MIDIの組み方としてはSOLよりXGWorksのほうが簡単だったので、XGWorksを使っているプロはそこそこいた。

そんな歴史を語ってしまうほど、Abilityには当時の匂いがした。 洗練されていない四角いアイコンが並んで、操作方法も表示方法も現代的な視覚性を持っていない。 とにかく表示を並べる昔のままのスタイルだ。

少しはCubaseやStudio Oneを見習えというべきなのか、それともいやよくぞこのまま貫いてくれたと言うべきなのか。

だが、古臭いけれどなんとなく直感的で良い。 15分ほど触っただけだけど、なんとなくつかめたような気がする。

SONARはかなり気に入っていたので、それより良いものになるかはわからないけど。

Ability 2.5 の UVI GrandPianoModelD はかなり面倒

わかりづらくてかなり手こずった。

UVI WorkstationはKONTAKT PLAYERみたいなもので、これ自体はなにもない。 サウンドバンクの母艦になるものだ。

SSWのアカウントを発行するまではAbilityを起動してアクティベーションするところまでは済ませておくこと

  1. SSWのサポートセンターのマイページに行く (メールのリンクから行ける)
  2. パスワードをリセットする (Abilityから登録した時点でパスワードが発行されていない)
  3. マイページのリンクからBFD EchoとGrandPianoModelDのダウンロードを行う
  4. これらはPDFファイルのアーカイブになっているので展開する
  5. UVI Workstation サウンドバンクインストールガイド を読む
  6. ここに書かれていることを無視して 「UVI workstation ダウンロード」で検索してアプリを入手する
  7. UVI Workstationをインストールする。このときiLok License Managerもインストールされる
  8. しかしiLok License Managerは動作しないので、License Suport Installerを別途インストールする (iLok License Manager起動時にインストールするように言われる)
  9. iLok License Managerを起動する
  10. UVIのマイページから製品登録を選択し、iLokのアカウントと接続を選択してiLokのアカウントを作る
  11. iLOk License Managerでログインする
  12. 製品登録の画面でアクティベーションキーを入力、iLokアカウントに接続を選択してログイン、その状態で次へをクリックする
  13. マイプロダクトからGrandPianoModelDをダウンロードする
  14. rarファイルになっているので展開して、C:\Program Files\UVISoundBanks以下に展開して得られたファイルを配置する
  15. UVI Workstationを起動する

最高にめんどくさい。

BFD Ecoはそんな変なことはないので大丈夫なはず。 もっとも、ドキュメントから導入するのは変わらないけど。

Air Music Technology のアクティベーション

プラグインスキャン時にアクティベーションになる。

iLokも利用可能。

Nebulaは…

なんとシリアルナンバーすらない。

ものすごく安売りしてることが多いけど、商売っ気なさすぎないか。

CeVIOはスタンバイ

CeVIOは初回限定パッケージを入手済み。

ONEはまだ買ってないので、とりあえず今年中にさとうささらの曲を書くのが目標だ。 本当は使い慣れたSONAR上でさくさくっとやるつもりだったのだけれど、ソフトウェアが変わってしまったので厳しいかもしれない。 FLでやってもいいけれど、実はFLのほうもあまり自信がない。

EDMジャズみたいな曲を作りたいなと思っているのだけど、そういうのはとにかく時間がかかるので、 いつもどおり音数の少ない曲をとりあえず書こうかな、と思う。

ただ、ずっと思っていたことがあって、 プロになってからとにかくがんじがらめで曲を作ってきたから、 プロになる前みたいに、好きなように音を並べて音楽を作りたい。 楽器がどうとかじゃなくて、とにかく音を並べて音楽にしたい。

多分、CeVIO曲はそんな曲になると思う。

なお、CeVIO CS 2のときは機能らしきものはほとんどなかったのだが、CS 6になってなんかちゃんと音楽制作ソフト感ある感じになった。 なお、CS6になっても相変わらず出力オーディオは選択できない。

なお、なぜ2の次が6なのかは全く不明。VOCALOIDを追い越すためか???

あと、IAはトークがCeVIOでソングはVOCALOIDなので、PVではCeVIOでVOCALOIDの宣伝をする。

アクティベーションとライセンス管理

基本的には各メーカーのユーザーアカウントと結びつける方式。

XLNやNIは専用のアプリを使ってインストールやアップデートの管理も行う。 この方式はなかなか優秀。

iLokも以前のような凶悪なものではなくて、メーカーでユーザーアカウントは登録するものの、 マシン管理はiLokのアプリケーションで行う、というような形になっている。

マシン管理は厳しく行うもの(ディアクティベーションが必要)とゆるやかに行うもの(使わなくなった環境はそのまま使わなければいい)に分かれる感じ。

ただしCeVIOはやたら厳しく、使いにくい方式をとっている。

TASCAM

シリアルナンバーとは別の認証コードを発行。 インストール後は直ちに認証コードを入力しないと使えなくなる。

認証コードはユーザー登録と製品登録を行うことで発行。 一度発行したあとはそのコードをディアクティベーションなしで利用できる。 利用状況はチェックされる。

Image Line

ソフト上からログイン、あるいはマイページから登録用ファイルを獲得して登録。

ユーザーアカウントと結び付けられる。

Internet

メールとURLを使った登録とダウンロード、そしてインストール時にシリアルナンバー入力。

マシン同定に使用するデバイスをシステムドライブとネットワークインターフェースカードから選べる。

XLN Audio

専用アプリで管理。

ディアクティベーションはマイページから行うものの、専用アプリから通知してくれる。 マシン管理が簡単でとてもうれしい。

ただし、ソフトウェアごとではなく、専用アプリ単位でのアクティベーション。

Native Instruments

専用アプリで管理。

マシン管理はチェックのみで、特にディアクティベーションは不要(古い環境がそのまま使っていなければ破棄されたものとされる)。

Air Music Technology

ユーザーアカウント、あるいはiLok。

UVI

iLok。

昔のように専用ハードウェアは必要ない。

BFD

ユーザーアカウント。

ダウンロード時に認証される。 マシン管理はあるのか不明。

Soundspot

多分ない

Celemony

「鬼畜Melodyne」とか呼ばれていた。

インストール時ユーザーアカウントとの結びつけだけれども、ディアクティベーションがアプリ上からしかできない仕様で、マシンが壊れるとメールするしかなかった。

最近はしれっとマイページからディアクティベーションできるようになっている。

CeVIO

現状もっとも鬼畜。

ユーザーアカウントと結びつけるタイプだけれども、認証を起動ごとに行うため、ネットがない環境では起動不可。 さらに、CeVIOのサーバーが落ちてることがまあまああるため、そのときも利用不可。

Lenovo ThinkStation P720 に Windows 7 をインストールする

なんとかしてP720でWindows 7を使う

私が音楽のお仕事するときの環境は以前としてその中核にSONAR X3が据えられているため、Windows 7が欠かせない。

ThinkStation P720は将来性を考えてWindows 10モデルを選択したが、手元にあるリテール版Windows 7 Professionalのライセンスを利用してWindows 10, Windows 7, そしてLinuxという構成にするのが私の目論見であった。

Skylake-SPプロセッサはWindows 7を使うことができる最強にして最終のプロセッサである。

だが、これはかなりの困難に阻まれた。

もちろん、Windows 10は(いささかの問題はあれど)動作するし、Linuxもなんら問題はない。 だが、Windows 7に関してはインストールディスクから起動すると “Starting Windows” の表示と共に停止してしまうのだ。

様々なトライをしたがうまくいかず、Windows Updateを適用したディスクの作成を試みた。

内容としてはここここを参考にしたが、そのままは適用できなかった。 特にIE11関連はアップデートの配布がされていなかった。

とはいえおおよそ必要と思われるものを統合した。

だが、これでも問題が発生した。

Legacy (BIOS) なら起動できるのだが、UEFIだとUEFIアプリケーションを見つけてもらえない。 bootx64.efiの用意もしたのにだ。

調べたり質問したりしたのだが、解決には至らなかったので、結局UEFI Onlyでの運用を諦めてハイブリッドブートとした。

さて、これでインストーラが起動するようになったのだが、残念ながらUSB2.0ポートにつなぐ場合(P720はキーボード/マウス用ポートのみがUSB2.0)を含めてUSBデバイスが一切反応しない。

幸いにもPS/2ポートが存在しているので、これを利用する。PS/2-USBアダプタは機能しなかったため、PS/2キーボードを新規に購入した。

これでWindows 7は起動するのだが、まともに動かない。 とにかくドライバがない。そして何も動かない。

仕方ないので別のマシンから SCCM Packages For Windows 7 (64-bit) – ThinkStation P720, P920 をゲットして、CD-Rに焼いて展開する。

そう、USBもイーサネットコントローラも動作しないのでCD-Rだけが頼りなのだ。

この状態でC:\DRIVERS以下にドライバファイルが配置された状態になるので、デバイスマネージャからドライバの場所の指定でここを指定すればインストールできるようになる。

大量の動作しないデバイスがあるためかなり大変な作業である。

Windows 7をP720にインストールした状態

とりあえず2つのネットワークコントローラとUSB(4つある)をインストールすればWindows Updateもできるようになり、楽な進行になるだろう。 USB3.0ルートハブにUSB2.0ハブがぶら下がっている格好であるためUSBマウスが動作しなかったのだが、USB2.0ハブのほうもWindows 7はドライバーを持っていなかった。

実際は全部をインストールしなくてもよかった(ある段階でCPU内蔵機能に関しては残りすべて導入されていた)が、Windows Updateと並行するのでなかなか複雑なことになる。

注意点としては、「Blink系ブラウザはシステムがフリーズする」。 原因はわからないが、とりあえずブラウザはFirefoxに限る、ということになりそうだ。導入作業でChrome, Vivaldi, Sleipnirなどを使って作業しようとするとハマることになる。

Windows 7 は動いたが、断念せざるをえず

「特定のタイミングでフリーズする」という問題が「ASIOなどでの音声再生時」に発生したことが致命的で、どうすることもできないので断念することとなった。

そもそもWindowsは音楽制作専用である。他にWindowsを使う機会はない。 厳密に言えばそこから派生した作業もWindowsですることになるが、中核になるのは音楽制作であり、それがなければWindowsはいっそなくても構わない。

だからASIOでの音声再生でフリーズする、というのは音楽制作に使用できないということであり、私としては全く価値がない。

記事としては「Windows 10 プリインストールなP720でWindows 7を動かす」というテーマだからここから先は重要ではないとも言えるんだけど、私としては10日程度を無駄に費やしてここからがスタート地点ということになる。

とりあえずDTM系ソフトウェアは2台に対してアクチベーションが可能なものが多いので、P720 Windows 7は諦めて、 Z400 Windows 7とP720 Windows 10に対して構築していく方針としている。

P720のWindows 7もASIOで落ちたりしていたのだが、アップデートで落ち着いたようだ。

SONAR X3は残念ながらWindows 10では動かない部分がある。 D-Proが動かなかったような気がする…D-Proは私の主力なのでなくなると大変痛い。

(D-ProはどのみちSONAR以外では利用できないようになっている)

DTMの話は続きとして書いていたのだが、主旨の全く異なる話になったため、分割する。

新品コンピュータを初期状態に戻せるようにバックアップ

これは何

新品コンピュータを購入したときに、完全に元の状態に復元できるようにするものである。

バックアップ手段は色々とあるのだが、もっとも確実かつ完全な手段が「ディスクの完全なクローンを得る」という方法だ。

その方法について紹介しよう。

なお、これは「やや複雑な手段をとっても効率的に、確実に元に戻せる手段を構築したい」という人向けであり、 そのような場合は諦めるという人や、考えたり努力することを回避したいという人は対象としていない。

新品ならでは

新品のコンピュータのディスクは、ファイルをコピーしているわけではない。 データを流し込んで複製しているのだ。

一般的には、先頭からWindowsシステム用の領域が書き込まれ、そして末尾にバックアップ用の領域があるのが一般的である。 バックアップ用の領域はパーティションが切られ、その中に格納されていることもあるし、パーティションレイアウトの末尾の後ろに配置される場合もある。

このため、データが書かれているのは先頭と末尾のみで、中間は全くデータがなく、0が書かれている。

128GBのディスクをフルクローンした場合は当然ながら128GBのファイルが出来上がる。 だがしかし、連続する0のデータは圧縮すると極めて小さくなる。そのため、このようなディスクイメージは圧縮することによって非常にコンパクトにできるのだ。

これが使用していたディスクであればうまくいかない。 データが記録されていない領域も0で埋められているわけではなく、ごちゃごちゃに記録された状態になっているため、フルディスクイメージを圧縮したときに極端に小さくなることはない。 そのため、完全性や確実性が低下してでもなるべくコンパクトな形式でバックアップするのが一般的なアプローチになる。(partimageやntfscloneなどを使うということだ)

書き戻しに関して

次のようにして取得したイメージは

$ dd if=/dev/sda | xz -z -c > /mnt/sda.img.xz

次のようにして書き戻すことができるのだが

$ xz -d -c /mnt/sda.img.xz > /dev/sda

この場合、128GBの「元のディスクに」書き戻すことを前提している。

サイズが違う場合どうなるかというと、ディスクが大きければパーティションがディスク全域ではなく途中で終了し、途中にリカバリー用の領域が置かれた状態になる。 ディスクが小さい場合はパーティションがディスクのサイズよりも大きく設定されてしまう。 この修正はちょっと大変だ(Windows上では難しいかもしれない)。

だが、実際のところリカバリー領域は書き戻しによって復元できているため、なくなってしまっても構わない、と考えられる。 そして、パーティションテーブルはパーティションの内容より前にある。 よって「先頭からデータのある分だけを復元すれば良い」ということになる。

このため、復元したデータは全部書く必要はなく

$ xz -d -c /mnt/sda.img.xz | dd of=/dev/sda bs=1024M count=10

のようにすれば良い(1024MB=1GiBを10回なので10GiB書き込むことになる)。 内容としてはどのみち残りは0なのであり、書いてもかかなくても同じだ。 ディスクサイズが異なる場合はパーティションサイズのみ変更すれば良い。

バックアップの仕方

Linuxで起動する…ところまでは省略しよう。 UnetBootinなどの使用は勧めないが。

まずはpartedでディスクを確認しよう

$ sudo parted -l

これによって各ディスク名(/dev/sdaなど)を得ることができる。 ここではバックアップ対象のディスクはsdaであるとしよう。 異なる場合は読み替えること。

リムーバブルディスクにバックアップ

モダンなLinuxシステムではリムーバブルディスクを接続すれば認識され、ファイルマネージャが起動する。

ファイルマネージャ上でリムーバブルディスクを開き、そこで右クリックから端末(ターミナル)を開く、とする。 そして

$ dd if=/dev/sda bs=64M of=recover.img

のようにする。 もし、圧縮も同時に行うのであれば

$ dd if=/dev/sda bs=64M | xz -z -d > recover.img.xz

のようにする。時間がかかっても圧縮率を上げるのであれば

$ dd if=/dev/sda bs=64M | xz -z -d -e -9 > recover.img.xz

とすれば良い。

なお、NASなどのネットワークドライブ上に保存する場合も似た手順で行うことができる。

ネットワーク上のLinuxホストに対して行う

もう、説明がいるのかどうかも怪しいが、計算機母艦となるLinuxを運用している場合は 受け取る側のLinuxホストではnetcatをインストールしておく。

そしてnetcatで通信を待機する。 次の例ではBSD netcatを使用する。

$ nc -N -l 22500 > recover.img

受け取り側で圧縮する場合は次のようにする。

$ nc -N -l 22500 | xz -z -d -e -9 > recover.img.xz

送り側はncなどはない場合が多いだろうし、ライブブートではインストールも難しい。 しかし、bashにはTCP機能があるため、これを利用する。

$ dd if=/dev/sda bs=64M > /dev/tcp/192.168.1.128/22500

注意点は、bashでなければならないこと、そしてファイルに書けばよいわけではなくリダイレクト機能を使わなければいけないことだ。

Windows PerlでUnicodeなファイル名を使ってはまる

業務でPerlでプログラミングしていたのだが、 Unicodeなファイル名で出力していたら文字化けする、という症状が報告された。

ミニマムのコードとしては以下の通り

use utf8;

open(FH, ">", "てすとふぁいる");
FH->print("テスト出力");
close(FH);

これはLinuxでは問題なく動作するし、それについては実際に動作させて確認もしてある。 ところがWindowsではこれが文字化けする。

まぁ、NTFSはUTF-16LEだもんね。 というわけで対応してみる。

use utf8;
use encode;

open(FH, ">", encode("UTF-16LE", "てすとふぁいる");
FH->print("テスト出力");
close(FH);

ところがこれでもだめである。

もちろん、次のようにすれば動作するのは知っている。

use utf8;
use encode;

open(FH, ">", encode("cp932", "てすとふぁいる");
FH->print("テスト出力");
close(FH);

おそらくWindowsがShift-JISをシステムエンコーディングとして使っていて、FATの日本語ファイルにもShift-JISを使っていたこととの互換性のためにシステムが何かをしているのだろう。 だが、その何かの結果うまくいかなくなってしまう。 日本語ファイルならShift-JISで書くという手もあるが、今回の場合お客様の要望としてはファイル名にはハングルを使う。しかしシステムは日本語Windowsである。

さて困った。

Win32::Unicodeという手もあるようだが、これがUnicodeでかけるのかは結構疑問だ。 さらに言えば、今回の場合かなりの数のファイルを書くため、速度低下が無視できない。

ちなみに、Ruby (RubyInstaller)だと

File.open("てすとふぁいる", "w") {|f| f.puts "テスト出力" }

ちゃんと動作したりする。

テストしたところ、Active Perlでも、Strawberry Perlでも問題は同じ。 しかしCygwin Perlだと起きない。 Cygwinを使うというのは初心者にとってちょっとハードルが高いので避けたい部分ではあるのだが…

なお、RubyはMinGWを使っているから大丈夫なのかもしれない。

お仕事ではPerlも使えます。 今じゃ使える人も少ないので貴重なのではないかと思う。 ご依頼、お待ちしてます!!

Discordを使ってみた

Discordというアプリを知っているだろうか。 まぁ、だいたいの人は知らないだろう。

簡単に言えばSkypeのようなメッセンジャー+通話アプリであり、Discordは大声で「Skypeを投げ捨てろ!!」と言っている。 だが、単純にSkypeのようなアプリというわけではない。 ものすごく乱暴に言えばSkypeのような機能と、Slackに通話機能をつけたものを一体化させたものである。

通話とメッセージングのソフトウェア(例えばSkypeやLINE)と比べると結構複雑だ。 これは「2つの側面がある」と考えてもらうと良いだろう。

Slack的な部分

だが、まずSlackを知らない人が圧倒的に多いだろうからそこから説明しよう。

Slackは簡単にいえば共同作業用のチャットツールである。 「Slackのアカウント」というのは基本的に存在せず、「チーム」というのがその単位となる。 「チーム」はメンバーを招待することができ、招待された人はそのリンクを使ってメールアドレスを登録するとそのチームのメンバーとなることができる。 チームでの活動は、チームのアドレス、またはチーム名とメールアドレスを使って行う。

メンバーにはプロフィールがあるが、プロフィールもチームごとに設定する必要がある。 逆にいえば、チームの性質によって異なるプロフィールを使うことができる。 メンバーにはロール(役割)を与えることができ、メンバーを追放する、チャンネルを作成するなどの権限を分けることができる。

チームにはチャンネルがある。 全体の発言は#generalというチャンネルで行うが、チャンネルを作成すれば、話題を分けたり、閲覧できるメンバーや発言できるメンバーを制限することができる。 基本的には議題ごと、あるいはチーム内のメンバー区分ごとにチャンネルでやりとりをすることになる。 メンション機能もあるが、これは特定の人だけにメッセージが届くわけではなく、特定の人に通知を飛ばすだけである。 ユーザーグループというのもあるが、これはメンションを飛ばす時に複数人をまとめて書いたり、チャンネルに加えるときにまとめて書くための機能。

Slackは主にIT企業の業務で使われていて、ビジネスツールというニュアンスが強い。 社内でのやりとりとしてはメールなんかよりよっぽどいいのは確かだと思う。

ただ、逆に言えばそれ以外では全然使われていない。もともとゲーム用のツールだったなんてことは、ほぼ忘れ去られている(私も知らなかった)。

しかし、実のところ、マメ派のカップルにはかなり良いと思うのだ。 デートの予定やイベントの計画、今日の買い物といった話題をLINEでやりとりしていると、どんな話をしていたか確認するのが大変になってくる。 LINEはログをさかのぼりにくいし、ノートに立てていればいいのだが、LINE for Chromeはノート機能がなかったりするし、明確に議題を定めてから話がはじまるとは限らない。 そもそもノートも増えてくると議論には向いていないことになる。 なので、Slackで#date, #event, #todoなどチャンネルを作っておけばスムーズにやりとりや確認ができてとても便利だ。

ところが、LINEを投げ捨ててSlackにいけない理由がある。 まず、割とSlackの通知はまちまちで、あまりリアルタイムではこない。マメ派カップルにとっては割と致命的だ。 しかも通話機能もない。ラブラブなカップルにとってはますますもって致命的だ。

ここでDiscordである。

DiscordはこのあたりはだいたいSlackと同じだ。 大きな違いとして、Slackで「チーム」と呼んでいるものは「サーバー」という名前に変わっている。 そして、通話機能がある。

通話機能がちょっと独特で、1名でも通話をはじめられる。 チャットのように(特にIRCのように)、「通話チャンネルに入っている人が自動的に通話する」という方式だ。 途中参加もできるし、途中離脱もできる。というか、最後ひとりになっても勝手には切れない。 通話チャンネルも複数作ることができる。

また、雑音を積極的に検出し、しゃべっていない時はマイクを切るようになっている。 プッシュトゥトークにすることもできるので、大勢参加していてもノイズまみれにならないようになっている。 これは便利だ。

また、SkypeやHangoutsのグループトークにない機能として、ユーザーごとに音量設定できる。 声の小さい人を大きく、声の大きい人を小さく。好きな人を大きく、嫌いな人を小さくすることが可能だ。

そして重要な違いとして、Slackと違ってちゃんとすぐに通知がくる。

Skype的な部分

だが、Discordの場合はユーザーアカウントがある。

そのため、複数のデバイスでDiscordを使用した場合、自分が参加しているサーバーはすべて一覧されるし、招待するときはユーザー名とDiscord番号の組み合わせで行う。 フレンド登録もできる。プロフィールや名前もサーバーごとというわけではない。

さらにフレンド登録すると、ダイレクトメッセージとダイレクトコールが可能になる。 これはSkypeやLINEのように、人単位でメッセージを飛ばしたり、通話したりすることができるのだ。

ただし、Skypeにあるビデオ通話や画面の共有は、実装予定の機能となっており現在はない。 これを書いている今日テストがスタートしたようだが。

また通話手順がちょっと複雑だ。Discordがフロントにある場合は普通に通話がかかってくる。 ただし、通話をかけた側は通話画面にはならず、右下にあるVoiceの矢印で開かなければチャット画面での通話になる。 これは通話を受けた場合も同様。

また、通話を切っても残った側の通話は自動的には切れない。これはサーバーの場合と同じである。

なんらかの理由で最初からチャット画面に変遷した場合(通知から飛んだ場合などだ)、まずDM画面にいき、JOINをタップしたあと、Connect to Voiceを選択しないと通話に参加できない。 これはなかなかややこしい。

グループDM機能があり、これは招待もなにもなく、グループDMを作成すると招待された全員が自動的に参加する。 グループDMはフレンドリストに登録される。グループから退出したり、グループに追加で招待することは可能。 退出してもすぐ招待されるようなことが起きるとちょっと面倒。最後のひとりになってもグループ自体は消えない。

スタンプ機能はない。写真埋め込みは可能。

Slackに対するメリットとして、日本語に対応している。 Slackが便利でもインターフェイスは英語に限られていたSlackは敷居が高いという人が多かった。

また、ちゃんとしたクロスプラットフォームアプリがあるということも大きい。Slackの場合はアプリケーションもいまひとつだ。

また、Slackのように有料プランがあって、機能が制限されているというわけでもない。

もっと便利な部分

Discordはゲストログインが可能で、サーバーを作ってアドレスを伝えれば、相手がDiscordのアカウントを作らないまま通話することができる。 しかもDiscordにはWeb版があるので、共通の通話可能なアプリがない、あるいはアカウントを教えたくない場合でも通話することが可能だ。 かなり特殊な要求だとは思うが。

残念な部分

通知のオンオフはできるのだが、通知音は変更できない。

ゲーマー向け

Discordがゲーマー向けということで、ゲーマー以外で使っている人をみかけることがない。

オンラインゲームでは多人数協力プレイができたりするので、通話しながら意思疎通ができたほうがスムーズにプレイできるのだ。 従来はSkypeを使っていたようだが、最近SkypeがどんどんダメになっているのでDiscordに移っている人が多いらしい。

だが、微妙にバグはあるが、SkypeもLINEもXMPPも投げ捨ててDiscordで生きていけるくらいには便利である。 実用上の話であって、かわいいスタンプが好きな人は辛いかもしれないが。

ゲーム中は特に言うことがなければ黙っているだろうし、発言者のみ聞こえるようになっているのはこのためだろう。 割とキーノイズもするわけだし。

バグ

3つのバグを発見した。

通話通知がおかしい

P02E(Android 4.1.2)だと、通知音が通話でもメッセージのものになってしまい、一度鳴るだけで終わってしまう。

アプリを殺すと通知されない

CM Securityでクリーンアップしてしまうと通知は届かない。 これはNotifications wake up device.をオンにしていてもダメだ。

なかなか恐ろしい通話ループ

  1. AがBに書ける
  2. Bが出る前にAが切る
  3. Bが通知エリアから通話に出る
  4. BにAからかかってきたと表示される。「出ない」ことができない
  5. Bが通話に参加するとAに呼び出しがかかる。こちらも「出ない」ことができない
  6. BがAが出る前に切ったら立場を入れ替えて3にループする

みんなDiscordしようぜ

良い点

  • SlackとSkypeの合体とか超魅力
  • 日本サーバーのないWebRTCとは思えないほど音が良い
  • Windows, Mac, Linux, Android, iOSに対応
  • ちゃんと通知される
  • 画像も貼れる
  • グループDMやグループ通話もできる
  • Skypeよりはるかに軽い
  • 話題を分けて整理することができる
  • グループの中で特定の人に呼びかけることができる
  • 運営が透明で技術的にも透明
  • 登録も簡単でゲスト利用も可能、個人情報も要求されない

悪い点

  • 若干複雑
  • ちょっとバグがある
  • 通知音の設定ができない
  • 個人情報もいらないので尻尾切りのような残虐行為が気軽にできてしまう
  • キモいスタンプが使えない

Windows 10について

悪名高いWindows 10をある程度使ってみている。
とりあえず、それで思ったことをまとめてみよう。

OSとしての進化

一般の人の中にはOSの進化を頑なに認めない人がいるが、元々Windowsが(それ以前にMS-DOSが)ひどい代物である以上、修正すべき点は多い。低い生産性は人類の進歩を妨げさえする。

だから、Windowsはどんどん改善してもらわないと困る。

純粋にOSとしての点をみれば、それが正しいかどうかはともかく、かなり良くなっている。
「ここはこれがおかしくて、こうあるべきだからこうしてほしい」という点は山ほどあるのがWindowsだが、その望まれているあるべき解決方法ではなく、なぜか全然違う方法で提供して、「なんでそうなった!」と突っ込まれるのは恒例なのだが、今回もそのような変更点は非常に多い。

いつまで経ってもfork(2)をサポートしないこととか、まともなシェルを用意せずに、明らかにシェル、端末として使いようのないPowershellを導入したまま放置していることとか。

私はWindowsアプリは書かないし(書くとしてもクロスプラットフォームレイヤ上で)、コアな開発者でもないため感じることは少ないが、「クロスプラットフォームレイヤのWindows環境下での制約」という形で困る。

そういう内部的なことは置いておくとしても、Windows7以降で改善された点として

  • ISOファイルのマウントが可能になった(Win8)
  • 通知機能がまともになり、通知履歴が見られるようになった
  • すべてのUI部品が(一部は仮想的に)スケーラブルになった
  • Win + cursorによるquick tile機能が8方向タイルに対応した(現在位置に基づくタイル。Cinnamonと同じ)
  • IMEスイッチャが搭載された(Windows+Space)

使い勝手

Windows 10の使い勝手そのものは改善しているといっていい。

UIについて考えてみると、基本的な部分はWindows XPの時点で既に完成されていた。Windows 95の時点で基本的な部分はできあがっていたが、見た目がチープであることと、たどりにくい階層構造が難点だった。
Windows XPではテーマ制を導入(Visual Styleの変更はパッチ当てが必要)、簡易なものではあるが、デスクトップ検索も追加している。
また、ウィンドウのタイル表示も可能になった。

Windows Vistaでさらなる改良が行われたが、本質的な進化というよりも、変化であるという面も大きかった。
Windows 7でアイコン式のタスクバーになったが、これも元よりそうであるべきだったというものではない。選択できるなら機能追加だが、選択できないので単なる変更だった。

明らかに改良された点は検索機能が強化され、ポータブルアプリの起動にランチャが不要になったという点だが、スタートメニューの構造やタイルの仕様変更などは、変更でしかないように感じられた。

ちなみに、Windows 7からはWin + Cursorによるquick tileが可能になった。ただし、Windows 7では左右のみだ。

Unix系デスクトップはこの時期、何を取り込んだのか先行したのかわからない機能を数多く導入している。quick tile機能はKDE4, Cinnamon 1.0の導入なので恐らくWindows 7のほうが早い。入れ替え式階層メニューはWindows Vistaが早いが、KDE Plasma 4のものはまた違うし、Cinnamonもさらに違う。また、MacのExpose相当の機能はCompizが入れたため、Windowsよりも早い。

だが、Unixデスクトップで考えても、機能的にはGNOME 2あるいはKDE3で既に完成していた。これらはWindows 95のUIを参考に発展したものであり、その後は細かな機能追加に過ぎないと感じている。

変化を求めている部分もあるし、変化に応じている部分もある。だが、どちらかというと、Microsoftは変な先読みをしている、というよりも自分がスタンダードを作るのだという妙な気負いがある。

それが、Windows 8でのスタートメニューを廃止してModarn UIを導入したことにあらわれているのだろう。奇抜だが、真新しさの演出と、Windowsがやればそれが普通になる、という考え方に基づくのだと思う。

結果として失敗した。実際に問題点が多く、使いにくかったということもあるが。

Windows 10のスタートメニューはその修正だと考えていい。スタートメニューとModarn UIを一体化させたものは、確かにある意味では使いやすいが、目新しいものであるというよりは、Androidスマートフォンで見慣れたものになった。

Windows 8からのフラットUIもより推し進めてはいるが、やはりデザイン的にリッチさに劣るように(個人的には)感じられるし、特に見やすくなったわけでもないため、単なる変更だろう。

機能が一体的に提供されるようになったために、それに従うかどうかだが、「Microsoft製のOS(Windows)で、Microsoftが推奨する音声エージェント(Cortana)を使用し、Microsoftのサーチエンジン(Bing)を介して、Microsoftのブラウザ(Edge)で開く」のであれば使いやすいのだ。

だが、これはAndroid同様のリスキーな面を持っている。

ケータイ化・個人情報商売という悪夢

Windows 10において問題なのは使い勝手ではなく、この2点だ。

Windowsは統合的な環境になった。基本部分ではなく、ユーザーのすべてを「Windowsが」提供しようというのだ。

そこには、メールやスケジュール、あるいはSkypeやTwitter, LINEさえも含まれる。
WindowsストアアプリはWindowsから独立ではなくなった。言い換えると、Windowsストアアプリに提供されている情報はMicrosoftにも与えられる、という形になった。

Windowsに、言い換えればMicrosoftに依存して生活するのであればこれは便利な機能だ。もちろん、Windows Phoneも一緒に。検索エンジンはBingだ。

だが、これはありとあらゆる情報的ライフライン及び情報そのものをMicrosoftに掌握させることを意味する。事実、Windwos 8.1ではデフォルトでオフだった、利用状況や入力内容の送信など、プライバシー上重大な懸念のある機能が、全てオンの状態になるようになった。

しかも、コアな利用状況のレポートは、送信をオフにするとWindowsが動作しないという理由をつけて、必ず送信させる。

ありとあらゆる情報を収集し、個人を監視するような行動は、これまでGoogle及びAppleがとってきたものだ。それと比べるとMicrosoftは穏やかなやり方をしてきた。

だが、今回Microsoftは積極的にプライバシーを手に入れようとしている。Web, Twitter, Facebook, Skype, LINEはもちろん、電話からメールまで全てだ。

それに合わせて規約も、メールの内容を読むというものになった。
また、利用には基本的な部分でMicrosoftアカウントと紐付ける必要がある。完全に個人を特定し、追跡できるようにするものだ。

これらのプライバシーに対する重大な懸念を、私は今回最も問題視する。

また、ケータイの場合はそうした統合的な機能を求める傾向があるのだが、Windows 8で学んだはずの「スマートデバイスとの融合は不自由を生む」ということを無視して、より融合を進める方向になった。

電話だのSNSだのといった機能は、Skypeと連動させることでパソコンでも利用可能なのかもしれないが、明らかにコンピュータの使い方としてそれは重要な部分ではない。それを中心に据えられるのは非常に迷惑だ。

また、パーソなりゼーションを進め、SNSの情報を常に表示し、ニュースを表示し…といった機能は、ビジネスシーンで使われるWindowsということを一切無視しているとしか思えない。

その意味で、ものすごく使いにくくなった。

KDE Plasmaも、KDEアプリケーションを使ってこそという部分はある。KDE PIMとAkonadiだ。
だが、使わないという選択肢はある。その場合、Plasmaを使う魅力は大いに損なわれてしまうのだが、普通のデスクトップ環境としては使うことができる。

今回のWindowsは、その選択権がない。ちなみに、しょっちゅうデフォルトのアプリをMicrosoft製のものに変えられるようになった。ブラウザがEdgeにされるのは日常茶飯事だし、IMEはデフォルトを完全に無視してMS-IMEを選択する。

アカウント

Windows 10ではアカウントが、コンピュータ上のローカルアカウントとMicrosoftアカウントの二種類がある。

ローカルアカウントをMicrosoftアカウントに接続することで、ローカルアカウントとして使いながらMicrosoftアカウントを要求するストアアプリを利用するといったことも可能だ。

だが、Microsoftアカウントでは、ログイン(今回からローカルアカウントでも「サインイン」という表現になった)時にオンライン認証をする。
そのため、インターネットに接続されていなければコンピュータを利用すること自体できなくなった。

デスクトップアプリとストアアプリ

ほぼ全てのプログラムに「デスクトップアプリ」と「ストアアプリ」という区別ができた。

Windows 8にもあった区別ではあるが、ストアアプリを使う機会が設定しかないということもザラにあったため、目立たなかった。

今回、多くの機能がストアアプリに移行したため、この区別が重要な意味をもつようになった。また、ストアアプリがウィンドウ表示できるようになったというのも大きい。

これにおいて重要なのは以下の点だ。

  • ストアアプリは事実上Microsoftが全権を持っている
  • ストアアプリではIMEがストアアプリに対応しているMS-IMEしか使えない
  • ストアアプリはオンラインアカウントとひも付けて実行される

表面から消失した機能

コントロールパネルが隠されてしまっている。
これは検索から起動できる。

これは、ストアアプリの設定を使わせるということなのだろうが、全項目があるわけではなく、重複があったり、片方にしかないものがあったり、表現に整合性がとれていなかったりと非常にわかりにくくなった。

設定に関してはgodmodeも追加された。これは、コントロールパネル的なデスクトップアプリのフラット版だ。

まだ、ログオフがメニューから消失した。
Windows 10はオンラインアカウントでのログインを原則としているため、サインアウトに変更されている。

logoffコマンドが存在するため、logoffで検索すれば抜けられる。あるいは、CAD(Ctrl+Alt+Delete)からでも良い。

総括

OSとしては妥当に進化した。あまりにもスマートフォンを意識しすぎて、デスクトップコンピュータとしての使い勝手が著しく損なわれた程度で、別に悪くなったとは言わない。

全てはログインを「ログオン」という表現から「サインイン」という表現にかえたことにあらわれていると思う。

今やWindowsを使うということは、Microsoftのサービスを利用するということとイコールなのだ。

これまではWindows上で他のサービスを利用することも当たり前だった。だが、これからはそうではない。WindowsはMicrosoftのサービスを使うことを強要する。Appleがそうしたように、ロックインして競合する他のサービスの利用を不能とする可能性もないわけではない。

既に、Windowsを起動すれば当然にGoogle Chromeが起動し、Google日本語入力で文章を打ち…ということはできなくなった。Edgeに変更された設定を戻し、Google日本語入力に切り替えなくてはならない。

また、Windows上で行う作業は当然に秘密が保たれていると信じていただろう。これからはそうではない。Windows上で行う作業は、須くMicrosoftが知りうるものなのだ。

こうしたことをどのように考えるかによって、Windows 10が良いものか悪いものかの判断ができるだろう。

JP106キーボードでwindowsキーを使う

UnicompキーボードはダイヤテックがJPキーボードを取り扱っているのでJPキーボードはあるのだが、日本語106キーボードであり、Windowsキー、メニューキーがない。

Linux上でこの問題を改善したい。

まず、Cinnamonの場合、キーボード→レイアウト→オプションで左Altと左Super(Windows)を入れ替えるというものがある。これを使えば、右Altがあるため、Superの利用が可能になる。

だが、慣れた位置にAltがないことに戸惑う場合もある。109キーボードの場合、AltキーはSuperキーの右側にあるため、この位置にあり、私はあまり使わない無変換をAltキーにする。

Plasmaの場合はこの法歩うが使えない。AltキーをSuperに当てても、ウィンドウマネージャにおいてはAltキーとして動作するためだ。

そのため、無変換、Pause、ScrollLockのいずれかをSuperキーとして使うのが良いのではないか。

これらの設定をまとめたエイリアスがこちら。

# Xmodmap
alias xmapmhn2alt='xmodmap -e "keycode 102 = Alt_L"'       # Use Muhenkan as Alt key
alias xmapmhn2sup='xmodmap -e "keycode 102 = Super_L"'     # Use Muhenkan as Super
alias xmappus2sup='xmodmap -e "keycode 127 = Super_L"'     # Use Pause as Super
alias xmapscl2sup='xmodmap -e "keycode 78 = Super_L"'      # Use ScrollLock as Super
alias xmappus2hyp='xmodmap -e "keycode 127 = Hyper_L"'     # Use Pause as Hyper
alias xmapscl2hyp='xmodmap -e "keycode 78 = Hyper_L"'      # Use ScrollLock as Hyper

キーコードが不明な場合はxevで取得しよう。

cdrdaoでディスク吸い出し→DAEMON Tools Liteでマウント

Gist

ゲームソフトをいつも手元に置いておくのは邪魔なのだが、ゲームで起動するためにディスクが必要なものがあったりする。

シングルトラックならddなりcatなりで良いのだが、オーディオトラックを含むマルチトラックのものはそうはいかない。

吸い出しはLinuxでして、Windowsで仮想ディスクとしてマウントできるようにしたい。

基本的な方法としては、「DAEMON Toolsでcueファイルをマウント」であるらしい。cueファイルはトラック情報を記載したテキストファイルで、binファイルとセットになっている。

Linuxでのディスククローニングにはcdrdaoを使用する。これは、従来オーディオディスクでも使用している。

だが、cdrdaoはbinファイルとtocファイルを生成する。tocファイルをcueファイルに変換するtoc2cueを使用する必要がある。

だが、それだけではエンディアンに違いにより、DAEMON Toolsでマウントするとオーディオディスクはホワイトノイズのみとなってしまう。この解決のためddのconvオプションを使用する。

さらに、異なるパスに対して吐くと、binファイルのパスが問題になるため、パス記述を書き換えるsedを加えた。