#
705
どうも、マイクでーす。おはようございます。
2026年4月27日、月曜日の朝7時をまわりました。ここからの時間は「zenncast」、きょうもZennで話題になっているトレンド記事を、ゆるっと楽しく紹介していきたいと思います。

さてさて、きょうはお便りコーナーはお休みで、そのぶん技術ネタをみっちりお届けしていきます。コーヒー片手に、通勤通学のお供に、最後までよろしくお願いします。

きょう紹介する記事はぜんぶで5本です。
AIエージェントの運用から、動画自動生成、Rust製TUI、UIKitの新しいトレイトの世界、そしてClaude Codeの代替ツールまで、かなりバラエティ豊かなラインナップになってます。

まず1本目。
タイトルは「ハーネスエンジニアリングを楽にする Microsoft 製の新ツール『APM』ハンズオン」。

これはAIエージェントを、いろんなツールやIDEで動かしているチーム向けのお話です。CopilotにClaude、Cursor…って、エージェントの設定ファイルがツールごとに増殖していくと、「あれ、このルール最新版どれ?」「新メンバーにどれ渡せばいいの?」みたいなカオスが起きやすいですよね。
そこで登場するのがMicrosoft製OSSの「Agent Package Manager」、略してAPM。npmのpackage.jsonみたいなノリで、`apm.yml`に「このエージェント設定を使うよ」と依存関係を書いておいて、`apm install`するだけで、CopilotやClaude、Cursorといった“ハーネス”全部に一括で展開してくれます。生成された`apm.lock.yaml`では、40桁のSHAでガチっとバージョン固定できるので、「誰の環境でも同じ動きをする」っていう再現性も確保できる。
オンボーディングも「git cloneしてapm installどうぞ」で完了。ルール更新やハーネスの追加もGitの履歴で管理できて、チーム全員に自動で行き渡る。
面白いのはセキュリティ設計で、「ファイルがあること自体が実行につながる」という前提で、ロックファイル、不可視Unicodeのチェック、`apm-policy.yml`でのallow/deny制御、しかもランタイム常駐なしという多層防御を敷いているところ。
ハンズオンでは、まずパッケージ取得から環境の再現セットアップ、次に組織共通の`apm-policy.yml`を使って、ローカルとCIで二段階のゲートをかける運用を体験します。`apm audit --ci --policy org`で、怪しいPRはCIでブロックしつつ、GitHubのCode Scanningとも連携できる。AIエージェントの「設定破綻」と「ガバナンス崩壊」をどう避けるか、かなり実務寄りの解決策がまとまっている記事でした。 。。。

続いて2本目。
タイトルは「GitHub のアップデートを、Youtube ショート感覚でダラダラ見られる動画にしてみた」。

GitHubのChangelog、内容は大事なんだけど、テキストで読むと妙に疲れてあとで読もう…ってなりがちですよね。筆者はこれを「URLを渡すだけで、オリジナルキャラが1〜2分で説明してくれる動画に変換する」という仕組みを組み上げています。
構成は三段ロケットで、まずGitHub Copilot Agent Skillsが記事本文を読み込んで台本を作成。それをVOICEVOXで音声に変換して、最後にRemotionでスライドやキャラクター、字幕と音声を合成してmp4動画にする流れです。Copilot Chatに「このURLでいつもの動画つくって」と話しかけると、裏で一連のスクリプトが自動で走るイメージ。
面白いのが、Agent Skillを「放送作家兼監督」として設計しているところ。単に台本を生成するだけじゃなくて、「どの順番でスクリプトを動かすか」「品質チェックのルールはなにか」までMarkdown1枚に閉じ込めて、プロンプトをコードと同じようにGit管理できるようにしているんですね。
Remotionのおかげで、動画編集もReactとCSSで扱えるので、「動画制作=リポジトリ内のワークフロー」という扱いにできる。今後はAgentic Workflowでもっと自動化したり、キャラを増やして掛け合い解説にしたりと、技術ドキュメントを“ながら見”できる形に落とし込む実験としても面白い取り組みです。開発情報を追うのがしんどくなってきた人には、かなり刺さりそうなアイデアですね。 。。。

3本目。
タイトルは「ターミナルで動く開発モニタをRustで作った — Ratatuiで実用TUIを作って見えた5つの設計課題とその解き方」。

