
CSロードマップ 10話 — 同期プリミティブ: Mutex はどうやって一人だけを通すのか
序論: 「時々落ちる」の意味 Stage 2 を始めるとき、こんな問いを投げかけました。 スレッド二つが同じ変数に書き込むと、なぜプログラムが時々だけ落ちるのか? 7話 OS アーキテクチャ、8話 プロセスとスレッド、9話 スケジューリングを経て、答えの半分には辿り着きました。OS が見えないところでスレッドを入れ替えていて、その入れ替えの瞬間は予測不可能 — だから「時々...

序論: 「時々落ちる」の意味 Stage 2 を始めるとき、こんな問いを投げかけました。 スレッド二つが同じ変数に書き込むと、なぜプログラムが時々だけ落ちるのか? 7話 OS アーキテクチャ、8話 プロセスとスレッド、9話 スケジューリングを経て、答えの半分には辿り着きました。OS が見えないところでスレッドを入れ替えていて、その入れ替えの瞬間は予測不可能 — だから「時々...

この編で扱うこと シリーズ最終編です。2つのテーマをまとめます。 Part 1 — 動作原理: 本シリーズのインフラを成立させているメカニズム。家庭NAT 2重の奥にあるノートPC 2台がどうやって直通で通信するのか。STUN・ICE・hole punching・DERP・MagicDNSをひとまとめに整理します。 Part 2 — コスト・限界・振り返り: 年間1,100円インフ...

この回が扱うもの この回は、釜山の実家ノートPCを無人24/7のexit nodeに仕立てる運用全体を一気に整理します。作業は三つの段階に分かれます。 Phase どこで 何を 1. セットアップ 釜山の実家(1回訪問) install.ps1を一度実行 — 五つ...

このシリーズで扱うこと 福岡で1年以上暮らしてきた中で、韓国IPが必要になる場面が地味に積み重なってきました。韓国の決済・銀行・一部のコンテンツは海外IPからは正常に動作しなかったり追加認証を要求してきたりして、そのたびに商用の韓国向けVPNを一時的にONにするやり方は、コスト・信頼性・OS互換性のどれを取ってもすっきりしませんでした。 解決策として、釜山の実家の押し入れに7年眠って...

序論: Boxing 編が残したコピーコスト 第 1 回 (値型 vs 参照型と Boxing) の最後に一つの宿題を残しました。 “Boxing は避けられたが、struct そのもののコピーコストは残る。” Boxing 編の核心ルールを再掲します。 値型は代入・受け渡し・比較されるとき、内容全体がコピーされます。 このルールは普段は直感的で望ましいものです...

序論: 「スタック vs ヒープ」という説明が食い違う理由 C# の教科書の最初のページで、私たちはこう学びます。 “値型 (struct) はスタックに、参照型 (class) はヒープに格納されます。” この文章は間違いではないのですが、実務で直面するほぼすべての反例を覆い隠してしまいます。クラスのフィールドとして int を宣言すると、その int はスタックではなく...

序論: 同じIL、異なる運命 前の2篇では、.NETスタックの第4層 (Runtime) が複数の実装に分かれているという事実を確認しました。今回はその実装を一つずつ解剖して比較します。 現時点で実務的に意味のある5つのランタイムは次のとおりです。 ランタイム 所属 登場 状態 ...

序論 — Claudeは本当にナーフされたのか Claude Opus 4.6はしばらくの間、コーディング作業の基準線を一段階引き上げたと評価されていました。コードベース全体を投げつけても文脈を掴み、難しいリファクタリングを一発で終え、ツール呼び出し間の推論もクリーンでした。ところが2026年2月から異常な信号が蓄積され始めました。思考の深さ73%減少、トークン消費量122倍増加、St...

序論: 歴史を知ることが実用的な理由 この記事は三つの疑問に答えるための内容です。 「.NET 4」はなぜ飛ばされたのか? — .NET Core 3.1 の次のバージョンがなぜ 4 ではなく 5 なのか? 「Core」はなぜ名前から消えたのか? — .NET Core 3.1 は存在したのに、.NET Core 5 はなぜ存在しないのか? Unity はなぜ Mono...

序論: 「誰に、どれだけ」の問題 前回はプロセスとスレッドが何で、OSがそれをどう抽象化するかを見ました。ここから自然に続く問いがあります。 Ready状態のスレッドが100個あってコアが8個なら、OSは誰にCPUを渡すのでしょうか? そしてどれだけの時間渡すのでしょうか? この2つの問いに答えるのがスケジューラ (Scheduler) です。そしてその答えが次の2つを決め...