#
696
2026/4/17
今日のトレンド

deleted_atとNode.js高速化

どうも、おはようございます。マイクです。
「zenncast」2026年4月18日、土曜日の朝7時を回りました。
この番組では、Zennで話題になっているトレンド記事をピックアップして、コーヒー片手にサクッとキャッチアップできるようにご紹介していきます。今日も最新の技術ネタから、ちょっと考えさせられる話まで盛りだくさんでお届けします。

今日はお便りコーナーはお休みです。その分、記事紹介をぎゅっと詰め込んでいきますね。

さて、今日ご紹介する記事は全部で5本です。
DBトラブルのリアルな話、Node.jsの高速化、AIプロンプトの落とし穴、GitHubの新ツール、そしてQAの自動化事例まで、かなりバラエティ豊かです。それぞれ要点を押さえつつ、現場でどう活かせそうかも交えながら話していきます。

まず1本目。「deleted_atにインデックスを雑に貼ったら本番DBが死んだ」という、タイトルからして胃がキュッとなる記事です。
チケット管理SaaSの本番RDSで、ソフトデリート用のdeleted_atカラムに単独インデックスを追加したら、MySQL 8.0のオプティマイザのクセとバグっぽい挙動が重なって、朝のピークにI/Oスパイクが発生、本番がほぼ止まってしまったというお話。ポイントは、行の8割近く、80万中50万件がdeleted_at IS NULLだったにもかかわらず、innodb_stats_method=nulls_equalの影響で「NULLは1グループ」と見なされ、IS NULLが「定数との等値比較」として“平均1件しかヒットしない”みたいに誤解されちゃったこと。その結果、本来ならassignee_idとの複合インデックスを使ってサクッと絞り込んでからdeleted_atを見るべきなのに、deleted_at単独インデックスをフルでなめに行くプランが「安い」と誤判断されて、大量ランダムI/Oで撃沈。しかも統計がサンプリング依存なので、ステージングでは再現しなかったり、ANALYZE TABLEのタイミングでプランが変わったりと、余計にタチが悪い。最終対処は、その問題の単独インデックスをDROPするシンプルなものだったんですが、教訓として「IS NULLが大多数のソフトデリート列に、安易に単独インデックスを貼るな」「高カーディナリティな列を先頭にした複合インデックスの後ろに置け」「ステージングのEXPLAINだけで安心しない」が挙げられています。DBのインデックス設計、なんとなくやると怖いよね…というのを、すごくリアルに教えてくれる記事でした。

。。。。

続いて2本目。「HonoのNode.jsアダプタが最大2.3倍速くなります」という、パフォーマンス好きにはたまらないアップデート記事です。
HonoをNode.jsで使っている人にはかなり嬉しい内容で、v2のメジャーアップデートでボディパース周りが最大2.3倍速くなったという話。従来は、NodeのIncomingMessageからRequest、そこからアプリ、そしてResponse、最後にServerResponseへ…と、オブジェクト変換が多段になっていたのがボトルネック。LightweightRequest/Responseを入れても、`c.req.json()`みたいにボディを読むタイミングで結局`new Request()`を呼んでしまい、そこが重かった。v2では、この「ボディ読むときだけ遅い」を潰すために、text/json/arrayBuffer/blobのメソッドをオーバーライドして、IncomingMessageからイベント駆動で直接読み取るファストパスを用意。さらにURL生成やヘッダ処理も最適化して、ベンチマーク上、Body系の処理がかなり高速化されています。APIは基本そのままなので、v1からv2にアダプタを置き換えるだけで、Node.js環境のHonoアプリがサクッと速くなる可能性が高い。Node 18サポート終了や、Vercel用アダプタのobsolete化といった注意点はありますが、「ブリッジだから遅い」をちゃんと潰しにいった実装で、他のWeb標準ブリッジ勢よりも速いスコアを叩き出しているのが面白いところです。

。。。。

3本目は方向性がガラッと変わって、「Claudeに原始時代に行ってもらっては困る話」という記事。
海外で話題になった「caveman prompt」、つまり「原始人っぽいしゃべりで、めちゃくちゃ簡潔に答えさせてトークン削減しよう」というテクニックに、ちょっと待ったをかける内容です。筆者が指摘しているのは、まずペルソナ付与が精度を落とすリスク。研究でも、変なキャラ設定をすると推論バイアスが入るって話があって、「原始人AI」はその典型かもしれないと。次に、Claude Codeのトークンの大半はシステムプロンプトやCache Read、ファイル読み込みなどで占められていて、出力テキストはその一部にすぎないので、「答えを短くするだけでは全体コストの数%〜十数%しか減らないことが多い」という現実。そして、「簡潔に」と強く指示すると、事実性が落ちて幻覚率が上がるベンチ結果も紹介されていて、本来なら「その前提おかしいですよ」と説明すべきところを、短くまとめるあまりスルーしてしまう危険性があると指摘しています。さらに、Reasoningトークン量と精度は正の相関があるという話もあって、Claude自身がタスクに応じて思考の長さを自動調整しているのに、わざわざ人間が「もっと短く」と縛るのはもったいないのでは、と。締めくくりとして、コスト削減なら公式ドキュメントに沿って、CLAUDE.mdを小さくする、`.claudeignore`で不要ファイルを読ませない、skillsやサブエージェントで分離する、`/compact`や`/clear`を使う、モデルやeffortを調整する、プロンプトキャッシュを活用する…といった手段の方が、安全かつ効果的だとまとめています。「安易なテクニックに飛びつく前に、どこが本当にコストになってるのかを見よう」という、すごくまっとうなメッセージでした。

