sosukesuzuki.dev

June, 05 2024

プライベートでMac使うのやめた

最近、自分のプライベートの開発環境を大きく変えたので紹介する。

先にまとめ

  • プライベートではMacを使わなくなった
  • 家にUbuntuが入ったミニPCを置いた
  • 外からはThinkPad X1 CarbonからTailscale経由のSSHで家のミニPCに接続

購入まで

まず、自分にとって最も大きな変化はプライベートでMacを使わなくなったことだ。2013年くらいにプログラミングを始めてからずっとメインのOSはMacだったので、約10年ぶり、ほぼ初めての非Mac環境である。

自分の普段の開発のユースケースは、Webアプリケーション開発とNode.js上で動くソフトウェアの開発、WebKitへのコントリビューション、たまにRustやGoやC/C++で自分専用ツールの開発、くらいなので別にMacで困っているわけではなかった。Web開発やNode.js上のソフトウェアの開発はまあ普通にMacで困らないし、WebKitもさすがAppleという感じでMacでも全く困らない(というかむしろMacの方が困らない)。Rust/Go/C/C++ あたりは、他の人の環境でも動くソフトウェアを作るならMacだけだと困ることもあるのだろうけど、Macでしか動かさないので特に困ってはいなかった。

じゃあなんでMacを使わなくなったのかと言うと、自分はMacを持っていなくて、かつMacは高額だからだ。

これまで、会社や研究室から貸与されたMacBookをプライベートな開発でもたくさん使っていたのだが、まあ普通にあんまり良くはないので、それはやめようと考えていた。研究室のPCの場合はプライベートで使っても問題はないかもしれないが、自分は大学院にいくつもりはなくすぐ返却することになるので、あまり使いたくなかった。

ということでMacを自費で購入しようと思ったのだが、なんとMacはめちゃくちゃ高いのだ。自分のほしい性能のMacBookを購入しようとするとなんと300,000円を超えることがわかった。自分はパソコンにそんなにお金を出したくないので、Macはとりあえず諦めることにした。

「どうしたもんかなあ」と思っていたときに @kateinoigakukun と話したら普段はミニPCで開発を行っているということを教えてくれた。正直ミニPCのことは全く考えていなかったのだけど、家にでかいディスプレイとかキーボードとかマウスはある。それに、家のクローゼットの中には5年くらい前に買った ThinkPad X1 Carbon があってSSHできるから、別にそれでも問題ないと思った。

そこで、大学内のパソコン好きが集まる部屋 で「ミニPCにLinux入れて開発するのどう思う?」と聞いたら概ね肯定的な反応が返ってきたので、Amazonでその場で購入した。

購入したミニPC

自分はミニPCについて全然詳しくないので、偶然その場にいた後輩に聞いて Minisforum Venus Series UM790Pro を買った。スペックは以下の通り:

key value
CPU Ryzen 9 7940HS
メモリ DDR5 64GB
ストレージ 1TB PCIe4.0 SSD

今 Amazon で見たら 146,980 円だったが、自分が買ったときはセールで 120,000 円くらいだった。CPU を Ryzen にするか Intel にするかは悩んだが、結局 Ryzen にした。特に理由はない。

家に設置したミニPC、自分のものであることを示すためにステッカーを貼ってある

Ubuntuインストール&セットアップ

購入したミニPCにはWindows 11が入っていたのだが、Windowsをメインとして使う気はなかったので、何かしらのLinuxを入れる必要があった。大学の後輩たちに聞くと「Arch良いっすよ」とか「Fedoraどうすか」とか言ってきたが、Linuxビギナーである自分にはちょっと難しそうと素直に思ったので、Ubuntuを入れることにした。特にこだわりはないし、他のディストリビューションを批判するつもりはない。今後変える可能性もある。

自分は本当にパソコン初心者で、Ubuntuの入れ方や初期設定なども全然自信がないので、大学の後輩を頼ることにした。大学内のパソコン好きが集まる部屋にミニPCを持っていき、後輩のCentRaくんにインストールディスクの作成から何から何まで全部やってもらった。今度ご飯を奢ろうと思う。

日本語入力のためのキーボード設定など一部つまづいたところはあったが、割とすんなり設定ができた。設定を初めてからWebKitをビルドできるようになるまで3時間くらいでいけた。すべて後輩のおかげだが。一点だけ困ったのは、peco の表示がおかしくなることだった。おそらく https://github.com/peco/peco/issues/554 と同じ問題で TERM=xterm としたら直った。

そのあと「WindowsからSSHで使いたいんだよね」と言ったら、これまた後輩が「Tailscaleいいっすよ!!」と教えてくれたのでその設定もその場でサクッとした。めっちゃ簡単でびっくりした。

自分はそこまでキーマップをカスタマイズする方ではないが Ctrl + hjkl をカーソルに割り当てるのだけはないとまともに操作できない。MacのときはKarabinar Elementsを使っていたが、Linux版はない。そこでLinux用の良いキーリマッパーを探したところ xremap というのを見つけたので、それを使うことにした。YJITユーザーではないが、sqldefもたまに使うので、k0kubunウェアには結構お世話になっている。

普段の開発

家にいるときはミニPCをデスクトップPCとして使っている。UbuntuもLinuxも使うのは初めてだが、直感的に操作できるGUIが備わっているので今のところは特に困っていない。日頃から使っていたアプリケーションのほとんどはブラウザ上で動作するものだったので、それをそのまま使っている。ブラウザ最高。

ただ、WebKitに新しいファイルを追加するときにはXCodeのGUIが必要になる。このミニPCを買ってからそういう機会はまだ来ていないのだが、そのときだけはMacを使うかもしれない。

外にいるときは、2019年に買ったThinkPad X1 CarbonからSSHで接続して開発をしている。このマシンにはWindows 11が入っている。Windowsで開発をしようとするとしんどいみたいな話を聞くことがあるが(自分はやったことないので知らない)、SSHのクライアントとして使う分には特に困っていない。ただ、長いことMacを使っていたため細かいところで使い方がわからずわざわざググることはある。こないだはプリンターへのつなぎ方がわからなかった。

ThinkPad から家のミニPCへSSH接続するとき、ほとんどケースでVSCode Remote Extentionを使っている。これのおかげで、ミニPCを直接使うときとほとんど変わらない操作感を実現できている。

おわりに

良い感じの環境を整えることができて満足している。

そして相変わらず筑波大学というのは便利な場所で、パソコンが苦手な人にパソコンを教えてくれる人がたくさんいる。