Inside of LOVOT

GROOVE X 技術ブログ

Ubuntuが標準の会社でFedoraを使っている男の話

こんにちは、斎藤@aznhe21です。会社では最近「あず」と呼ばれたり呼ばれなかったりしています。 転職してから初めてのブログです。すぐブログを書くつもりではいたんですが気付いたら9ヶ月も経っていました。時間経つのはや。

さて、皆さんの社用PCにはどんなOSが入ってるでしょうか? GROOVE Xでは開発用にはUbuntuの入ったPCが配布されます。 これはLOVOTの中身がUbuntuということからで、各種ツールの作りや管理をLOVOT用と開発PC用で共通化できるというメリットがあります。

またLOVOT用のパッケージや開発用の各種ツールは社内のaptレポジトリで管理されており、普通のパッケージと同じノリでインストールできます。 自分でビルドする必要がないのはとても便利です。

UbuntuではなくFedoraという選択

しかし私はFedoraを使っています。大きな理由というのはないんですが、 元々自宅鯖用にCentOSを使っていたことから前職でもFedoraを使っており、その流れでGROOVE XでもFedoraを使っています (今の自宅鯖にはRHEL無償版を使わせてもらっています)。 snapが嫌というのもあります。いやこれが半分くらいあるかも。

FedoraでもUbuntuのパッケージを使う

開発用のツールはUbuntu向けには配布されていますが、裏を返せばFedoraでは使えません。 一部ツールはGo製なのでその場合はパッケージからバイナリだけを抜き出して使うこともできなくはないんですが、 外部ファイルを必要としていたりGo製じゃなく依存ライブラリがあったりする場合は管理が面倒です。

そこでシステムコンテナを扱えるIncusを使います。 コンテナと言えばDockerやpodmanですが、これらはアプリケーションコンテナを扱うためのツールです。 アプリケーションコンテナはアプリケーション単体を扱うものですが、システムコンテナはsystemdなどを含めた複数プロセスを扱います。 これにより実質的にVMのような使い方ができるのです。 しかもコンテナであるためメモリ消費等オーバーヘッドは無視できるレベルです。

細かい使い方は説明しませんが、ホストのディレクトリをコンテナにマウントすればファイルの共有も簡単です。

コンテナ内でもmDNS

少し面倒なのがmDNSの扱いです。LOVOTの開発ではよくLOVOTにsshするのですが、 LOVOTに付けた別名がmDNSとして広告されるため、接続先はこの別名を指定するのが便利です(※)。 しかしUbuntu環境はコンテナ内でありマルチキャストを使うmDNSのパケットは届きません。 そこでmdns-repeaterを使います。

※LOVOTにsshできるのもmDNS名が広告されるのも開発モード限定です。

mdns-repeaterはネットワークのインターフェース名を2つ以上指定することで、各インターフェースに届いたmDNSのパケットを中継・転送してくれます。 Incusのネットワークインターフェース名がincusbr0でホスト側のネットワークインターフェースがwlp0s20f3なら、 ホスト側でmdns-repeater incusbr0 wlp0s20f3とコマンドを実行することでコンテナ内からもmDNSが使えるようになります。

Fedoraのパッケージにはsystemd用のファイルが含まれるので、設定しておくことで自動起動させることができます。

$ cat /etc/sysconfig/mdns-repeater
OPTIONS="incusbr0 wlp0s20f3"
$ sudo systemctl enable --now mdns-repeater

使っているツールとか

OS・ディストロの話だけでは味気ないのでツールの紹介もしておきましょう。

デスクトップ環境はKDE

KDEは普通です。なのに痒いところに手が届く利便性も持っています。デスクトップ環境にこれ以上何を望むでしょうか?

なぜかUbuntuもFedoraも、標準のデスクトップ環境にはGNOMEを採用しています。 しかしGNOMEはデスクトップ環境としては特殊と言わざるを得ません。 WindowsともmacOSとも大きく異なったUIを持ち、数多の拡張機能を入れなければ不満が募り続けます。

私はカスタマイズをするためにデスクトップを使っているわけではないのでKDEを使います。 最初からストレスなく使えますし、ウィジェットによって大小様々なカスタマイズもできます。

デスクトップの様子
Windows 11っぽくランチャーは真ん中にし、左下にシステム情報用ウィジェットを配置している

スクショはSpectacle

前回の記事でいいスクショのツールがないよーという話があったので書いておきます。

私はスクショの撮影には専らSpectacleを使っています。 KDEに付属しているツールで、スクショを撮ったまま編集もできます。 動画の撮影もできます。多分WindowsのSnipping Toolを参考にしてそうです。ただし今のところ文章の抽出はできません。 KDE付属なのでもちろんWaylandでもちゃんと動きます。

エディタはNeovim

社内ではVS Code派がいたりJetBrains派がいたりしますが、私はNeovimを使っています。

学生時代に軽い気持ちでvimを導入したらキーバインドから離れられなくなりました。 エディタ向けvim系プラグインは大体不満が出てくるので諦めました。助けてください。

ここで宣伝です。LSPのコードアクションを適用する前からどうなるかをプレビューできるプラグインを作っています。 便利なので皆さんも使ってみてね!

ターミナルはWezTerm

OSC 52(エスケープシーケンスでコピペ)やundercurlなどニッチっぽい機能にも対応していて便利です。 マルチプレクサが内蔵されてるのでtmuxいらずです。

さいごに

単純にLinuxで仕事ができるって良いですよね。

GROOVE XではLinuxデスクトップにこだわりのある方を募集しています。