#
744
どうもー、おはようございます。マイクです。
時刻は朝7時を少し回ったところ、2026年6月5日、金曜日。今日も「zenncast」は、Zennで今トレンドになっている記事をゆるっと、でも中身はしっかりめに紹介していきます。通勤・通学中の方も、おうちで支度中の方も、よかったら最後までお付き合いください。

今日は全部で5本、ご紹介していきます。エンジニアの方はもちろん、「AIって最近どうなの?」とか「設計ちゃんと学びたいな」と思っている方にも刺さるラインナップになってますよ。

ではさっそく、1本目からいきましょう。
1つ目は「Claude Managed Agentsで『まずエンジニアに聞こう』を『まずbotに聞こう』に変えた」という記事です。

こちら、ダイニーさんという会社のお話なんですが、開発チーム宛ての「これ教えて」「このデータどうなってるの?」みたいな質問が、1日あたり8件くらい発生していたそうなんですね。よくある「dev-help」チャンネル問題です。で、その中でも、単なる過去事例検索じゃなくて、「今のデータを見に行って」「ログを漁って」「コードも確認して」っていう、けっこう重めの問い合わせを、人じゃなくて bot にやらせちゃおう、という取り組みです。

そこで登場するのが、Claude Managed Agents を使った Slack bot、「@ask-anything」。この子がすごくて、BigQuery、Cloud Logging、モノレポのコード、Notionのドキュメントなんかを、read-onlyで自律的に調査してくれます。質問すると、botが勝手に「じゃあこのクエリ投げてみよう」「このログ見よう」「この仕様ページ読もう」と動き回って、だいたい1〜3分で回答してくれる。内容としては、データ確認・ログや履歴の調査・仕様やバグの確認までこなす、だいぶ優秀な社内アシスタントになっているようです。

面白いのは、会社側で複雑なオーケストレーションを組む必要があまりなかった、という点。Anthropic側のsandbox機能とMCPという仕組みを使うことで、「どのツールをどういう順序で呼ぶか」みたいな管理を自前でガチガチに作り込まなくても、それなりに賢く動いてくれる。これが導入のハードルをけっこう下げてくれているみたいです。

効果も数字で出ていて、botが参加したSlackスレッドは4週間で24件から109件まで増加。逆に、人間エンジニアが対応する「dev-help」チケットは、週40〜50件あったところから20〜30件くらいまで、ほぼ半減しています。さらに「最終的にエンジニアにエスカレーションされる率」も、100%から22%まで下がって、多くの問い合わせがbotだけで完結するようになった、と。これは、「まずエンジニアに聞こう」から「まずbotに聞こう」に、社内の文化ごと変えにいっている、という話でもあって、かなり示唆に富んだ記事でした。

「うちも開発チームに質問集まりすぎてるんだよな〜」という方は、技術的な構成だけじゃなく、運用やルールの部分も含めて読んでみると、かなり参考になると思います。..。。

続いて2本目。「セマンティックな型宣言に意味はない」という、ちょっと挑発的なタイトルの記事です。TypeScriptのお話ですね。

TypeScriptって、`type`とか`interface`とか、いろいろ型に名前をつけられるんですけど、「それっぽい名前をつけるだけじゃ、安全性は上がらないよ」という主張です。たとえば `type Jpy = { value: number }` って書いても、「これは日本円です」と言いたい気持ちは伝わるけど、コンパイラ的には「valueを持つオブジェクト」くらいの意味しかない。構造が同じ別の型も、簡単に混ざってしまう。セマンティックな名前をつけただけでは、何も保証されていない、というわけです。

じゃあどうするかというと、記事では「スマートコンストラクタ」と「Branded Types(ブランド付き型)」を使おう、と。値を直接newしたりリテラルで作るんじゃなくて、「正しいルールを満たした値だけを生成する関数」を用意して、そこでチェックする。その結果としてだけ存在する型をブランド付きで表現することで、「これはちゃんと通貨のルールを満たしたJPYだよ」とコンパイラに分からせる、という考え方です。

