どうもー、おはようございます。マイクです。
金曜日の朝、七月十七日、時刻は朝七時をちょっと回ったところでしょうか。
ここからの時間は「zenncast」、きょうもZennで話題になっているトレンド記事を、ゆるっと楽しく紹介していきます。
きょうはね、技術寄りなんだけど、ちゃんと日常にも役立ちそうな話が多めです。
「AIとどう付き合うか」「検索のここ五年」「ちょっと便利なデスクトップガジェット」、それから「Goだけで機械学習やっちゃう話」なんかをまとめてお届けします。
さて、きょう紹介する記事はぜんぶで五本です。
それぞれ濃い内容なので、コーヒー片手に、耳だけ貸してもらえればうれしいです。
まず一つ目。
Claude Code をがっつり使っている人向けの、「標準機能と三つのプラグインを組み合わせて、開発体験を一気に底上げしよう」という記事です。
狙いとしては「可視性、時間、コスト、プロセス、設計の穴」っていう、ぜんぜん別々に見える問題を、一気にまとめてケアしにいこう、という発想ですね。
まずは「ステータスライン機能」。
これが便利で、画面の下とかに、モデル名、今触ってるブランチ名、コンテキストの残り量、レートリミット、そして累計コストなんかを常に表示しておくんです。
これが見えてると、「そろそろコンテキストをコンパクト化したほうがいいな」とか、「きょうはもう重いタスクは控えておくか」とか、判断が一瞬でできるようになる。
AIに任せてる時間が長いほど、この“見える化”って効いてきますよね。
さらに面白いのが「朝七時に自動で軽いメッセージを送る」ルーチン。
これを仕込んでおくことで、五時間の利用制限のスタート時刻を、毎日きっちり朝七時に固定しちゃうんです。
そうすると、業務時間の中で、その五時間枠を一日に三回きれいに回せる。
「気づいたらリミット食い切ってた」じゃなくて、「一日を三ブロックに分けて、計画的にClaudeを回す」っていう運用になるわけですね。
で、ここからは三つのプラグイン。
まず一つ目が「genshijin」。
これは、日本語の敬語とか前置きとか、いわゆる“ていねいだけど長い表現”を削って、原始人口調みたいな、シンプルな日本語に変換してくれるプラグインです。
内容はちゃんとそのまま保ちつつ、トークンをおよそ七十五から八十パーセントも削減できる。
Pull Requestのコメントをコンパクトにしたり、CLAUDEドットエムディーを軽量化したり、日本語特有の“無駄に長くなりがちなトークン”を徹底的に減らしてくれるのがポイントです。
二つ目が「superpowers」。
これは、「すぐコード書いてよ!」って頼むのをあえて禁止するプラグイン。
代わりに、要件ヒアリング、仕様化、計画の承認、テスト先行、セルフレビュー、っていう流れを、Claudeに強制的に踏ませます。
つまり、AIにもちゃんと“開発プロセス”を守らせる。
これによって、「とりあえず動くけど雑なコード」を量産させない、っていう思想ですね。
三つ目が「dig」。
これは計画書とかメモを読み込ませて、「この前提って本当に正しいの?」っていうツッコミを、選択式の質問という形でどんどん投げてくれるツールです。
見落としていた仕様やリスクを炙り出して、それをまた計画に書き戻していく。
イメージとしては、「実装前に設計レビューを前倒しして、AIにやってもらう」感じですね。
で、実際の運用では、まず dig で前提条件をガッチリ固めてから、superpowers で実装のプロセスを管理する。
その裏側で genshijin がトークンを節約しつつ、ステータスラインと朝七時の自動メッセージで、使用量と時間枠を管理していく。
これらを“重ね掛け”していくことで、「見える化」「節約」「プロセス」「設計レビュー」を、ぜんぶまとめて仕組み化している、という内容でした。
AI開発を本気で業務に乗せていきたい人にはかなり刺さりそうな構成ですね。
。 。 。 。
二つ目は、デスクトップの猫でおなじみの RunCat Neo。
その中でも「カスタムメトリクス」という機能にフォーカスした記事です。
このカスタムメトリクス、何ができるかというと、「自分で更新し続けるJSONファイルをひとつ用意しておくだけで、その中身をRunCat Neoに監視させて、ダッシュボードやメニューバーに好きな情報を表示できる」というものです。
CPUの利用率だけじゃなくて、たとえばビットコインの価格、GPUの温度、GitHubのコントリビューション数、要は“JSONに書き出せるものなら何でも”対象にできる。
この記事では、CoinGeckoのAPIからビットコインの価格を取ってくる例が紹介されています。
手順もすごくシンプルで、まず価格を取ってきてJSONに書き出すシェルスクリプトを一個置きます。
で、それをまずは手動で実行してみる。
ちゃんとJSONファイルができたら、RunCat Neo側でそのファイルを「カスタムメトリクス」として登録してあげる。
必要であれば、それをそのままメニューバーに表示して、いつでもチラ見できるようにする。
最後に、macOS の launchd を使って、そのスクリプトを一定間隔で自動実行する設定をする。
これだけで、自分専用の「ビットコイン価格インジケーター」がMacの上に生まれるわけですね。
JSONの中で必要になる項目も、記事ではかなり噛み砕いて説明されています。
たとえば、「タイトル」として表示名をどう付けるか。
メニューバーに出す用の短い文字列をどこに入れるか。
最後にいつ更新されたかを示す「更新日時」。
さらに、ゼロから一のあいだで表す“進捗バー用の数値”なんかも入れられる。
プログレスバーを出したいときは、この normalizedValue をきちんと入れておくと、RunCat Neo側でバーを描画してくれる、という仕組みです。
ポイントとしては、「値の整形はスクリプト側でやる」というルール。
つまり、RunCat Neoには“完成済みの値”を渡してあげるイメージですね。
そうすると、RunCat Neoはただ表示するだけでよくなるので、かなり汎用的に使えるようになる。
デスクトップにちょっとした“自分だけのダッシュボード”を作りたい人には、かなり面白い機能じゃないかなと思います。
。 。 。 。
三つ目は、検索技術、この五年間を振り返るまとめ記事です。
BERT以降、Embeddingが一気に広まって、さらにLLMまで出てきたことで、「検索の作り方」がどう変わったのか、を整理してくれています。
昔は、特徴量って人間が手作業で設計してましたよね。
どんな単語が含まれているか、どんなカテゴリか、いろんなルールをエンジニアがコツコツ作っていた時代から、Transformer による表現学習に移っていった。
その結果、Embedding が検索全体の“共通基盤”みたいな存在になった。
一方で、「キーワード検索はもう終わりだ」みたいなハイプもありました。
でも実際には、そこには結構大きなギャップがあった、と記事では言っています。
現場の実務では、たとえば商品検索なんかだと、キーワード検索と辞書をちゃんと整備するだけで、九割以上のクエリはカバーできてしまう。
ベクトル検索、つまりEmbeddingを使った検索が本領発揮するのは、その残りの、ごく一部のクエリ。
なので、「キーワードかベクトルか」じゃなくて、「両方組み合わせたハイブリッド構成」が、実際にはいちばん効果的だろう、という整理です。
ランキングモデルの世界も、この五年で結構変わりました。
昔は決定木ベースのモデルが主流だったところから、ニューラルネットベースのランキングにどんどん移行していった。
その裏では、PyTorch とか Triton みたいなツールの普及で、研究と現場の距離がかなり縮まった、という話も出てきます。
おかげで、「検索エンジニアの仕事の中に機械学習が自然に組み込まれてきた」という振り返りですね。
今後についても、いくつか面白い問いが投げられています。
エンコーダーモデルと、チャットのようなデコーダー、つまりLLMとの棲み分けはどうなっていくのか。
次世代の検索手法は、今のハイプが落ち着いたあと、どこに着地するのか。
LLMをリアルタイム検索にどうくっつけるのが現実的なのか。
それから、エージェント型の検索体験、つまり「検索エンジンが対話しながら代わりに調べてくれる」スタイルが、本当に一般化するのかどうか。
最後に筆者が強調しているのは、「どんなに技術が変わっても、結局大事なのは、生のデータとちゃんと向き合うことだ」という点です。
どんな問題があって、どういう解決策がありえるのかを、地道に考え続ける姿勢。
そこだけは、この先も変わらない“コアの仕事”なんだろうな、という締め方になっていました。
。 。 。 。
四つ目は、またClaudeの話に戻ってきます。
Claude Code の Plan モードを、「hook とサブエージェントで自動化して、楽に回すためのテクニック集」としてまとめた記事です。
まずポイントになるのが、「Plan モードのときだけ動く UserPromptSubmit hook」。
これを挟んでおくことで、要件がまだあいまいなあいだは、Claude に `AskUserQuestion` を自動で繰り返させる、という仕掛けが作れます。
毎回、こっちが長いプロンプトを書き連ねて要件を説明しなくても、向こうからどんどん質問を投げてもらって、要件詰めを進めてもらえるイメージですね。
実装フェーズに入ったあとの運用も、結構徹底しています。
メインのセッションでは、直接コマンドを打たない。
代わりに、`claude ダッシュ ダブルジー` みたいなバックグラウンド実行や、別のエージェントに実装を任せるよう、自動でルールを差し込んでおく。
こうすることで、「考えるところは高性能モデル」「実際の実装は Sonnet」といった具合に、モデルをきれいに振り分けることができます。
メインのセッションは、あくまで指示出しとレビュー専任。
人間のプロジェクトマネージャーっぽい立ち位置にしてしまう、という設計ですね。
もうひとつ面白いのが、「Plan モードでは本来 HTML ファイルを作れない」という制約の裏をかくテク。
具体的には、`plans スラッシュ アスタリスク ドットエムディー` への書き込みを PostToolUse hook で監視します。
そのマークダウンの中に `レンダー` というコメントマーカーが付いたときだけ、ヘッドレスの `claude ダッシュピー` でHTMLに変換する。
で、その変換したHTMLを Artifact として開いて、ブラウザで図入りの状態を確認できるようにする、という流れです。
この仕組みを通して、二つのことを同時にやっています。
ひとつは、「要件があいまいなまま、雑な計画がそのまま通ってしまう」のを防ぐこと。
もうひとつは、「長大な計画書を図入りHTMLとしてレビューできるようにして、修正して、また再生成して…」というループを、ほぼ自動で回せるようにすること。
Plan モードを、ただの“おまけ機能”で終わらせずに、ちゃんとワークフローの中心に据えるための工夫が、ぎゅっと詰まった記事でした。
。 。 。 。
そして最後、五つ目の記事。
これは少しオピニオン色の強い、「技術実証+主張」という構成の内容です。
テーマは、「Python が事実上の標準になっている機械学習を、学習から推論、配布まで、全部 Go だけで完結させられるか」というチャレンジ。
題材として扱っているのは、手書き数字の認識という比較的シンプルなタスクです。
Go製のフレームワーク GoMLX と、純粋なGoで書かれたバックエンドを組み合わせて、八かける八ピクセルの画像を入力とする全結合ネットワークを学習させます。
構成としては、「六十四ユニットから三十二ユニットを経由して十クラスを出力するMLP、活性化はReLU、最適化手法はAdam」という形。
このモデルで学習を回して、テスト精度がおよそ九五パーセント前後、つまり scikit learn の実装と同じくらいの精度をちゃんと出せた、という報告です。
さらに面白いのが、配布の形。
モデルの学習コード、推論コード、データセット、これらをぜんぶひとつの静的バイナリにまとめてしまっています。
サイズはおよそ十メガバイト。
しかも cgo なしで、主要なOS向けにクロスコンパイルできる。
Python ランタイムを一緒に配らなくてもいいし、別プロセスの推論サーバを立てる必要もない、という世界観ですね。
パフォーマンス面では、「XLA構成を使うとランタイム用におよそ百六十メガバイトの追加メモリが常駐するのに対して、純Go構成ではそれを避けつつ、単一サンプル当たりおよそ二十マイクロ秒の推論レイテンシを達成している」という数字も出てきます。
かなりコンパクトで、それなりに速い。
筆者自身は、「これは新しいアルゴリズムを発明した話ではないし、小規模なタスクに限った事例だ」と、ちゃんと前置きしています。
そのうえで、「でも、Python ランタイムを持ち込みたくない」「別の推論サーバを立てたくない」という Go の環境にとっては、GoMLX の純Go構成は、現実的な選択肢として十分ありえる、と主張しています。
つまり、「全部Pythonでやる」のとは別の選択肢として、「Goだけで完結させる」ルートも、少なくともこの規模では手が届く、という実証ですね。
。 。 。 。
というわけで、きょうの zenncast は、
一つ目に、Claude Code のステータスラインや朝七時の自動メッセージ、それから genshijin、superpowers、dig という三つのプラグインを組み合わせて、「可視性」「時間」「コスト」「プロセス」「設計の穴」をまとめてケアする運用の話。
二つ目に、RunCat Neo のカスタムメトリクスで、ビットコイン価格みたいな好きな情報をJSON経由で監視して、メニューバーやダッシュボードに出してしまう手順。
三つ目に、BERT以降のEmbedding普及とLLMの登場でどう検索が変わったか、そしてキーワードとベクトル検索のハイブリッドが現実解だよね、という五年の振り返り。
四つ目に、Claude Code の Plan モードを hook とサブエージェントで自動化して、要件詰めからHTMLの計画レビューまでを一気に楽に回すテクニック集。
そして五つ目に、手書き数字認識という小さなタスクを題材に、「学習から配布までをGoだけで完結させる」GoMLX純Go構成の技術実証、というラインナップでお届けしました。
気になった記事があったら、詳しい内容はこの番組のショーノートにリンクを載せておきますので、ぜひ元の記事も読んでみてください。
そして、この番組の感想や、「こんなテーマ扱ってほしい」「ここ詳しく解説してほしい」みたいなリクエストも、どしどしお待ちしています。
それでは、きょうも良い金曜日をお過ごしください。
お相手はマイクでした。
また次回の zenncast でお会いしましょう。