開発環境現状確認(2026年)
開発環境の現状確認をするのが流行っているらしいので便乗します。ハード、ソフトの順に紹介します。
- はてブの検索結果 (ここで色々な方の記事見れます)
- ソフトウェアの設定は
shunsock/dotfilesに記載しています - この記事にはアマゾンアソシエイトのリンクが含まれます
ハードウェア + 家具
パソコン

昨年、Macbookを売りMac miniとThinkPadを購入しました。カンファレンスなど遠出をする際はThinkpad、家ではMac miniという使いわけをしています。
ケースなしだと、Mac miniの大きさはもっと小さいです。
詳細気になる方は以前まとめたレポートを参照ください。
キーボード
機種
BAROCCO MiSTEL MD600を利用しています。分割キーボードをいくつか試して一番しっくりきています。会社でも利用するので2台持ちです。
特徴はキーボードの配列が湾曲しているAlice配列であることと、家でも静音赤軸を利用していることでしょうか。静音は正義。
MD600 Alpha BT Rhino

現在メインで利用しているキーボードです。
Alpha Rhinoは公式の写真だと白っぽい印象ですが、実際にはカーキ色に近いです。換装している部分のキーキャップは遊舎工房に遊びにいったときに買ったMeow Keycapsです。にゃーん
MD600 Alpha BT RGB

しゅんけーさんの記事でも紹介されていたMD600 Alpha BT RGBです。折角のRGB仕様ですが、光らせると72時間しか充電が持たないので切っています。
換装したキャップは麻雀キーキャップです。Vimmerなので、東南西北をhjklにしていますが、ホームポジションが分からなくなります。
日本語入力
SKK (Simple Kana Kanji Conversion System) を利用しています。変換を能動的に行うので、入力体験が良くなります。IMEのマニュアル版のようなものです。
例えば、「私はエンジニアだ」を次のように入力します。
Watashi hEnginiaqda
気になった方は次の記事を読んでみてください。
下記は私の設定です。ほぼデフォルトで使っています。
- AquaSKK: MacOS
- fctix + skk: NixOS
i18n.inputMethod = {
type = "fcitx5";
enable = true;
fcitx5 = {
waylandFrontend = true;
addons = with pkgs; [
fcitx5-skk
qt6Packages.fcitx5-configtool
fcitx5-gtk
kdePackages.fcitx5-qt
];
};
};
その他
CapslockキーをCommandキーにしています。これが最高で、Macのアプリケーション切り替え時に Command + Tabをしたり、ブラウザやターミナルのタブ開くときにCommand + T したりできます。
Command + Tab も Command + T も自然なポジションで打てるのが魅力です。逆に Ctrl は小指の位置が自然にならないのであまりキーバインドでも利用しないようにしています。(Neovimとかでも Space + Key を多用しています)
マウス
Logicool MX ELGO

なんだかんだ、体験が良いです。傾きがあるおかげで手を置くときにキーボードと同じ角度で置けますし、ブラウザバックをボタンでできるのも体験が良い。USB-C対応の充電に対応したらしいので、最新機種への変更を検討しています。
Kensignton SlimBlade Pro
大玉を回したときの「チチチ」という音が心地良いです。ただ、トラックボール利用時の手の移動距離が長く、家では使わなくなってしまいました。
ウェブカメラ
Insta360を利用しています。YAPC::Kyoto 2023でのベストLTの副賞で、さくらインターネット様よりいただいたものになります。


小さいながら4K解像度に加え、AIによる画角調整がまで備えた強力なカメラです。
ディスプレイ

LGの27インチのディスプレイを利用しています。可も無く不可も無くといった感じ。解像度は低くても良いのでTypeC充電ができるタイプを選びました。
首を振るのが嫌なので、これ以上大きくするつもりは無いです。
デスク

E7 Proを利用しています。当時は若く、湾曲天板にしましたがぶっちゃけまっすぐで良いと思います。
最近、デスクマットを新調したのですが、サイズが合うものが無く特注するハメになりました。
黒の物置きは山崎実業製です。マットな質感が良いとYoutuberが話していて、「本当か〜」といいながら購入したのですが、本当でした。

自分の場合は安定性と大きさ重視で、黒のでかいディスプレイのアームを利用しています。アームやディスプレイとの質感と色があっていて気にいっています。
椅子

学生時代から使っているニトリの3万円の椅子です。引越しの時にローラーが一つ業者に破壊されました。オフィスバスターズで新調する予定です。
座っていて腰が痛くなりにくいのとムレないので、気にいっていました。高級チェア買うほどでもないなという方におすすめです。
ソフトウェア
ここからはソフトウェアです。ソフトウェアはほぼCLIで完結しているので物理より少なめです。(GUIがターミナルとブラウザぐらいしかない) 思想が強いとよくいわれます。
OS
NixOS
Thinkpadにブチ込んでいます。Nix最近流行っているし今更言うことないかも? 出先でしかいじらないので、最低限のものしか入っていません。
shunsock/dotfiles/azumaで管理しています。
Nix Darwin
同じく。人から貸与されるPCは大体がMacなのでメインは結局MacOSです。
shunsock/dotfiles/asagiで管理しています。私のdotfilesだと一番更新が多いです。
ターミナル

WezTermを利用しています。乱視なので文字は20pxぐらいで分割していません。逆にタブを大量に展開しています。この関係でtmuxを利用していません。(cmd + Tで展開できるのが便利すぎまして...)
フォント
白源 (はくげん/HackGen) フォントを利用しています。全角空白や漢字の一が読みやすいです。

