開発マシンを新調した備忘録(2023年版)

Mac mini(2018)を開発マシンとして利用していたのだが、年々Macが開発マシンとして使いにくくなっているので開発機を新しくすることにした。

筆者はサーバーサイド開発者である。なので正直なところ、開発機として用いるのであればLinuxが一番良いと思っている。大学生の頃はUbuntuを入れたノートPCを常用していた。

MacはDockerの遅さが致命的だし、WSLもやはりコンテナ周りはしんどい。ScaNNとかML系の一部ライブラリはWin/Macでは動かなかったりする。となるとやはり仮想マシンを介さず、高速にLinuxを使いたい。

ここ数年はラップトップなしで過ごしてきたものの、やはり文字入力はラップトップPCでないと不便なこともあり、LinuxノートPCを構築することにした。

筆者は環境を自分の使いやすさにあわせてゴリゴリにチューニングするより、好みには軽く合わせる程度で既存のエコシステムに乗っかる方を優先ししている。これはポータビリティとか、「どこでもやれる」ことを優先した結果である。なのでWindowsでのAutoHotKeyもキーバインドくらいしか設定していない。あとはランチャーくらいは入れるが、もうそれで充分だ。

おそらくこれはサーバーに入って作業する機会をふんだんに得てしまったことが原因だと思う。そういう世界だとデフォルト設定で速く走れる奴が一番速い。

要件と機種選定

要件としてはメモリ16GB、ディスクは512GB以上欲しい。あとは持ち運びしやすいこと。これさえ満たせればあとはどうでも良い。腰を据えた開発はデスクトップPCでやるし、これ以上のスペックが必要な時はクラウドに大きめのインスタンスを立ててSSHしたほうが速い。そういうわけで開発用のノートPCは消耗品と割り切って安いものを使うことにしている。

Linux ラップトップの定番といえば Thinkpad X1 Carbon であろう。Thinkpad は有力な選択肢だが、人気ゆえに高額である。メルカリを探してみたが、理想の構成となるとけっこう高い。

そこで何となく秋葉原を見て回っていたところ、ドット抜けはあるが希望スペックを満たすDELL Latitude 5300が税込み35,000円だったので買ってしまった。公式ではUbuntu18.04までしかサポートしていないが、昨今のノートPCはブートローダーのレベルでWindows以外が起動しないようになっているみたいなことが割とあるため、正直なところ「Ubuntuが動く」と公式で情報があればあとはどうにでもなると思っている。たぶん22.04も入るだろう。あと地味にUSB-Cから給電できるのも嬉しい。普段使いはこっちで良い。

ちなみに過去にDynabookでLinuxを動かそうとしたことがあったが、デュアルブートができず、かなりイレギュラーなインストール方法をとったArch Linuxを無理矢理動かす以外に動作させられなかったことがある。勉強にはなったが、あぁいうのは本当にやめてほしい。

Latitudeシリーズは前々職で利用していたが、BitLocker周りが暴発しやすいことを除けば割と扱いやすい印象がある。突然「BitLockerのキーを入れてください」とブルスクになることが多い気がするのだが、Linuxを主に使うので関係ない。

キーボードとかトラックパッドの品質は拘る人からしたら不満しかないだろうが、筆者は鯉レベルに環境への耐性が高いので問題ない。

デュアルブート、できるよ

さて、心配していたデュアルブートであるが、簡単にできた。Win11Proが入っているので一応残しておくか、という程度のノリでデュアルブートにしてあるが、Windowsを使う予定はほとんどない。

デュアルブートは以下の方法でできた。公式で手順の用意があるのだが、若干手を加えている。とはいえ手順があるのは親切である。

  1. Windowsのパーティションを縮小する

  2. WindowsのBitLockerを無効にする

  3. 再起動

  4. 起動時にF2を押して、BIOS/UEFIを公式の手順通りにいじる

  5. 起動時にF12を押して、USBメモリに焼いたUbuntuのイメージを起動する

BitLockerを除けばいつも通りの方法である。昔からLinuxを入れてきた人間にとっては特に困る点もない。

Ubuntuを入れてやったこと

Ubuntuはユーザーが多いので、探せばすぐにトラブルシューティングできるのも良いところだ。

まずはMozcのインストールである。こちらを参考にした。

LatitudeはAの横がCapslockなので、Tweaksを入れてctrlに変更した。なぜか /etc/default/keyboard からの設定が効かなかったが、Tweaksで解決したのでよしとしよう。個人的な好みでEmacsバインドもTweaksで有効化している。Vim/Emacsのどちらかのキーバインドを使えないと発狂する身体になってしまった。

その後は AppImageLauncher を入れた。ObsidianpCloud を入れるためである。pCloud に Obsidian の vault を入れてあるので、ローカルとsyncしてVaultを設定する。

次に設定するのはSSHの公開鍵/秘密鍵周りとなる。最近はGitHubがSSHキーのベスプラを用意してくれているので従う。

筆者はリポジトリ管理にghqを使っている。というわけでgoを入れよう。これも公式のインストール手順に従う。終わったら go install で ghq を導入する。

次はターミナル環境を整備する。といっても prezto で済ませる。ちなみにaptで入るzshは /usr/bin/zsh なので chsh -s /bin/zsh してはいけない。sudo chsh -s /usr/bin/zsh する必要がある。

ここまでできたら、あとの環境設定はdotfilesにまとめてあるのでだいたい終わり。setup.zshを叩けばだいたい終わるようになっている。

次にDockerを入れる。Docker desktop は要らないので、Docker engineを入れる。これも公式の手順を見る。

ただし、このままだと毎回sudoが必要なので、dockerグループに自分を追加する。

このあと折角なので『機械学習による検索ランキング改善ガイド』の実験環境を作ってみたが、無事に動作した。docker-composeで動いているので動かなかったらそれはそれで困るが……

この記事が気に入ったらサポートをしてみませんか?