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を加えた。

Linux的にWindowsをバックアップしてみる

ClonezillaやMondo Rescueを使えば一発だし簡単なのだけれど、ここはより手軽で確実な方法を模索する。

Clonezillaでいいのであれば(最大の欠点は、より小さいディスクへの復元ができないことだが)、Clonezillaがわかりやすく容易だし、Mondo Rescueも工夫次第でかなり柔軟だ。

しかし、今回はよりテクニカルかつ原始的に解決してみる。

バックアップを考える

ものすごく単純なバックアップ方法としてddがある。この場合、ディスクに記録されている全ビット情報をクローンする。完全なクローンが出来上がるが、20GBを使用している2TBディスクのクローンのために2TBの領域が必要となる。

これを緩和する方法として圧縮があるが、この場合使っていないが書き込まれている「ノイズ」が多い場合は有効に小さくならない。

NTFSであればntfscloneというプログラムによって、必要最低限の領域で正確にクローンができる。特殊イメージ形式は非常にコンパクトだ。

ここで、Windowsディスクの特性と、Windowsシステムの特性を見てみよう。

$ socat tcp-listen:20083 STDOUT
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 625142448 sectors, 298.1 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9AED5CE5-3A6D-469A-BCB0-51F33E062B6F
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 625142414
Partitions will be aligned on 2048-sector boundaries
Total free space is 2669 sectors (1.3 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          206847   100.0 MiB   EF00  EFI system partition
   2          206848          468991   128.0 MiB   0C01  Microsoft reserved ...
   3          468992       625141759   297.9 GiB   0700  Basic data partition

これはUEFIシステムのWindows 7だ。

GPTが使用されており、sdb1がUEFI(ESP)で、FAT32またはFAT16である。

sdb2がMSR。sdb3がシステムパーティションだ。

ESPが2048ブロックから開始している。これより手前部分、GPTとUEFIであればなくてもそれほど苦労せずに復元できると思うのだが、一応残しておいたほうがいいだろう。

0, 1, 2はサイズが小さいため、単純にddでもそれほど問題ないだろう。

システムパーティションはWindows XP以降はNTFSであり、ntfscloneが利用可能だ。

Windowsのシステム起動については、ディスクレイアウトがバックアップ時と同じである必要がある。そのため、手前ブロックを含めて復元して同じレイアウトを再現する必要がある。

ただし、ディスクサイズに対してはある程度柔軟だ。大きいシステムパーティションが最後方にあるため、パーティション3を拡張したり切り詰めたりした上でntfscloneで復元することができる。MBRからGPTへの変換などは、同時にはできないと考えたほうが良い。

転送を考える

バックアップ先は色々考えられるだろう。光学ディスクへのバックアップ、外付けハードディスク、あるいはNAS。

今回の場合は、高性能でストレージ容量の大きいメインデスクトップへと転送する、という方法をとる。デスクトップとラップトップを併用している人などにとっては一般的な要求だろう。

ここでLAN接続の強みが出る。ネットワーク経由で転送することができ、USB2で転送するよりもはるかに速い。
ちなみに、USB1.1を採用するような古いマシンの場合でも通用する方法であり、100BASE-TXあたりのネットワークに接続できる(外部カードを使う方法を含めて)のであれば、USBドライブよりもはるかに高速だ。汎用性がある。

簡単さで考えればSSH経由が最も楽だ。例えば

$ ssh desktop.local -- sh -c 'cat > backup-sdb1' < /dev/sdb1

ただし、SSHによる負荷を嫌うのであれば、rshのほうがいいだろう。しかし、あまり最近はrshを許容していないのではないだろうか。

ほかにもZshを使うとか、FTPを使うとか、FTPFSを使うとか、方法は様々なのだが、ものすごくシンプルに考えると標準入出力渡しが良い。

nc(netcat)だ。

しかし、単純にサーバーで

$ nc -l -p 10000 > sdb1.img

クライアントで

$ nc desktop.local 10000 < /dev/sdb2

としても、転送終了でコネクションを切ってくれない。切るだけであれば、クライアントを

$ nc -c desktop.local 10000 < /dev/sdb2

(GNU netcatの場合)とすれば良いのだが、この場合ちゃんと転送が終わってから切ってくれないため、ちゃんとファイルが転送されない(!)

これを解決するには、クライアント側はsocatを使うようにすれば良い。

$ socat STDIN tcp:desktop.local:10000 < /dev/sdb2

別にサーバー側もsocatを使って良い。OPENよりもSTDOUTのほうが安定している。

$ socat tcp-listen:10000 STDOUT > sdb2.img

実際にやってみる

まずはオフセット分をコピーする。サーバー側:

$ nc -l -p 10000 > sdb0.img.xz

クライアント側:

$ dd if=/dev/sdb bs=512 count=2048 | xz -zev -T 4 | socat STDIN tcp:desktop.local:10000

このケースにおいてはクライアントに余力があるため、サーバーに余計な負担をかけないよう、xzはクライアントで行っているが、古いマシンならばサーバー側でしたほうがいいだろう。:

$ nc -l -p 10000 | xz -zev -T 8 > sdb0.img.xz

クライアント側:

$ dd if=/dev/sdb bs=512 count=2048 | socat STDIN tcp:desktop.local:10000

sdb1以降は少し楽。

$ xz -zev -T 4 < /dev/sdb1 | socat STDIN tcp:desktop.local:10000

sdb2も同様。sdb3はntfsclone。

$ ntfsclone --save-image --output - /dev/sdb3 | socat STDIN tcp:desktop.local:10000

NTFSクローンでもサーバー側ですることは変わらない。

クライアント側socatの代替

Pythonもやろうとしたが、辛いので諦めた。
とはいえ、この4つに対応していれば、だいたいの環境でいけるだろう。

もちろん、LuaやJavaScriptやPythonが好きな人は、即席でプログラムを書いても構わない。

Zsh

TCP Function Systemを使う。

$ autoload -U tcp_open
$ tcp_open desktop.local 10000
$ tcp_send -c < /dev/sdb1
$ tcp_close

TCP shootのほうが簡単

$ zmodload zsh/net/tcp &&  autoload -U tcp_point
$ tcp_shoot desktop.local 10000 < /dev/sdb1

あるいはzsh/net/tcpを使っても良い

$ zmodload zsh/net/tcp
$ ztcp -d3 desktop.local 10000 && ( cat /dev/sdb1 >&3 ) && ztcp -c 3

Perl

$ perl -MIO::Socket::INET -e 'BEGIN { $sock = IO::Socket::INET->new(PeerAddr => "desktop.local", PeerPort => 10000, Proto => "tcp")} while (read(STDIN, $buf, 524288)) { print $sock $buf }' < /dev/sdb1

Ruby

$ ruby -rsocket -e 'sock = TCPSocket.open("desktop.local", 10000); buf = "x" * 524288' -e 'sock.write buf while STDIN.read(524288, buf)' < /dev/sdb1

Bash

意外すぎる必殺技。Zshよりも簡単だったりするので恐ろしい。

$ cat /dev/sdb1 > /dev/tcp/desktop.local/10000

ただし、Bashはクライアントのみ。

書き戻しのnetcat代替

バックアップを使って書き戻す場合、bashが使えない。

仮にリモート側で

$ xz -dv sda0.img.xz | socat STDIN tcp:laptop:10000

とした状況としよう。

netcat

まずは基本

$ nc -l -p 10000 > /dev/sdb

socat

こちらも簡単

$ socat tcp-listen:10000 STDOUT > /dev/sdb

Zsh

$ zmodload zsh/net/tcp &&  autoload -U tcp_point
$ tcp_point 10000 > /dev/sda

もしくは

$ zmodload zsh/net/tcp
$ ztcp -ld3 10000 && ztcp -ad4 3 && cat <&4 > /dev/sdb && ztcp -c 4

Perl

$ perl -MIO::Socket::INET -e 'BEGIN{$l=IO::Socket::INET->new(LocalPort=>10000,Proto=>"tcp",Listen=>5,ReuseAddr=>1); $l=$l->accept} while (read($l, $buf, 524288)) { print $buf }' > /dev/sdb

Ruby

$ ruby -rsocket -e 's = TCPServer.open(10000).accept' -e 'buf = "x" * 524288 ' -e 'write buf while s.read(524288, buf)' > /dev/sdb

Bash

Bashはリスナーになれないので、リモート側を反転させる必要がある。

$ xz -dv sda0.img.xz | socat STDIN tcp-listen:10000

これを受け取る。

$ cat /dev/tcp/desktop.local/10000 > /dev/sdb

もちろん、この「クライアントがソケットを読む」デザインを他に適用しても良いのだが、多分あまりメリットがない。

この方法の意味と価値

まず、簡単の意味を考えなくてはならない。

この記事の内容は、基本的な知識を網羅していることを前提としている。当然ながら、システムバックアップをするためにLive Linuxを使おう、と発想するくらいには。

だが、理解するのは非常に容易だ。パイプとリダイレクションという、Unixerとしては初歩知識さえあれば十分理解できるレベルだ。

一般の人には難しいだろうと思うが、エンジニアを名乗るのであればこの程度の話は通じて然るべきだと思う。少なくとも、私はそう期待している。

「理解する気はないが、模倣して実行したいだけ」という場合は、わざわざこんな複雑な手順を取る必要はないと考えるだろう。実際、他にもバックアップソリューションはあるのだし、たとえコンピュータの後ろに手を伸ばしてでも、あるいは2度コピーする手間が生じたとしても、そのほうが良いと考えるだろう。

実際、即時参照できるネットワークドライブがあるにも関わらず、USBメモリーで渡せと言う人を、私は身近に知っている。

だが、思ったようにいかなかった時はどうすればいいだろう?例えば、Clonezillaが小さなディスクに復元できると思ったのにいざとなったらできなかった時だ。

特定のソリューションに依存するのは非常にリスクが高い。できるだけ汎用性のある方法で、かつ自分が理解できるもののほうがいい。

実際問題として、Mondo Rescueを使うという選択肢を取った場合は、バックアップ先をどうやってマウントするか、という問題が生じてしまう。

また、圧縮したいが、クライアントはリソースが非常に少ないのでできない、という場合に、一旦ディスクに保存してからの圧縮という方法をとらずに(恐らく復元する時は伸長してからの復元ということになる)行いたいといった要求に対応するのも、標準入出力を使うのであれば非常に容易だ。

技術を使う、知識を使うとはこういうことではないか。

特定の目的のために知識が技術を身に着けたところで、できるのはそれだけだ。それは単に慣れた、覚えたというだけの話であり、「知」ではないと思うのだ。

Windowsをアップグレードする前に元に戻せるようにスナップショットを取っておきたい、というのはごく当たり前にある状況だ。そのための機材が揃わないということも。

原理、物事の仕組みを理解し、方法を考えられることは非常に重要だ。すべてお膳立てされ、整った環境でなければできないのか?それがスキルなのか?

最低限ひとつの方法を知っていて、それで目的が達成できるということは有意なことだ。しかしそれは、楽をしようとして知らず犠牲を払っているということでもある。

覚えたひとつの方法でうまくいかない時、あるいは適切でないとき、適切な別の方法が考えられるか?そこが知なのだろう。

では、すべての人がそうした知識を持たなくてはならないのだろうか?私は、否であると考える。人には無限の時間が与えられているわけではない。知の獲得を志すことを是としても、そこにコンピュータに対するものが含まれているとは限らない。

だから、私の仕事があるのだ。ここに知がある。そして、それは独占するものではなく、分け与えられるべきものだ。私も生きなければならないので、無償で、というわけにはいかないが。

だからこそ、用意した方法が通用しない、しかし知を蓄える労力を払うべきという判断ではない、というのであれば、その時にこそ私を頼ってほしいのだ。

それだけの時間もお金もかけているのだ。それだけ真剣に努力を重ねてのものだ。

もちろん、自ら解決するための力をつけるために、私の手を借りてくれたって構わない。先人の肩を借りてその先までいくのは当然のことだ。このニュートンだって巨人の肩に乗るのだから。

Windows Updateに果てしなく時間がかかる

Forza Motorsport 6 Apexが登場するというので、

  • OEM版 Windows XPをP2VでWindows 10で動作しなくなるアプリの動作環境を確保
  • Windows 7のスナップショット取得
  • Windows 10にアップグレード

という手順を考えた。

Windows XPのP2Vのためのスナップショット取得などの作業とWindows7のバックアップ手順などは後で記述することとして、今回はWindows 7をWindows 10にしようとしたら、Windows Updateがチェックするにもアップデートするにも果てしなく時間がかかり、Windows 10にできそうにない。

Microsoftは何がしたいのか。

どうもこれはKB3138612のせいである模様。それが悪いのではないのかもしれないが、このアップデートからそうなっているようだ。

しばらくアップデートせずにおいておいた人からの報告が多い。私の場合、2月が最後だったため、2ヶ月半ほどアップデートしていなかった(そもそもWindowsを起動することが稀だから)。

で、KB3138612を入手して適用しようとしたのだが、これまた果てしなく時間がかかる。

で、もう少し調べていたら、オンラインではスタンドアロンインストーラも結局チェックに行くため時間がかかる模様

というわけでLANケーブルを抜いて適用した。

だが、これでも終わらないので、WindowsUpdateAgentの最新版(7.6), KB3050265も導入。

それでもダメで、修復してもダメなので、一旦Update前までロールバック。Windows Update AgentとKB3138612を先に導入し、更新チェックで放置。1時間40分ほどでチェックを完了した。

恐らくは最初に更新して時間がかかりすぎ、再起動したのが原因だが、ロールバックなんて普通はできない。更新途中での再起動も普通に考えられることだ(自動アップデートの場合もあるわけだし)。それで壊れるなんて、設計としておかしすぎるだろう。

アップデートやセットアップに何日も潰したことも数え切れない。今回も結局一日がかりだ。ほんと、Windowsは嫌いだ。Microsoftは何がしたいのだろう。

FM2+Killer GodavariとXeon W3565+Quadro2000マシンを比べてみた

コンピュータの仕様

FM2+88X Killer

  • AMD A10-7870K APU
  • DDR3-1600 8GB RAM *4
  • 320GB 2.5inch HDD SATA2 (Windows System)
  • 256GB ADATA SSD SATA3 (Linux SYstem)
  • UEFI Boot

hp Z400

  • Intel Xeon W3565
  • nVidia Quadro 2000 Graphics
  • DDR3-1366 2GB ECC Unbuffered RAM * 2 + DDR3-1600 4GB Non-ECC Unbuffered RAM * 2 (DDR3-1066 driven)
  • 250GB Samsung 3.5inch HDD SATA2 (Windwos System)
  • 120GB Corsair SSD SATA3 (SATA2 Connection) (Linux System)
  • Legacy Boot

Windows Experience Indexによる比較

項目 FM2+Killer Z400
CPU 7.4 7.5
Memory 7.4 7.5
3D Graphics 6.8 7.0
2D Graphics 6.8 7.0
Disk 5.9 5.9

「Z400のXeon W3565+Quadro2000のほうがわずかに速い」というのは、ベンチマークの通りで面白みもない。

だが、見るべきところはある。

まず、メモリーもz400のほうが速い、ということだ。
メモリーはz400は1066で、FM2+Killerは1600で動作していて、FM2+Killerのほうが速いはずだ。
しかも、FM2+Killerはデュアルチャンネル構成だが、z400はトリプルチャンネルだが2種類を2枚ずつで機能していない。
それでもメモリアクセスはz400のほうが高速だという。

さらに、グラフィックスにしても、3DグラフィックスはDirectX9でテストされるが、OpenGLに特化していて3Dグラフィックスを得意としないQuadroであるにもかかわらず、Radeon R7を内蔵したGodavari APUに優るという。

AMDという第二の選択に対して、Intel+nVidiaという定番構成がいかに強力かがよくわかる。
理屈では見えてこない差があるようだ。

LinuxでのCPU処理

実用的かつ単純な方法として

time xz -zc image.iso > /dev/null

によって比較。これは、今のところxzが最も時間がかかっているためで、imageはtmpfs上にDebian jessie DVD 64bit(debian-8.2.0-amd64DVD-1.iso)。SystemRescueCDをnomodeset+nokmsboot+docacheでブートし、wgetでイメージを取得してテストした。つまり、イメージはRAM上にあり、ディスクアクセスは発生しない。

FM2+Killerは

1862.41s user 3.46s system 99% cpu 31:09.98 total

対するZ400は

1743.0s user 1.92s system 99% cpu 29:09.72 total

やっぱりZ400のほうがやや速い。

xzはコアをフルに使い切れないことが多いのだが、日常的にすることで、全てのコアを使い、かつ負荷や結果が一定になるものが思い浮かばず、xzにした。差自体は恐らくこんなものだと思う。ImageMagickでは極端に差が出るが、およそこれくらいの割合でZ400のほうがいつも速い。
プロセス数の多い処理はZ400のほうが有利か。

LinuxのGPU処理

OpenGLの処理速度を比較するため、Linux上でのベンチマーク。

Windows上の普通のベンチマークとは色々と事情が変わってくる。

  • LinuxではDirectXは使えないため、OpenGLを使う
  • いずれもメーカー提供のプロプライエタリドライバを使用するが、Windowsドライバと比べるとかなり性能が低い。特にAMD Catalystは出来が悪い
  • Quadroは元々OpenGLグラフィックスであり、AMD APUは一般向けであるためDirectXグラフィックスである

テストはUnigine Heaven Benchmark 4.0を使用した。
なお、再起動した上で新規ユーザーでテストすることで差異を可能な限り埋めてはいるが、CatalystがLinux 4.2ではうまく動かないため、Linux 4.1を使用している。

いずれもプロブライエタリドライバを使用し、ディスプレイはFHDの1台にセッティングした。

  • Render: OpenGL
  • Mode: 1920×1080 fullscreen
  • Preset: Custom
  • Quality: Low
  • Tessellation: Disabled
Term FM2+Killer Z400
Platform Linux 4.1.12-1-MANJARO x86_64 Linux 4.2.5-1-MANJARO x86_64
CPU Model AMD A10-7870K Radeom R7, 12 Compute Cores 4C+8G (3892MHz) x4 Intel(R) Xeon(R) CPU W3565 @ 3.20GHz (3200MHz) x8
GPU Model AMD Radeon(TM) R7 Graphics (1024MB) x1 Quadro 2000 PCI Express 352.55 (1024MB) x1
FPS 22.4 26.0
Score 563 655
Min FPS 7.7 17.7
Max FPS 47.0 39.8

FM2+killerも体感よりはかなりがんばっている。
FM2+Killerはビデオ再生がひどいため、まともに動くとは思わなかったのだ。

Max FPSは大幅に逆転している。
だが、全体にはWindows Experience Indexの結果と比べて、さらにもう少し差が開いた印象ではある。

LinuxではCatalystドライバに不具合がかなり多いため、数値よりも快適性には大きな隔たりがある。

しかし、ドライバの出来と、openGLに特化したQuadroであることを考えると、もっと差が開いて然るべきだったけれど、意外とGodavariが健闘した。

結果を受けて

FM2+Killerの構成は、もともとはKaveri(A10-7700K)で、およそ19万円かかったが、これは大容量メモリと、多数のハードディスクのためだ。

例えば、TSUKUMOのAMD A10-7870K Black Edition BOX スペシャルセットが34344円(2015-11-07現在)となっている。
実際は、4GBx2 RAMであること、Mini-ITXマザーボードであることを考えれば、TSUKUMOで計算するとFM2A88X Killerが12480円、A10-7870Kが18274円、W3U1600HQ-8GC11(8GBx2)が12150円で42904円。
PCケースDefine R5が13014円、Seagate STT1000DM003が5992円、慶安 静か KT-S400FXAが6151円なので、全体では68061円になる。

高機能を狙った構成なので、もっと安く上げるのであれば、4.5万円くらいで収まる可能性もあるだろう。だが、だいたいそのあたりであり、別の見方をすればPC1台組むのに必要なコストがそれくらいであるとも言える。
A10-7870Kはミドルに迫るくらいの性能を持ってはいるが、素晴らしく快適な性能でもない。性能的には中途半端だが、コストパフォーマンスは良い、という微妙な立ち位置だ。
「下の上」である。

しかし、「微妙な割に便利」でもある。
オフィススイートななどの基本的な事務、1080p動画再生を含むインターネット体験、そこまで本格的でなければ3Dゲームだってできる。
つまり、一般的なユーザーのニーズを満たすことができるのだ。

ただし、Windowsであれば。Linuxでは、そのパフォーマンスが十分に発揮できず、実際Windowsで不足を感じないのに、Linuxでは随分ひっかかる。

加えて、「性能はいらないが機能が欲しい」というユーザーにも安価に応えられるのは大きい。例えばトリプルヘッドディスプレイや、4kディスプレイが欲しい、eSATAが欲しい、USB3が欲しい…といった要求にも、マザーボードが安いので対応に費用がかからない。
性能はともかく高機能を要求する場合には結構な価格差が出る。

一方、Z400は、秋葉原で3万円ほどで買った中古だ。

3万円というと、自作にせよ、BTOマシンにせよ、かなり困難なラインになる。非常に小さな、ラップトップと変わらないようなものなら購入できるが、本当に最低辺のPCだ。
だが、最新型を購入できてしまうために、中古ならでは、とはいいにくい。

ちなみに、Windowsを含む場合は、3万円で自作は恐らく出来ない。

Z400は、2010年のhpのエントリーワークステーションだ。
エントリーモデルとはいえミドルタワーのワークステーション。普通の人が手にするようなものではない。
安価なhp Z230SFFでも123,200円から。値段的にはそこまでもないとも取れるが、用途が特殊だ。
Z400の構成は、当時でいえば、パソコンならば最上位クラスにあたる。

PCが5年使い続けられることはない。性能の変化、規格の変化、タイミングにもよるが、どうしても5年はもたない。3年が良いところだ。

だが、要求水準が元より異なる場合はその限りではない。5年前は時代遅れのポンコツだが、それでもかたや5年前の、パソコンでいえばハイエンドに匹敵するクラス。かたや最新ながら、あくまで安価でありながら性能を確保したことが魅力であるエントリー・モデルだ。

それを比べた結果、「5年前のワークステーションのほうがやや高性能だった」という結果が出たということだ。これをどう捉えるか。

安価なマシンを求めるのであれば、秋葉原で、良い中古マシンを確保したほうが性能は高い。

これはおおよそ真だ。ただし、機能的にはどうしても劣る。タイミングによっては、旧規格を採用しているために非常に苦労する場合もある。
Z400はSATA2, USB 2.0といった旧規格であり、新規格には対応していない。小さなことだが、不便でもある。
メモリの速度は1066だ。1600が普通に使える今となっては低速で勿体無くもある。
そして、グラフィックスは4kより前の時代であり、4kに対応しておらず、トリプルヘッドにも対応していない。

こうした機能面では最新のGodavari、それも高機能マザーボードのFM2+Killerのほうが圧倒的に優れている。
もし、Windowsを普通に使うのであれば、私はFM2+Killerをメインにしていたと思う。

だが、Linuxでは随分とエクスペリエンスの差がある。
さらにいえば、AMD CPUだとオーディオエンジンが頻繁にドロップしてしまう(SONARにおいて)。
性能差というよりも、快適さが随分と違う。さすがに、王道、Intel+nVidiaという構成は強かった。

もしあなたが、何らかの理由でこのようなコンピュータを欲したとする。
もちろん、「普通にしか使わないから」といって「普通な用途に適したコンピュータ」を選ぶことはあまり勧められない。
ライフタイムが短くなるからだ。
もう少し視野を広くもったほうが良い。それに、そこそこ大きい買い物なのだし、もっと積極的に楽しんだほうがお得だ。

だが、色々理由は考えられる。
私のように急な故障で、予算はないがとりあえずまともに使えるレベルのーたが早急に必要だとか。
Windows XPマシンのリプレイスが必要だが、予算が確保できておらず、導入までの時間を遅延させたいとか。

また、業務利用の場合、要件が全く変わらず、「環境が変化しないこと」が求められる場合もある。
事務仕事や、株取引などにおいては、特に変更される必要はない。
定期的に必要にはなるが、刷新タイミング意外では毎日同じように業務を遂行できることのほうが大事だ。
この場合、特に故障などがなければ、規格が時代遅れといった問題はない。そのため、現状で使えるのであれば、そのマシンが使える限り、もしくは刷新がなされるまで使える、という考え方が可能だ。
ちなみに、DTMは環境を更新し続けるのが一般的なのでむしろ最新マシンが必要になるが、環境を変えないなら変えないでもなんとかなるものだ。

そのような場合においてどちらを選ぶべきか?

中古のほうが若干だがお得感はある。だが、新品のほうが高機能で快適である可能性がある。

もちろん、中古の場合は保証がない。新品の場合はある。
だが、5年も前のもので、しかもずっと使われてきたものであるならば中古はそうそう壊れない。機会の故障率はバスタブカーブを描くため、故障するなら普通はそれ以前に生じる。
新品であれば保証が利き、修理も依頼しやすい。

どちらが良いかは、好き好きとしか言いようがない。
そして、自作も中古も、趣味が入っていないとやっていられない。
本当の業務システムでやるようなことではない。

DTM環境の移行に伴うメモ

DTMマシンをFM2+KillerからZ400へ移行するため、DTM環境をFM2+Killerから削除して(というか、そちらはリセットして)Z400にインストールした。

ディアクティベート

台数が制限されているライセンスにおいて、元々使っていたコンピュータのライセンス(アクティベーション)を解除しなければならないケースがある。

それについて調べた。

Cakewalk SONAR X3 PRODUCER / Rapture / D-Pro

ディアクティベートは不要。既存のレジストレーションコードを受け付けてくれる。

Celemony Melodyne Essential

SONARの一部だが、ディアクティベートが必要。

アプリケーションからディアクティベートを行う。これは、同一マシンの再インストールでも必要になる。
マシンクラッシュなどの理由でディアクティベートできなかった場合は、メールで依頼する必要あり。

XLN Audio Addictive Drums / Addictive Keys

SONARの一部だが、これも別。

XLN Onlineを導入し、従来のXLNアカウントでログインし、ダウンロードしてインストールする。
2台登録している場合はXLN Online Installerが登録コンピュータの削除を求める。

FL Studio

台数制限自体がない

KOMPLETE 9 ULTIMATE

サーバー側でなんのマシンで使用したかを確認しており、不正使用がないかをチェックしているのでディアクティベートは不要。

Cubase 6 LE

Soft e-Licenserからアクティベーションコードを再発行すればよく、ディアクティベートは不要。

別ドライブへのインストール

Z400はUEFIをサポートしていないため、Windowsシステムディスクのサイズが2.2TBに制限される。

今更2TBのディスクを追加するのもバカバカしく、システムディスクは250GBとなっている。
従来FM2+Killerのシステムディスクになっていた3TBをデータディスクとして与える形だ。

しかし、これが意外と難しい。

インストール先が結構複雑であるために正しく理解して指定するのが難しい、というのがひとつ。

さらに、SONARのSI Instumentsと、Melodyneは問題無用でC:\Program Files\*(あるいはC:\Program Files (x86)\Celemony)以下にインストールされてしまう。

このために、移動した上でシンボリックリンクを使うようにした。

> mklink /D "C:\Program Files\Celemony" "E:\x64\FORCED-Celemony"
> mklink /D "C:\Program Files\Cakewalk" "E:\x64\FORCED-Cakewalk"
> mklink /D "C:\Program Files (x86)\Celemony" "E:\x86\FORCED-Celemony"

これで動作はするのだが、インストール先を選ぶ時に「参照」をクリックしてもシンボリックリンクを解決してくれないので悩ましい。

とはいえ、結局こうなるのなら、インストール先を選択するよりは、最初からシンボリックリンクを使ったほうがいいのではないか。
ムーブするのは不毛なので、インストーラが使おうとしているディレクトリを、選択する前にリンク先を作っておいてリンクしておく。

しかし…

そのようにしていたところ、いくつかのプラグインが動作しない、という問題が発生した。
例えばSession Deummerは、SynthなのかEffectなのかも識別できず、使用できなくなった。

結局、システムをDAWから切り離し、取り扱いしやすくするというのは困難なようだ。
KOMPLETE 9 ULTIMATEにしても、結局はC:に強制的に導入されるものもあるし、別ドライブにインストールしてC:から排除することはできない。

結局は、C:もギリギリの容量ではなくそれなりに余裕をもたせた上で、容量が非常に大きいライブラリだけを別ドライブにインストールするのが無難なようだ。

KOMPLETE 9 ULTIMATEのライブラリと、Cakewalk Content、そしてSONARのデモプロジェクトを別のドライブにインストールして機能した。

Windows 10アップグレードテスト

Windows 10へのアップグレードにともなって気づいたことをいくつか。

初回起動時のブランクスクリーン

アップグレードによる初回起動時、「さぁ、はじめましょう」と表示されるが、そのあとブランクスクリーンのままになってしまう。

この問題は、4回アップグレードして

ちなみに、この現象は、Ctrl+Alt+Delでタスクマネージャーを起動し、CPUが落ち着いたところでもう一度CADを使ってログオフしてからログオンすれば改善する。

アップグレードに伴うプログラムの動作不具合

アップグレードしたWindows 10には動作不具合がある、という報告が多いが、手元の環境ではそれはなかった。

ただし、いくつか問題があった。

Catalyst関連

AMD Quick Stream Error 「権限情報がみつかりません」と言われる。

Catalystの入れなおしが必要だった。

また、Catalyst Control Centerを起動するように求められたりもする。ドライバは入れなおすのが無難に見える。

PeaZip

PeaZipのコンテキストメニューが開かない。

Google日本語入力

Windows 7のデフォルトのIMEによらずMS IMEに戻されてしまう。
コントロールパネルから戻せるのかもしれないが、一応FAQに従い再インストールした。

デュアルディスプレイ時のタスクバー

マルチディスプレイの場合、タスクバーはWindows 7ではプライマリディスプレイに表示するのが標準、Windows 10では全てのデスクトップに表示するのが標準で、変更されてしまう。

起動が遅い

遅くない時もあるにはあるが、遅い時は本当に遅い。

ようこそ画面がなかなか出ないなど問題もある。

ちなみに、起動全般インタラクティビティが損なわれており、結構不安になる。
情報が表示されないことは増えた。

終了処理

一見シャットダウンが完了したように見えても、実は終わっていなかったりする。

電源ボタンで強制シャットダウンされる状態になっており、次回起動時に正常なシャットダウンが妨げられたとみなされてしまう。
特に電源断を行っている人は注意。

Windows 7 64bit 古いソフトウェアの互換性テスト (主にエロゲー)

全体的な印象としては、

  • Windowsはよくがんばってると思う
  • しかし結構辛いものも多い。Windows XP 32bitは確保しておいたほうがよさそう
  • メジャーメーカーのタイトルは割とまともに動く。昔のエロゲーはお行儀の悪いプログラムが多い
  • Windows 10で動作しないプログラムは意外と少ないが、ないわけではない。

Lotus SuperOffice 98

動作しない

XGWorks 4.0

インストールできない。
動作はするらしい。

RPGツクール2000

問題なく動作する。

DESCENT

DOSBOXで起動。

CD-ROMのデータをハードディスク上のコピーして起動する必要がある。
実行ファイルはDESCENT.BAT

DESCENT2

DOSBOXで起動。

インストーラによりインストール、起動時はディスクを挿入、CD-ROMを

mount d d:\ -t cdrom -2

のようにマウントした上で起動する必要がある。
実行ファイルはD2.BAT

DESCENT3

通常通りインストールできる。
setupタブでサウンドカードとしてプライマリードライバーを選ぶ必要あり。
マウスの感度がよすぎるなど問題あるが調整可能。

リトルMyメイド パンドラボックス

起動自体はインストーラを含めWindows 2000互換モードで可能。
ただし、最小以外のインストールのためには、予め内容をハードディスクにコピーし、ハードディスクからインストーラを起動する必要がある。

Alive (Witch)

テキストが淡く表示される。

WHITE ALBUM (light)

Windows 2000またはXPの互換モードで起動しなければ画面が出ない

D+VINE LUV

Windows 7ではWindows 2000互換モードでプレイ可能だが、色がおかしくなる。色数の問題か。

Windows 10では起動するものの画面が表示されず、音も出ない。

ロマンスは剣の輝きII

Windows 2000互換モードで起動、プレイ可能

ぴあきゃろTOYBOX

Windows 2000互換モードで起動して設定した後、互換モードを解除し、視覚テーマとデスクトップコンポジションを無効にしてプレイ可能

虹色シーズンさりげなく

インストーラはWindows 95互換モードで実行する必要あり。
テキストが表示されないが、そういうものだっただろうか?

ぱすてるチャイム

問題なく動作する

プレシャスLOVE

管理者権限で実行する必要があり、Windows95互換モードが適切。
データをレジストリに保存するため、お行儀はよくない。

アージュマニアックス

問題なく動作する