日本語フォントなのに何故かNixで入るので、設定ファイルの記述が楽。
シェル
zshを利用しています。HomeManagerの強みが活きていますね。Oh-My-Zshはプロンプトのレスポンスが速いので利用しています。
{ config, pkgs, ... }:
{
home.file.".config/zsh".source = ../configs/zsh;
home.file.".config/zsh".recursive = true;
home.packages = with pkgs; [
zsh-autosuggestions
zsh-syntax-highlighting
];
programs.zsh = {
enable = true;
dotDir = "${config.xdg.configHome}/zsh";
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
"oh-my-zsh" = {
enable = true;
theme = "kennethreitz";
plugins = [ ];
};
initContent = ''
unalias -m '*' # 🗑️👋 trash auto added aliases
setopt extendedglob
for f in ${config.xdg.configHome}/zsh/**/*.zsh; do
source "$f"
done
'';
};
}
エイリアス
お気に入りのaliasは次の2つです。
# 'exit' like Vim ❤️
alias :q='exit'
# date output with iso8601 format
alias date='date +"%Y-%m-%dT%H:%M:%S%z"'
特にdateコマンドの上書きは万人におすすめです。すぐ入れられるし。
~ » date
2026年 1月18日 日曜日 16時13分49秒 JST
~ » alias date='date +"%Y-%m-%dT%H:%M:%S%z"' # iso8601形式に変更 🥰
~ » date
2026-01-18T16:14:05+0900
エディタ

Neovimを利用しています。ターミナルで動くからです。
「LSPが欲しい」と思う時期と「いらねぇAnyJumpで十分だ」という時期がありいつも悩んでいます。正直LSPが欲しいレベルならJetBrainsひっぱり出してくるし...
ちなみに今はLSP入れています。
Containerizeされているので、Dockerで起動しています。キャッシュ入れているおかげで、初回以外はそこまで重くありません。
alias v='docker run -it --rm \
-v "$PWD":/workspace \
-v "$HOME/.akatsuki-default/share":/root/.local/share/nvim \
-v "$HOME/.akatsuki-default/cache":/root/.cache/nvim \
-v "$HOME/.akatsuki-default/state":/root/.local/state/nvim \
-w /workspace \
tsuchiya55docker/akatsuki:default-arm-0.0.2'
alias vpy='docker run -it --rm \
-v "$PWD":/workspace \
-v "$HOME/.akatsuki-python/share":/root/.local/share/nvim \
-v "$HOME/.akatsuki-python/cache":/root/.cache/nvim \
-v "$HOME/.akatsuki-python/state":/root/.local/state/nvim \
-w /workspace \
tsuchiya55docker/akatsuki:python-0.0.2'
LinuxとMacOSでアーキテクチャが違うのがメンドいポイントです。TaskfileとCI/CDで解決しています。
詳細は次の技術ブログを見てください。
開発用シェル

初出しの自作ソフトウェアLazyNixです。簡単に紹介すると次のようなものになります。
- YAMLでNixの再現性のあるDevShellを構築する (Nixのサブセット)
- divenvとかと違い、YAMLだけで記述可能
- dotenvやtask機能もあるので、miseと大体同じことができる
下記はLazyNixの設定ファイルです。これならNix言語知らなくても書けるんじゃないかと思います。
# lazynix.yaml
devShell:
allowUnfree: false
package:
stable:
- python312
- uv
# add your favorite cli
unstable: []
shellHook:
- "echo Python $(python --version) ready!"
- "echo uv $(uv --version) ready!"
LazyNixの挙動をOverrideするための設定ファイルも記述できます。設定させていただき感謝。
# lazynix-settings.yaml
override-stable-package: "github:NixOS/nixpkgs/nixos-25.06"
最近はこのツールでNixのDevShellの初期状態を作り、必要に応じてNixに移行する使い方をしています。そのうちOpenSourceにするのでお待ちください。
ブラウザ
FirefoxとArcの2つを使っています。
Firefox
主に個人で利用しています。Arcが開発終了になったり、Atlassianに買収されたりしたことからメインブラウザを変更しました。
業務上の理由でArcを利用しているのですが、Firefoxは最近プロファイル機能の開発を進めてくれているので、そのうち完全乗り換えになる予感がしています。
あと、マスコットのKitがかわいい。マスコットがかわいいソフトウェア少ないので推してみてはいかがでしょうか?

Arc
主に業務で利用しています。Arcの偉いところはやはり「スペース」という概念とブラウザへの統合だと考えます。プロファイルごとにスペースを作れば、簡単にGoogleアカウントの分離ができて便利です。
コーディングエージェント
Claude Codeを利用しています。次のような開発サイクルを想定しています。
- 人間がissueを書く
- AIと対話してissueの質を上げる: epic-issue-enhancer
- AIと対話してsub-issue (実装issue)を切る: sub-issue-creator
- AIが実装
Geminiは検索用とSlackやメールの文章作成するマンです。安くて便利ですが、起動が遅いのが辛いポイントでしょうか。
CLI
whtrr
お出かけする前に使いたいCLI。天気情報を簡単に取得できます。
wthrr echigoyuzawa -f w

yazi
Vim/Neovimと同じ感覚で利用できるファイルマネージャー。画像見れるの便利。
yazi

hurl
.hurl 形式で記述するcurl。APIテストを簡単にできるし、作業ログとして残せるのがありがたい。
POST https://example.org/api/tests
{
"id": "4568",
"evaluate": true
}
HTTP 200
[Asserts]
header "X-Frame-Options" == "SAMEORIGIN"
jsonpath "$.status" == "RUNNING" # Check the status code
jsonpath "$.tests" count == 25 # Check the number of items
jsonpath "$.id" matches /\d{4}/ # Check the format of the id
まとめ
想像より長くなってしまいましたが、以上が私の現在地です。
最近Tailscaleを導入したので、もっと外で作業する際の開発環境を良くしていきたいです。

Discussion