開発環境2026


  • ページ公開日: 2026年1月17日 (土)
  • 書いた人: shimbaco

最近このテーマの記事をよく見かけるのと、去年の後半くらいから環境が結構変わったので、記録のため自分も書き出してみます。

OS

UbuntuとmacOSを使っています。
Ubuntuに開発環境を作り、MacからUbuntuに接続して作業しています。

UbuntuはGEEKOM A9 MAXというミニPCにインストールして使っています。
僕が開発で使用する分には申し分ないスペックです。Dockerがネイティブで動くのも良いなと思います。

MacはMac miniの安いやつを使っています。
Macのほうで開発をすることはないため、安価なものを長期間使えば2台構成でもそんなにお金はかからないのでは?という作戦です。

そもそもなぜ2台構成にしたかというと、消極的な理由なんですが、Ubuntuだけでは快適に生活できなかったためです。
当初の目論見はGEEKOM A9 MAXにデスクトップ版のUbuntuを入れ、それだけで普段のパソコン利用と開発を行うというものでした。
Linuxデスクトップは新鮮で楽しく結構良い感じのところまではいけたんですが、キーボードやトラックパッドの操作感がMacに慣れていると難しかったり、SlackやFirefoxといったアプリが不安定だったりと常用するのは自分には難しいというところがありました。
頑張ってカスタマイズすればもしかしたら全て解決したのかもしれませんが、個人的にはデスクトップ環境は何も考えなくても使えるものを使いたいので、今はまだMacのほうが良いなと感じました。
(Ubuntu以外にもPop!_OSやFedoraも試しています)
また機会があったら試してみたいです。

一方でTUIまわりはMacよりもUbuntuのほうが良いなと感じます。
今までは開発環境を整えるときにMac固有の問題に当たって頑張って対応したりしていましたが、Ubuntuではそういう問題はあまり起きていません。
なのでGUIが良い感じのMacとTUIが良い感じのUbuntuをそれぞれ使うのが良いかなと思い、今の2台構成に至りました。
動作確認でSafariを使いたいといったこともあるので、結果的にこの構成が良かった気がします。

ネットワーク

UbuntuとMacの間はTailscaleで繋いでいます。

UbuntuでTailscale SSHを有効化し、MacにクライアントをインストールしてSSHで接続しています。
個人サービスのサーバも同じTailscaleネットワーク内に置いているので、MacからもUbuntuからも個人サービスのサーバに接続できるようになっています。

ターミナル

ターミナルエミュレータはGhosttyを、ターミナルマルチプレクサはZellijを使っています。

Ghosttyは最近出たてで良さげな感じだったので使い始めたという感じで、あまり使いこなせてはいません。
設定もフォントとキーバインドを少し弄っている程度です。
Macにインストールしていて、そこからSSHでUbuntuに接続しています。

Zellijはぱっと見でどのコマンドを押すと何ができるのかがわかりやすそうだったので使い始めました。
ターミナルマルチプレクサは数年前まで使ったことがなく、Zellijが最初でした。
やはりセッションが残せるというのは便利で、今ではZellij無しで開発するのはちょっとしんどいかもしれません。

シェル

Zshを使っています。

かなり昔に「これからはzshだ!!」みたいな流れが起きたときに「そうなのか〜」と思って使い始めてからずっと使っています。
ただそんなにカスタマイズもしていないので、Bashでも全然良いかもしれません。

Gitクライアント

Lazygitを使っています。

以前はForkを使っていたんですが、リモートサーバ上で作業することをきっかけに切り替えました。
とりあえず Shift + ? を押せば他のキーバインドを覚えなくても何とかなるという感じがわかりやすくて好きです。

エディタ

Zedを使っています。

軽いし見た目もシンプルでとても良いです。設定ファイルも何となくですがVSCodeよりもわかりやすく感じます。
リモートサーバへのアクセスもできるので、SSHでUbuntuに接続し、Ubuntu上のリポジトリを開いて作業しています。

コーディングエージェント

Claude Codeを使っています。

他のツールはあまり使ったことがないのですが、特に困っておらず、UIもかわいい感じで好みなので使い続けています。
複数プロジェクトで同時にコードを書いてもらったりすることがあるので、Maxプランを利用しています。

Docker

基本的に全部Dockerコンテナ上で動かすようにしています。
普段Goなどのウェブアプリケーションの開発をするときは、

  1. MacからUbuntuに接続する
  2. UbuntuからDocker Composeでコンテナを起動する
  3. コンテナに入りGoのウェブサーバなどを立ち上げる

という流れを踏んでいます。
UbuntuにはZellijなどのDockerを使うまでに必要なものをインストールしているくらいで、その他の開発に必要なものはDockerコンテナにインストールするようにしています。
先述のClaude CodeもDockerコンテナにインストールしています。

