Instagram のグリッド並べ替えをシステム設計として考える
2026 年 6 月に全ユーザー向けの提供が始まった Instagram のグリッド並べ替えを題材に、時系列順を前提にしてきた大規模サービスへ任意の並び順を加える設計を考えます。データモデル、並び順キーのアルゴリズム、並行更新、ページネーション、キャッシュ、後方互換性を、動かして確かめたコードとともに説明します。
技術的な学びや日々の気づきを記録しています。
2026 年 6 月に全ユーザー向けの提供が始まった Instagram のグリッド並べ替えを題材に、時系列順を前提にしてきた大規模サービスへ任意の並び順を加える設計を考えます。データモデル、並び順キーのアルゴリズム、並行更新、ページネーション、キャッシュ、後方互換性を、動かして確かめたコードとともに説明します。
VS Code の Agent Host が採用した Agent Host Protocol(AHP)v1.0.0 は、エージェントのセッションを、ホストが順序を決める複製状態として複数の画面で共有する。クライアントは自分の操作を先に反映し、ホストから返るエコーで確定させる。仕様・公式のリデューサー・各言語の SDK・VS Code の実装をもとに、チャネルとアクション、serverSeq による再接続、楽観的更新(write-ahead)の実装、リデューサーが不変条件を守らないことの意味、送り直してよい操作と危ない操作、クライアントが提供するツール、認証とセキュリティー、ACP・MCP・AG-UI との違いまで、クライアントやホストを実装する人のために整理する。
OpenAI の資金調達が目標の半分に届かなかったという WSJ の報道、Anthropic の S-1、Microsoft・Amazon・Alphabet の 2026 年 9 月期 10-Q をもとに、フロンティア AI ラボが次の巨額資本を集めるには何を示す必要があるのか、次に何をスケールすれば能力が予測できる形で伸びるのかを、3 年前と比べて考える。資本から FCF までの因果チェーン、事業環境、電力・低精度化・半導体プロセス・HBM・先端パッケージ・モデルアーキテクチャの制約と 2030 年までの次の手、Microsoft と OpenAI の違いを扱う。
Netflix の論文「The Lifecycle of LLM-as-a-Judge for Large-Scale Recommendation Explanations」を読む。誕生・訓練・配備・監視の 4 フェーズ、理由の一致まで最適化する RART、ゲートと批評家を兼ねる配備、評価者間の不一致を物差しにしたドリフト検知を数式とアルゴリズムで追い、リトライによる見逃しの増幅と監視統計の落とし穴を分析する。最後に、このライフサイクルを企業に適用するためのフレームワーク(憲章・勘所・成熟度・ロードマップ・チェックリスト)を示す。
オントロジーは、テーブル定義に意味の説明を付けるものなのか、異なるデータソース間の意味マッピングなのか。哲学と知識工学における定義、データ統合理論の GAV/LAV と OBDA、DDD の境界付けられたコンテキストとコンテキストマップを手がかりに、Microsoft Fabric IQ の Ontology が何を引き受け、何を引き受けないのかを整理する。
研修医の配属や学校選択で使われている Gale–Shapley(受入保留)アルゴリズムを、ブロッキングペア、停止性・安定性・提案側最適性の証明、安定マッチングの束、嘘の申告、ランダム市場の非対称性、多対一への拡張まで、動くデモで掘り下げます。
Blazor の新しい AI コンポーネントと AG-UI .NET SDK を、「エージェントと人間が同じアプリケーション状態を操作するとき、UI ランタイムは何を抽象化すべきか」という問いへの回答として読む。UIAgent・ContentBlock・IInteractiveBlock・AgentState の実装から、同一性とライフサイクル、中断点、副作用の実行場所、状態の確定、更新ログと再生という抽象を読み解き、まだ抽象化されていないものと、interface と class の使い分けの理由も整理する。
フラグとnullで複雑になった状態を型で整理し、分岐漏れをコンパイラーに検出させます。4つのインタラクティブな実験と実務に近いコードで、代数的データ型の使いどころ、防御的プログラミング、継承との使い分けを説明します。
動的計画法は、全探索から出発して «未来に効く情報» だけを状態に残す設計手順です。全探索から漸化式に至る手順、典型的な型、遷移の高速化、実務での応用を、動くデモで確かめながら説明します。
RPC と REST の違いを、HTTP/2 フレームと Protobuf のバイト列から、契約とスキーマ進化、エラー設計、キャッシュ、認証認可、可観測性、運用の落とし穴まで比較します。
goroutine と channel の文法を知っている人に向けて、実務のどこで並行処理を使い、channel と mutex のどちらを選ぶかを説明します。並行化の 4 つの動機と、fan-out・有界並行・背圧・graceful shutdown・所有権の直列化・バッチング・購読といった本番パターンを、Go 1.27 で検証したコードとともに扱います。
GitHub Copilot SDK をバックエンドに組み込むとき、水平スケールするステートレス設計は成立するのか。ランタイムの状態モデル、セッション永続化、単一ライター制約、resume コスト、ストリーミング、容量計画まで、実運用の観点で検討する。
「SQLite の OLAP 版」と呼ばれる DuckDB が、なぜプロセス内に閉じたまま分析クエリーを高速に処理できるのか。ベクトル化実行、push ベースのパイプライン、モーセル駆動並列化、列指向ストレージ、MVCC、ART インデックスまで、実際のソースコードから読み解きます。
LLM 呼び出しは 1 件のコストが 2 桁ばらつき、レプリカはプレフィックスキャッシュを持つため、ラウンドロビンでは負荷が揃いません。エージェントを含む LLM アプリで、クライアントからエンジンまでの各層が局所性と均衡をどう選んでいるかを、動くシミュレーター付きで説明します。
1 本の SELECT 文が、字句解析・構文解析・束縛・論理プラン・カーディナリティー推定・コストベース最適化・物理プラン・Volcano 実行・アクセスメソッド・バッファープール・スロット付きページを経て pread(2) に到達するまでを、各段を Python で実装しながら追いかけます。work_mem を超えたときの溢れ方と、並列プランのコスト計算も扱います。
Microsoft AIの『Optimizing the frontier performance curve』を、Nadellaの2本のエッセイ、FY26決算、OpenAIとの新契約と突き合わせて読む。フロンティアの単位はモデルからシステム全体へ移り、その優位はタスク難易度のばらつきと検証の安さから生まれる。成果/ドルで測る経済性(カスケードの損益分岐、モデル非依存、学習ループの所有、A100と減価償却)と、Microsoftの垂直統合戦略としての意味を説明する。
系列全体の同一性、順序を無視した集合・多重集合の重複、編集距離、n-gram、部分列、対応付け、コーパス統計で重み付けした複数参照の合意という主要設計族を、定義・評価観点・集約方法・限界から整理する。
「次に何を実行するか」の正解は、平均遅延・応答性・締切・公平性のどれを優先するかで変わります。FCFS、SJF、Round Robin、EDF、CFS、WFQ、SFQ、DRR から LLM 向け VTC までを目的・仕組み・適用条件でたどり、出力長が分からない LLM リクエストの投入順序に SFQ が合う理由を、動くシミュレーターとともに説明します。
Agent Skills を実行履歴から自動生成・改善する研究を、テキスト空間最適化、軌跡蒸留、強化学習、ルーティング、合成、圧縮、安全性の観点から整理し、実務導入の評価設計と運用原則に落とし込む。
GitHub Copilot、OpenAI Codex、Anthropic Claude Code、Cursor、Cline、Aider、OpenHands、SWE-agent/mini-SWE-agent を、実行場所、オーケストレーション、拡張、権限、コンテキスト、長時間実行、マルチエージェント、Git/PR、観測性、企業統制、OSS 透明性、評価容易性の12軸で比較し、各製品がどの設計責務を引き受け、どこを利用者に残しているかを整理する。
LLM をバックエンドに持つチャットボットで、生成条件を固定しても生じる出力差異を「ブレ」と定義し、契約・表層・語彙・構造・情報選択・意味・語用の 7 層に分類する。完全一致、編集距離、ROUGE-L、埋め込み類似度、NLI/LLM 判定を組み合わせ、Ground Truth との差分から応答を許容できるかを判定する評価設計を説明する。
GitHub Copilot SDK で作った「オーケストレーションはランタイムに任せ、ツールを足すだけ」の文書レビューエージェントを、Microsoft Agent Framework の Agent Harness(HarnessAgent)で C# に実装し直す。HarnessAgent は計画・TODO・コンテキスト圧縮・ツール承認を備えた自律エージェントを 1 行で構成する。能力を実行時の承認ではなく構成時に絞る点など、Copilot SDK 版との設計の違いも論じる。
エージェントの「記憶」を認知科学の枠組みと研究論文のサーベイから整理し、Microsoft Agent Framework の AgentSession・ContextProvider・ChatHistoryProvider で短期記憶と長期記憶を設計・実装する方法を、Python と C# のコードで説明する。
LLM をバックエンドに持つ会話エージェントの「会話 UX」を評価するフレームワーク。構造・内容・体験という分離可能な 3 つの品質軸に安全性の制約軸を加えて評価ルールを MECE に分類し、決定論的に測れるものと測れないものを切り分ける。人間のターンテイキングに関する研究をもとに、音声対話ではテキストと違って応答のタイミングが体験を左右することを示す。
エージェントの計画とツール呼び出しのループ(オーケストレーション)を自分で書かず、GitHub Copilot SDK に任せる。レビューに必要な処理をツールとして渡すだけで文書レビューエージェントを作り、権限制御・SSE サーバー・UI まで実装する。この設計のメリットとデメリットも論じる。
arXiv:2604.14228『Dive into Claude Code』の解説。単純な while ループの周りに、コードの推定 98.4% を占める決定論的なハーネスを積み上げた Claude Code の設計を、安全性・文脈管理・拡張性・マルチエージェント・永続化の各軸で整理し、AI エージェント製品を作るうえでの示唆をまとめます。
select・poll・epoll から io_uring まで、Linux の非同期 I/O がシステムコールとコピーをどう減らしてきたかを、カーネルの構造体とソースコードをもとに説明します。
ベクトルデータベースの中核にある近似最近傍探索 (ANN) を、距離計算から IVF・Product Quantization・HNSW・DiskANN まで、論文と FAISS などの実装に沿って説明します。
AG-UI(Agent-User Interaction Protocol)のアーキテクチャ、イベントシステム、ミドルウェア、状態管理を解説し、Microsoft Agent Framework での実装例を示す。
辺の密度だけでは捉えられない構造を扱うコミュニティー検出の手法。モチーフなどの高次構造に基づく検出、動的ネットワークでのコミュニティーの追跡、多重ネットワークの解析を、研究の流れに沿って取り上げます。
Agentic Workflow は従来の自動化やチャットボットと何が違うのか。Sequential・Concurrent・Handoff・Writer-Critic ループなどのワークフローパターンを、Microsoft Agent Framework の C# 実装とともに解説する。
グラフを密につながったノードのグループに分ける Community Detection について、研究の歴史、主要アルゴリズム、定義の曖昧さや検出限界といった原理的な難しさ、目的に応じた手法の選び方を、インタラクティブな可視化とともに扱います。
Microsoft Research の GraphRAG が、知識グラフとコミュニティーレポートを使って、ベクトル検索型の RAG が苦手な「文書をまたぐ質問」や「データ全体を問う質問」にどう答えるかを説明します。Leiden アルゴリズムによるコミュニティー検出と Global/Local/DRIFT Search の仕組みを扱い、Microsoft Agent Framework (C#) による実装例も示します。
AI アプリケーションと外部システムをつなぐ Model Context Protocol (MCP) の仕組みを、現行仕様 2026-07-28 に基づいて説明します。Host/Client/Server の関係、3 つのサーバープリミティブ(Tools・Resources・Prompts)、トランスポートレイヤー、Sampling・Elicitation などのクライアント機能を扱い、MCP Apps 拡張と microsoft/mcp-interactiveUI-samples の実装例も紹介します。
辺が 1 本ずつ到着・削除されるストリーミング設定で、コミュニティー構造を増分的に更新する手法の研究史と最近の動向を、TILES・delta-screening Louvain・LabelRankT などの代表的なアルゴリズムを中心に解説します。
Python や Java のようなバイトコード VM(仮想マシン)の内部構造の解説。ソースコードからバイトコードへのコンパイル、スタックマシンとレジスターマシンの違い、インタプリターの実装パターン、JIT コンパイラーによる実行時の最適化までを扱います。
Google が 2004 年に発表した MapReduce について、生まれた理由、プログラミングモデルと実行の流れ、障害に耐える仕組み、Hadoop での実装、その後に続いた技術を順に説明します。
ランダムウォークが出発点に戻るかどうかは次元で決まる。1 次元の再帰性から、グラフ上のマルコフ連鎖と定常分布、それをウェブに当てはめた PageRank までを解説する。
BFS・DFS・Dijkstra は、訪問済みの記録と、次の頂点をキュー・スタック・優先度付きキューのどれから取り出すかの違いで導けます。アルゴリズムを知らない状態から、問題に沿って 3 つを組み立てます。
ワークフローエンジンがクラッシュ後も処理を続けられる仕組みを、イベントソーシング、状態マシン、タスクキュー、決定論的リプレイの Python 実装を通して説明します。
Express.js の next()、Django の get_response、ASP.NET Core のパイプラインは、どれも「ミドルウェアチェーン」という同じパターンです。Python でゼロから実装し、next の正体、登録順序で動作が変わる理由、ショートサーキットの動きを確かめます。
メタデータ定義・SQL式木・Identity Map・Unit of Work・遅延読み込みをPythonでゼロから実装し、SQLAlchemy・Django ORM・EF Coreが裏で行っている処理と、性能上の落とし穴が生じる仕組みを解説します。
ASP.NET Core がリクエストを受けてからレスポンスを返すまでの処理を、ホスティングモデル、ミドルウェアパイプライン、DI コンテナー、ルーティング、フィルターパイプラインなどの内部実装に沿って、簡略化したコードと図で説明します。
.NET Aspire の App Model、DCP によるローカル実行、サービスディスカバリー、ヘルスチェック、テレメトリー、カスタムリソース、デプロイメントマニフェストまで、フレームワーク内部の仕組みを解説します。
命令型・宣言型・関数型・オブジェクト指向・論理型・リアクティブ・並行指向の各パラダイムについて、理論的な起源、問題の捉え方、コード例を図解とインタラクティブなデモで説明します。
pytest や unittest などのテストフレームワークは、テストを見つけてから結果を報告するまでに何をしているのか。小さなテストランナーを Python で実装しながら、ディスカバリー・収集・ライフサイクル・アサーション・モック・レポートの仕組みを説明します。
Microsoft Agent Framework の全体構成、run() の実行フロー、ツール統合、ミドルウェア、セッション、ワークフローエンジンの仕組みを、Python 実装のソースコードに沿って解説する。
ASP.NET Core や Go で広く使われる Options Pattern を、解決する問題、ASP.NET Core の内部実装、Go・C#・TypeScript・Rust・Python での実装例、Builder Pattern などとの使い分けから解説する。
Word2Vec から GPT-4 までの言語モデルの系譜と、トークナイゼーション、Transformer、自己注意機構、テキスト生成、RLHF の仕組みをインタラクティブな図で解説する。
検索エンジンがテキストをトークンに分解し、転置インデックスで候補を絞り込み、TF-IDF/BM25 で順位を付けるまでを、インタラクティブな図解で解説する。
ライブラリーとフレームワークの違いを、制御の反転(IoC)という観点からコード例を使って説明します。
静的型付けと動的型付け、構造的型付けと公称型付け、型推論、ジェネリクス、null 安全性を、TypeScript・Go・Rust・Java・Python の比較とインタラクティブな図で説明します。
async/await キーワードの裏側でランタイムが何をしているのかを、JavaScript のイベントループ、Python の asyncio、Rust のポーリングベースのモデルの 3 つについて説明します。
インデックスがクエリーを速くする仕組みを、B+木の検索・挿入・分割、LSM-Treeが書込みを速くする方法、主要なデータベースでの使い分けから説明します。
参照カウント、トレース GC、世代別 GC、並行 GC の仕組みと改良の流れを説明し、Go・Java・Python・JavaScript・.NET・Rust・Swift のメモリー管理を比較します。三色マーク & スイープの動きはインタラクティブな図で確認できます。
Go ランタイムスケジューラーの G (Goroutine)・M (Machine/OS Thread)・P (Processor) モデルを、ランタイムのソースとインタラクティブなアニメーションで説明します。
Next.js + MDX + Tailwind CSS で個人ブログを作りました。技術について学んだことや、日々気づいたことを書いていきます。
Paxos は 2PC と違って単一障害点を持たず、Raft は Paxos と同じ安全性のまま理解しやすさを設計目標にしました。PBFT は、ノード数とメッセージ量が増える代わりに、嘘をつくノードにも耐えます。各方式がなぜ安全に合意できるのかを、メッセージの流れを追えるシミュレーターとともに解説します。
2025年2月にシアトルとバンクーバーを回った旅の記録。テック企業の本社が集まるシアトルの街から、バンクーバー近郊の渓谷や森まで。