どうも、マイクです。おはようございます。
七月十二日、日曜日の朝七時を回りました。
ここからの時間は「zenncast」、きょうも最新のテック系トピックを、Zennのトレンド記事からわいわい紹介していきたいと思います。
さて、きょうは全部で五本の記事をピックアップしてきました。
三Dプリンターのリアルな活用の話、人気ボードゲームのオンライン版、AIコーディングの新しい考え方、ローカル知識ベースのツール、そして高速なハッシュのお話まで、かなり盛りだくさんです。
では、さっそく一つ目からいきましょう。
。。。。
まず一つ目は、「三Dプリンターって、結局ちゃんと使い続けられるの?」っていう疑問に、がっつり答えてくれる記事です。
筆者の方は、ここ四か月で二百八回も印刷していて、作ったモデルの種類も百十三種類。かなりヘビーに使い込んでいるんですが、それでも「ちゃんと使い続けられている理由」がいくつかあると。
一つは、最近の三Dプリンター自体がすごく進化していて、「失敗が少ない」っていうこと。
昔は、途中で反ってしまったり、くっつかなかったり、調整がめんどくさかったりしたんですけど、いまの機種だと、スマホからモデルを選んで、そのままサクッと印刷まで行けちゃう。操作もアプリ感覚で、かなり手軽になっているんですね。
それから、MakerWorld っていうプラットフォームで、無料で公開されているモデルがものすごく豊富なんだそうです。
フィギュアやおもちゃはもちろんなんですが、収納グッズ、フック、カードケース、ケーブルをまとめるパーツとか、「こんなのほしかった」がすでに誰かの手で公開されているので、まずはそこから試せる。
さらに面白いのが、AIにCADコードを書いてもらえる、っていうところ。
自分でゼロから三Dモデリングをマスターしなくても、「こういう形の、こういうサイズのフックがほしい」とか、「この棚のここにピッタリはまる仕切りを作りたい」みたいな要求を投げて、AIにベースとなるモデルを出してもらう。
それをちょっと調整して、またAIに聞きながら仕上げていく、という流れで、自作のハードルもかなり下がっていると話しています。
で、四か月・二百八回の印刷結果を振り返ってみると、意外だったのが、「フィギュアやおもちゃよりも、生活のちょっとした不便を解決するもののほうが圧倒的に多かった」というポイント。
例えば、棚の隙間にピッタリはめる収納ボックスとか、シンクの形に合わせたスポンジホルダー、掃除機のパーツをきれいに立てておくスタンドとか、市販品だと「微妙に合わない」ものを、自宅の環境に合わせてサイズ調整して作る。
こういう、既製品ではなかなか得られない“シンデレラフィット”を実現できるのが、三Dプリンターならではの大きな魅力だ、と語っています。
三Dプリンターに興味はあるけど、「フィギュア作るくらいしか思いつかないなあ」「置き物を増やしてもなあ」と感じている人も多いと思うんですが、この記事では、「家の中の『ちょうどいいものがない』場所は、全部印刷対象だよ」という感覚を、具体例たっぷりで教えてくれます。
つまり、気に入らない収納グッズを我慢して使うんじゃなくて、自分の家に合わせて、好きなように設計してしまう。三Dプリンターを“生活改善ツール”として使う発想が、すごく現実的に伝わってくる内容でした。
。。。。
続いて二つ目。
ボードゲーム好きの方は、ここで一気にテンション上がるかもしれません。「ナショナルエコノミー」という人気ボードゲームを、ブラウザで遊べる非公式オンライン版として実装した、という記事です。
「ナショナルエコノミー」は、もともと日本の同人ボードゲームとしても有名で、絶版期間も長くて、遊びたくても手に入らない時期があった作品なんですが、その「ナショナルエコノミー」、それから続編のプログレス、メセナ、グローリーまで、三部作すべてに対応したオンライン版を、個人で作って公開しているという、かなり攻めたプロジェクトです。
ブラウザだけで動くので、インストール不要。パソコンでもスマホでも遊べて、オンライン対戦も観戦もOK。
CPU対戦も充実していて、難易度や性格の違うボットが多数用意されているので、一人で練習したり、空き時間にサクッと遊んだりもできます。
面白いのが、プレイ中に席を離れなきゃいけなくなったとき、ボットにその席を任せられる機能。途中で抜けてもゲームが破綻しないように、代走してくれる仕組みですね。
さらに、毎週同じ条件でスコアを競う「ウィークリーチャレンジ」があったり、終わった対局のリプレイを共有できたり、初心者向けのチュートリアルも用意されていたりと、一人でも複数人でも遊びやすい仕掛けがかなり充実しています。
アカウント登録も不要で、対戦したい人同士でURLを共有するだけで、すぐにゲームを始められるようになっているのも気楽でいいですね。
裏側の技術もかなり凝っていて、Rustで作ったゲームエンジンを、サーバーとブラウザの両方で動かしているそうです。
ゲームの状態は、イベントの記録から完全に再現できるような設計になっていて、だからこそリプレイもきれいに再生できるし、CPUも同じロジックを使い回せる。
CPUはWasmで実装されていて、その強さは大量対戦させて「実測」しながら調整しているという、研究者っぽい作り込み。自作ボットを安全に持ち込めるような仕組みも用意されていて、競技的に遊びたい人にも刺さる内容になっています。
インフラ面では、CloudflareやRenderなどの無料枠を賢く組み合わせて、個人開発なのに運用コストゼロで、これだけ高度なオンライン対戦環境を実現しているのもポイント。
「好きなゲームをもっとたくさんの人に遊んでほしい」という情熱と、「RustやWasmでちゃんとしたオンラインゲーム基盤を作り込んでみたい」という技術好奇心が、いい感じに融合しているサービスだなあ、と感じさせる記事でした。
。。。。
三つ目。
ここからはAIコーディングの話題です。「ループエンジニアリング」という、ちょっと新しい考え方を紹介している記事。
この記事では、ループエンジニアリングを、「AIに出すプロンプトそのものを、人間の代わりに出し続ける仕組みを設計すること」と説明しています。
従来、ハーネスエンジニアリングと言われていたものは、「一回の実行で使う足場、つまりプロンプトやツールの組み合わせをどう設計するか」という視点だったんですけど、ループはそこから一歩進んで、「その足場をいつ・何回・どのモデルで・誰が検証しながら回すか」という、運用全体の設計にフォーカスしている。
記事の中では、この「ループ」を構成する六つの部品が整理されています。
自動起動の仕組みがあって、作業ディレクトリを分離して、手順を外出しした“スキル”という形で管理する。さらに、外部サービスと連携して、役割分担したサブエージェントが動いて、ディスク上の状態をきちんと管理する。
こうした部品が、既存のツールであるSuperpowersやponytailとどう対応しているかも丁寧に解説されています。
特に重要なのが、「コードを書く役」と「検証する役」を、別のモデルに分けるという発想です。
実装を書くのは、安くて軽いモデル。
一方で、そのコードをレビューしたりテスト結果を見たりする検証側には、より強いモデルを使う。
この「実装は安いモデル・検証は強いモデル」という使い分けが、品質を上げるための鍵になる、と述べています。
GitHub Copilotについても触れられていて、メインセッションでのモデル自動切り替えは弱いものの、`スラッシュフリート`コマンドや、VS Code のサブエージェント機能を使うことで、サブエージェントごとにモデルを指定することは十分柔軟にできる、と評価しています。
さらに、Autopilot や `copilot -p` といった機能と、外部のスケジューラを組み合わせれば、Claude Code などと同じような「ループ運用」がちゃんと実現できる、と。
一方で、落とし穴もいくつか指摘されています。
AIが書いたコードを、チームが内容を理解しきれないままに取り込んでしまうこと。レビューをせずにマージしてしまうこと。
あるいは、ループを回しすぎてトークンコストが暴走してしまうこと。
ループは「コードを増やす力」がめちゃくちゃ強いので、そのぶんYAGNI、「本当に必要なものだけ作る」という原則や、トークンを節約する工夫が、これまで以上に重要になると締めくくっています。
AIに開発を手伝ってもらうその先で、「どうループを設計して回すか」という新しい職能が見えてくる、そんな内容でした。
。。。。
四つ目は、Claude Codeと組み合わせて使うローカル知識ベースCLI、「エルケー」を紹介している記事です。
この「lk」はRust製のシングルバイナリで、プロジェクトごとに「LLM用の外部記憶」を持たせるためのツールになっています。
具体的には、調査ログや設計の判断メモなどを、SQLiteにどんどん保存していきます。
それを高速な全文検索で引き出して、「きのうの続き、どこまでやったっけ?」とか、「前に調べたあのエラーの原因なんだっけ?」といった情報を、すぐに取り出せるようにしてくれる。
チームでちゃんと共有したい内容は、MarkdownとしてGit管理に“昇格”させる、という二層構造になっているのが特徴です。
つまり、「とりあえずのメモ」はSQLiteに、「ちゃんとしたドキュメント」はMarkdownに、という役割分担ですね。
Claude Codeとの連携方法もよく考えられていて、インストラクションやスラッシュコマンド、必要ならMCP経由でもつなぐことができます。
Claude自身が `lk search` や `lk add` を自律的に呼び出して、調査の結果を知識としてどんどん蓄積したり、過去の情報を参照したりする、という運用が想定されています。
検索機能も凝っていて、トリグラムによる全文検索に、キーワード検索、LIKE検索を組み合わせた三段構えで、ヒットの取りこぼしを減らしています。
また、古い情報には自動で「古いですよ」という印を付けてくれて、AIや人間がうっかり“賞味期限切れ”の情報を信じてしまうリスクを下げてくれる。
大きな問題意識としては、「コンテキストが肥大化してきたから、いったんセッションを切り替えたい。でも、前回の調査や設計の文脈はちゃんと残しておきたい」という、AIとの開発でよくある悩みがありますよね。
「lk」は、まさにそのギャップを埋める道具として位置づけられていて、セッションを跨いでも、プロジェクトの知識をローカルにきちんと持ち越せるようにする。
Claude Codeを普段使いしている人にとっては、かなり実戦的な「外部記憶装置」になりそうなツールだな、と感じました。
。。。。
そして最後、五つ目。
ここはグッと低レイヤー寄りの Tips系記事で、FastEnum というライブラリで使う、「enum名から値を引く独自辞書」のために、文字列のハッシュ生成をどれだけ高速化できるか、という話です。
.NETの`string.GetHashCode`って、あらゆる用途向けにすごく高度に最適化されているんですが、この記事では、「enumの名前みたいに、短くて個数もそんなに多くない文字列だけに用途を絞るなら、もっと単純で速い関数にできるよね」という考え方をしています。
大文字・小文字を区別するケースでは、文字列全体をなめるんじゃなくて、「長さ」と「先頭」と「中央」と「末尾」、あわせて三文字分の情報だけを使ってしまう。
具体的には、長さを左に十六ビットシフトして、先頭の文字を八ビットシフト、中央を四ビットシフトして、最後の文字とビット演算でまとめる、という形で、一回のビット演算でハッシュを作る。
これによって、文字列の長さに関係なく、計算時間は一定、いわゆるオーダーワンで済みます。
実際に、BCLに入っている代表的な列挙型を対象に試してみたところ、ハッシュの衝突もほとんど起こらず、.NET標準に比べて約八・五倍も高速になったというベンチマーク結果が出ているそうです。
大文字・小文字を区別しないケースでも、基本的な発想は同じで、「長さ」と「三文字」の構成はそのまま。
違うのは、先頭・中央・末尾の文字を使う前に、`char.ToUpperInvariant`で大文字にそろえてから、さきほどと同じようにビット演算にかける、というシンプルな差分だけで対応しています。
もともとは、内部メソッドを `UnsafeAccessor` で直接呼び出して、分岐のコストを削るなど、かなり攻めた工夫をしていたそうなんですが、それよりもこの新方式のほうがさらに速くて、約四倍の高速化が確認できた、と紹介されています。
筆者の方は、「こういう用途を割り切った素朴なハッシュ関数のアイデアって、自分一人だとなかなか発想できなかった」と率直に書いていて、Claude Fable ファイブのようなAIと一緒に考えたことで、知らないままだった最適化の道が開けた、と振り返っています。
今後もAIの力を借りながら、FastEnumの限界性能に挑戦していきたい、という前向きな締めくくりになっていました。
AIが、アルゴリズムレベルのチューニングパートナーになってきている、というのが面白いですよね。
。。。。
というわけで、きょうのzenncast、お届けしてきたトピックを駆け足でおさらいします。
まずは、三Dプリンターを四か月で二百八回使い倒した実例から、スマホ操作の手軽さや、無料モデル、AIによるCAD支援で、「生活のちょっとした不便」を解決する“シンデレラフィット”な道具づくりの楽しさを紹介しました。
次に、人気ボードゲーム「ナショナルエコノミー」三部作を、RustとWasmでがっつり実装した非公式オンライン版。オンライン対戦やCPU対戦、ウィークリーチャレンジまで、個人開発とは思えない充実ぶりのお話でした。
三つ目は、AIコーディング支援の新しい視点、「ループエンジニアリング」。プロンプトを出し続ける仕組みをどう設計するか、実装と検証でモデルを分ける工夫、そしてCopilotでもループ運用は十分いける、という内容でした。
四つ目は、Claude Codeと連携するローカル知識ベースCLI「lk」。SQLiteとMarkdownの二層構造で、「きのうの続き」をすぐ取り出せるLLM用外部記憶として使えるツールでしたね。
最後は、FastEnum向けに「enum名専用の素朴なハッシュ関数」をAIと一緒に設計して、ケース別に約八・五倍、約四倍の高速化を達成したTips記事をご紹介しました。
きょう紹介した記事の詳しい内容や、気になったキーワードは、ショーノートのほうにもまとめてありますので、あとでゆっくりチェックしてみてください。
zenncastでは、番組の感想や、「こんなテーマ取り上げてほしい」といったリクエストも、いつでもお待ちしています。
テックな話でも、三Dプリンターの活用アイデアでも、推しボードゲームの布教でも大歓迎です。
それでは、そろそろお時間です。
お相手はマイクでした。次回のzenncastでまたお会いしましょう。
きょうも良い一日をお過ごしください。