2ヶ月前まではブログチームのエンジニアでしたが、最近はマンガビューアを開発するチームに在籍しています。弊社では開発に利用する端末を決められた上限額の範囲内で自由に選ぶことができます。多くのエンジニアがmacOS上で仕事をしており、WindowsやLinuxをデスクトップ環境として利用しているエンジニアはどちらかというと少数です(少なからずいます)。近年では多くのプロダクトのローカル開発環境でDockerを利用できるようになっており、OSの差異によってセットアップに躓くことがなくなった結果Linuxデスクトップへの移行のハードルが下がる傾向にあります。自分も去年まではmacOS上で仕事をしていましたが、今年の頭にLinuxデスクトップに切り替えてようやく1年が経とうとしています。この記事では具体的にmacOSからどうやってマイグレーションしたのか、Linuxにして良かった点・困った点などを紹介します。いう環境を利用しているかまず普段自分がどういう環境で仕事しているかをご紹介します。Linux購入当時最新だったThinkPadのうち、ArchWikiで動作確認が取れているものを選択しました。Xシリーズはいつのまにかバッテリの取り外しができず、RJ45も廃止されていたので検討から外しました。オプションでフロントバッテリを選択しており、リアバッテリのホットスワップが可能なようにしています。実際、6セルのリアバッテリもあわせて購入しており、会社に居るときと自宅に持って帰るときで付け替えられて便利です。ドックはネット上で動作するか確認できませんでしたが、まあ問題ないであろうということで購入しています。ThinkPadだと全部あわせて予算に収まるのでお財布にも優しいですね。Suiteで完結しておりMacやWindowsでしか開けないものはエンジニアはほぼ扱わないので、その点で困ることはありません。いうならiOSアプリエンジニアへの転向ができないくらいです。Linuxデスクトップにしたのか丁度PCの更新時期が近づいたためリプレース先を検討し、Linuxデスクトップにしました。具体的には以下のような課題を解決したいという意図がありました。ぼくはありますどのようにマイグレーションしたのかmacOS上でLinux環境をプロビジョニングする仕組みをdotfilesに整備して移行しました。移行したとしても仕事ができないのは容易に想像がつくので、まずは業務の傍ら環境をせっせと作って、最後に一気に移行するというモデルです。Linuxの環境を用意してデスクトップ環境を用意しました。OSのインストールはスクリプト化しており、スクラップアンドビルドが容易な状態にしています。netinstのイメージを立ち上げて以下を実行するだけでインストールできるようになっています。最近は実行してませんが多分動くはず。あることを想定して書いているのでThinkPad上では動きませんでした。マウントされていたため。その場で適当に書き換えて利用しました。次にGitHubに公開鍵を登録します。するので公開鍵が登録されていてほしいですが、当然デスクトップ環境がないので登録が困難です。そこで公開鍵を登録するスクリプトを用意しました。以下のコマンドで公開鍵をGitHubに登録できます。https://dot.masawada.me/scripts/setup_github)"以前書いたこの記事は、今回のための伏線でした。masawada.hatenablog.jpここまでを終えた状態で、ちまちまプロビジョニングファイルを書いていきます。プロビジョニングにはmitamaeを利用しています。Releasesから引っぱってくるだけで実行することができます。これにより、プロビジョニングする環境を整える手間を省いています。参考にさせていただいています。見ると具体的にどのようなソフトウェアをインストールしているかを確認することができます。ビルドに時間がかかりsudoがタイムアウトしてしまうので、一時的にこれを防ぐ処理をしています。作ったのでよければご利用ください。https://dot.masawada.me/install)"で実行できるようにしています。適当なドメインを取って自分のdotfilesのrepoへリダイレクトするように設定しておくと便利です。hostingの設定で全てのリクエストをGitHubのファイル配信URLにリダイレクトしています。よかったこと最初に挙げた課題については全て解決しました。Dockerについては、babelによるトランスパイルがだいたい3,4倍くらい高速化しました。マシンスペックの差による部分もあるはずで、実際には2倍ちょっとくらいには高速化してるんじゃないかなーと思っています。ファンが高速回転することはなくなりました*1。この効果は結構大きくて、以前よりも快適に開発ができるようになったと感じています。その他特筆すべきことはありませんが、特筆すべきことがないくらいには手に馴染んでおり満足しています。困ったことマルチディスプレイ周りの挙動が怪しい予想はしていましたが、マルチディスプレイ周りの挙動が怪しいです。上では認識されているにも関わらずサブディスプレイの画面が表示されなくなります。モニタの回数分発行することでこの現象を回避できます。自分はディスプレイの設定を自動化するスクリプトを作っていて、F7を押下することでこれが実行されるようになっています。上記の問題については、このスクリプトの以下の修正で解決しました。接続時にうまく掴まえられなかったり、繋いだままサスペンドしたときの挙動などが微妙に不安定で、BluetoothキーボードやBluetoothイヤフォンを使わなくなりました。Picoを利用しています。イヤフォンについては、もともとSpotifyで音楽を聴いていたのでイヤフォンの接続先がスマートフォンになっただけで、操作はSpotifyのWebプレイヤーからするようにしています。Hangout等は直接有線のイヤフォンを刺すことにしています。FAQLTSじゃないんですか?はい。デスクトップだし、LTSじゃなくても派手に壊れることはないであろうというマインドでやっています。していますが、1年を通して派手に壊れたことはありません。シャットダウン時にハングすることがあった、放置してサスペンド状態になると復帰しないことがあった、くらいでした。派手に壊れたら代替機(空き状況によるけどおそらくmacOS)を借りられるので、そのときはそのときと割り切っています。次のPCもLinuxにしたいですか?はい。先にも書いたとおり現状は特に致命的な不満はないです。指紋認証がなくて毎度パスワードを打っているのが若干大変くらいです。Proにもなかったのでそんなに苦ではないです。他のエンジニアにもLinuxデスクトップを勧めたいですか?いいえ。自分は好きでLinuxデスクトップを使っているので壊れたら直すし使いづらかったら改善するので良いのですが、他のエンジニアがそうとは限らないし仮にも毎日使う端末なので直すのが苦痛というひとには全く合わないため強く勧めたりはしません。移行自体も準備するのは一苦労なので、やはり好きでなければ難しいでしょう。会話の流れで提案することはあります。以上Linuxデスクトップに移行した話でした。細かい話題は書ききれなかったのでまたどこかで記事にしようと思います。