2019-05-05に更新

開発マシンをWindowsに移行した話

(2019/05/05追記)
一年も前に書いたジョークがいまさら発火して、もうどんな顔していいかわからないのだけど🙃 この記事には後日談があります
VSCodeのRemote Development機能が革命的な話。

(追記終わり)

2010年頃に開発マシンをMacに移行して、それからずっとMacで開発していたのだけれど、Windowsに戻してみることにした。

2018-11-22 21.00.06s.jpg

理由

最近なんかMacイケてないと思わない?

  • 新型MacBook Pro1.3kgはともかく、13インチMacBook Airが1.2kgってありえないでしょ?アップルの空気はそんなに重いの?

一方で、WindowsでWEB開発する条件が整いつつある

  • Office 365, Adobe CCなど、大手の会社のソフトウェアはだいたいマルチプラットフォーム対応になってきたよね
  • 開発環境にDocker使うんだったら、もはやWindowsでも一緒なのでは?
  • surfaceかっこいいよね!

つまりこういうことです

不満を持ちながらも惰性でMacを使い続けるよりはもっと良い環境になる可能性のある方向を目指す方が生産的だよねということで、試しにいっちょWindows機に移行してみるか、ということにしました
Web開発環境をMacBook ProからWindows機に移行してみた話

RFP

  • nodeとかrubyといったunixネイティブのソフトウェアは、仮想マシンを使ってlinux上で動かす。中途半端にWindowsの上で動かすと余計な手間がかかるのでやらない
    • WSL(Windows Subsystem for Linux)はどうなんだろう?
  • OfficeやAdobeソフト、エディタなどを仮想マシンで動かすと重そうなので、WindowsネイティブなアプリはWindows上で動かしたい
  • その間にあるものをどうするかが悩み

構成

しばらく試して落ち着いた構成がこちら。

Untitled.png

  • Windowsが提供する仮想マシン環境 hyper-V でlinuxマシンを動かす
  • 一台目dev-baseは、開発環境のベースとなるマシン
    • sambaサーバでディスク領域をWindowsに公開して、Windowsのネットワークドライブとしてマウントする
    • VSCodeやSourceTreeはすべてこのドライブに対して実行する
    • 同じ領域を、nfsサーバでも公開する
  • 二台目linuxは、プロジェクトごとに用意する仮想マシン
    • nodeとかrubyとかがインストールされる
    • ソースコードなどは、nfs領域上にあるものをマウントして利用

こうすることで、Windows上のアプリから読み書きしたファイルをリアルタイムでlinux上で操作することができる。

あとは、Windows上で適当なシェルを用意して、SSHでlinuxに接続してしまえばもうlinuxの世界。

試行錯誤

  • MacとWindowsのキーの違いは、AutoHotkeyでだいたい吸収できます
  • 仮想デスクトップの切り替えがキーボードでできないのも、win-10-virtual-desktop-enhancerで解決 (2019/05/05追記)標準でショートカットがあることを教えてもらいました!
  • WindowsのPowerShell上でsshが動くので、シェルはこれでもいいのですけど、なんか使いにくかったのでKittyを入れました (2019/05/05追記) Poderosaに乗り換えました
  • Macに乗り換えて泣く泣く別れた秀丸エディタと感動の再開を果たしたのですが、昨今の複雑化した開発の前には、もはや単機能エディタでは力不足ですね。初恋の人と同窓会で再開したみたいだと思いました
  • Docker on linux試したんだけど、これdocker内からファイルを書くとrootで書いたことになっちゃうのですよね
    • 最近のDockerだと、User Namespaceという機能で解決できるらしいのですが、うまく行かなかったので諦めました
    • Hyper-Vがすんなり動いたので、Docker for windowsはまだ試してない。うまく動けばこっちのほうがいいかも

良かったこと

  • Surface軽い!
    • 1.3kgのMacbook Proはリュックで背負っても辛い感じだったのですが、700gのSurface Proなら肩掛けカバンでも持ち歩くことができます。封筒にだって入っちゃうぞ。
  • スナップ機能が便利
    • Windows7の頃からあった機能らしいのですが、画面を左右に分割してブラウザとエディタなどのアプリを配置することができます。MacのMoomでもできますが、Windowsだと、左70%右30%みたいなことができるのが嬉しい
  • Windows Hello楽しい
    • iPhoneのFaceIDと同様の、顔認証によるログイン機能が搭載されています。パソコン起動したときディスプレイと目を合わせるのは「よろしくね」という感じでちょっとよいです

困ったこと

  • なんか不安定

    • スリープから復帰した時に仮想マシンが起きてこなかったり、外付けディスプレイへの描画が起きてこないなどの、かゆいトラブルが発生しています。今思えばMacは安定していたなあ
    • とはいえ、Macでトラブルが起きないのは、長いこと使ってきてトラブルを回避するノウハウを体が覚えているみたいなところもあるので、Windowsだってしばらく使えば安定してくるんじゃないかなと期待している
  • surfaceビミョー

    • surfaceの特徴であるTypeCover(超薄型キーボード)、キーボードとしては、多少ペコペコするけど普段使いでも行けるくらいよくできています。
    • 問題なのはタッチパネルの方で、普段はいいのだけれど、電車の中みたいに安定しないところで使おうとするとカーソルが暴走を始めます。たぶん、歪むと検出値が安定しなくなるんだと思う
    • だからといって外付けマウスを電車の中で使うのは不可能なので、指輪マウスを実験中w

2018-12-10 23.29.05.jpg

まとめ

予想していたとおり、Macじゃないと開発できないのはiPhoneアプリくらいで、unixベースのソフトウエアを使って開発するぶんには、MacでもWindowsでもできるなという感じです。

Macは良かったんだなあ、と思うこともあるのですけど、新しい環境は楽しいのでしばらくこれで続けてみようと思います。


daisuke furukawa

おひるねのできるフリーランサー。「モバイラーズオアシス」の中の人でもあります。

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

コメント