chroju.dev/blog

the world as code

開発環境を見直し、dotfilesを更新して、VimからVSCodeへ移行した

開発環境を最近ちょっといろいろ替えたので、軽くまとめてみる。

dotfiles

dotfiles を久しぶりにガラッとアップデートした。従来は本当に dotfile を置くことにほぼ特化させていたんだけど、ある程度の開発環境構築も一緒にやれた方が便利だなと前々から思っていたので、構築系のタスク含めて自動化させた。`

どうでもいいけど、 http://dotfiles.github.io/ なんてページがあるのね。いろいろサンプルが載ってて参考になるけど、読みすぎると無駄に最強の dotfiles を求めようとして死ぬやつだこれ。ロゴはオシャレでいい感じ。

Ansible の採用

自動化には Ansible を使うことにした。別にシェルスクリプトや makefile でもいいんじゃないかとは思うのだけど、単純なコマンド実行だとやはり冪等性の問題があったりというところで、 Ansible 使ってみても良いのかなと。現在自分自身、 Ansible でごはんを食べているようなところもあるので、普段から使っている方がいいでしょうという理由もある。

任せているのはだいたいが dotfile を配置するタスクで、それ以外だと bash や zsh の git-completion 用のシェルスクリプトを落としてきたり、よく使っている Python や Golang の環境を作るところもやらせている。

Ansible の macOS 関係モジュール

Ansible には macOS の構築に使えるモジュールもいくつか用意されているのだが、今回はいずれも使っていない。

1つは homebrew で、そのものズバリ Homebrew のパッケージインストールなどを行える。しかし、 brew install を行いたいとき常に Ansible Playbook を実行するかと言うとそうではないだろうという気がしていて、それであるならば Playbook 内ではなく Brewfile で必要パッケージを管理した方が良いなと思い、 Ansible からは brew bundle を実行させるにとどめている。

もう1つは osx_defaults と言うもの。macOS には defaults という各種設定を触れるコマンドがあって、これを叩いてくれる。まぁ使って悪いことはないと思うのだが、 defaults 自体あんまり使ったことがなくて、改めて学習したところでそこまで便利とも思えないので使わず仕舞いになっている。なので各種設定の変更はあくまで GUI から実行している。

Visual Studio Code

これまでは何を書くにも Vim を使っていたんだけど、 最近 Visual Studio Code を使い始めていて、スクリプトやコードを書くときはこちらをメインに替えている。

別に Vim が嫌いになったとかでは全然なくて、メモ用途やちょっとしたファイルの編集には引き続き Vim を使っているし、今このブログを書いているのも Vim である。が、 dotfiles を整理したタイミングでちょっと vimrc のカスタマイズを始めてみたところ、なかなかこれを最新最高の状態に維持するコストってしんどいものがあるなと今更ながら気付いてきて、特に Go を書くようになって、 IDE 的な機能が欲しくなったときになんだかんだ Vim で全部頑張らなくてもいいんじゃないかなと思うようになってきた。要は快適に文章やコードを書ける環境がほしいわけであって、それを実現するのが Vim であろうと VSCode であろうと、手段は問わない。Vim キーバインドは大好きだけど、別にツールの信者ではないので。

信者ではないのでと言った手前ではあるが、実際のところはかなり Vim の使用感に近づけて VSCode を使っている。VSCodeVim は当たり前のように使っているとして、もともと lightline.vim を使っていたので、VSCode のステータスバーも lightline と同じ色で変わるようにカスタマイズしてみている。意味があるかと言えば、たぶんあんまりない。気分の問題。

https://gyazo.com/af0b63cfb02f42f4021cf17d4bee9a25

あとキーバインドもいくつか vimrc と同じものを採用していて、これら設定も全部 dotfiles に入れてある。

VSCode 、 TL で便利便利と聞いてはいたけれど、特に git やターミナルとの連携がとても便利で、 Vim でもプラグインを使って同じことができるとはいえ、ほぼ何もしなくても完成度の高い状態で使えるという体験は本当に素晴らしい。必要なプラグインも勝手に「インストールしません?」ってサジェストしてくれるし。

開発環境としての macOS

ところで最近、 macOS のバグが多発してたり開発状況が微妙だったりで、 macOS を捨てて Thinkpad あたりでデスクトップ Linux を使うのがにわかに流行っている気がする。デスクトップ Linux は今でも GPD Pocket を Ubuntu で動かしているし、ちょっと前まで Arch Linux を使っていたりもしたんだけど、まぁやっぱりメンテナンスコストはある程度必要で、ただ、それが楽しいのでやれてたという記憶はある。今は macOS をメインに据えてるし、これを Linux に変えるつもりはあんまりないんだけど、その理由としては主に2つある。

1つは開発用PCと普段遣いのPCを分けるのがあんまり好きではないということ。開発者としてよろしいことではない気がするんだけど、音楽をリッピングするためにPCを立ち上げて、その間にまた別のPCを立ち上げて開発をするとか、そういうのがあんまり好きじゃない。Linuxでもエンターテイメント系のソフトウェアはそれなりに揃ってはいると思うのだが、 macOS から完全に移行できるかというと厳しいかなという思いがある。

もう1つは、よくある「Linux開発者ならUNIXベースであるmacOSではなくちゃんとLinuxを使うべきでは」という話の反論っぽいところで、Linux 使いたければ Vagrant で EC2 や VPS を上げてしまうので、あんまりローカル環境の OS が Linux であることにこだわりがないということ。手元では UNIXコマンドがそれなりに使えればいいし、自分はだいたい RHEL系のOSをよく使うので、 デスクトップLinuxとして Ubuntu を手元で使ったところであまり意味がない(Fedora使えばいいのかもしれんが、クライアントOSとしてはそんなに好きじゃない)。

ので、特に現状 macOS で致命的には困っておらず、まぁいいかみたいになっている。とはいえ今後どうなるかはわからないので、何年か後には Thinkpad 使っているかもしれないけど。 Arch Linux とタイル型ウィンドウマネージャーの使い勝手は好きなので、使ってみたい思いはあるし。