どうもー、おはようございます。マイクです。「zenncast」朝の時間、今日もよろしくお願いします。
今日は2026年1月9日、金曜日の朝7時でございます。通勤・通学途中のあなたも、おうちでのんびりしているあなたも、これからZennで今日トレンドの記事をゆるっと、でもしっかりご紹介していきます。
今日はお便りコーナーはお休みで、そのぶんガッツリ記事を掘っていこうかなと思っております。
さて、本日ご紹介する記事は全部で5本です。
AI時代の開発環境づくりから、ブラウザ版Claude Codeの小ワザ、そしてPythonで“ほぼReact”なUIを書く話まで、かなり濃いラインナップになってます。
まず1本目。
タイトルは「Rust製軽量エディタZedでDev Containers + GitHub Copilot + Claude Code生活はじめました」。
Zed、気になってる人多いんじゃないでしょうか。この記事は、VS CodeやCursorよりも「とにかく軽い」っていうZedを中心に、「Dev Containers」「GitHub Copilot」「Claude Code」という、いまどき開発三種の神器みたいな組み合わせをどうやって構築するかが、めちゃくちゃ丁寧にまとまっています。おもしろいのが、VS Code + Claude CodeでDev Containersを使うと、ちょいちょいクラッシュして困ってた人が、Zedに乗り換えたら安定した、というリアルな体験談ベースになっているところ。Dev Containersも、安定志向な「DevPod経由でコンテナ立ち上げて、そこにZedからremote projectでつなぐ」方法と、プレビュー版Zedに入ってきているビルトイン機能を使う方法、2パターンが紹介されています。さらに、外部フォーマッタをsettings.jsonでサクッと設定して、oxfmtやprettierをいい感じに回す話、GitHub Copilotをedit_prediction_providerとして有効化してタブ補完的に扱う話、そしてZedのターミナル上でClaude Codeを動かして、チャット欄じゃなくターミナル主体で開発するワークフローまで。プライバシーポリシー的にも、明示的に共有しない限りコンテンツをAI改善に使わないスタンスが書かれていて、「VS Code + Claude Codeがちょっと不安定なんだよな〜」という人に、「主要なAIツールと連携しつつ、軽快さも手に入れられるよ」という提案になっていました。重いIDEに疲れてきた人には、かなり刺さる内容だと思います。
。。。。
続いて2本目。
タイトルは「Claude Code on the Webでghコマンドを使う」。
これはブラウザで動くClaude Code、いわゆる「Claude Code on the Web」の環境で、GitHub CLI、つまり`gh`コマンドをどうやって使うか、というハック集みたいな記事ですね。もともとこのWeb環境って、`--disallowed-tools Bash(gh:*)`というオプションでghが禁止されていたんですが、2025年の年末あたりから、そこから外されて使えるようになった。ただし、最初から入っているわけじゃないので、自分でうまく仕込んであげる必要がある。そのやり方として、まずカスタム環境に`.env`形式で`GITHUB_TOKEN`をセットしてあげること。そしてセッションが始まるたびに自動でghをインストールしてくれる`sessionStartHooks`を、`.claude/settings.json`に書いておく。そのフックから呼ばれる`.claude/hooks/gh-setup.sh`というスクリプト側で、環境変数`CLAUDE_CODE_REMOTE`を見て「Web環境かどうか」を判定して、ローカル実行のときはスキップできるようにする、みたいな工夫が紹介されています。また、`CLAUDE_ENV_FILE`にPATHを書いておくことで、インストールしたghへのパスを永続化したり、サンドボックス環境の制約上、`gh`コマンドを叩くときに`-R owner/repo`を明示的につけないと動かないことがあるよ、という注意点も。こういう「ハマりポイント」が事前にまとまっていると、Claude Code on the Webを本格的なGitHub作業用の環境として使うとき、Pull Request作成やissue操作をCLIからサクサク回せてだいぶ快適になりますね。CLAUDE.mdに「こういう事情で-Rが必要ですよ」と書いておく、というドキュメント運用の話まで含めて、実務的なノウハウが詰まっていました。
。。。。
3本目。
タイトルは「海外で「IDEでClaude Code動かすな」が流行ってる。私はZed + ターミナル派」。
これはちょっと思想寄りの話でおもしろいです。海外で「Claude CodeはIDEの中じゃなくて、ターミナルから直接叩こうぜ」というムーブメントがある、という話から始まります。VS CodeやCursorの中にAIチャット欄を置いて、そこと会話しながら書くスタイルから、「ターミナルでAIを叩いて、提案パッチを当てる。自分は差分だけ見てコミットする」という、かなり“ライトなコードリーディング”スタイルに移行している人が増えているらしい。筆者自身も、Claude Code登場をきっかけに、チャット欄主体のIDEから、Rust製の軽量エディタZedとターミナル中心のワークフローに切り替えたといいます。Zedは約200MBと軽くて、ターミナルを4分割したり、タブ切り替えや全画面表示も直感的にできる。VS Codeフォーク系の「なんか重い」「ターミナルの配置自由度が低い」といったところにアレルギーがある人には、とても心地よい環境になっているようです。さらに、ターミナルもWezTerm、プラグインマネージャにsheldonなど、Rust製のツールで統一していて、その設定自体をClaude Codeに手伝ってもらう、というメタな使い方もしているのが面白い。記事の締めくくりとしては、「IDEの重さから卒業したいけど、最低限のエディタ機能は欲しい」という人にはZedがちょうどいいよ、というおすすめと、neovimやnovimみたいな選択肢にも軽く触れつつ、「新しいツールは楽しみながら試していこう」というスタンスが語られています。AIとの付き合い方のスタイルを考える上でも、参考になる内容でした。
。。。。
4本目。
タイトルは「3000 ドルかけて Devin と React 18 移行して得た学び」。
これはかなり攻めた実験レポートです。運用中のReact 16.8のサービスを、なんと「自分では1行もコードを書かずに」、AIエージェントのDevin(+一部Codex)だけでReact 18まで持っていった、というプロジェクトの振り返り。期間はおよそ2ヶ月、かかったお金は約3000ドル。405セッションを回して、236本のマージPRで移行を完了させたという、かなりの規模感です。実際やってみると、いちばん時間がかかったのはReact本体ではなく、周辺ライブラリ、とくにRecoilとMUI v4の更新だったそうです。デグレはそれなりに発生したものの、致命的な大障害はなく乗り切れたとのこと。ここから得られた教訓がすごく実践的で、「常にリリース可能な小さめPRに分割する」「詳細なPRテンプレートでレビュアーの負担を下げる」といった、AIに書かせる前提での開発プロセスのデザインが語られています。テストについても、フロントエンドではユニットテストよりE2Eテストを厚めにしておくと、AIが書いたコードの挙動チェックがしやすい、という話。さらに、SentryのIssue調査や、CI失敗時の原因追跡をDevin+GitHub Actionsのワークフローに組み込んで、自動で原因を追ってもらう仕組み作りなんかも紹介されています。依存関係のカオスを避けるために、pnpmのような「hoistしない」パッケージマネージャを使うといいよ、という細かいTipsも。長期タスクは1つのIssueに複数PRを紐づけて、文脈をGitHub Issue側で管理する、などの運用ルールもAI時代っぽいです。最後のほうでは、コンテキスト長の制約を意識したセッション分割や、「質問があればどうぞ」というプロンプトテクニックは、多分モデルの進化でそのうち要らなくなるだろうとしつつ、「いまのAIではできません」といったKnowledgeベースは、すぐ陳腐化するので定期的に掃除が必要だね、という振り返りもありました。「AIに本番コード任せるとき、どこにお金と仕組みを張れば安全か?」が具体的に見える内容です。
。。。。
そしてラスト、5本目。
タイトルは「Pythonだけで"ほぼReact"な宣言的UIアプリが作れるようになったぞ!【Flet1.0beta】」。
Python好きにはかなりうれしいニュースです。クロスプラットフォームなGUIフレームワーク「Flet」が1.0 beta(v0.80.0)になって、UIの書き方が大きく変わりました。これまではどちらかというと命令的にUIを組んでいくスタイルだったのが、今回からがっつり宣言的、React Hooksっぽい世界に寄ってきた。具体的には、`@ft.component`というデコレータと、`use_state`, `use_effect`, `use_ref`, `use_context`, `use_memo`, `use_callback`といった各種Hooksが入って、「UI = f(state)」で差分更新される体験ができる。つまり、Pythonだけで“ほぼReact”な書き心地が得られるようになったよ、という話ですね。状態管理は`@ft.observable`を使って、MobXとかZustand風のStoreとして持たせることができて、副作用はuse_effectに閉じ込める。非同期タスクとかキャンセル可能な処理はuse_refで保持しておくときれいに設計できるよ、というベストプラクティスも紹介されています。さらに、Redux的な書き方、つまりreducerとdispatchで状態遷移を管理するスタイルもサポートされていて、小〜中規模アプリならObservable Storeでサクッと書く、大規模で履歴追跡やテスト性を重視したいならRedux風に寄せる、といった使い分けの提案もあります。記事の中ではTodoアプリの実装例を通じて、「どこまでを副作用とみなしてuse_effectに寄せるか」「状態とUIロジックをどう分けるか」といった、Reactで一度は悩んだあのポイントを、Flet流にどう設計するかが丁寧に解説されています。命令型スタイル向けの`@ft.control`も追加されていますが、筆者としては基本「宣言的UI+@ft.component」で書くのをおすすめしていて、PythonでデスクトップやWebのUIをモダンに書きたい人には、かなりワクワクする内容になっていました。
。。。。
ということで、今日は5本ご紹介しました。
Rust製軽量エディタZedでDev ContainersとCopilot、Claude Codeを組み合わせた開発環境の話から、Claude Code on the Webでghを使うための設定テクニック。さらに、IDEの中ではなくターミナルでClaude Codeを動かすワークフローの話。AIエージェントDevinにまるっとReact 18移行を任せた実験と、そのプロジェクト運営ノウハウ。そして最後は、Pythonだけで“ほぼReact”な宣言的UIが書けるようになったFlet 1.0 betaのお話まで。AIと開発環境、UIフレームワークの最前線がギュッと詰まったラインナップでした。
気になった記事があった方は、この番組のショーノートにタイトルなど詳細を載せておきますので、あとでゆっくりチェックしてみてください。
「zenncast」では、番組の感想や「こんなテーマを取り上げてほしい」といったリクエストも、いつでも募集しています。Zennでこの記事おもしろかったよ、なんて紹介も大歓迎です。
それでは、そろそろお別れの時間です。
今日も良い一日をお過ごしください。お相手はマイクでした。また次回の「zenncast」でお会いしましょう。ありがとうございました。