よくある個人の開発物の内容だが、現状の開発環境をまとめておきたい。 2022 年がそろそろ終わるので、最近になって改善したものがまとまっているはず。
全て dotfiles にまとまっているので、よかったら参考にしていただけるとありがたい。
Machine
メインが System76 (Arch Linux) で、サブに Macbook Pro 2018 (MBP)。この構成でここ 2 年位は安定している。
MBP に関しては、 一回電源が全くつかなくなったが、Apple ストアで 6 万円払ったら直してもらえた。サポートが長くて助かる。
メインの Linux 機に関しては、今は System76 の Lemur Pro 10 (Core i5)を使っている。コスパは最強だが、1 年ほど使ったらキーボードが壊れた。15,000 円くらいで交換して換装したが、今度は WiFi モジュールの電波が異常に弱くなっており、 USB のドングルを使うなどフランケンシュタインぶりを発揮している。
正直 Thinkpad X1 Carbon もしくは Thinkpad Nano が欲しいが、ちゃんとしたのを買おうとするとやや高い。Thinkpad はキーボードが良いんだが、 Lenovo の外付けキーボードを利用すれば何とかなるので、完全に使えなくなるまではこれを使おうと思う。
ThinkPad トラックポイント キーボード II – 英語
OS
上述の通り、Arch Linux 一択、サブで Mac OSX。他の OS も色々試したが、 開発機としては Arch 以外考えられなくなってしまった。
- Windows 11
- Surface Pro 6 を買った 時に試したが、細かい挙動が遅くてイラッとしてやめた
- Linux をインストールしたら爆速だったので、スペックのせいではなさそう
- WSL2 はかなり良さげ。でも素の Linux の方が圧倒的に速い
- Windows アップデートがうざい
- 任意のタイミングで
pacman -Syu
させてほしい
- 任意のタイミングで
- メイリオが微妙
- Ubuntu
- 配布パッケージが Arch に比べると少ない。Pacman と AUR は偉大。
- 配布パッケージがめっちゃ古い。 Arch だったら Node.js 18 なのに、 Ubuntu だと 8 とかのレベル。
- Node とかだったら fnm とかで管理すればいいけど、 fzf とか tmux とかツール系が古いのはけっこうストレス
- まあその分安定しているのかもしれないが、Arch のローリングリリースで意外と困ったことが無いからデメリットの方が大きいと感じた
- Gentoo
- Mizchi さんが Gentoo にしてた気がする
- 試していないが、もし何らかの原因で Arch やめることになったら最初に検討すると思う
- Chrome OS
- Chromebook に Crouton を入れて Linux を動かす、というのは 昔かなり試したが、結局良い Chromebook マシンがなくて諦めた
- Chromebook は微妙にキーボードが違ったりするので微妙かも
- ただ外付けキーボードを使う前提なら、ハイスペックな Chromebook は有りかもしれないと思っている
- OSX
- 3 年くらい Macbook Pro 2018 で仕事してたが、 Linux に戻った
- ターミナルの立ち上げとかが、いちいち遅い
- ファイル容量が謎に圧迫される
- コマンドが微妙に Linux と違ってイラッとすることがある
- これは濡れ衣ではあるw
- Homebrew が遅い
- pacman が速すぎるかもだが
- OS アップデートがうざい
- 同じく任意のタイミングで
pacman -Syu
させてほしい
- 同じく任意のタイミングで
最後の OSX に関しては、 iOS 関連の開発はこれが無いとできないので、サブとして利用している。ちなみに自分は iOS に関しては React Native + Linux でなるべく OSX を使わなくて良い開発スタイルにしている。こちらも案件があればぜひお願い致します。
マルチメディア系だと、ごくたまに動画作りたい時とか iMovie 便利だし、今はやらないけどアコギの録音する時とかに良さそう。
Window Manager & Desktop Environment
i3 を使っている。 いわゆる Display Manager は使っておらず、PC を起動したら startx
するスタイル。さすがに毎回 startx
するのは面倒なので、自動起動するようにしている。
見た目にはあまり拘りがないが、 i3 のデフォルトだとあまりにギザギザしているので、 i3status-rust を使って最低限の見た目を整えている。
他の選択肢
Wayland だと Sway 一択なんだが、 Wayland 自体下記の問題点が解決できないので、一時期使っていたがやめた。
- Zoom が使えない
- Google Meet 等で、画面共有ができない
Workaround としては、 Web 会議の時だけ X11 もしくは Windows を立ち上げるのはできるかもしれない。特に X11 と Sway の同時起動は、 Tmux のセッションも共有できるし、うまく設定できれば理論上は可能だ。自分も一時期使っていた。
ちなみに、今まで色々な DE を試した。変遷は下記。
- 高校生: Windows
- 大学生: Unity, Gnome, Xfce4
- 新卒: Openbox, Awesome
- 今: i3
Unity と Gnome は重かったのでやめた。Unity というのは、今は存在しない Ubuntu 謹製のデスクトップ環境だ。 Xfce4 は、一時期愛用していたが、設定ファイルが管理しにくいのでやめた。
Awesome も良かったが、 Lua の設定ファイルが非常に長くなるのと、シンプルな感じがする i3 に乗り換えた。これに関してはどっちでも良さそうだし、 Reddit の /r/unixporn とか見てると Awesome の方がおしゃれな感じにできるような気がする。
Terminal
長らく Alacritty を使ってきたが、2022 年に入ってからは Linux, OSX ともに Kitty 一択になった。サブで Alacritty だが、検証用か Windows でしか動かさないようになった。理由は
- Kitty とにかく速い。Python でも速い
- ツール系は Rust 製に飛びついてしまう感はあるが、 Python も十分に速い
- これは関係ないけど、 Rust で書いても遅いものは遅いし、言語より人間が書くコードの方が影響あるなと思う
- テーマ集 が優秀で、楽しい
- 設定ファイルが簡潔になる
- Alacritty だとできなかったことができた
- 内容は忘れたが、Select to Copy するためには何かキーを押す必要がある、みたいなのだったと思う
- 日本語も入力できる
- まあ Alacritty でもできるが…
私の ~/.config/kitty/kitty.conf
は下記だ。
|
|
Kitty を 1 年位は 使ってきたと思っていたのだが、今 dotfiles を振り返ったらまだ 3 ヶ月しか使っていなかった。まじか。
https://github.com/acro5piano/dotfiles/commit/e75006ac93cb1ab99349059f5dc822d14143d07f
Text Editor
Neovim 一択。 長らく Vim 派で、 Emacs や Gedit、2022 年時点での王者 VSCode も少しだけ使っていたが、やはり Neovim となってしまった。
- ターミナルで動く喜び
- 豊富で活発なプラグイン機構
- Lua で全ての設定が簡潔する嬉しさ
2015〜18 年までは Emacs + Evil や Spacemacs も試して、全体的な体験はめっちゃ良かったんだが、Emacs は下記の点が気になったのでやめた。
- 実用的なプラグインを入れると重くなる
- GUI 前提な感じがする
前者は恐らく Emacs の進化と一緒に改善されていく感じはするが、後者はあんま受け入れられなかった。Emacs 自体に明らかに GUI で操作しやすいような機能がついているし、ターミナル上で Emacs を起動するとなんかこれじゃない感がすごいなと思った。
7 年前の記事だが、同じように思った方がいるらしい。
emacs in terminal に移行しようと思ったけど、GUI の emacs に戻った話 - scramble cadenza
こちらは 2016 年に書いた自分の記事。今思えば普通に Vim 使えばいいじゃんとは思ってしまうw
CUI の Emacs から GUI の Emacs に移行するためにやったこと - Qiita
Treesitter
兄に Treesitter を教えてもらい、長年使っていた Vim のデフォルトのテーマを更新した。
nvim-treesitter を導入しつつ、テーマを Material に変更した。いい感じになって嬉しい。今まで個別に vim-graphql とか vim-terraform とか入れてたが、ほぼ Treesitter に任せられるのはすごく嬉しい。というか、綺麗すぎて、教えてくれた兄に感謝している。
その他
定番だと、他に使っているものは、下記がある。
- fish
- 5 年くらいは愛用している。理由は起動が速いから、あとデフォルトですごく親切だから。
- Zsh はプラグインを入れまくったら重くなったのでやめた
- ただ、 Zsh が悪いわけではなく、遅延読み込みとかちゃんとしてなかった自分が悪かったんじゃないかと思う
- Tmux
- Ansible
- dotfiles の配置やパッケージのインストールに使っている
- 正直、冪等性とかはあんま気にしてない
- 仕事で使うので、理解を深めるために利用している感じ
- Ansible, Terraform, Plumni 関連の仕事は常に募集しています
- Linux 系のパッケージ
- iwd
- systemd
- systemd-boot
- Pipewire
- Fcitx5, Fcitx5-mozc
- FZF, fzf-lua
最後の fzf-lua (という Neovim から fzf を使うプラグイン)は最高で、速いし UX 優れているし、何より作者が親切で嬉しい。個人的には Telescope より圧倒的に使いやすいと思うのだが。ぜひチェックしてみてほしい。
総括
2022 年は、 Neovim を始めとして、開発環境に力を入れた年だった。
2021 年の 8 月に、米国スタートアップの CTO を辞任してフリーランスのエンジニアになっているのだが、それ以来「自身の生産性を上げるにはどうするか」「クライアントの便益を最大化するにはどうするか」などを考えてきた気がする。言い換えれば「守りに入った年」なのかもしれない。
フリーランスのエンジニアとして、技術がそれなりにあって、仕事できてれば良いのかなとは思うが、やはり新しいことは自らが追い求めるべきだと思うので、しばらく放置してしまっているポケモンの AI か、もしくはこのブログの移行(= イケてる Zola テーマの作成)を 2022 年〜2023 年の年末年始にやろうと思う。
ちなみに 2021 年〜2022 年の年末年始の目標は、 Kubernates に入門することだった。が、 2022 年の現在では、 kubectl
すら入れていない。