わたしに声をかけてくれるIT技術者、とくに経験が浅い人に私用PCの開発環境は何を使っているかということをよく聞かれます。なにかの役に立つかもしれないので、環境を紹介しつつ、どういう思いでそうしているのかについても書きます。
私のバックグラウンドを説明しておくと、会社員として15年ちょっとLinuxカーネルの開発、サポート業務をしていました。その後6年くらい別のSaaS企業で自社インフラ用の分散ストレージの開発をしています。このストレージはLinux上で動作します。趣味ではLinuxカーネルやその周辺領域についての技術書を出したり記事を書いたり、YouTubeの動画を公開したりしています。つまりLinuxに非常に縁が深いです。
わたしはPCを2台持っています。一つめは普段使いのモバイルノートPC、もう一つはミニタワーのデスクトップPCです。ノートPCはVAIO Zで、スペックを盛れるだけ盛りました。結構高かったですけどスペックが低くて困ることは今までなかったしバッテリもよくもつので、なかなか良い買い物だったのではないかと思っています。このマシンを買った理由はPCをそろそろ買うかというときに「なんか衝動買いしたい」と思ったからです。今思えばここまでのスペックは必要ではなかったかも、と思いました。あとディスプレイを4Kにしたのですが14インチで4Kはそんなにうれしくないなと気づいたので、次はもうちょっと低い解像度にしようと思ってます。そのほうがバッテリのもちもよくなるし。
ノートPCにはWindowsがインストールされています。これはけっこう意外に思われます。なぜなら私は前述の通りLinuxに縁が深く、仕事ではLinuxばかりを扱っているからです。ではなぜかというと、Linuxデスクトップの使い勝手があまり良くないと思っていることと、使いたいソフトウェアの一部がWindowsかMacでしか動かないからです。Linuxを愛してはいますが、Windowsが嫌いというわけではないのでWindowsを使っています。いいOSだと思います。Linuxデスクトップの使い勝手云々はUbuntu 18.04にプリインストールされていたものが気に入らなかっただけなので、今は全然違うかもしれません。ただし、可能であれば物理マシン上にLinux環境を用意したいという強い思いは無いので、そのままにしています。また、オープンソースを愛していますが、身の回りのものをオープンソースで固めたいという思いもとくにないです。
「LinuxはArchとかGentooでなくてUbuntuなんだ」と言われることもあります。なんかこう、吊るしのパッケージが嫌とか、いろいろチューニングしたいなどのこだわりがあるのかと思っていた、という意味で驚かれるようです。ただ私は可能な限り環境構築で躓きたくないという思いがとても強いので、ユーザが多く、何もせずにだいたい動き、トラブったときも事例がいっぱいでてくる傾向にあるUbuntuを「楽そうだから」という理由で使っています。昔はいろいろこだわりがありましたが、数年後にめんどくさくなってやめました。
Macにしない理由は、わたしの使うものの中にMacでは動くがWindowsでは動かないというものが無いからです。昔Macbook Airを持っていたけれども、私にとってはいまいち使い勝手が良くなかったというのも理由です。音楽性の違いというやつでしょうか、あんまり深い理由ではないです。MacのCPUアーキテクチャがx86からARMになった後はバッテリが化け物のように持続するという話を聞いたのでちょっと欲しいなとも思っていますが、すごく欲しいわけではないです。あとVM上にインストールするUbuntuは作業の都合上、なるべくx86アーキテクチャのものにしたいという理由もあります。
Linuxが必要な開発はほとんどはHyper-V上で動作するUbuntu環境上でやっています。それであまり困らないのと、再起動などのマシンをどうこうする処理が楽にできるからです。さきほど使いたいソフトウェアの一部がLinux上でしか動かないというようなことを書きましたが、わたしがPCを立ち上げている時間のうちのほとんどはWebブラウジングしているか、あるいはUbuntu VMにssh接続ないし後述するVSCodeのremote development機能を使って何らかの作業をしているだけです。そう考えるとWindowsは私にとってほとんどハイパーバイザなのではという気もします。
ノートPCは自宅では1枚のデカい4Kディスプレイにつないでいます。画面がデカいほうが仕事がはかどるからです。とくにテキストを読みながら作業するときに左側にテキスト、右側に開発環境を表示するとすごくよいです。2枚以上持たない理由はとくになくて、今のところ必要と思っていないから持っていないだけです。人から「すごくいいよ」と勧められたら買うかもしれません。
LinuxでVMでは都合が悪いような、物理マシン上のLinuxでしか試せないことをすることがあります。カーネルの特定の機能を使う場合、VMか物理マシンかで大きく結果が変わるベンチマークをとるような場合に必要になります。このようなときは、もう一台のPCを使います。こちらは普段はディスプレイやキーボード、マウスは接続していないちっちゃいデスクトップPCで、Ubuntuがインストールされています。物理マシンがどうしても欲しいというのは珍しいので普段は電源を切っていて、必要なときだけ電源を入れてsshあるいはVSCodeから接続します。このマシンのCPUはAMDのRyzenですが、とくにIntelに比べてAMDが好きとかではなく、安かったからという理由だけです。
テキストエディタはVSCodeです。理由は使うのが楽だと思うからです。とくにremote development機能はWindows上のVSCodeからUbuntu VMを、まるでローカル環境のように扱えるので気に入っています。過去に比べて次第にプラグインが増えたり似たようなものが乱立したりして扱いづらくなってきていると感じますが、今のところ他の何かに乗り換えるつもりはありません。昔はEmacsを主に使っていたのですが、.emacsに色々書いたりメンテしたりするのが面倒になって、同僚が勧めていたVSCodeに乗り換えました。Vimも「VSCodeを立ち上げるにはちょっと大げさかな」というような設定ファイルをちょっと書き換えるとか、あるいは書き捨てスクリプトを作るときに使います。
最後になりますが、私が使っている環境は誰かにおすすめするものではりません。私は私なりの思いがあってこの環境にしていて、いまのところそこそこ気に入っているというだけです。みなさまも個々人の思いに従って好きなのを使えばいいと思います。