はじめに

メルカリというアプリを知っていますか?
使ったことがない方でも名前ぐらいは聞いたことがあるでしょう。
メルカリは、最近人気を集めているフリマアプリです。
スマホで手軽に出品できるため、若年層から支持を集めています。
メルカリのように急成長するアプリは、スピーディーな開発体制が求められます。
そのため、メルカリの開発チームは「DevOps」を実践しています。 
この記事では、近年注目を集める開発手法「DevOps」について説明していきます。
ぜひご一読して、あなたの現場でも取り入れてみてください。

DevOpsとはどんな開発手法なのか?

DevOpsは、Dev(開発)とOps(運用)をかけ合わせた造語で、対立しがちな開発部門と運用部門が協力してプロジェクトにあたることを目指しています。
DevOps自体は抽象的な概念にすぎないため、DevOpsを実現するためにはいくつかのプラクティスに従います。
代表的なプラクティスは次の3つです。
一つ目は「運用の自動化」です。
AnsibleやChef、Dockerなどのインフラ構築自動化ツールを使って、運用部門に頼まなくてもインフラをいつでも構築できるようにします。
また、JenkinsやCapistranoを使ってビルドやテスト、デプロイも自動化し、運用部門の負担を軽減します。これはスピーディーなローンチにも役立ちます。
二つ目は「情報の共有」です。
開発部門と運用部門が密に連携し、情報を共有する必要があります。
たとえば、ソースコードをGitHubで共有したり、システムのパフォーマンスをNew Relicで共有したりするなどです。
チャットによる情報共有も有効です。
三つ目は「お互いの尊重」です。
どのような手法やツールを使ったとしても、そもそも部門同士が対立していては元も子もありません。
お互いを尊重し、互いに協力しあっていく心がけが必要です。
この他にもプラクティスはありますが、
一番重要なのはツールや手法ではなく「開発と運用の融合」です。
形だけDevOpsになっているだけでは意味がありません。開発と運用の垣根をなくすことがなによりも重要です。

DevOpsを導入するとどうなるか?

リリースが高速化される

DevOpsでは、ツールの助けを借りて、リリースに関わるさまざまなタスクを自動化します。
たとえば、インフラの構築やビルド、テスト、デプロイなどです。
一度自動化してしまえば人の手を借りる必要がなく、運用部門の手を煩わせないため、迅速にリリースできます。
開発現場によっては、一日10回以上もデプロイすることもあります。

バグを早期に発見できる

リリースサイクルが高速化されれば、必然的に開発されてからリリースされるまでの時間が短くなります。早期に実運用環境に投入できるため、見落としたバグがあっても早期に発見できます。
バグは早く見つけるほど修正しやすいですから、修正コストも削減できます。
また、リリースごとの変更が小さくなるため、変化が小さい分バグの数も少なくなる傾向にあります。
一度に大きな変更を加えると、思わぬ不具合が起きがちなので、小さくリリースしたほうが安全なのです。

生産性が向上する

DevOpsではこれまで手作業で行ってきたことの多くが自動化されるため、必然的に生産性が向上します。また、短いリリースサイクルで顧客からのフィードバックも得られるため、不必要な機能を開発してしまうリスクも低下します。
仕様の誤りもすぐに発見できるでしょう。
また、開発と運用の関係改善によるエンジニアの士気の向上も見逃せない要素です。
実際に業務を行うのは人間なので、円滑な人間関係が好ましいといえます。
やはり、やる気があったほうがいいものができますからね。

まとめ

ビジネスの高速化により、スマホアプリに限らず、どのような開発現場にも迅速な開発体制が求められています。
従来の開発体制に問題を感じているなら、新しい開発手法を採用してみましょう。
まずは、比較的小規模なパイロットプロジェクトで導入して、効果を確かめてみるとよいでしょう。