2026年03月09日の技術動向

Skir — Protocol Buffersの「スキーマ進化リスク」と「フロントエンド統合コスト」を再設計

.skirファイルにスキーマを定義し、TypeScript・Python・Java・C++向けの型安全なコードを生成するツールだ。npx skir init一発でプロジェクトを初期化でき、ウォッチモードで自動再コンパイルする。

Protobuf + gRPCが抱えていた問題は3つある。セットアップが重い、Webフロントエンドとの統合にgrpc-webが必要、スキーマ変更時の破壊リスクが暗黙知になりやすい。Skirはこの3点を同時に解決しようとしている。

シリアライズ形式は3種類から選べる。dense JSON(コンパクト・スキーマ進化対応)、readable JSON(デバッグ用)、バイナリ(パフォーマンス優先)だ。dense JSONはフィールド名を省略して配列として出力する。

【補足】Protobufもフィールド名をワイヤー上に含まず、フィールド番号(整数タグ)で識別する。Skirのdense JSONはその思想をJSON配列で再現したものだが、バイナリではなくテキストJSONのままであるため、ブラウザのfetch APIやSQLのJSONB型と直接扱える点が異なる。

const point = Point.create({ x: 3, y: 4, label: "P" });
const pointJson = Point.serializer.toJson(point);
// 出力: [3, 4, "P"]

JSONとして扱えるためWebブラウザやデータベースとの相性が良く、スキーマ進化はフィールド順序で管理する。Protobufのフィールド番号管理に近い発想だ。

APIの定義もスキーマに含められる。メソッドに数値IDを割り当てることで、メソッド名をリネームしても後方互換性を維持できる。

method WhatToWear(WhatToWearRequest): WhatToWearResponse = 770862;

クライアント側はこうなる。

const response = await client.invokeRemote(
  WhatToWear,
  WhatToWearRequest.create({ temperatureCelsius: 25, raining: false }),
);

フロントエンドとバックエンドで同じスキーマを参照するため、APIコントラクトのズレが構造的に起きない。型の不一致はコード生成時点で検出される。

GitHubリポジトリから型を直接インポートする機能もある。マイクロサービス間での共通データ構造の共有が、ファイルコピーなしに実現できる。

Skirが狙っている隙間は明確だ。GraphQLはAPIコントラクトを解決したがバイナリシリアライゼーションを提供しない。tRPCはTypeScript同士の型共有を解決したが多言語対応がない。Skirはこの2点を同時に満たそうとしている。

ただし、このカテゴリにはすでにProtobuf・Thrift・Avro・Cap'n Proto・FlatBuffers・MessagePack・tRPC・GraphQL・OpenAPIが存在する。生き残るには既存ツールとの差別化を実績で示す必要がある。

TanStack Start — 型安全性を維持したままバイブコーディングを成立させるフルスタックフレームワーク

TanStack Startは型安全性・ファイルベースルーティング・サーバー関数・ストリーミングSSRをデフォルトで統合したフルスタックフレームワークだ。Next.jsやRemixも同様の機能を持つが、TanStack Startはボイラープレートを極力排除し、TanStack Query・TanStack Routerとの密な統合を前提に設計されている。

src/routes/__root.tsxがグローバルラッパーとして機能し、ナビゲーションバーやフッターなど共通要素を一元管理する。追加ページはファイルを作るだけでルーティングが自動構成される。外部APIを別途構築せずにサーバーサイドロジックをサーバー関数として直接アプリ内に書ける。

「バイブコーディング」(Andrej Karpathyが2025年初頭に提唱した、AIに意図を伝えながらコードの詳細を把握せずに開発を進めるスタイル)との相性が強調されている理由は2点だ。型推論が効いていれば、AIが生成したコードの誤りをコンパイル時に検出できる。ファイルを追加するだけでページが生えるルーティング設計は、「とりあえず動かして確認する」サイクルを短縮する。

TanStack RouterはURLパラメータ・検索クエリまで型が付く型安全なルーティングを持つ。これはNext.jsのApp Routerでは実現できていない部分で、TypeScript開発者から支持を得た経緯がある。

ビルドツールにはVinxi(Viteベースのサーバーバンドラー)を採用している。Next.jsのWebpackやTurborepack依存とは異なる軽量な構成だ。

RemixがReact Routerに統合される動きを見せている中、TanStack StartはそのRemixユーザーの受け皿の一つとして位置づけられている。

【補足】Remix v3はReact Router v7として再リリースされ、Remixブランドは事実上廃止された(2024年末)。既存のRemixプロジェクトはReact Router v7へのマイグレーションパスが提供されているが、TanStack Routerの型安全ルーティングを好む開発者がTanStack Startへ移行する動きも観測されている。サーバー関数の設計はtRPCやHonoと競合する領域にも踏み込んでいる。