。。。。

4本目。「gh skillが登場。GitHub公式のスキル管理ツールにnpx skillsから乗り換えた」という記事です。
GitHub CLIに`gh skill`というサブコマンドが追加されて、AIエージェント向けスキルの管理を公式に一括でできるようになった、という内容。これまで`npx skills`でやっていた「スキル探す→中身確認→インストール→更新→公開」といった流れを、CLI一つで安全に回せるようになりました。インストール前に`preview`でSKILL.mdを確認できたり、どのエージェント・どのスコープに入れるかを選べたり、インストール先も各エージェントの“正しい場所”にいい感じに配置してくれる。`update`でまとめて更新もできるので、複数スキルを使ってる人にはありがたいですね。面白いのがセキュリティ面で、Immutable ReleasesやTree SHAによる改ざん検知、バージョン固定(pin)、SKILL.mdへのprovenance情報埋め込みなど、サプライチェーン攻撃や勝手な書き換えを防ぐ仕組みがしっかり入っているところ。公開側向けの`gh skill publish`も、agentskills.io仕様への準拠チェックに加えて、tag protectionやsecret scanning、code scanningなど、リポジトリの推奨設定を確認してくれるので、「なんとなく公開」じゃなくて「ちゃんと安全に公開」をサポートしてくれます。著者も、こうした仕組みを評価して`npx skills`から乗り換えたそうで、今後のAIスキル配布の“公式レーン”になりそうな予感がします。

。。。。

そして最後、5本目。「QAチームのナレッジを『ハーネス』にする — Claude Codeでテスト設計を自動化した話」です。
これは読み物としても面白いし、実務的にもかなり刺さる内容でした。QAのテスト設計って、どうしてもベテランの暗黙知に頼りがちで、属人化しやすいですよね。それを「ハーネスエンジニアリング」と呼ばれる考え方で、Claude Codeを使ってパイプライン化した事例です。仕様書やソースコードから、テスト観点の洗い出し、Gherkin形式のテストケース、スプレッドシートに貼り付けるTSV、用語集、リリースノートまでを、7フェーズで一気に生成してしまう。核になっているのが3つあって、まず1つ目がKnowledge Base。テスト観点、過去バグの知見、表現ルール、並列化の方針などをMarkdownで構造化しておくことで、QAの「型」を言語化している。2つ目がHooksで、生成されたTSVの構造やカバレッジ、内部用語が混ざってないかなどをチェックし、基準を満たさないと次のフェーズに進ませない“門番”のような仕組み。3つ目がSkillsによる分割実行と並列化で、フェーズごとに役割を分けつつ、トークン爆発や処理時間増加を抑えています。運用してみると、「開発者にしか読めない難しいTC」「前提条件が曖昧」「入力パターンが足りない」「トークンが多すぎて重い」「所要時間が読めない」といった問題が出てきたものの、スタイルガイドを強化したり、用語集や境界値ルールを追加したり、思考モードをタスクに応じて切り替えたりすることで改善。結果として、属人性が下がり、ナレッジは継続的に進化し、ルールも透明化され、少しずつ導入できる仕組みになったと。QAチームの「頭の中のノウハウ」をハーネスとしてコード化することこそが、このアプローチの本質だと結論づけています。AIを「一緒にテストを考える相棒」としてうまく枠組みに組み込んだ好例だなと感じました。

というわけで、今日の「zenncast」は、
・deleted_atインデックスで本番DBが落ちたリアルなMySQL事故と、その教訓
・HonoのNode.jsアダプタv2でボディパースが最大2.3倍速くなった話
・caveman promptに飛びつく前に考えたい、Claudeとトークン削減の現実的な向き合い方
・GitHub CLIの`gh skill`で、AIスキル管理を安全・公式ルートで回せるようになった話
・QAの暗黙知を「ハーネス」としてコード化し、Claude Codeでテスト設計を自動化した事例
この5本をご紹介しました。

気になった記事があれば、詳しい内容は番組のショーノートにまとめてありますので、ぜひ元記事も読んでみてください。
番組の感想や、「こんなテーマを取り上げてほしい」「うちの現場はこうだったよ」といったコメントも大歓迎です。あなたの現場の知見が、次回のzenncastのネタになるかもしれません。

では、そろそろお別れの時間です。
今日も聞いてくださって、ありがとうございました。次回のzenncastで、またお会いしましょう。
お相手はマイクでした。ではでは、いってらっしゃい。

Related episodes

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