Slide 1

Slide 1 text

the container ship “Apple Silicon” GANGAN (@gangan_nikki)

Slide 2

Slide 2 text

こちら徳島は神山からお送りしております 2 出典: https://speakerdeck.com/akidon0000/nagoya-swift-1?slide=14

Slide 3

Slide 3 text

皆さん、 お久しぶりです(?) 3

Slide 4

Slide 4 text

4 出典: https://speakerdeck.com/shingangan/oyatunoogong-haojue-maridesuka-at-wwdc25-recap-japan-slash-region-dot-swift Recap 2025でJavaの話をした人です。 GANGAN と申します。

Slide 5

Slide 5 text

5 出典: https://speakerdeck.com/shingangan/oyatunoogong-haojue-maridesuka-at-wwdc25-recap-japan-slash-region-dot-swift 自己紹介は忘れてもらって大丈夫です🐳 「コンテナは良いぞ 」ってことだけ 覚えて帰ってください

Slide 6

Slide 6 text

本日のタイトル 6

Slide 7

Slide 7 text

the container ship “Apple Silicon” 7

Slide 8

Slide 8 text

the container ship “Apple Silicon” Apple Silicon号に乗り換えましょう 8

Slide 9

Slide 9 text

the container ship “Apple Silicon” 9

Slide 10

Slide 10 text

the container ship “Apple Silicon” Dockerくんの引退も夢じゃない 10

Slide 11

Slide 11 text

apple containerの良いとこ ・OCI(Open Container Initiative)互換で既存のDockerfileをそのまま利用可能  → 「Macのみxyzの固有設定が必要...」なことはありません ・コンテナ単位でホスト名を割り当て可能。ポート番号の競合などが発生しない  → さらば「port is already allocated」エラー ・Server-side Swiftの可能性もさらに広がる?  → apple containerの実装コードはSwift製。All swiftの可能性がさらに広がる   11

Slide 12

Slide 12 text

apple containerの良いとこ   12 Docker apple container 共通VM 単一VM 単一VM

Slide 13

Slide 13 text

せっかくなので 頭の体操をしましょう 13 画像出典: https://www.docker.com/ja-jp/blog/the-magic-behind-the-scenes-of-docker-desktop/

Slide 14

Slide 14 text

せっかくなので 頭の体操をしましょう 14 画像出典: https://www.docker.com/ja-jp/blog/the-magic-behind-the-scenes-of-docker-desktop/ 名前は “Moby Dock”

Slide 15

Slide 15 text

vapor + mysql構成の compose.yaml 15

Slide 16

Slide 16 text

vapor + mysql構成の compose.yaml 16 docker compose up → docker run → apple container run に変えましょう

Slide 17

Slide 17 text

vapor + mysql構成の compose.yaml 17 docker compose up → docker run → apple container run に変えましょう

Slide 18

Slide 18 text

1) Docker Compose to Docker 18 docker compose up → docker run → apple container run に変えましょう

Slide 19

Slide 19 text

1) Docker Compose to Docker 19 Docker Compose Docker

Slide 20

Slide 20 text

2) Docker to Apple container 20 docker compose up → docker run → apple container run に変えましょう

Slide 21

Slide 21 text

2) Docker to Apple container 21

Slide 22

Slide 22 text

2) Docker to Apple container 22 Docker apple container

Slide 23

Slide 23 text

2) Docker to Apple container 23 Docker apple container

Slide 24

Slide 24 text

面白かった特徴 24

Slide 25

Slide 25 text

containerのマウント思想 25 出展: https://github.com/apple/container/blob/14233cee65486c1ada2b82403c17d1236a9176c2/docs/container-machine.md

Slide 26

Slide 26 text

containerのマウント思想 26 出展: https://github.com/apple/container/blob/14233cee65486c1ada2b82403c17d1236a9176c2/docs/container-machine.md 修正はMac、ビルドはcontainerという責務の分離が行われている。 ファイル単位のマウントではなく、ディレクトリ単位のマウントを推奨。

Slide 27

Slide 27 text

他に嬉しいこと ・miseでパッケージ管理が可能  → multi-language monorepo構成の場合はとってもハッピー  → プロダクト開発と相性が良い ・1コンテナ1VM => AIエージェント + worktree開発と相性が良い  → AIエージェント開発で環境が汚れない  → ブランチごとの検証環境を用意することも夢じゃない  → M3さんのTech Blogでworktree関連の記事が上がっていました   ・ref: apple/container で worktree 並行開発を快適にするツールを作ってみた 27 記事出展: https://zenn.dev/feasion/articles/mise-swiftlint-swiftformat

Slide 28

Slide 28 text

おしまいです GANGAN (@gangan_nikki)