今更WindowsPCのSSDの換装をやったよ

自宅で使用しているWindowsPCのSSD(256GB)が手狭になったので、500GBのSSDに換装することにした。

そういえばWindowsPCのSSDの換装について、今の常識は昔の常識と様変わりしているので、「総合的に」記載しようと思う。

準備するもの(物理):
換装するSSD、DVDドライブ、DVD-R、PCのSSD容量より大きなUSB-SSD/USB-HDD(中身を消去してもよいもの)

①今代表的なSSDは3種類あるから、注意しよう。HDDから換装する場合は2.5型のSATA SSDで大体大丈夫だけれど、問題はM.2規格のSSDで、なんとM.2のSSDには2種類ある。ちょっと昔のノートPCはM.2のSATAタイプ、今のノートPCはM.2のNVMe(PCI)タイプがある。間違えると動作しないことが多いのです。
②DVDドライブはUSBタイプのものでよいですが、BIOS/UEFIでUSB-DVD起動できるかどうか確認しておきましょう。

準備するもの(論理):
パーティションいじるツール(AOMEI Partition Assistantなど)

手順:
0.ドライブを暗号化している場合、暗号化を解除しましょう。
1.コントロールパネルを開き「バックアップと復元(Windows7)」を開きます。
2.システム修復ディスクの作成を選びます。
3.DVDドライブにDVD-Rを入れて、システム修復ディスクを作成します。尚、システム修復ディスクはWindowsのインストールDVDで代用可能ですが、わかりづらくなるので割愛します。
4.USB-SSDをPCに接続し、フォーマットがNTFSかどうか確認します。exFATだった場合にはNTFSでフォーマットします(データは消えます)。
5.もしも換装先のSSDが換装前のHDDより容量が小さい場合、AOMEI Partition Assistantなどを使用して、パーティションサイズを縮め、さらにパーティションを前寄せして「換装先のSSDより小さいパーティションサイズ」にします*1
6.再度「バックアップと復元(Windows7)」を開きます。
7.システムイメージの作成を選びます。
8.イメージの作成先として、USB-SSDが選択されていることを確認します。
9.イメージ作成が完了するまで待ち、USB-SSDを外します。
10.上記3で作成したDVDをDVDドライブに入れておきます。
11.PCをSHIFTキーを押下しながらシャットダウンします。
12.SSDを交換します。
13.PCをDVD起動します。DVD起動のやり方はPCによって異なるので、PCのマニュアルを参照してください。尚、以下がヒントです。
・F11、F12キーを押下しながら起動でBIOS/UEFI設定を起動できることが多い。
・DVD装置はBIOSUEFI上では「ODD」という名前であることが多い。
BIOS/UEFI以外にもBoot Menuが用意されているPCがあり、この場合はODDを選べばよい。
14.DVD起動できたらUSB-SSDを接続します。
15.トラブルシューティングの詳細オプションで、「イメージでシステムを回復」を選び、新品のSSDに先ほどのバックアップ内容を書きこみます。
16.DVDを取り出し、USB-SSDを取り外し、PCを再起動します。
17.無事OSが起動したら、パーティションいじるツールで好きなパーティション構成に変更します。
18.必要なら再度暗号化します。

*1:Windowsの報告するパーティションサイズは「ギビバイト」、SSDのパッケージに記載されているサイズはギガバイトなので注意してください。ギガバイトギビバイトは7%程度サイズが異なります。1000ギガバイトは930ギビバイトくらい。同様にテラバイトとテビバイトは10%程度サイズが異なります。1テラバイトは0.91テビバイトくらい

バックアップとバックアップとバックアップとミラーとスナップショットと変更履歴

この世には6つの概念をすべてバックアップで済ませてしまうおじさんというのが存在する。実現できることが全く違うのでちゃんと理解しておくといいよ!!

