どうもー、おはようございます。マイクです。
時刻は朝7時を少し回ったところ、2026年1月8日、木曜日の朝です。
ここからの時間は「zenncast」、きょうもZennで話題になっているトレンド記事を、ゆるっと楽しく紹介していきます。
さて今日はお便りコーナーはお休みで、そのぶんガッツリ技術記事を紹介していきます。
きょうピックアップする記事は全部で5本。AI、RailsとSQLite、Vim/Neovim、Claude CodeのPlugin、それから.NETのセキュリティのお話まで、幅広く攻めていきますよ。
まず1本目。
タイトルは「Claude Codeですぐ制限にかからないようにするコツ」。
Claude Codeを使っていて「あれ、もうUsage Limits!?」ってなったことある人、多いと思うんですけど、その主犯が「1つのチャットをダラダラ続けることだよ」という話です。
同じスレッドでずっと会話してると、過去の履歴がまるっとコンテキストに乗り続けて、やりとりのたびに入出力トークンが雪だるま式に増えていくんですね。しかも、システムプロンプトとかMCPツールの定義、CLAUDE.mdみたいなものも毎回送られているので、回数を重ねるほど一発あたりが重くなる構造になっていると。
そこで効いてくるのが「/clear」をこまめに使ってチャットをリセットする習慣。必要なら「/export」で履歴を引き継いで、新しいスレッドに引き渡す、という運用が紹介されています。また、Planモードや「/rewind」で無駄な往復を減らしたり、不要なツールやプロンプトを外したり、サブエージェントを分けて用途ごとにチャットを細切れにする工夫もポイント。さらに、重いOpus 4.5と軽めのSonnet 4.5を使い分けることで、制限に当たりにくくする作戦も触れられています。著者いわく、このトークン増加の構造は他のAIツールでも基本同じなので、「長く続けず、都度リセットする」という思考法が大事だよ、というお話でした。AIに長文甘えがちな人ほど刺さる内容かもしれませんね。
....
続いて2本目。
タイトルは「『SQLiteは本番で使えない』は本当か? 未経験がRails 8 × 格安VPSで負荷試験を乗り越え、PHP学習アプリをリリースしました!」。
これね、個人開発好きにはたまらない記事です。著者は「PHP8技術者認定初級試験スタディ」という学習アプリを個人で開発して公開しています。既存のサービスが「同じ問題を繰り返して答えを暗記しちゃう」タイプなのに不満があって、ランダム出題、模擬試験、中断再開、すぐにフィードバックが返ってくる設計など、とにかく学習体験にこだわって作ったと。
技術スタックが面白くて、Rails 8とSQLite、それにLitestreamを組み合わせて、月額800円のVPSにKamalでデプロイしています。SQLiteの内容をR2にリアルタイムでレプリケーションして、復元テストも回して、コスパ良くて堅牢なインフラを用意しているんですね。
気になる「SQLiteって本番で同時書き込み大丈夫?」という部分には、WALモードやIMMEDIATEトランザクションを設定しつつ、学習サービスのアクセス特性を踏まえて、150人同時接続・秒間数百リクエストの負荷試験を実施。その結果、エラー率0%、p95もだいたい0.5秒、CPU18%程度で問題なかったとレポートされています。「SQLiteは本番無理」という通説に対して、「用途をきちんと絞れば全然いけるよ」という実測付きの反証ですね。
ほかにも、ViewComponentでUIを明示的に分割して読みやすいコードにしていたり、問題データにバージョン付けして受験履歴の整合性を守ったり、GitHub OAuthだけに絞った「持たないセキュリティ」の方針を取っていたりと、設計のこだわりもたっぷり。大量の問題作成にはLLMを下書きとして活用しつつ、最終的には人間が全件チェックして品質を担保するというハイブリッド運用も紹介されています。元水道インフラ従事者ならではの「止まらない・頑丈なインフラ」へのこだわりと、Railsという「One Person Framework」で一人でもここまでやれる、という熱量が伝わってくる開発記録でした。
....
3本目の記事。
タイトルは「外部依存ゼロのVim/Neovimでもプラグインを使える。本体に同梱されてるから。」。
VimとかNeovimを使っている人の中には、「プラグイン管理つらいから、極力ノープラグインでいきたいんだよね」という方も多いと思うんですが、この記事でフォーカスしているのは、実は「本体に最初から同梱されている標準プラグインたち」です。これらは追加インストール不要で、`packadd プラグイン名`みたいな形で有効化するだけで使えるのに、明示的な有効化が必要なものも多くて、その存在が意外と知られていないと。
紹介されているのは、たとえば、括弧やタグのマッチ移動を強化する「matchit」、quickfixリストをフィルタできる「cfilter」、コメントのオンオフを切り替えるためのプラグイン、ヤンクした箇所を一瞬光らせる「hlyank」、ヘルプの目次を見やすくしてくれる「helptoc」、検索ハイライトを自動で消してくれる「nohlsearch」、EditorConfig対応のプラグイン、マウスの左右を入れ替える「swapmouse」、インサートモードだけdvorak配列にしてくれる「dvorak」、そしてNeovimに同梱されているundotreeなど。
どれも導入ハードルが低いわりに、日々の作業がちょっと楽になるものばかりです。記事では「まずは :h standard-plugin-list を見て、どんな標準プラグインがあるか確認してみよう」と呼びかけつつ、VimとNeovimで対応しているプラグインが微妙に違う点や、「逆に不要な標準プラグインは読み込みを止める」という選択肢にも触れています。外部依存ゼロ志向の人にとっては、「実はもう少しだけ快適にできる余地があるよ」と背中を押してくれる内容になっていました。
....
4本目。
タイトルは「続・Claude Code公式Pluginのすすめ+α」。
こちらは、以前紹介されたClaude Code公式Pluginの記事の続編で、2026年1月時点のアップデート内容をまとめたものになっています。まず大きいのは、Claude Code内に公式Marketplaceが標準で搭載されて、公式Pluginが自動アップデート対応になったこと。いちいち自分でバージョンを追いかけなくても新機能が手に入るようになったのは、日常使いにはかなりありがたいですね。
さらに、MCPプラグインがどっと増えていて、いろんなSaaS連携や開発・管理ツールにワンクリックでつなげるようになっています。なかでも面白いのが、MCPをオンデマンド読み込む実験的な「Tool Search Tool」。必要になったタイミングでツールを引っ張ってくることで、コンテキストのムダ遣いを減らそうというアプローチです。また、context7のプラグイン版では約1300トークン節約できるという話も出ていて、コンテキスト節約とPlugin活用がきちんと両立できる方向に進化しているのがわかります。
記事では、開発・レビュー支援をしてくれる13個の公式機能拡張Pluginの概要や、LSPツールの追加、UIの改善ポイントにも触れています。さらに、ユーザー/プロジェクト/ローカルの3つのスコープでPluginを管理できるようになったことで、「チーム全体で共通の環境を共有しながら、個人の実験的なPluginは分離する」という構成が取りやすくなったと解説。導入時に使える具体的なコマンド例なんかも紹介されていて、実際にチームで運用してみたい人にはうれしい内容になっています。
....
そしてラスト、5本目。
タイトルは「MicrosoftはなぜBinaryFormatterを排除したのか」。
これは.NET界隈の人にはかなり重要な話題ですね。.NET 9以降でBinaryFormatterが完全に排除されることになった背景を、セキュリティの観点から整理してくれている記事です。キーワードは、CWE-502「信頼できないデータのデシリアライズ」。BinaryFormatterはMS-NRBFという形式に従ってシリアライズを行うんですが、そのデータの中にアセンブリ名と型名を含む「BinaryLibrary」が書き込まれます。
これによって何が起こるかというと、「入力側のデータから、復元される型を任意に指定できてしまう」という状況が生まれます。攻撃者は、標準ライブラリの中から悪用可能な型、いわゆるGadgetを選び、そこに細工したペイロードを入れ込むことで、任意コード実行に持ち込むことができると。記事では、SortedSetとIComparerを例にして、比較関数の中でProcess.Startを呼ぶようにすり替えれば、復元しただけで電卓が起動しちゃう、といった具体的なイメージを説明しています。
「ローカル設定ファイルにしか使ってないから大丈夫でしょ?」というケースでも、ファイル共有などを経由して踏み台にされるリスクがある以上、もはや容認できないとMicrosoftが判断したというわけです。代替としては、System.Text.Jsonのように「復元する型をコード側から明示的に指定する」タイプのシリアライザを使うべきで、シリアライザ選定では互換性や性能だけでなく、セキュリティを最初から考慮しないといけないと強調されています。
既存のBinaryFormatter資産を移行するのは簡単ではなく、NRBFDecoderなどを使って変換するにしても、それなりにコストがかかる、とその難しさにも触れています。単なる「古いから捨てます」ではなく、「なぜ危ないのか」「代わりにどうすべきか」をきちんと整理してくれているので、レガシーコードの棚卸しをする人には必読の内容ですね。
....
そろそろお別れの時間です。
きょうのzenncastでは、
・Claude CodeでUsage Limitsにかからないための、/clear活用やコンテキスト節約のコツ
・Rails 8 × SQLite × 格安VPSで、本番運用と負荷試験をやり切ったPHP学習アプリ開発記
・Vim/Neovimに最初から同梱されている標準プラグインの便利な使い方
・Claude Code公式Pluginの最新アップデートと、Pluginスコープ整理によるチーム運用の話
・そして、.NETからBinaryFormatterが排除されたセキュリティ上の理由と、その影響
この5本を駆け足でご紹介しました。
気になる記事があった方は、番組のショーノートに詳しくリンクと情報を載せておきますので、ぜひじっくり読んでみてください。
zenncastでは、番組の感想や「こんなテーマを取り上げてほしい!」といったリクエストも大歓迎です。あなたの開発環境の工夫や、最近ハマった技術ネタなんかも、ぜひ教えてください。
それでは、きょうも良い一日をお過ごしください。
お相手はマイクでした。次回のzenncastで、またお会いしましょう。