■ 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 run→workshop launch/workshop refreshdocker exec→workshop exec/workshop shelldocker stop/start→workshop stop/startdocker rm→workshop removedocker run --mount→workshop remount