①完全バックアップ
ある時点の全データの複製をつくっておくことを完全バックアップといいます。当然ながら、複製の時点までデータを復旧することができますが、「複製以降に発生したデータ」は戻すことができません。全データ複製をできるだけ頻繁にすることを考えますが、大きなデータの複製には非常に時間がかかるので、しばしば頻繁な完全バックアップは現実的な解ではありません。
できるだけデータ損失を防ぐためには、以下②⑥と組み合わせる必要があります。

差分バックアップ
完全バックアップは非常に時間がかかるため、頻度を減らしたいところです。そこで「最後に完全バックアップを採取した後に発生した変更点」のみを複製するという機能が生まれました。この機能を差分バックアップといいます。例えば完全バックアップを週に1回、差分バックアップを1日1回とすることで、日々のバックアップ時間が非常に長いという状態を防ぐことができます。とはいえ、最後に取得したバックアップから、次回の差分バックアップまでに発生したデータが損失した場合、復旧できません。

③バックアップ
同じことができる機材、環境、人材をあらかじめ用意しておくことをバックアップといいます。当然ながら、データ損失には対応できません。データの損失が問題にならない、データ損失対応は別途用意されている場合に使用される概念です。

④ミラー
「HWが故障してもシステムが動作し続ける」ことを目的としています。③の概念と近いため、バックアップと呼ばれることがありますが、非常に危険です。ミラーは「HWの障害でデータ損失する可能性」を大幅に減らすことができますが、SWの問題でデータ損失する可能性は削減できません。人間のミスによるデータ損失も防げません。データ損失を防ぎたいのであれば、①、②、⑥と組み合わせる必要があります。

⑤スナップショット
「一瞬で複製を行ったかのように見せかける技術」をスナップショットといいます。上記①のバックアップはどうやっても時間がかかってしまい、かつバックアップの最中にも新しいデータが発生してしまいます。スナップショットは「採取した時点の状態を複製せずに固定」することができます。
よく用いられるのは、スナップショット採取以前のデータを「更新禁止」に、採取以降のデータを「差分データ」として管理し、現在の状態は「更新禁止データ」と「差分データ」のサマリ、スナップショット採取時のデータは「更新禁止データ」から取得する方法です*1
本手法の弱点は「データの複製は実際には行われていないため、更新禁止データが破壊されてしまうと、スナップショットも現在のデータもどちらも破壊されてしまう」点になります。
上記①と組み合わせて「スナップショット」→「スナップショットのバックアップ」とすることで、ある時点のデータをシステムに負荷をかけずにバックアップすることが可能となります。

⑥変更履歴、バージョン履歴
ファイルシステムやアプリケーションが提供してくれる機能。ファイルの変更が行われた際に、ファイルの変更履歴を記録しておく機能。ユーザは「記録が残っている限り」ファイルを過去の状態に戻すことができる。よってファイルサーバにて強力な効果を発揮する。人為的ミスによるデータ損失リスクやSW原因のデータ損失リスクを大幅に軽減することができる。



特にミラーをバックアップと言っちゃうおじさんはヤバいよ!!

*1:またはスナップショット採取時点で差分データの作成を開始し、スナップショット採取時のデータは現在のデータから差分データを減算して作成する

コーディング無しでアプリが作れます。

エンドユーザがコーディングなしでアプリを作成する試みはいままで死ぬほど行われている。

商用アプリであれば
EXCELのマクロ記録
ACCESSマクロ
・RPAツール

ゲームであれば
RPGツクール
FF12ガンビット
マリオメーカー

あたりが有名なところだとおもう。

ただし、ほぼすべてのコーディング無しアプリケーションは「後方互換」を犠牲にして成り立っている。後方互換とはそのアプリが動作する土台の仕様が変わっても、ユーザ作成のアプリが動作する事だ。例えば、windows7用に作成したアプリがWindows10で動作する場合、このアプリはWindows10に対して後方互換性があると言えるが、Excel95で作成したアプリがExcel2007で動作しない場合は、後方互換性が無いと言える*1