Kubernetes — ダッシュボードが正常でもノードが増え続ける「リクエスト値ドリフト」の診断

Kubernetesスケジューラはリソースの実使用量ではなくリクエスト値に基づいてPodの配置を判断する。リクエスト値が実使用量より大幅に高く設定されている場合、CPU・メモリ使用率が50%以下でもスケジューラは新しいPodを配置できないと判断する。PendingキューにPodが積まれ、Cluster AutoscalerやKarpenterがそれを検知してノードを追加する。結果として、ダッシュボードのグラフは平穏なままなのにクラスタが拡張するという状態が生まれる。

リクエスト値のドリフトが起きる原因は地味なものばかりだ。インシデント対応でリクエストを一時的に引き上げ、そのまま戻し忘れる。チームが「とりあえず動く」デフォルト値を決め、それが新サービスにコピーされ続ける。ワークロードの特性が変わったのにYAMLが更新されない。

推論(inference)ワークロードではこの問題が特に速く顕在化する。レプリカ数が急増するため、1レプリカあたりわずかな余剰リクエストが、50レプリカになった瞬間に大量の予約済みキャパシティへと変わる。

【補足】VPA(Vertical Pod Autoscaler)のrecommendationモードを使うと、実使用量に基づいたリクエスト値の推奨値を継続的に取得できる。ただしVPAの自動適用(Auto/Recreate)はPodの再起動を伴うため、推論ワークロードでは推奨値の確認のみに留め、手動またはGitOpsで反映するパターンが多い。

診断の手順は次の通りだ。まず、キャパシティを支配している主要なNamespaceを特定する。次に、1〜2週間にわたってリクエスト値と実使用量の乖離を継続的に観察する。単一スナップショットではなく、日々繰り返されるギャップを探す。さらに、スケールアウト時にその乖離がどう増幅されるかを確認する。5レプリカから50レプリカに増えたとき、小さな余剰がどれだけの予約キャパシティになるかを計算すれば問題の規模が見えてくる。

コスト配分ビューも有効な診断ツールになる。「allocated(予約)が高くusage(実使用)が低い」という状態が見えたとき、それはコスト問題ではなくリクエストドリフトのシグナルだ。

CNCFの最新年次調査がKubernetesをAI本番運用のデフォルトプラットフォームと位置づけていることを考えると、推論ワークロードの増加に伴いこの問題に直面するチームは今後さらに増える。

Snowflake Cortex Code CLI — dbt・Airflow対応でSnowflake外のワークロードへ初進出

Snowflake Cortex Code CLIがdbtとApache Airflowのサポートを追加した。このリリースの最大の変化は、Cortex Codeが初めてSnowflake外のワークロードに適用された点だ。

Cortex Code CLIは2025年2月末に発表されたSnowflakeのコーディングエージェントだ。AnthropicとOpenAIの最新モデルを搭載し、Agent Skillsと呼ばれる「特定タスク向けの指示とスクリプトのフォルダ」を使って動作する。

今回追加されたdbt・Airflow向けのAgent Skillsには、パイプラインのデバッグ・最適化・テストのパッケージが含まれる。

dbtのセマンティックモデル構築では、テーブルを指定するだけでモデルを自動生成できる。従来は手作業で1〜2時間かかっていた作業が数分で完了するようになった。カラム追加などの変更が発生した際、依存するすべての箇所を自動で追跡・更新する。データリネージを把握した上で変更を伝播させる処理は、従来は「頭の中かホワイトボード」に依存していた部分だ。

Airflowのタグ処理では、データの取り込み・クレンジング・抽出・集計・ロードといった定型操作のコードを自動生成する。スケジュール設定(毎時・毎日など)も含めてエージェントが処理するため、手書きコードの量が大幅に減る。

Agent Skillsの設計思想として、Snowflake Head of Developer ExperiencesのUmesh Unnikrishnanは「LLMにランダムな回答をさせるのではなく、特定のタスクを予測可能・決定論的・構造的な方法で実行させる」と説明している。

(Agent SkillsはSnowflakeがCortex Code CLI向けに設計した仕組みで、汎用LLMに対してドメイン固有の手順を「スキル」として注入する。MCPやfunction callingとは異なる層の抽象化で、「何をすべきか」だけでなく「どの順序で・何を確認しながら実行するか」まで規定できる。)

【補足】MCP(Model Context Protocol)はAnthropicが2024年11月に公開したオープン標準で、LLMが外部ツール・データソースを呼び出すためのプロトコル層を標準化する。function callingはOpenAI等が提供するモデルレベルのAPI機能。Agent Skillsはこれらの上位にあるオーケストレーション層として、実行順序・検証ステップ・エラー処理を含む「手順書」をLLMに与える設計になっている。

