何の記事?
GitとDockerはどっちも管理ツールで、開発環境──世界を分けてくれるものだけど、その分け方ってちょっと違うよね……という感覚がつかめて来たので、可視化することにしました。
誰向け? どんな役にたつ?
- Gitってどんなもの? Dockerってどんなもの?……をふんわり知りたい人
- 結局それを使うと何が嬉しいの? が知りたい人
Gitとは
元の世界から並行世界を作り出すイメージです。
元々は1本の世界だったものから、枝わかれした世界を増やします。
元の世界が同じなので、ひと段落したら合流したり、また別れたりします。
Gitがないと
いつでも綺麗な状態を見せられるようにしたい本番環境と、開発用の環境がわけられず、定期的なバックアップだよりのみ……などになります。
Gitで管理をして置くと、AIコーディングをする際にも変更前にセーブしておいて、コーディングが出来上がったら差分を確認して……などの使い方もできます。
やっぱりあの時のままがよかったな……と思えば、その地点まで戻って開発し直す……ということも簡単にできます。
Dockerとは
Gitと違って完全に違う異世界を作り出すイメージです。
コンテナごとに独立した世界で、後から合流したり、世界の一部が分離されることはありません。
世界を作る設定ファイル──Dockerfileやcompose.yml──が似ている場合、ほぼ同じような世界ができることもあります。
広めの土地が開いたと思ったら、屋根が違う家が複数軒建った……みたいな。
ただし、あくまでも違う家なので、いきなり他人のお隣さんとくっついて暮らし始めたりはしません。
Dockerがないと
お客さんごとに開発環境が異なる場合、変な影響が出ないようにインストールしなおしたり……などが必要になる場合があります。
後は、手順書に沿って自分のPCに環境構築をしようとしたのに、先輩のPCでは動いて、自分のPCでは動かない……など、構築に手間取ったりすることがあります。
Dockerでの環境構築だと、誰がどのPCに入れても同等の環境が構築されるので、設定ファイルの共有のみで済み、便利です。
また、言語を直接PCにインストールするのではなく、バージョンも含めてコンテナでインストールして、サンドボックスとして使うこともできます。
Dockerコンテナは気軽に作って気軽に壊せるのが強みです。
結論
GitもDockerも、それ単体で何かをするツールではありませんが、開発を支えてくれる便利ツールです。
複数人で使うことも想定されていますが、一人開発の場合でも、自分が作った環境や辿った形跡を残していけるので、管理をツールに任せて、その分空いた脳のメモリを開発作業に充てることができます。
この記事では本当にフワっとしたイメージの話のみですが「そんなことできるんだ?すごい!」……と思った方は是非是非活用してみてください。