/note/tech

Composable, fast, and secure dev environments

大雑把な概要:

■ 1. Ubuntu Workshop の概要

  • Canonical が提供するセキュアで高速、かつコンポーザブルな開発環境
  • 複雑な開発環境を再現性の高い定義としてまとめ、数コマンドで起動・再現できる
  • AIエージェントとの連携に対応している
  • 現時点ではv0.9.0のアーリーステージのプロジェクト

■ 2. 中心概念と対象ユースケース

  • SDK:
    • Workshopの定義の中心となる独立した接続可能な機能単位
    • パブリッシャーがSDK Storeでパッケージ化・共有でき、チームも自リポジトリ内で定義できる
  • 主な対象ユースケース:
    • エージェント工学・AI/ML・ロボティクス・IoT・EdTechなど、複数のUbuntuバージョンや多様なツール・フレームワーク・ライブラリに依存する複雑なプロジェクトに向いている
  • AIワークフロー対応:
    • LLMが読めるドキュメントを公開し、操作やSDKのスキャフォールディングのためのエージェントスキルも提供している

■ 3. 技術的な基盤

  • コンテナ技術としてLXDを採用
  • SnapやCraft CLIのツールパラダイムに倣っている

■ 4. DockerとWorkshopの主な違い

  • 設計思想:
    • Dockerはイメージが不変(immutable)であることを前提とする
    • Workshopは時間とともに変化・進化していくことを前提とする
  • マウント管理:
    • Dockerはボリュームやマウントの設定をユーザーが手動で行う必要があり、エラーが起きやすい
    • WorkshopではマウントロジックはSDKの作者が組み込んでおり、ユーザーが介入しない限り自動的に管理される
  • ホストリソースへのアクセス:
    • DockerはGPUパススルーとSSHフォワーディングなどリソースによって設定方法が異なり一貫していない
    • WorkshopはSDKcraftの「インターフェース」という単一概念でホストリソースへのアクセスを統一している
  • レイヤー構造:
    • Dockerは変更を時系列に積み重ねるレイヤー方式
    • WorkshopのSDKは「パーツ(parts)」という単位でモジュール的に構造化されている
  • ユーザーの権限範囲:
    • DockerfileはユーザーがDockerfileを完全に制御できる
    • WorkshopはユーザーがSDKを管理するものの、SDKの実装はパブリッシャーが定義する

■ 5. CLIコマンドの対応

  • docker runworkshop launch / workshop refresh
  • docker execworkshop exec / workshop shell
  • docker stop / startworkshop stop / start
  • docker rmworkshop remove
  • docker run --mountworkshop remount