フロントエンド開発現場の環境構築
昨今の複雑化したWebフロントエンドの開発を行うには、テキストエディタのみならず、さまざまな開発ツールやミドルウェアを駆使する必要があります。
必然的に、日常的に開発で使用するマシンの環境構築もまた複雑なものになりました。環境構築に時間を取られてしまったり、その時間を惜しんで、なかなかOSのメジャーアップデートやマシンのリプレイスに踏み切れなかったりする方も、多いのではないでしょうか。
また、複数人のチームで連携して開発を進めるためには、メンバー同士で開発環境を共有する必要がありますが、前述の複雑化のこともあり、それらすべてを人の手で行うことは難しくなりつつあります。
LINE社のフロントエンドエンジニアのチームでは、それらの問題を解決すべく、本稿で紹介する構成管理ツールであるAnsibleを活用し開発環境構築を自動化しています。
構成管理ツールという選択
構成管理ツールとは、主にサーバーマシンの環境構築のために必要なファイルやコマンド群を管理し、実行を自動化するツールです。
構成管理ツールというと、リモートサーバーや仮想環境のゲストマシンに環境構築を行うイメージが強いかと思いますが、ローカルの環境構築についても、特に初期状態のマシンに対しては運用しやすいツールです。初期構築の自動化は、新規メンバーの負担軽減や、マシンの移行を容易にするなど、多くのメリットがあります。
また、多くの構成管理ツールはシェルスクリプトよりも簡潔な記法で、べき等性(注1)を保つことができるように作られているため、開発環境をあるべき状態に維持するための、継続的な管理に適しています。
注1
ここでは、何回行っても同じ結果になること。
Ansibleとは
構成管理ツールといえば、ChefやBoxen(Puppet)など、有力なツールがいくつかありますが、今回は、よりシンプルで手軽に扱えることで人気のある、Ansibleを利用して開発環境構築を行います。
Ansibleは、ホストマシンで定義したPlaybookと呼ばれる実行タスクの一覧を、管理対象のサーバーに対して、ssh接続を通して実行します。Chefなどでは管理対象のサーバー側でもChefが実行できる環境が必要ですが、Ansibleの場合は、管理対象サーバー側では特に準備が必要ないため、シンプルではじめやすいところが人気の理由の一つとなっています。
Ansible自体はPythonで記述されていますが、yaml形式でタスクを定義するため、使い始めるのに新たにプログラミング言語を習得する必要はありません。また、仮想環境のプロビジョニングツールとしてよく利用されるため、普段からVagrantなどを扱うような環境であれば、学習しておくことで役立つ場面は少なくありません。