Goが低レベルランタイムに向かないワケ by Takuto Nagami

BuriKaigi 2026
レギュラー

Goが低レベルランタイムに向かないワケ

logica0419 Takuto Nagami logica0419
1

Goは、Kubernetesやコンテナランタイムをはじめクラウドネイティブ基盤の中核を担っている言語です。
しかし、Goは決して「何でもできる」万能言語ではありません。

Goの非常に扱いやすい並行処理モデルは、OSプロセスを直接扱うような低レベルな領域との相性が悪いという側面を持ちます。
このような処理は、実際にOSに干渉してコンテナを生成する、低レベルコンテナランタイムに欠かせない技術です。
現在低レベルランタイムのデファクトスタンダートであるruncはGoで書かれていますが、そのプロセス制御はCGoという仕組みで呼び出されるC言語のロジックに強く依存しています。

このセッションでは、上で述べたGoの設計と低レベルランタイムのギャップを紐解きながら、以下のようなトピックを深掘りします。

  • コンテナとは何か、OSプロセスとsyscallの基礎
  • コンテナランタイムの構造 (高レベル/低レベル)
  • Go特有の並行処理、goroutineとプロセス作成に及ぼす影響
  • CとGoの2言語で簡素なコンテナを作るライブコーディング
  • 代替ランタイムであるyouki、crunの紹介

コンテナランタイムやGo言語の並行処理の仕組みを理解し、プロジェクトに適した言語を選ぶ重要性を一緒に再確認していきましょう。

[対象者]

  • コンテナを日常的に使っており、その裏側を理解したい方
  • Go言語の並行処理(goroutineとその中身)に興味がある方
  • 普段はアプリケーション開発が中心だが、OSの動きを学んでみたい方
    • OSやシステムプログラミングに興味があるアプリケーションエンジニアが、言語・OSやコンテナの裏側を覗く第一歩として最適です。

[アウトライン]

  1. コンテナとは何か/OSプロセスとsyscall
  2. コンテナランタイムのアーキテクチャ
  3. ライブコーディング: Cで作る簡素なコンテナ
  4. Goの並行処理、goroutineとその実行モデル
  5. ライブコーディング: Goで作る簡素なコンテナ
  6. runcにおけるCGoでのプロセス管理
  7. 代替ランタイム: youki、crun、etc...