Snowflakeはこれまでの自社エコシステム内完結の方針を転換し、既存のdbt・Airflow資産をAIエージェントで補強するアプローチを取った。

また、月額サブスクリプションのセルフサービスモデルを新たに導入した。Snowflakeの既存顧客でなくてもCortex Code CLIにアクセスできるようになった。Cortex Codeをスタンドアロンの開発ツールとして位置づける動きだ。

Rspress 2.0 — SSG-MDによるAIエージェント向けMarkdown出力とコールドスタート50ms

Rspress 2.0が2026年1月30日にリリースされた。1.x系での144リリース・125人の貢献者を経た節目のメジャーアップデートだ。変更はパッケージ構造の統合・シンタックスハイライターの交替・テーマシステムの再設計と、ほぼ全レイヤーに及ぶ。

最も注目すべき追加機能はSSG-MD(Static Site Generation to Markdown)だ。ドキュメントサイトからMarkdownファイルとllms.txtを生成する新しいレンダリングモードで、設定は以下の1行で有効になる。

export default defineConfig({
  llms: true,
});

HTMLをMarkdownに変換する後処理ではなく、React仮想DOMを通じてMarkdownを直接生成する点が重要だ。

【補足】llms.txtはAIクローラー向けのサイトマップ的な規約として2024年後半から議論が始まったもので、/llms.txtにMarkdown形式のドキュメント目次・概要を置くことでLLMがサイト構造を効率よく把握できるようにする提案だ(robots.txtのAI版に相当)。Rspress 2.0はこの規約に準拠したファイルを自動生成する。HTMLからの逆変換はネスト構造やコードブロックで品質が劣化しやすい。仮想DOMレンダリングを経由することで、AIエージェントが消費するのに適した高品質なMarkdownが得られる。ドキュメントツールがAIエージェントのデータソースとして機能することを前提に設計されている点で、従来のドキュメントジェネレーターとは一線を画す。

ビルドパフォーマンスでは、遅延コンパイルとパーシステントキャッシュがデフォルト有効になった。遅延コンパイルは開発中にアクセスされたページだけをコンパイルするため、中規模ドキュメントサイト(100ページ程度)でのコールドスタートが数秒から50ミリ秒まで短縮される。パーシステントキャッシュは直前のコンパイル結果を再利用し、2回目以降のビルドを30〜60%高速化する。リンクホバー時にルートのプリロードを開始するため、ページ遷移の体感速度は損なわれない。

コードハイライトがPrismからShikiに変わった。Shikiはビルド時にハイライト処理を行うためランタイムオーバーヘッドがゼロだ。TextMateグラマーを使うためVS Codeと同等の精度になり、twoslashによるインライン型ヒントも使えるようになる。

一方でRustベースのMDXパーサー(@rspress/mdx-rs)は廃止され、JavaScriptのMDXパーサーに戻っている。生のコンパイル速度は若干落ちるが、Shikiやカスタムのremarkプラグインとのエコシステム互換性を優先した判断だ。速度より使えるプラグインの幅を取ったトレードオフとして記録しておく価値がある。

テーマは4段階のカスタマイズ階層を持つ。CSSカスタムプロパティ→BEMクラス名→ESMコンポーネントの差し替え→フルエジェクトという順に制御範囲が広がる。BEMを採用したのはTailwind・Less・Sassのどれとも競合しないためで、CSSフレームワークのバージョン衝突を避けられる。

今日の傾向

Rspress 2.0がSSG-MDでllms.txtを生成し、Snowflake Cortex Code CLIがAgent Skillsをdbt・Airflowに適用した。どちらも「AIエージェントが既存のツールチェーンをどう消費・操作するか」という問いに対して、それぞれ異なる角度から答えを出している。Rspressはドキュメントをエージェントの入力として最適化し、SnowflakeはエージェントをOSSパイプラインの操作者として組み込んだ。

TanStack StartがAndrej Karpathyの「バイブコーディング」概念を型安全性で支える設計として注目されている一方、SkirはProtobuf・tRPC・GraphQLが埋めきれていない「多言語対応 × フロントエンド統合 × スキーマ進化安全性」の交点を狙って登場した。どちらも「AIが生成したコードの誤りをどう検出するか」という問題と地続きの設計判断を含んでいる。

KubernetesのリクエストドリフトはCluster AutoscalerとKarpenterが普及した現在でも解決されていない運用上の盲点だ。CNCFがKubernetesをAI本番運用のデフォルトと位置づけた結果、推論ワークロードのレプリカ急増がこの問題を加速させる構造になっている。

参照記事

記録日: 2026-03-09