tl;dr
もう少し長い背景説明
MacBookは素晴らしい。
まずbrewの信頼性が高い。 イケてる開発ツールが多い。WIndows, Linuxでも提供しているツールも多いがSequel ProなどMacでしか提供されていない素晴らしいツールも多い。 なにより利用者が多い & LinuxやWindowsのようにディストリビューション/バージョン間の差異が少ないことから多くのノウハウがウェブ上にあり、周りに使っている人間が多いためヘルプも頼みやすい。 見た目もイケてるし、ミッションコントロールやワークスペース間の移動などUIも洗練されている1。
なぜやめるか。
一つは自宅で使用しているubuntuとショートカットキーやUIが違うことによる操作への最適化限界がきになったからだ。 ubuntuとOSXではワークスペースの移動のキーなど多くのOS標準操作方法が違う。 そのためショートカットキーを覚えることが難しく、毎回設定を参照するようなことをしていた。 また、ubuntuではCtrlが使われるケースでMacはMetaキーを使うため、ブラウザ操作などショートカットを多用するシーンにおいて間違ったキーを押すことが多かった。 OSXのUIは明らかにubuntuより優れているため自宅のデスクトップをiMacないしMac Proにすることも考えたが、コストパフォーマンス面でPC/AT互換機と比べて格段に悪くまたMac Proが年単位で放置された過去を鑑みるとアップデートサイクルをこちらで制御しにくい点も欠点となり、自宅でOSXを使うことは断念した。
となると可能なら会社で使うPCをubuntuにしたいところだったのだが、ずっと諦めていた。 というのは以下の点で会社所属のエンジニアにMacBookを渡すことは合理的であるためだ。
- 会議室など自席以外でプロジェクタ・大型モニタを使う時にノートブックは有用
- MBPなどapple製品はブランドイメージが高くエンジニア受けも比較的良い
- エンジニア全体でMBPに統一するとトラブルシュートや(情シスなどによる)サポートが簡単
- 開発チームとしてもPCをMacBookに統一すると環境差がなくなり開発しやすい
が、先日MacBookによるコンパイルの重さ・HDDへのアクセスの遅さ・メモリの足りなさに辟易としているときに気がついた。
- うちの会社はMac, ubuntu, windowsバラバラ
- 退職者の比較的高性能なデスクトップPCが余っている
- 会社に私用のMBA持っていっているので会議用はそれで事足りる
- ローカル環境での開発にDockerを利用しているため開発環境の差が吸収できている
- CPU使用率を見ているとdockerの特にIO部分で負荷が高いが、これはDocker for Macがlinux VM内でdockerを動かしているため。linuxで直接dockerを動かすとこの負荷はかなり軽減できる(はず)
以上のような理由でむしろubuntu(linux)を使わない理由がないことに気がついた2。
現在ほぼubuntuへの移行が終わった状態だが、メモリやCPUなどが相対的に強化されたこともあり非常に快適に感じている。 特にDocker周りの動作が非常に軽く、レスポンスが早くなった。
MacBook Proからubuntuに移ったデメリット
当初は特にubuntu移行のデメリットはないかと思っていた(UIが劣るのは織り込み済み). が、最近徐々に手を出し始めていたxcodeによるiOSアプリ開発ができないことは少し頭が痛い。 手元のMBAは非力で開発にまったく使えないため、この点に関しては何らかの対策を打つ必要がある。
一般的な新卒ソフトウェア系エンジニアにとってUbuntu(Linux)は第一選択肢になるか
たぶんならない。僕がubuntuを使えるのは所属している会社がスタートアップで各々の裁量が大きいこと、特にソフトウェアエンジニア内でMacBookに揃えようという方針がないこと、ubuntuの経験がそこそこあり他人を頼らなくても自力で大抵の問題は解決できることなどが背景にある。
新卒や大企業のソフトウェアエンジニアの場合、いろんな要因でapple製品に統一したかったりするメリットがある。そもそもMacBookが強い会社は新卒もMacBookを使ってくれたほうが教えやすいし教えてもらいやすい。
ただ、今後長いことソフトウェア技術の核となるdockerがmac上では遅いというのは軽視できないデメリットで、Dockerを効率的に使う視点から長期的には開発PCでもlinuxの利用が増えていく可能性はあると思う3。