開発環境2026
2026年時点の自身の開発環境を振り返ってみる。
OS: Windows
デスクトップ機を1台だけ持っていて、Windowsが入っている。
- お出かけしてまでパソコンをさわろうと思わない
- 計算資源を集約させると金銭効率・空間効率が良い
という背景で、1台で済ませている。
実際にはWSL2上のUbuntuで開発している。自分の開発しているプログラムのほとんどはLinux上で動かすことになるため、それに近しいUbuntu環境で開発できることの旨味は大きい。
過去のOS歴は以下の通り。
- 2009年~2020年: Mac
- 2021年~2026年: Windows
MacからWindowsへの移行に関して、過去に以下の記事も書いた。
最近はGitHub Codespacesで開発する現場も多く(大抵自分が整備することになるが)、手元の計算資源はあまり使わなくなってきており、自分はこの変化を好意的にとらえている。実際に使っている中で、次のような観点で恩恵を感じることが多い。
- トラブル時の切り分けやリセット
- 他人との開発環境や知識の共有
- 負荷分散
シェル: bash
bashを使っている。特にこだわりもないが、理由を後付けすると次の通り。
- 自分の環境だとデフォルトがbash
- 多くのツールの挙動がbash準拠
100行程度の設定ファイル .bashrc があり、以下の設定をしている。正直なところ無くても大して困らない。
- VSCodeのターミナルとの互換性のために環境変数を設定
- プロンプトを調整
- エイリアスをいくつか設定
開発時にあると便利なツールとして以下を使っているけど、これも無くてもそこまで困らないかも。あるとちょっとだけ手が速くなる程度で、劇的な変化はない。
- gh
- peco
- tig
この辺のツールと設定ファイルを持ってくる数行のシェルスクリプトがあり、新しい環境を用意する際にはそれを実行している。
エディタ: VSCode
VSCodeをほぼデフォルト設定で使っており、公式の拡張を少数入れている。
- GitHub Copilot
- GitHub Codespaces
- WSL
- etc.
たまにプロジェクト単位で拡張を追加している。例えば、このブログを書く際には記事ファイルを自動生成する自作の拡張を使用しているし、Rubyを書く際にはJavaScriptランタイムだけで動くRuby用のLSP拡張を自作して使用している。
過去のエディタ歴は以下の通り。
- 2009年~2017年: Vim
- 2018年~2026年: VSCode
ターミナル: VSCode
VSCodeに付属のターミナルを使っている。
- どのアプリでも画面分割を使わない
- SSHを使うことがほぼ無い
ということから、tmux等のターミナルマルチプレクサを必要とすることも無くなり、VSCodeのターミナルで十分事足りている。
キーボード: Keyball39
主にKeyball39というキーボードを使っている。特徴は以下の通り。
- キーが左右合計で39個
- 右手の親指部にトラックボール付き
日本語入力方式として、実用的な速度だと自分はローマ字入力と幾つかのかな入力(親指シフト等)を扱えるが、分割キーボードではキー数・速度・精度の適性を考慮してローマ字入力を使っている。
論理的なキーマップとして、左右のホームポジションそれぞれの長押しにCtrlやShiftなどの各種メタキーを割り当てている。いわゆるHome Row Modsと呼ばれる方式である。この方式を利用しつつメタキー・クリックキー・レイヤー切替キーを左右どちらにも配置しながらトラックボールもあるので、ほぼホームポジションから手を動かさずに操作できており、疲れないし打鍵精度も上がるので満足している。
左右に冗長化しているにも関わらずデフォルトレイヤーでも何個かキーが余っているように感じるので、ゲームでもやらない限り、39キー程度ではキーが足りなくなるということは無いように思う。
関連する話を過去に以下の記事にもまとめている。
なお、サブのキーボードとしてAmazonベーシックの千円程度のキーボードも持っており、実はこれも結構な頻度で使っている。
汎用機を乗りこなすことに意味を感じる瞬間がたまにある。
ブラウザ: Google Chrome
特有の機能は使っていないので、何を使っても良くはある。
ウェブサービスを開発している都合、大多数の利用者の環境により詳しい方が好ましいため、シェアの多いブラウザを使っておくことに利点があるとは感じている。
コーディングエージェント: GitHub Copilot
正直あまり使っていない。
GitHub Copilotのエージェントをたまに使う程度。Copilotが当初便利な補完機能として登場した頃からずっとそうしているのだけど、エージェントに直接コードを編集させるのではなく、目的を達成するためのコード変換器とそのテストを生成させることが多い。その実装とテストに対してレビューを行うという形。
前にも記事を書いたが、Aqua Voiceというやけに精度の高いPC用音声入力ソフトを導入して以来、文字入力の速度が2倍から3倍程度になった。元から結構タイピングは速かった方だと思う。しかしそこからさらに速くなっているという状況なので、この変化は凄まじい。で、当然これはプロンプト入力の速度や快適さにも大きく貢献しており、エージェントの使い勝手も格段に向上した。速いって快適。一ヶ月無料の紹介リンクをまた貼っておくので、これ系のソフトを最近まだ試したことがなかったら、騙されたと思って一度は使ってみておいてほしい。たぶん面白いから。
メモ: Obsidian
Obsidianで日記を書いている。
メモを書くのにいちいちファイル名やタイトルを付けないといけないなんていう馬鹿げた工程を踏みたくないので、一次出力先としてのメモはその日の日記にすべて放り込む運用にしている。概ね音声入力で長々とした文章を書いていることが多い。
おわり
振り返ってみると、おおよそ常に一般的で中庸な方に行こうとしているように見える。良く言えばミニマルだが、悪く言えば面白みに欠ける。
言語化するのが難しいのだけど、他者と違う環境で何か自分が成果を出したとしても、環境が作用したというだけで、自身の能力によるものなのかどうか己を認められないことがある。感情の制御に手こずっている訳ではなく、原因の切り分けや対照実験を正確に行いたいという感覚に近い。例えばゲームで誰かと対戦したとして、高性能なキーボード、高性能なマウス、高性能なモニターを使って、好成績を残せたという状況を想像すると分かりやすい。もちろん現実はゲームではないし、対戦でもないし、競技でもない。また、道具が身体の一部か・道具も含めて能力かといった点にも議論の余地はある。しかし、自分の成長はこうした部分を見つめ直すことから発生する経験が多かったと感じる。例えば自分が誰でも手に入れられるようなキーボードをなんとなく好んで使っているのは、多分そういう思考形態から来ているのだと思う。
いや、もしかしたらそれも違うのかもしれない。凡庸な環境にもかかわらず高い成果を出したと信じたい気持ちと、最適化の余地という逃げ場を残しておきたい気持ち。このダブルスタンダードで姑息な心の在り様が、自分の開発環境を形作っているようにも見える。