さらに、通貨変換の関数も、「通貨の種類」を表す`currencyType`を持たせた判別可能ユニオンにしておくと、JPYとUSDを間違って混ぜるようなコードはコンパイル時点で止められる。単に `JpyAmount` とか `UsdAmount` という名前をつけて安心するのではなく、「どういう値が入るべきか」「どういう操作が許されるのか」という、形式的な振る舞いをきちんと型で表現して、さらにテストで裏付ける。それが、コードに実質的な意味を与えるんだ、という話です。

「なんとなくtype付けてるけど、本当に意味あるのかな?」とモヤモヤしている方には、かなり刺さると思います。「名前をつける」から一歩進んで、「制約を表現する」型設計に興味がある方、ぜひ読んでみてください。..。。

さあ、3本目。「クリーンアーキテクチャを3行で説明してみる」という記事です。あの有名な「同心円の図」が出てくる、クリーンアーキテクチャですね。

この記事では、クリーンアーキテクチャをすごくシンプルにまとめていて、ざっくりいうと、
1つ、技術じゃなくて「業務の関心ごと」を中心に設計しましょう。
2つ、文脈の違う業務や技術の都合がごちゃまぜにならないように、境界を分けましょう。
3つ、DBやUIなどの具体的な技術は、いつでも差し替えられるように抽象化しましょう。
だいたいこの3本柱で説明しています。

よく見る同心円の図についても、「あれは特定のシステムの構成図じゃなくて、『依存は内側=業務に向けてだけ向かうんだよ』っていう概念図ですよ」と改めて整理してくれているのが印象的でした。つまり、中心にある「ドメイン」や「ユースケース」が一番偉くて、外側のフレームワークとかDBは、それに従属する立場。依存の向きを間違えなければ、技術を変えても、業務の本質は保てる、という考え方です。

実践的なところでは、まず業務ドメインをちゃんとモデル化して、その周りにインターフェースを置いて抽象化し、DI(依存性注入)で依存関係のツリーを作っていくといいよ、とアドバイスしています。オブジェクト指向の基本的な理解があると、この「モデリング」と「抽象化」もやりやすくなる、という話も出てきますね。

最終的には、「クリーンアーキテクチャの目的は、コードの変更を少しでも楽にすることに尽きる」と締めていて、「あ、そうか、図や用語を覚えることじゃなくて、『変えやすくするための考え方のセット』なんだな」と腑に落ちる内容になっています。クリーンアーキテクチャって難しそうだな…と距離を置いていた方にも、いい入口になる記事だと思います。..。。

では4本目。「CUDA Programming Guide Part 1」。GPUプログラミング入門の記事です。CUDA C++でGPUを使い倒したい人向けの、かなり丁寧なスタートガイドになっています。

まず、前提として「CPU(ホスト)」と「GPU(デバイス)」があるヘテロジニアスな環境の話から始まって、GPU側のハードウェアモデル、たとえばSMとかGPCとか、Unified CacheやShared Memory、レジスタなどの役割を整理してくれます。そのうえで、実行モデルとしての「スレッド」「スレッドブロック」「グリッド」「クラスタ」「ワープ」みたいな概念、そしてSIMTとか、最近よく聞くTile Programming Modelといった用語を、図解するようなイメージで解説してくれています。

メモリ層も重要で、「グローバルメモリ」と、オンチップにあるレジスタや共有メモリがどう違うのか、何が速くて何がボトルネックになりやすいのか、といった基本を押さえてくれます。そのうえで、CUDAらしい書き方の入門として、`__global__` なカーネル関数を triple chevron 構文で起動して、スレッドインデックスを使って配列を並列処理していく、という最小構成のパターンを紹介しています。境界チェックの考え方や、「スレッド数をどう設計するか」といった、最初にハマりがちなポイントもカバーされています。

メモリ管理については、CPUとGPUを意識しなくて済む「Unified Memory」と、自分で明示的に `cudaMalloc` や `cudaMemcpy` を使うやり方の違いも解説していて、「とにかくまず動かしたいならUnified Memory」「性能を詰めたくなったらExplicit Memory Management」という住み分けが見えてきます。`cudaDeviceSynchronize` でCPUとGPUを同期させる話や、`__device__`、`__shared__`、`__managed__` といった修飾子、`__host__ __device__` で両方向けにコンパイルするテクニックにも触れていて、最初の一歩から、ちゃんと次のステップへの橋渡しまでセットになっている印象です。

