Web開発環境をMacBook ProからWindows機に移行してみた話

メイン著者記事としてはご無沙汰しておりますmorimorihogeです。 今年もTechRachoではアドベントカレンダー特集ということで、普段あまり記事を書く機会がなくて表に出ないメンバーにも記事を書いてもらえる運びとなりました。クリスマスまではアドベントカレンダー特集進行のTechRachoをお楽しみ下さい。 今回は最近メイン開発環境をMacからWindowsに移行したので、そのあたりの感想や設定の勘所などをまとめてみたいと思います。 なぜMacから移行するのか? 僕はOS XのIntel Macが出たころからのMacユーザー(当時はまだRosettaとかがありました)で、かれこれ10年以上Macを使い続けてきました。多分Webシステム開発用途でMacを使い始めたという人の中では古参の方なのではないでしょうか。 というわけで、なんで移行するの?という話からぽえみーに綴ってみようと思います。 なお、僕のメイン開発領域はWeb開発(Rails / PHP / JavaScript)ですが、開発・提案資料のためにOfficeやAdobe製品もちょくちょく利用します。また、業務ポジション的に外に出ることも多いため、モバイル性はそれなりに重視しています(多少重くてもいいから外にいても普段通り開発できる環境が欲しい)。 そもそもMacを使い続けていた理由 Macをメイン開発端末として10年間使い続けてきた理由はいくつかあります。 僕は基本的に年に1回はメイン端末を最新に更新するというポリシに従って使ってきましたが、その中での私見です。 ハード面 時によって賛否や人柱バージョンなどもないわけではないが、概ねデザイン・強度的に満足していた それまでずっと買い続けていたThinkPadがLenovoに買収され、品質面がどうなるか怪しかったので受け皿を探していた Genius Barに持ち込むことを前提とするのであれば、サポート面はとてもよかった(預かり修理でも1週間かかったことがなかったし、不具合の発生した動画や写真を見せればごねずに数分で修理交換手続きをしてくれた) 他メーカーだとThinkPad以外は修理に現物発送が必要なだけでなく、不具合が直らず返ってくる事例ばかりだったのでメイン収入を稼ぐ手段を預けるには怖すぎた ※ThinkPad利用時代は壊れたら自分でパーツ取り寄せして修理してました 価格的にはスペックに対して多少割高なこともあったが、同等スペックのWindows機と対して変わらない時期もあり、サポート体制などを考えれば許容範囲だった ソフトウェア面 Web開発ではOSがUNIX系OSであることが都合が良かった(VMは色々もっさりするので嫌いだった) 文字がきれいで読みやすく、一度慣れるとWindowsに戻りづらかった 必要なものはそれなりにシェアウェアにも投資して揃えてしまったので「Windowsならフリーソフトでできるのに」という点は特に不満にならなかった Web系エンジニアを中心にMacが勢力を盛り返していく世の中の流れに乗れたため、諸々トラブルシューティングも簡単だった 業務エンジニアにはありがたい機能があった。例えばTime Machineの「ある日突然メインマシンが復元不可能な壊れ方をした時に、端末購入を含めて概ね24時間以内に満足のいく開発環境を復元できる」という要素はかなり強かった。 というわけで、その他の不満がないわけではないですがそれなりに満足していました。 Macへの不満蓄積とWindowsの誘い しかし、ここ数年はMacに対して以下のような不満を感じるようになっていました。 ハード面 「これが欲しい」と思わせるモデルが出なくなったため、不満が気になるようになってきた TouchBarは嫌いじゃないけど別にいらない(むしろないほうがうれしい。🍣を並べる以外に実用的な価値を見いだせなかった) USB-C推したいのはわかるけど、ちょっとUSB機器つなぎたい時にたまたま変換アダプタがないと積むのは純粋に不便(変換アダプタはあちこちに配置していたけど、それでもたまたま忘れることはある)。 欲しいスペックのマシンを買おうとすると、同等のWindows機に比べてあまりにも値段が高くなるケースが目立つようになってきた メモリ32GB、SSD 2TBとかにしようとするとつらい。フルスペックなんてとてもとても・・・ AppleCareも+になって値上げしたし「とりあえず念の為入っておこう」というノリでポチるのに抵抗が・・・ MacBook Proの高いBTOモデルでも、WindowsノートPCにスペックで負ける要素が出てきた 4kディスプレイがない。どうしたApple!MacBook Proは常に市場に対してハイエンドモデルが用意されていると信じてたのに・・・ HDMIケーブルが直接接続できないので、本体だけ持ち歩くと仕事に支障が出るケースがある ソフトウェア面 特に追加の不満はないが、Windows 10あたりから「Windowsもそんなに悪くないんじゃない?」と思うことが増えた 一方、Windows機についての状況も色々変わってきているなと感じました。 ハード面 MacBook系の設計をパクインスパイアしたと思われるマシンの中で、そこそこ品質的にも良さそうに見えるモデルが出てくるようになった 何よりも選択肢が多いというのは良い USB/HDMIが普通につながる事により、大量の変換アダプタを持ち歩かなくて良い幸せ USB-C PDが普及してきたことにより、ACアダプタを忘れても充電できるモデルが出てきたのも良い タッチパネルはそれほど興味ないけど4kディスプレイは使いたいと思っていた nVIDIAのMax-Qデザインなど、有象無象の中でも品質を担保しようという試みも良い ソフトウェア面 Windows 10環境がそれほど悪くなさそう(駄目なところももちろんあるが) WSL(Windows Subsystem for Linux)やHyper-Vなど、開発環境向け機能の拡充 フォントレンダリングは昔に比べてきれいになったように思える(解像度が上がったからかもしれない) Docker for Windowsなんかもある(が、結構クラッシュする印象があるのでまだ様子見中) Win/Macを両サポートするマルチプラットフォームソフトウェアの多くが、OS非依存のライセンス体系に移行している Office365 / Adobe CC / Jetbrains IDEなど、 そんなわけで、不満を持ちながらも惰性でMacを使い続けるよりはもっと良い環境になる可能性のある方向を目指す方が生産的だよねということで、試しにいっちょWindows機に移行してみるか、ということにしました。 なお、100%開発にしか使わないのであれば(ぶっちゃけゲームが動かなくていいなら)、ホストOSはLinuxにした方が苦労は少ないと思います。後述するGUI重い問題もホストOSインストールなら気にならないと思いますし、何より無駄な仮想化レイヤがないぶん早いしシンプルです。 Linuxを使う選択肢についてはjoker1007さんの以下の記事あたりを読むと良いと思います。2016年の記事ですが、今も大して事情は変わらないというか、よりMacを使い続ける理由は減っていると感じます。 参考: joker1007’s diary: MacBook Proを捨ててThinkpad T460sを買ってgentooを入れた MacBook Proからの移行機選び MacBook Pro 15(2017)からの移行ですが、とりあえず以下の条件で探しました。 本体がそれなりに堅牢で、多少ぶつけても壊れないこと 英語キーボードが選択できること USB PDから充電できること メモリ16GB以上 SSD 1TB以上、もっと載せられるならなお良い nVIDIAのGPUが乗っていること(Steam積みゲーを消化したい) MacBook Proと同程度にはバッテリーが持続すること 色々検討した結果、 Dell New XPS 15、Razer Blade 15を眺めつつ「うーん」と半年くらい悩んでいたのですが、先日ThinkPad X1 Extremeが発表されて即決しました。 決め手はすでにサブマシンとしてThinkPad X1 Carbon(2017)を持っていたため、キーボードとタッチパッド(+トラックポイント)の使用感にそこそこの信頼が置けた点です。 New XPS 15は当時店頭で触れる店が近くに見当たらなかったですし、Razer Blade 15は日本向けには英語キーボード版を販売していない(ひどすぎる)ので、必然海外からの個人輸入になる関係から実機を事前に触ることができませんでした。 # エイヤで買って打鍵相性の悪いキーボードや操作にストレスを感じるポインティングデバイスだったら流石に嫌すぎるので、そこは冒険する勇気がありませんでした なお、X1 ExtremeはM.2 2280のスロットが2つあるため、BTOでは1TBを購入し、別途もう一枚買って2TB構成にしています。 ThinkPad X1 Extremeの背面M.2スロット。普通のM.2 Type 2280が刺せます。ユーザーがメンテできるって素晴らしい。 2018/12/03追記 結局どんなスペックにしたの?という声が聞こえてきたので補足すると、メモリ32GB、4kタッチパネルディスプレイモデルになります。メモリ割当は今の所以下で落ち着いています。 * ホストWindows: 12GB * 業務Windows: 8GB * 業務Linux: 12GB ディスプレイは4kモデルを選ぶと自動的にタッチパネルモデルになり、非光沢は選択できません。発色はかなり良く、昔のThinkPad特有のあのやる気のないくすんだ液晶ではなく、Macと比べてもそれほど遜色ないように見えました(僕の目が節穴という説もありますが、Adobe RGB対応を謳ってるのでそこまでひどくないはずです)。 移行先PCの構成 移行後PCの構成ですが、下図のような設計にしました。 主な要点を解説すると・・・ 業務作業環境はHyper-Vの業務Windows環境及び業務Linux内に全て閉じ込める ホストOSは業務関連じゃない個人的な作業やあれこれに使う 開発用プログラムの実行環境(Rails/PHP/JavaScript等)は全て業務Linuxに置き、Sambaで業務Windows環境に公開する(Hyper-V内のプライベートネットワークなので、外部には公開されない) 通常業務はリモートデスクトップクライアント経由の業務Windows環境で生活する という感じです。 業務環境(Windows / Linux)は全部VMに入れる 業務系を全てHyper-Vに入れたのは、バックアップと復元の容易さを重視したためです。 よくDropboxやGoogle Driveに共有すればバックアップは終わりという文脈を見ますが、OSの環境変数や設定、レジストリ書き込みを必要とするソフトウェアなどはファイルバックアップだけでは環境が保存されません(専用のソフトを使えばできますが)。 そして、ファイルバックアップしかない場合、ファイルの復元ができても「開発環境」の復元には数日かかってしまいます。 VMレベルでのバックアップであれば設定ごとバックアップできるので、新しく買ってきたマシンのHyper-Vさえ有効にすれば、あとはVMファイルを復元するだけで直ちに作業可能になります。 MacのときにはTimeMachineを使っていたので、それの代替ですね。 なお、ホストOSとは別にゲストOSである業務Windowsのライセンスも必要になります。ホストOSはHyper-Vを使う関係でPro化必須です。 業務開発環境をLinux VMにする理由 Dockerをなんの面倒もなく使いたいし、面倒な環境依存に巻き込まれたくないからに尽きます。 前記しましたが、Docker for Windowsは主にVolume共有あたりの挙動が怪しく(特にPermission周り)、体感ですがたまにFactory Resetせざるを得なくなることがしばしばありました。 Docker for Macはファイルアクセスが遅い以外は同じUNIX系OSということもあってか実用レベルなのですが、Docker for Windowsはまだちょっと怖いかなと感じています。 ※個人趣味開発なら良いのですが、業務開発では環境クラッシュにより無駄な時間を取られたくない また、Gitではファイルパーミッションも差分情報として扱いますが、このあたりをきちんと扱いたい場合もWindowsだと不便なので、Linux環境はどちらにしても必要になるでしょう。 業務作業環境をWindows VMにする理由 昔より良くなったとはいえ、Linux VMのデスクトップにVNCやRDPで接続して作業するもっさり感に耐えられないというのが主です。 また、純粋に実装作業しかしないということであればLinux環境でも構わないのですが、OfficeやAdobe系のファイルを開いたりと、Linuxの完全互換版がないソフトウェアはどうしてもあるため、様々な案件に関わることの多い現状ではWindowsの方が都合がよいなあというところ。 なお、Windows環境にして極めて良くなったのはOffice環境で、ExcelがMacに比べて極限にまともに使えるようになりました。起動も早くてクラッシュもしないExcelはすばらしい … Continue reading Web開発環境をMacBook ProからWindows機に移行してみた話