Dockerとは?
コンテナとか仮想化とかいわれても分からんよ。
なんで必要なのか教えて。
専門的なことはすっ飛ばして。
担当者に開発環境を提供するのに必要なんですよ。
Dockerって?
技術の説明とか、細かい設定とか、基本的な機能とか。
専門的な話は、そーゆーサイトで調べてください。
ここでは、Docker使いますって開発会社に言われて、それなに?って発注側向けの、ざっくりとした話です。まずはイメージを掴むってことで。
開発環境を提供する目的
プログラムが動く環境を準備して、関係者に配れるようにしておきたいの。
開発する人たちの作業が圧倒的に省力化されますよってこと。
効率よく作業できるようになる。
では、プログラミングすることを考えてみましょう。
プログラムを書くためには準備がけっこうあるんだ。
たとえば以下。
- OS準備と各種設定
- プログラミングアプリを準備して設定
- プログラミング用のライブラリなどの支援ツールを準備して設定
- テストツールを設定
- フロントエンドとデータベースを接続
などなど。ほかにもやることはたくさん。準備作業が大変なわけ。
こういった準備作業を完了させた環境をDockerに準備しとくと、すぐに開発を始められる。
もちろん、最初の環境設定は誰かがやるんだけど。その1回で済むっしょ。
チームメンバーが増えたら、準備済みの環境を使ってすぐにスタートできる。(環境設定だけで1日以上必要)
個人ごとに設定間違えてたとかってトラブルもなくなる。(開発者あるある)
べつにプログラムじゃなくてもいーんだけどさ。
システムとかアプリとかつくるときの最初の準備は、だれか一人がやればいーんだな。
一元化ってやつね。
省力化ってのもあるけど、統一ってのが大きい。
開発してるのはこれだけじゃないから
開発担当者は、べつに今回のシステムだけ担当してるわけじゃない。アプリも、ね。
会社でも個人でも、お仕事なんだから。
ひとつのシステムでおしまいじゃない。
いくつかのシステムを担当してるし、この先も担当することになる。
チームメンバーを流動的に調整したい。
次の仕事に入ったとしても、前の仕事のメンテナンスしてほしい。
そんな感じ。
複数人で開発してる
チームには何人も担当者がいるでしょ。
人が増えると、それだけ管理が大変になるんだよ。
それぞれの人に意思があって、独立した人格だからさ。
この環境でお願いしますって言ったとしても、結果はズレるんだ。
- セットアップにかかる時間がまちまち。
- セットアップした設定がまちまち。ときどき間違ってる。
- セットアップがうまくできないこともある。
システム開発あるあるなんだよね。
環境をあらかじめDockerで準備しておいて、これ使ってねって渡せば、それで済むよねって発想。
複数環境ある
だいたいの場合、開発環境、テスト環境、本番環境とかって、必要な環境が複数になるでしょう。
それぞれでプログラミング言語のあれこれやデータベース接続やって準備してたら大変でしょ?
だれかがDockerで環境作ったら、それぞれに環境をコピればいいんだよ。
あと、Aシステムを作り終わったらBシステムの担当になりました。
リリース済みのAシステムなんだけど、こんな問題が発生してて、ちょっと見てもらっていいですか?ってことがけっこーあるのよ。
Dockerがなかったら、環境をいちいち設定しなおさないといけないでしょう。
それぞれの環境が監理されてれば、ポチポチっと切替えれば済むぜって話。
ロールバックできる
環境をぶっ壊すような誤操作とかしちゃっても。テスト結果になっちゃっても。
Dockerに最初の環境が残ってるから、すぐに復元できる。
システム全体のパラメーターをいじるような操作もあるでしょ。
開発とかテストとかでは、けっこーいろんなことをやるんだよ。
ぶっ壊されないかな~?ってやってみたら、実際壊れちゃったw
とか。
いちから戻すのなんてたまったもんじゃない。
その他にもたくさん機能はあるが
まずは上記で。
その他にもできることはあるし、活用の場面はあるんだけど。
だいたいこれで合ってるだろ。
もっと詳しいことは、詳しい人が書いたコンテンツを見たほうがいいよ。
ご意見やご感想などお聞かせください! コメント機能です。