動作環境の後方互換が無い場合、バージョンが変わるたびに、アプリの移植作業が必要になる。そもそも移植というのはより低レベル(コンピュータ寄り)な理解が必要になってくるため、コーディング無しでしかアプリを作れないメンバーにはハードルが高くなってしまう*2


大体の職場において、「先人が作成した偉大なEXCELマクロ」は、とにかくマクロの記録に依存しており、余計な記載が多い。さらに言えば、EXCELマクロは「キーストロークの記録」に過ぎないものも多くEXCELの仕様が少し異なっただけで動作しなくなってしまう。

ACCESSに至っては、そもそも世代違いでACCESSファイルに互換がなくなって、最新のACCESSでは古いACCESSファイルを使用できなかったり、マクロをVBAに変換していた環境*3では日本語関数名、日本語変数名が正しく移行されなかったり、まあいろんなトラブルが発生する。

それでもEXCELACCESSならばMicrosoft社の製品なので、(移行不具合が多く発生しようとも)使い続けるのは不可能ではない。しかし、コーディング無しツールはMicrosoft社だけが作成しているのではなく、いろんな会社が作っている。その会社が5年後存在するか?そのツールは5年後存在するか?をあらかじめ考えてから手を出すべきだろう。または「プロトタイプ作成」と割り切ってツールを使用するのも一つの手だろうと思う。

コーディング無しで作成されたアプリは「プロトタイプとしては優秀」だが寿命が短い。延命するためにはコーディングできるレベルの担当者が必要になる。そのような担当者を継続的に確保できないなら、外注するなり、プログラマを雇うなりして「寿命を迎える前にコーディングで別途アプリ化しておく」必要がある。

今後、問題になりそうなのはRPAツールだろう。コーディング無しで作れるかもしれないけれど、どうやって維持していくのかということを、ツールの選定と維持するための運用方法を制度化しておくべきと思われる。

*1:Excelがプラットフォームとして後方互換性が無いと言っているわけではない。あるExcel95アプリケーションがExcel2007に対して後方互換性が無かったというだけ

*2:例えばExcelの仕様で、新規Bookが作成される際、Excel95では10個のシートが作成される。Excel 2007あたりでは3つのシートが作成され、現行のExcelでは1つしかシートが作成されない。シートがデフォルトで3シートあるか、10シートあることに依存するマクロは、1つしかシートが作成されない現行のExcelでは動作しない。

*3:ACCESSではマクロとVBAが異なる存在、マクロでは細かい制御ができないのでVBA変換が可能だが、勝手に関数名やコントロール名に日本語が使用されたりする。その結果https://docs.microsoft.com/ja-jp/archive/blogs/office_client_development_support_blog/ver1708-issue-japanesenamevbamoduleこんなことが起こったりする。

他人の言葉の使い方を非難するときは調べてからにしましょう

結構な昔話。確かアナウンサーの生島ヒロシ氏だったと思うが、宮沢りえ氏インタビューの言葉に突っ込んでいた。
「りえさんは全然大丈夫と言っていますが、本来全然は否定の時に使う言葉です」

そう言われてみれば、私もマンガ雑誌の裏に「全く簡単だ」という言葉が記載されていた時に、「全くって、否定の時に使うんじゃないの?」と思っていた。全然と全くは同義だろうから、生島さんの言葉が正しいんじゃないかと思った。しかし、よく考えてみると、全くという言葉は結構な頻度で肯定に使われているような気もする。調べようもないので、なんとなくモヤモヤした感じを抱えたまま何年か経過した。

インターネットが普及して、Googleが現れることによって、調べるコストが非常に下がった頃に「全然は否定にしか使えないのか」問題を調べてみたところ、使っても構わないというのが現状の通説のようだと判明した。明治時代には既に全然を肯定で使用している例はあり、我々が違和感を感じるのは、昭和期の教育の中で培われた言葉の感覚に依存しているようだった。
言葉のスペシャリストであるアナウンサーが、自分で調べたわけでもないのに、昭和期の教育をベースに「本来」とか言っちゃうのは、そこそこカッコ悪いような気がする。


ライフラインという言葉があり、阪神大震災からよく耳にするようになった。耳にする様になってから暫く後に、新聞のコラムにこんな内容が載っていた。

ライフライン和製英語扱いする人がいるが、それは誤りで、アメリカで用いられはじめた、ちゃんとした工学用語だよ」

このことも長い間気にはなっていたのだが、Googleの出現によって調べられるようになった跡に、日本のサイトを漁っても、あまり詳しい情報は見つからないので、earthquake lifeline で検索したところ
・そもそも米国発祥のライフライン地震工学というのがある。
・サンフェルナンド地震をきっかけに生まれた比較的新しい工学分野。
というのがわかった。たしかに和製英語ではない。
ということで、当時和製英語扱いしていたWikipediaを更新したりしてみたのであった。今の版記載のutilityと同義というのには賛成できない*1が、正確性は上がっているような気がする。
ネイティブスピーカーが知らない言葉や言葉の用法なんて腐るほどあるのに*2、ネイティブスピーカーが知らない用語を和製英語だというのは余りにもアホなのではないかと思う。


個人的には「百歩譲って」という言葉と「有言実行」という言葉に少し抵抗がある。どちらもパロディっぽい言葉なのに、元となった言葉「一歩譲って」「不言実行」を駆逐しそうに見える為だ。とはいえ、「大幅に譲歩する」「言ったことを実行する」に該当する言葉が世の中に望まれており、にもかかわらずそんな言葉が存在しなかったのかも知れず、非難すべき内容ではないだろう。


以上のように、他人の言葉の使い方を非難するのはなかなか難しいのだ。


ただし、「中抜き」だけはダメだと思うので積極的に非難しておこうと思う。本来、「生産者と消費者間で業者を用いずに直接取り引きする」だった言葉が、「生産者と消費者の間に業者が入り込んで、本来生産者が得るべき報酬を業者が抜き取ってしまう」という意味になってしまっている。全く逆の意味を持つ同じ言葉*3は流石に存在しちゃいけないんじゃないだろうか。中間搾取でいいじゃないか。まあ、中間搾取という言葉は非常に強いので、マスコミ屋さんが中間搾取業者様に忖度して、言い換えを行っているのだろうけれども。

*1:lifelineは災害を想定した用語なので

*2:全然関係ないがパタリロという漫画の「剔抉という言葉を知っていますか」というネタを思い出した

*3:同音対義語とでもいうべきだろうか。

webミーティングって思ったより難しい

本日、某社のイベントセミナーをYoutubeで見ていたのだが、コメント欄がOFFになっていた。このセミナーは事前登録が必要なセミナーで、登録者のみに公開されるセミナーだったので、本来コメント欄を閉じる理由が見つからない。まあ一歩譲ってコメント欄をOFFにするのはいいんだけど、発生しているトラブルにリアルタイムで気づけないじゃん、、、とか思っていたところ「音声が発信されないまま5分しゃべり続ける」というかわいそうな状況になっていた。結局音声が入っていないことには、twitterの反応で気づけたらしい。


音声が発信されないまま5分しゃべり続けるってのは、実はWEBミーティングの失敗あるあるで、大体の場合「音声聞こえますか」「アジェンダ見えますか」と最初に発信し、それに対するレスポンスを待ってからミーティングを始めるっていうのが今の一般的なやり方だ。また、音声の問題があった場合には、チャット機能で報告するように参加者に伝えておくと、参加者からのメッセージを受けて不具合に気づくことができる。


WEBミーティングではなく、Youtubeを使用した情報発信とはいえ、音声の導通が正しく行われてるか確認してからイベント始めるのが当たり前だと思うけれど、そのレスポンスを受け取る唯一の窓口を封じてイベントを始めるんだから、なかなかイベント慣れしていない会社だと思う*1


WEBミーティングをうまく実行するためのコツっていうのは体得するものであって、体系化されていないのかもしれないと思ったので、知る限りのコツを以下に記載しようと思う。

  • 少なくとも主催者のカメラだけはONにしておく*2
  • WEBミーティング開始の5分前までに、異なる場所から参加する人を一人捕まえておいて、音声導通、画面共有状態が正常か確認する。
  • 発表に使用するファイルはあらかじめ開いておく*3
  • アジェンダを用意し、ミーティング開始時間前にはそれを映しておく*4
  • 音声や画面共有が途切れた場合の報告経路を最初に明示しておく。

まあ、こんな感じだと思われるので注意しておくとよいかもしれない。

*1:これでも世界のトップIT企業の一つだったりするのだが

*2:主催者の動作と音声の有無で参加者は違和感を感じられるので

*3:大体発表時に「ファイル開けない」とか「ファイルサーバこけた」とか始まるので

*4:参加者が正しいミーティングに参加できていることを確認できる

暗号層が入ると難しいよね

当社の社外持ち出しPCには某社のドライブ暗号化ソフトが入っている。最近私の管轄内の持ち出しPCが2台論理的に壊れて、いい経験になったので記載しておく。

最初の1台は起動するものの、暗号化ソフトの管理プログラムが起動した瞬間にBSoDで死亡してしまう。セーフモードでは起動したので、ダンプファイルを解析してBSoDの原因を調査したところ、やはり暗号化ソフト(のドライバ)が原因で死亡しているようだった。実にめんどくさい。

まあ、セーフモードで起動しているので、暗号化ソフトのアンインストールを試みたところ、「セーフモードではアンインストールできません」とご丁寧に言われてしまった。実にめんどくさい。

Windowsの初期化再インストールしかないだろうと思い、インストールメディアを探していたところ、ほかの担当者がWindowsの機能である「リカバリインストール」を試したようだった。その結果、暗号化層の上でWindowsが初期状態に復元されるというなかなかおもしろい結果になった。そのまま、その担当者はインストールを進めたが、暗号化ソフトを入れようとして「すでに暗号化されてるからインストールできないよエラー」が出てしまった。なるほど、暗号化されたままWindowsリカバリすると、暗号化層を管理できなくなっちゃうんだな。

いずれにしても暗号化層を含めた初期化しかないし、情報システム部しか、このPCのインストールメディア持ってないし、ということで、情報システム部に初期化を依頼したところ、「二週間かかりますよ」と言われたのであった。いやいや二週間テレワーク出来なくなっちゃうじゃんアホか。

ということで、Windowsの「バックアップ(Windows7)」という機能を使ってみることにした。この機能は現在立ち上がっているWindowsを起動状態のままに丸ごとバックアップできる機能なので、暗号化層の影響をあまり受けない*1

暗号化層上でリカバリインストールしたWndowsをそのままバックアップし、パーティションをきれいに消去(暗号化層を消す)した上で、バックアップから戻せば、暗号化されていないwindowsに戻るだろうと思い、やってみたのであった。なんと、うまくいった。

さて、再度暗号化しようかなと思い、暗号化ソフトをインストールしようとしたところ、「ブート領域に暗号化ソフト入っているからインストールできません」と言われてしまった。なるほど、OSの入っているドライブを暗号化するためには、そのドライブを起動時に複合化しなきゃならないので、ブート領域にもソフト入っているのね。うわめんどくせえ。ブート領域にドライブレター割り当てて、暗号化ソフトらしきファイルをちまちま消去したのだけれど、どうやっても「ブート領域エラー」は解除できない。

こうなったら最後の手段だ。ブート領域削除して再作成しちゃえと思い、Windows10のインストールメディア*2でPCを起動し、Windowsの修復メニューに入ってdiskpartで削除してみる。なぜか削除できない。けれども、ブート領域内のファイルフォルダは削除できたので、きれいに削除して、ブート領域を修復した。ここまでやって、無事にWindowsは暗号化ソフトを入れられるようになった。めでたしめでたし。


