(Photo By: Matthieu Guyonnet-Duluc)
はじめに
あなたのプロジェクトは順調ですか。
ソフトウェア開発に高い品質と高い効率、さらにコスト削減を実現するため、エンジニアたちは、さまざまな開発手法を生み出してきました。ソフトウェア開発の歴史はまだ浅い分野のため、未だ最適解には至っていないと言えます。しかし、以前と比べれば、ソフトウェア開発は状況に応じて最適化と高速化してきました。
ここで一度、アジャイル開発と DevOps を中心とするソフトウェア開発のトレンドを見直してみるとよいでしょう。
この記事では、ソフトウェア開発のトレンドを知りたいエンジニアの方のために、最近の開発トレンドをまとめています。アジャイルの登場により、開発スタイルは大きく変化しています。ぜひご一読して、大まかにでもトレンドを把握しておきましょう。
ウォーターフォール型開発からアジャイルへの転換
ウォーターフォール型開発は、古くから使われてきた開発手法ですが、近年の変化の早いソフトウェア開発には適さなくなってきました。もちろん、プロジェクトによっては、今でもウォーターフォールが適している場合もあります。しかし、各工程を順番にこなし、前工程への後戻りがないことを前提に進めるため、仕様変更やバグが発生すると、大きな手戻りを強いられることも少なくありません。
そこでアジャイル手法が提唱され、変化に対応できる開発手法が生み出されました。具体的には、「エクストリームプログラミング(XP)」や「スクラム」などです。アジャイル開発では、ソフトウェアの機能を分割し、開発とテストのループを素早く繰り返すことで、徐々にソフトウェアを作り上げていきます。このため、仕様変更やバグなどによる手戻りが少なく抑えられるようになっています。
アジャイルは、Googleトレンドを見ても、2000年台に流行してから現在まで根強い人気があることがわかりますね。既に安定期に入った手法なので、まだ取り入れていないなら、パイロットプロジェクトを立ち上げて実践してみるとよいでしょう。具体的な開発手法としては、情報源が多い「スクラム」がオススメです。
Gitによるソースコード管理
アジャイル開発では、ソフトウェアに頻繁に修正を加えます。そのため、ソースコード管理(SCM)は必須です。管理されていないソースコードは、たちまち競合を起こし、バグを引き起こす原因になってしまうからです。現在、最も人気のあるSCMは「Git」でしょう。
同様のツールには「Subversion」がありますが、ご覧の通りGitの人気とは対照的です。Subversionが人気を落とす一方で、Gitの人気は破竹の勢いで今も上昇しています。軽量で、ブランチ分けが手軽にできることが人気の理由のひとつですが、もうひとつ大きな理由があります。
GitHubをはじめとするホスティングサービスの利用
Gitが、人気を博している大きな要因は「GitHub」にあります。GitHubは、Gitリポジトリをホスティングできるだけでなく、プルリクエストやイシューなど、他の開発者とのコミュニケーションツールとしても優れています。多くのオープンソース開発で利用されている他、プライベートリポジトリも企業により盛んに利用されています。
ご覧のとおり、Gitの人気とともに、GitHubの人気もうなぎ登りで上昇中です。Gitのほうが高い人気を示しているのは、GitHubには代替サービスが多数あるためと考えられます。GitHubの人気が高いのは事実ですが、唯一の選択肢ではありません。
アジャイルに欠かせないCIとCD
アジャイル開発には、もうひとつ重要な要素があります。それは、継続的インテグレーション(CI)と継続的デリバリー(CD)です。CIは、リポジトリに変更が加えられると、すぐさまビルドとテストを行い、バグが発生していないかチェックします。バグを早期に発見することで、修正時間や手戻りを削減できます。また、継続的デリバリーは、大規模なリリース作業なしに、定期的にユーザーに最新のソフトウェアを提供します。すぐにフィードバックを得られ、自動化されたデプロイシステムがリリースの手間を削減します。大規模なリリースに比べ、リスクを低く抑えられるというメリットもあります。
継続的インテグレーションと継続的デリバリーを導入している企業は、日本ではまだ多くはないようですが、Atlassianの調査によると、65%の企業がCDを導入しているとのことです。日本でも、これからの普及が期待されます。
DevOpsによる開発と運用の協調
近年、アジャイルの新しい取り組みとして「DevOps」が注目を集めています。DevOpsは、Dev(開発)とOps(運用)をかけ合わせた造語です。開発と運用の垣根をなくし、プロジェクトを円滑に進めることを目指しています。従来のプロジェクトでは、開発と運用が分離していたため、頻繁なリリースを行うことが困難でした。思惑の違いから対立を引き起こすこともしばしばあります。
これを解決するために、DevOpsでは、DockerなどのコンテナやAnsibleなどの構成管理ツールを使い、インフラ構築を自動化します。「Immutable Infrastructure(不変のインフラ)」を実現し、リリースごとに新しい環境を作り直します。このようにすることで、リリース作業が単純化され、運用の負担が大きく軽減できます。開発部門と運用部門の関係を良好に保つことが、DevOpsのカギです。
また、最近では、DevOpsの取り組みのひとつとして「ChatOps」も話題に上るようになりました。ChatOpsは、Slackなどのチャットにボットを招待し、ボットに対してチャットで指示を与えることで、ビルドやデプロイ、マージなどのタスクを行います。チャット上に自然に履歴が残り、誰でも参照できるため、情報共有の方法としても優れています。
ボットは、Hubotなどのボットフレームワークを使い、自由にカスタマイズできるため、プロジェクトに合わせて柔軟にタスクを定義できます。また、タスクはコマンドとして自動化されるため、属人化を防ぎ、手間を削減できるというメリットもあります。日本での普及はまだまだこれからのようですが、DevOpsと共に徐々に取り入れられていくでしょう。
まとめ
開発トレンドの潮流がつかめましたか?開発スタイルは、プロジェクトの進行に大きく影響します。どのプロジェクトにも適合する、銀の弾丸のような開発手法は存在しませんので、現場に合わせて、最適なスタイルを見つけ、カスタマイズすることが必要です。
最新のものは流行り廃りも早いので、流行が落ち着いてから取り入れたほうが、安定して運用できると思います。流行に振り回されることなく、新しい手法を取り入れていきましょう。あなたのプロジェクトはどんな手法を取り入れていますか?
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments