受託開発でぶつかる「環境依存」問題、どう解決する?CINRAが行うメディア開発の裏側
【PR】 転職
受託開発をしていると、クライアント企業の開発環境に合わせて毎回イチから環境構築しなければならない問題にぶつかる。これは非常に面倒だし無駄が多い。環境依存をいかに克服するかは重要な問題である。
株式会社CINRAは、カルチャーニュースサイト『CINRA.NET』をはじめとする自社メディアの運営以外に、主に企業や官公庁、地方自治体などが手掛けるWebサイト・オウンドメディアを数多く受託開発している。
例えば、国内大学のWebサイトの主流であったテキスト中心の情報伝達から、写真や動画、ピクトグラムなど、ビジュアルを多用した構成へとリニューアルした早稲田大学のWebサイトは、CINRAのクリエイティビティが遺憾無く発揮された好例である。
しかしこうしたクリエイティビティをコンスタントに発揮するためには、そのための体制づくりが不可欠である。CINRAもかつては、やはり一般的な受託開発と同じ環境依存の問題に悩まされてきていた。
同社がカルチュラル、クリエイティブ、インターナショナルの3つを軸にメディア受託開発事業に本腰を入れ始めたのは2年前。同時に環境依存の問題を解決するためのいくつかの施策を打ってきた。テクニカルディレクターとして陣頭指揮を執ってきた濱田智氏に、その取り組みを聞いた。
環境構築に忙殺されて、クリエイティブを発揮できなかった
2年前の状況を「暴力的に忙しかった」と振り返る濱田氏。CINRAが抱えていた問題とは具体的にどのようなものだったのか。
クライアントの開発環境に依存するとは言っても、環境構築というのは結局のところ、毎回同じような作業の繰り返しである。そこに費やしていた多くの時間と労力のほとんどが無駄な作業であったことに気付くところから、環境改善が始まることになった。
また、担当者間、プロジェクト間でナレッジが共有されていなかったことも無駄な繰り返しを生み、忙しさを助長していた。
メディアというプロダクトの性質上、環境構築のような単純作業に忙殺されることは、CINRAにとって致命的と言える。本懐であるところのクリエイティブな作業に、十分な時間や力を注ぐことができないからだ。
ナレッジを共有し、環境構築の負担を軽減することは、CINRAのエンジニアチームにとって喫緊の課題だった。
サーバサイド、フロントエンド双方で自動化を進め、負担を軽減
こうした問題を解決するために、CINRAはサーバサイドとフロントエンドの両方で、それぞれ効率化とナレッジ共有のための施策を打ってきた。
具体的には以下のようなものである。
環境依存の問題を解消するために、PC上に構築した仮想マシン上で開発を進めるという手法は、すでに一般的である。クライアントの環境に依存しないというだけでなく、全ての開発者が同じ環境で開発を進められるので、コミュニケーションやナレッジの共有という点でも無駄が生じない。
CINRAでは、仮想環境の構築に際してVagrantを採用・導入した。Vagrantは、仮想マシンの作成や環境構築、仮想マシンの破棄までを自動化できるツールである。
それまでは手作業で行っていたサーバ構築がコマンド一発でできるようになったことで、環境構築の負担を大幅に軽減することができた。
他にも、以前は構成管理ツールとしてChefを、現在はより簡単に開発環境を構築・管理できるAnsibleなどを使ってDevOpsを積極的に進めている。その結果、環境構築の過程もスクリプトとして共有することが可能になり、弱点であったインフラ構築周りのナレッジ共有が加速した。
フロントエンドでも、Node.jsを用いてプロジェクト立ち上げ時の技術選択を半自動化した。あらかじめいくつかのテンプレートを作っておき、コマンドラインでテンプレートを選択するだけでソースが構築されるようにしたことで、サーバサイド同様、作業の効率化とナレッジの共有が実現できた。
さらにアナログな部分でも、CSSの書き方のレギュレーションを定める作業が現在進行中という。策定にあたっては、数年前にサイバーエージェントがWeb上で公開した「メンテナブルCSS」などを参考にしている。
エンジニアがメディアの「運用」に貢献できることは山ほどある
サーバサイド、フロントエンドの双方で自動化を進めたことで、CINRAにとっての本懐であるクリエイティブな作業に注力できる体制ができ上がった。
メディア制作におけるクリエイティブな作業というと、コンテンツを作成する編集者らの役割というイメージが強いが、「エンジニアにもエンジニアならではの視点から貢献できることが多々ある」と濱田氏は言う。
技術的な負債の継続的な解消はもちろんだが、フロントエンドのテクノロジーに立脚した管理画面の改善や、SEO施策などを地道に行うことで、目に見えた効果を手にすることができる。
また、AMPやFacebookのInstant Articlesといった新技術が登場した際に、それに対応することで得られるメリットや掛かるコストなどと合わせてエンジニアの側から提案することの重要性も、今後は増していくだろうとみている。
こうしたことに時間と労力を注げるようになったのも、環境構築などの単純作業の負担を軽減してきたことの賜物である。
また、CINRAは社内にコンテンツチーム、デザイナーチームを抱えており、自社メディアの運営において、エンジニアチームを含めた3者間でグロースの循環を高速で回すことができる体制にある。その知見を受託案件にも活かせるのはCINRAが持つ大きな強みだ。
自動化により注ぐべきところに力を注げるようになることは、こうした強みを発揮しやすくなるということも意味している。
Docker移行、脱WPなど今後はソリューションの幅を広げていく
CINRAのエンジニアたちが進めてきた取り組みはすでに一定の成果を収めているが、全てが完了したわけではない(というより終わりがない)。「今後はソリューションの幅を広げていきたい」と濱田氏は話している。
具体的に着手している例としては、Vagrantからさらに一歩進んでDockerへの移行を進めているという。その理由を、濱田氏はこう語る。
「Vagrantはナレッジの共有という点では要求を満たしていましたが、環境依存の問題を解決する上ではまだまだ不十分だと感じていました。一方、コンテナ仮想化技術であるDockerであれば、仮想環境自体を共有できるので、本来の意味での『開発者全員に全く同じ開発環境が与えられている状況』に近付けると考えました」
さらに、イメージをモジュール的に運用することで、その組み合わせにより、さまざまな受託案件に柔軟かつ効率的に対応することが可能になったという。
ちなみに、こうした柔軟な開発環境を手にすることで、WordPressとは違ったソリューションでのメディア構築も進めやすくなるというメリットも生まれた。
これまでは極論すると自分たちの手を離れても継続的にメンテナンスがしやすいことを考え、ほとんどの案件で汎用的で安定感のあるWordPressを使った開発をしていた。しかし、案件によってはそれだけでは非効率なことや、WordPressの設計思想とはそもそも合わないケースも発生する。
「長期的な視点で見れば、WordPressとは別のソリューションも選択可能な体制を整えておくことが、クライアントの利益につながるはず」と濱田氏は言う。
ところで、メディア開発の自動化は本当にクリエイティブなのか?
濱田氏は「メディアにとってローンチはスタートでしかなく、良いメディアになるかどうかの大部分は運用にかかっている。運用というのはコンテンツの更新はもちろん、エンジニアリングの継続的な取り組みも含む」と語っている。
メディア開発の自動化というと、言葉の響きとしてはクリエイティブとは程遠い印象を受ける。しかしここまで見てきたように、CINRAが自動化を進めることで目指しているのは「テンプレサイトの量産」ではなく、「継続的にクリエイティブに力を注ぐための体制づくり」である。
濱田氏は「職人的なデザイナーやエンジニア、編集者がいて初めて作れるメディアというものがある」ことを認めている。しかしそうしたスタープレーヤーが力を遺憾無く発揮するためには、サイト、組織とも土台がしっかりしていることが不可欠になる。
また、受託開発ではクライアントの「無理な要望」によって、短納期でサイトを仕上げなければならないシチュエーションも出てくる。実は濱田氏自身、「急ぎの案件への対応で安易にWordPressを使って開発を進めたが、運用フローがかえって複雑になってしまった、という苦い経験がある」そうだ。こういった場合にエンジニアとして「代案」を提案できるようになるためにも、自動化できる部分は自動化しておくことが大切になるのだ。
CINRAでは現在、エンジニアを募集している。濱田氏は「自分のように社歴が長くなるとリスクを取らない方向に進みがちだから、若い人の力が必要。若い人がスピード感を持って新しいことに挑戦できるように、組織としての土台づくりをこれからもしっかり行っていきたい」と話している。
取材・文/鈴木陸夫 撮影/竹井俊晴
RELATED関連記事
RANKING人気記事ランキング
NEW!
ITエンジニア転職2025予測!事業貢献しないならSESに行くべき?二者択一が迫られる一年に
NEW!
ドワンゴ川上量生は“人と競う”を避けてきた?「20代エンジニアは、自分が無双できる会社を選んだもん勝ち」
NEW!
ひろゆきが今20代なら「部下を悪者にする上司がいる会社は選ばない」
縦割り排除、役職者を半分に…激動の2年で「全く違う会社に生まれ変わった」日本初のエンジニア採用の裏にあった悲願
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
JOB BOARD編集部オススメ求人特集
タグ