さて2台目のPCだが、上記作業の1週間後、今度は「OSから見えるパーティションサイズ」と「ファイルシステムが報告するパーティションサイズ」が異なるという非常に厄介な症状が発生していた。暗号化ソフトの影響なのかわからないが、ディスク管理ツールは200GBと報告するパーティションが、エクスプローラから見ると50GBにしか見えない。暗号化を解除しても現象は変わらず。使えるには使えるんだけれど容量が小さすぎてWindowsUpdateができないのだ。

まあ今回は暗号化ソフトの影響かもしれないけど、上記で編み出した手法があるので、バックアップ→リカバリで問題なくうまくいくだろうと思いきや、パーティション内のデータがリカバリの邪魔をする。まあ、パーティション削除しちゃえばいいやと思い、Windows10のDVDで起動。Windowsインストールを開始するとそこでパーティション削除できるので、パーティションを削除し、インストールを中断、バックアップを復元した。


仮想化にしても暗号化にしても、層が1つ増えると、その層で新たなトラブルが発生する。ドライブ暗号化ソフトっていうのは平時はその存在を感じないレベルで安定するのだけれど、障害発生時には牙をむいてくるのだ。

今回の修復で得た知識集

  • 暗号化ソフトを入れると、ブートローダに暗号化を解除するプログラムがインストールされる→まあ、当たり前っていえば当たり前なんだけれど
  • Windowsの「バックアップ(Windows7)」機能めちゃ使える
  • USB SSDは用意しておいたほうがいい。バックアップの速度がHDDと段違い
  • Window10のメディアはDVD-DLもしくはBD-Rでないと容量が足りない
  • パーティション削除はWindowsインストーラが最強
  • ブートローダの初期化方法
diskpart
list disk	   (付属しているディスクのうちOSが入っているディスクの番号を確認)
select disk 0	   (OSが入っているディスクの番号をSELECTする)
list volume      (システムボリュームの番号を確認)
select volume 0 (システムボリュームの番号をSELECTする)
asign letter=s:  (システムボリュームにドライブレターSを付加する)
exit
s:	(Sドライブへ移動) 
rmdir /s efi
x:
bcdboot C:\Windows /s S: /f UEFI

*1:起動状態のWindowsから見たファイル群は複合化されたファイル群なので

*2:MSDN契約で入手したISOをDVDに焼いたもの。ライセンスが異なるのでこのPCのインストールには使用できないが、リカバリ目的で使用することはできる。

PCとかサーバのHWって誰が教えられるの?

テクノロジーに関してはいろいろな企業が有償の研修を設けており、例えば
・DECの教育部門が独立したトレノケート社*1
NEC系のNECマネジメントパートナー社
伊藤忠系のCTCテクノロジー社
キヤノン系のエディフィストラーニング社
富士通系の富士通ラーニングメディア社
なんてのが代表的なテクノロジー教育の会社だと思われる。

これらの企業では大体おなじ研修を申し込むことができる。MS系、Oracle系、vmware系、aws系、cisco系の教育等。差別化の要素としては「企業としての近さ」「価格」「トレーナのレベル」しかない。個人的には「企業としての近さ」「価格」は無視して、トレーナのレベルで選択すべきと思うが、まあ所属組織の呪縛を離れることは難しい。

残念ながら「探しても研修が見つからない」分野というのがあって、それはPCやサーバのHW分野だ。この分野はコモディティ化が進んでおり、例えばDELLのサーバを理解する人はHPEのサーバも容易に理解できるだろうし、Dynabook社のPCを理解する人は、VAIO社のPCを理解するだろう。
しかしこの分野は
・研修がない
・体系的に学ぶための書籍がない
のだ。

技術については「理論」を知ってから「実装」を知って体得していくのが最も効率が良いが、サーバHW、PC HWについては理論を体系的に学ぶ場はほぼない。なので、基本的には会社内で教えるしかないのだ。

もし社内にPC HW、サーバHWを体系的に教えられる人がいるなら、大切にしておいたほうが良いですよ。

*1:個人的にはトレノケート社が大好き