ぶていのログでぶログ

思い出したが吉日

業務で使っているPCをLinuxデスクトップにしてから半年が経った

この記事はGMOペパボ Advent Calendar 2018の19日目の記事です。


会社PCをLinuxデスクトップにしてから半年が経ったので感想とかTipsとか書きます。

なぜLinuxデスクトップにしたのか?

以前はMacBookProを使ってました。たしか、2015年後期モデル。 半年前にそのMacBookProのレンタル期限が切れたので、新しいMacBookProに更新するかどうか悩んだ。 でも、キーボードはペチペチだし、ESCキーもないし、Appleにロックインされるのが嫌だったのでLinuxにすることにした。 Windows Subsystem for Linuxも考えたけど、ネイティブでLinux使いたかったのでWindowsは選択しなかった。

実際どうなのか?

普通に使える。けど、会社の環境のおかげかも知れない。 ペパボでは、G suiteを使っているのでブラウザがあればドキュメントのやり取りができるし、メールもできる。 MacWindowsが絶対に必要ということがないのも、普通に使えている要因かもしれない。

普通に使えると書いたけど、ハマりどころもたくさんある。 後述するけどマルチディスプレイ関連とか、カーネルアップデートしたら起動してこないとか、なんか挙動がおかしいとかあって、そういうのを自分でなんとかしようという気持ちがないとLinuxデスクトップを使っていてつらいかもしれない。 逆にそういうのが許せるなら、カスタマイズでいろいろできて楽しいはず。

使っている機種とディストリビューション

Dell New XPS13(9370)を使っている。 MacBookProと遜色ないスペックだったし、Ubuntuデスクトップの動作確認が取れていたりしたのでNew XPS13を選択した。

ディストリビューションはUbuntu18.04。だけど、今はアップデートしたのでUbuntu18.10を使っている。 Linuxデスクトップの常用は始めてだったので、Ubuntuデスクトップなら情報が多いだろうと思って選択した。

Windowsとのデュアルブート

会社的にも私的にも始めてだったので、なにかあったときようにWindowsとのデュアルブートにしている。 最近のWindowsはダイナミックボリュームになっていて、後からボリュームの縮小ができてとっても便利だなぁっと思いました(小並感

使用しているツール

くらいかなぁ。

HiDPIについて

New XPS13は4Kディスプレイなのだけど、DPIを100%にすると小さすぎて文字が読めない…。 逆に、200%にするとでかすぎる…。 この中間くらいにしたいのだけど、今のUbuntuのディスプレイ設定では選択できないのであった。。

f:id:buty4649:20181219215431p:plain
ディスプレイの設定画面

しょうがないのでxrandr*1を使っていわゆる小数点DPIを設定している。 例えば、以下のようにすると拡大率が140%になる。

$ xrandr --output eDP-1 --mode 3840x2160 --panning 5376x2160 --scale 1.4x1.4

--panning を指定するところがポイントで、これを指定しないと、画面の最大サイズは5376x2160なのに、デスクトップ領域が3840x2160までしか使えず悲しい気持ちになる…。

で、これで快適な生活をおくれるようになっただけど、この設定は永続化しないのでなんとかしないとならない。 そこで、autorandrというツールを使ってこの問題を解決した。 このツールはxrandrの設定を保持してくれて、よしなに設定を復元できる。 aptで入るのもとてもよい。

$ sudo apt install -y autorandr

# 今の設定を保存する
$ autorandr -s eDP-1

# 手動で設定を復元する
$ autorandr -l eDP-1
# または
$ autorandr -c

マルチディスプレイ問題

この問題が非常に悩ましい…。 外部ディスプレイを接続すると正しく表示されなくて非常に困る…。 autorandrでマルチディスプレイ用の設定を保存しても、たまにうまく設定が復元されず画面がおかしくなったりする…。 また、OSのディスプレイ設定画面でマルチディスプレイを設定できるのだが、デュアルモニタにするとpanningをちゃんと設定しないのかおかしいことになる。。 画面のクローン設定にしてもうまくいかないことが多いうーむ。。 そのため、勉強会とかで発表を行なうときにつらい気持ちになる…。

autorandrを使うことで一応は解決できることがわかっている。 さっきと書いていることが違うじゃないかと思うかも知れないが、autorandrの自動復元機能ではなくデフォルトで用意されているプロファイルを使う。 commonclone-largest というデフォルトのプロファイルがあるので、どちらかを使うとautorandrがいい感じにマルチディスプレイを設定してくれる。

ここらへんはさすがにMacWindowsのほうが出来がいいなぁっと思う。

cgroupの利用

例えばSlackとかで大量にリソースを食って他のアプリが遅くなるということを経験したことがあると思う。 Linuxの場合、cgroupを使えば手軽にリソース制限ができるのでこの問題が解決できる*2。 cgroupを使うのはちょっとめんどくさいがまつもとりーさんが作ったrconを使えば簡単にcgroupが扱えて便利。

# --type=renderで絞らないとGPUアクセラレーション用のプロセスも制限してしまいカクカクになってしまう
$ sudo rcon --cpu 50 --pids "$(pgrep -f "slack --type=render" | paste -sd" ")"

最後に

Linuxデスクトップ環境にしてからのあれやこれをつらつら書いてみた。 今回紹介できなかったけどSnapcraftを使えばrbenvが不要になるかもしれなかったり、Dockerがネイティブに使えるといったLinuxならではのメリットもあるはず。 つらいところもありますが、個人的にはLinuxデスクトップ環境に変えてよかったと思っています。

エンジニア全員にLinuxデスクトップ環境の常用を勧めるわけではないけど、こういう選択肢もあるよというのが伝われば幸いです。

*1:えっくすあーるあんどあーるって読むらしい

*2:というのを最近気がついた