RustとRatatuiで、ターミナル上に“開発モニタ”TUIを作ったときにぶつかった、実践ならではの設計課題が5つ整理されています。題材になっているのは「DevPulse」というツール。
まず1つ目の課題は、4種類ある非同期データソースをどう協調させるか。ここでは、同期/非同期が混ざったシンプルなイベントループにしつつ、ポーリング間隔を短くして、ログだけ高頻度で吐くことで、「操作の応答性」と「ログの追従性」を両立しています。
2つ目はDocker依存の障害をどう隔離するか。Dockerへの接続状態をOptionで表現して、失敗理由をUIにきちんと渡しつつ、起動時と実行中で二段階のフォールバックを用意することで、「Dockerが死んだら全部巻き添え」みたいな状態を避けています。
3つ目はログでメモリが肥大化しがちな問題。ここはVecDequeの循環バッファと、有界なMPSCチャネルで上限を決めてバックプレッシャーをかける設計に。tail -f 状態の管理はUI側に切り出しているのもポイントです。
4つ目はポートスキャンのOS差異。PortScannerトレイトを定義して、macOSならlsof、Linuxなら/proc/net/tcp…という具合にcfgで切り替え。呼び出し側は「ポートをスキャンして」とお願いするだけでOS差異を意識しなくて済みます。
最後5つ目がレイアウト。Ratatuiのパーセンテージベースな2×2グリッドを基本にしつつ、フルスクリーンや極小サイズのときにモードを切り替えたり、enumの判別値でどのパネルを出すか管理して、サイズ変化に強いUIにしています。
全体を通して、「責任範囲の境界線をはっきり引いて、問題を局所化する」というRustらしい設計哲学が伝わる記事になっていました。TUI作りたい人にはかなり実践的な内容です。 。。。

4本目。
タイトルは「今日のUITraitCollection」。

これはUIKitにおける「環境値」の仕組み、UITraitCollectionの最新事情をきれいにまとめた記事です。SwiftUIだと@Environmentでおなじみの世界ですが、UIKitにも階層的に伝播するTraitがあって、UIViewやUIViewControllerのtraitCollectionから参照できます。
iOS16まではsetOverrideTraitCollectionで上書きしていたところが、iOS17以降はtraitOverridesに変わり、より扱いやすくなりました。さらにiOS17で大きいのがUITraitDefinition。これで独自のTraitを定義できるようになり、SwiftUIの@EnvironmentとUITraitBridgedEnvironmentKeyを使って相互同期も可能になっています。
つまり、SwiftUIとUIKitが混在した画面構成でも、「環境値」を行き来させながら一貫した状態管理ができるようになった、ということですね。
また、registerForTraitChangesによって、特定のTraitの変化だけをピンポイントで検知できるようになったのも便利なポイント。伝播経路もResponderチェーンに揃えられて、UIKitの世界がだいぶモダンな設計に寄ってきた印象です。
iOS18ではObservationとの連携も進んでいて、traitCollectionを参照しているところが、自動的に再実行されるような仕掛けも入ってきます。SwiftUI全盛のなかで、「まだUIKitもがっつり使ってるよ」という人にとって、今押さえておきたい環境値のアップデートがコンパクトにまとまった記事でした。 。。。

そしてラスト5本目。
タイトルは「Claude Codeより安く開発できるOpenCodeを使ってみよう」。

AnthropicのClaude Code、便利なんですが、Code機能をフルで使おうとするとMaxプラン以上が前提になってきて、お財布的に厳しい…という人も多いと思います。そこで登場するのがOSS発の代替ツール「OpenCode」。
OpenCodeはCLI/TUIを起点に、「OpenCode Zen」(無料モデルあり)、「OpenCode Go」(月10ドル・初月5ドル)、それからデスクトップアプリやIDE拡張などを展開しています。特に有料のOpenCode Goでは、GLM、Kimi、Qwen、DeepSeekといった中国系を中心とする最新モデル群を、かなり安価にまとめて使えるのが特徴です。
TUI版の操作感はClaude Codeほぼそのままで、プロバイダ設定、モデル選択、Buildモード/Planモードの切り替え、セッション管理、スキルやbunベースのプラグイン機構など、ひととおり揃っています。Claude Code用プラグインとは互換がないものの、「コードエージェントを安く継続利用したい」「制限が厳しくて本番作業に使いづらい」という悩みを持つ開発者には、かなり現実的な選択肢になりそうです。
記事では、実際の使い勝手や、どういうケースでClaude Codeの補完として組み合わせるとよいか、という視点でも触れていて、「エージェントをサービス1本にべったり依存しない」ためのリスクヘッジとしても参考になる内容でした。

というわけで、きょうのzenncast、駆け足でおさらいしていきましょう。
1本目は、AIエージェント設定をnpmライクに一元管理できるMicrosoft製OSS「APM」。
2本目は、GitHub Changelogをオリジナルキャラが解説するショート動画に自動変換する仕組み。
3本目は、Rust+Ratatuiで実用TUIを作るなかで見えてきた5つの設計課題とその解き方。
4本目は、UIKitにおけるUITraitCollectionの進化と、SwiftUI/Observationとの連携のお話。
5本目は、Claude Codeより安価にコードエージェント体験を提供する「OpenCode」の紹介でした。

気になった記事があったら、詳しい内容はショーノートにまとめてありますので、ぜひ元記事もチェックしてみてください。
番組の感想や、「こんなテーマ取り上げてほしい!」というリクエストも、どしどしお待ちしています。

それでは、きょうも良い一日を。
お相手はマイクでした。また次回の「zenncast」でお会いしましょう。バイバーイ。

Related episodes

内容の近いエピソードを推薦しています