WEBアプリケーション開発に参画すると、Dockerでアプリケーションやミドルウェアを実行することになることが多いと思う。実際に私が2年弱の開発経験の中で携わったプロジェクトの多くがDockerを利用していた。

環境構築を簡単に行うことができるのは大きなメリットではあるが、以下のようなデメリットもある。

コマンドの入力や実行に関する時間は1つ1つを考えれば微々たるものではあるが、開発時にコマンドを実行する機会は少なくないため、Developer Experienceを高める上で改善には価値があると考える。

基本的にアプリケーションをコンテナで実行するように構成されているプロジェクトが大半ではあるが、現在のプロジェクトではRailsアプリケーションとWebpackerをローカルで直接実行し、DB等のミドルウェアをコンテナに載せるようにしている。host等、別途設定が必要な部分がある場合には、設定を変更した上で以下を実行している。

$ git update-index --skip-worktree ${file_name}

ミドルウェアがローカルでも立ち上がっている場合、コンテナではなくローカルのサーバを優先することがあるので注意が必要。

言語のバージョンを指定したりなど、最初の手間はあるが、

など、個人的にはメリットが完全に勝っている印象。

Macでの開発で上に挙げたDockerのデメリットに悩まされてる方は少なくないように感じるので、一度試していただきたい。