最後には、「次回以降は行列積やFlashAttentionの理解に必要なShared Memory活用を扱います」と予告されているので、「GPUでディープラーニングの中身をちゃんと理解したい」「自分でカーネル書いてみたい」という方は、連載で追っていくとかなり良い教科書になりそうです。..。。

そしてラスト、5本目。「RTX 4080でローカルLLM 7モデルを実測したら『16GB VRAMの壁』が見えた」という記事です。ローカルでLLMを動かしている、またはこれからやってみたい方には、かなり実務的な内容になっています。

GPUはRTX 4080、VRAMが16GBの環境で、OllamaとvLLMを使いながら、複数のLLMモデルを比較・計測した結果、「GGUF形式でのモデルサイズがだいたい15GBくらいまで」が、フルGPUで高速に動かせる上限だった、という話がメインテーマです。ここを超えて16GBをオーバーしてくると、CPUへのオフロードが発生してしまって、推論速度が1/10以下に落ちてしまう。「16GB VRAMの壁」がある、というわけですね。

その範囲内、つまり15GB以下のモデルだと、MoE(Mixture of Experts)タイプのモデルが有利で、具体的には gpt-oss:20b(約13GB)が、約125トークン/秒とかなり高速で、かつ推論内容やコード生成の品質も高かったので、「総合的にこれがベストバランス」という結論を出しています。速度だけでいうと deepseek-coder-v2:16b が最速だったものの、推論力ではやや劣る、という評価。ほかにも qwen3.5:9b のような、軽量かつ高品質なモデルも有望だとされています。

一方で、GGUFサイズが16GBを超えるような大きめのMoEモデルや巨大モデルは、ほとんどが実用にならない速度になってしまった、という結果も興味深いところです。「パラメータ数が多ければ正義」という雰囲気に一石を投じていて、「ローカル運用では、まずGGUFの実サイズと、実際の品質のバランスで選びましょう」という提案になっています。

バックエンド比較も面白くて、単一GPU・単一ユーザー前提だと、Ollamaの方がvLLMよりおよそ6倍くらい速かった、という計測結果も載っています。特に `OLLAMA_KEEP_ALIVE=-1` でモデルを常駐させる設定が、レイテンシ削減に一番効いたそうで、「とりあえずローカルで快適に触りたい」くらいの用途なら、まずOllama+適切なkeep-alive設定、というのが実践的な落としどころになりそうです。

「自宅PCでどこまでLLMいけるの?」とか、「4080買ったけどモデル選びに迷ってる」という方には、具体的な数字がたくさん載っていて、かなり参考になる記事でした。

というわけで、今日は全部で5本、駆け足でお届けしてきました。
1つ目は、社内の「まずエンジニアに聞こう」を、「まずbotに聞こう」に変えた、Claude Managed AgentsとSlack botのお話。
2つ目は、TypeScriptで「名前だけの型」には意味がなくて、制約を表現してこそだよ、というセマンティック型宣言の再考。
3つ目は、クリーンアーキテクチャを「業務中心」「境界の分離」「技術の差し替え可能性」という3つの視点から、分かりやすく整理した記事。
4つ目は、CUDAによるGPUプログラミングの基礎を、ハードウェアモデルから実際のカーネルの書き方、メモリ管理まで一通り押さえた入門編。
そして5つ目は、RTX 4080環境でローカルLLMを実測して見えてきた、「16GB VRAMの壁」とモデル選定の実践知、という内容でした。

気になった記事があれば、このあとショーノートにタイトルなどまとめておきますので、ぜひゆっくりチェックしてみてください。この番組「zenncast」では、感想や「こういうテーマ取り上げてほしい」みたいなリクエストも、いつでもお待ちしています。

それでは、今朝はこのへんで。
お相手はマイクでした。今日も良い一日をお過ごしください。また次回、お会いしましょう。

Related episodes

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