miseなどを使ってホストマシンに直接インストールしていた時期もありますが、最近のサプライチェーン攻撃を考えると少し怖いなと感じて今はこうしています。
Claude Codeもコンテナの中で動かしているほうがうっかりプライベートなファイルなどが参照されることもなく安心感があります。

秘匿情報の管理

1Passwordに保存しています。

ウェブサイトのID/パスワードはもちろん、開発に使う環境変数の内容も1Passwordに格納しています。
プロジェクト内の .env 的なファイルの中には秘匿情報を直接書かず、op:// から始まる1Passwordのパスだけが書かれているという状況にしています。
この方針もDockerを使うのと同様にサプライチェーン攻撃への対策になります。

1Passwordにはサービスアカウントという概念があり、特定の保管庫だけが見られるアカウントを作ることができます。
これを利用して、プロジェクトごとに保管庫を作成し、その保管庫だけが参照できるサービスアカウントを作るようにしています。

サービスアカウントではトークンを発行することができるので、そのトークンを使い1Password CLIで認証し、指定した保管庫に保存している環境変数を参照するようにしています。

わりと複雑なことになっていますが、一度設定してしまえば面倒なことはあまりなく快適です。
サービスアカウントのトークンを取得するために1度だけ1Passwordのパスワードの入力が必要なのが少し面倒くらいでしょうか。

秘匿情報をファイルに書いているとマシンを変えたときにファイルを作り直す手間があったりしましたが、1Passwordから全て取得するようにするとその手間も無くなって安全で便利です。

最近1Passwordが新しい環境変数の管理方法をリリースしましたが、これはまだ使えていません。
1Passwordのクライアントが仮想の .env を作成し、それをアプリケーションに読み込ませるというものだと理解していますが、僕のMac + Ubuntuの構成だと仮想の .env を作成するというところがまだできなそうです。
1台のマシンで開発をしている方はこの新しい方法で管理した方が楽かもしれません。

動作確認

Cloudflare Tunnelでローカル環境のサーバを外部に公開して確認しています。

そのまま公開するのは無防備すぎるので、CaddyでBasic認証しつつローカル環境のサーバにアクセスするようにしています。

外部からアクセスできるとスマホから動作確認できたり、Webhookなどの外部サービスと連携する機能のデバッグがやりやすくて便利です。

ランチャー/ウィンドウマネージャー

MacにRaycastをインストールして使っています。

以前はAlfredを使っていましたが、ウィンドウマネージャーも付いているRaycastが良いなと思って使い始めました。
絵文字ピッカーが地味に便利だったり、ウィンドウマネージャーの設定もわかりやすかったりで満足しています。

Alfredはクリップボード履歴のショートカットからスニペットにアクセスしやすかったのが良かったです。
ただ最近はスニペットをあまり使わなくなったのでRaycastを使っていても気にならなくなっています。

フォント

PlemolJP を使っています。見やすくて良いです。
全角と半角の比率が2:1になっているフォントが好きです。

ウェブブラウザ

日常使いではFirefoxのBeta版を使っていて、開発時は基本的にFirefox Developer Editionを使っています。
もちろん表示の確認でChromeやSafariなども使います。

普段は新しいFirefoxを使い、開発時は開発向けのFirefoxを使うようにしています。

Firefoxはコンテナータブがものすごく便利で、これがあるからFirefoxを使っていると言えるかもしれません。

コンテナータブを知らなかったころはChromeでプロファイルを作りまくっていたんですが、数が多くなると自分がどのプロファイルで作業しているのかがわかりづらかったりしました。
コンテナータブを使えば、例えば開発時の [email protected], [email protected] みたいな複数のテストアカウントを1つのウィンドウで開くことができます。
僕は開発環境やステージング環境といった環境ごとにタブグループを作り、その中で各テストアカウントのコンテナータブを開いて動作確認などをしています。

開発時以外にも、僕は個人サービスごとにGoogle Workspaceを契約していたりソーシャルメディアのアカウントを持っていたりするので、同じサービスにアカウントがたくさんあったりします。
そういうときにもコンテナータブを使い、1つのプロファイルで複数のアカウントが操作できるようにしています。

メモアプリ

自作のWikinoを使っています。

Markdownで書けるCosense的なものですが、まだだいぶ荒削り状態です。
それでも自分がやりたかったことは結構できているので、他のメモアプリよりも良いと感じることも多いです。
地道に改良していけたら良いなと思います。

開発の動機などは以下のページで公開しているので、良かったらご覧下さい。

Wikiアプリ「Wikino (ウィキノ)」のベータ版をリリースしました

キーボード

Keychron K2 HEのスペシャルエディションを使っています。

木目調がオシャレなのと、コトコトとした打鍵感が好みです。

まとめ

話したいことが多くてだいぶ長くなった…。何かの参考になったら幸いです。