お問い合わせ
「SmartCloud」問い合わせ
資料請求・お問い合わせ
2019.11.27DevOps入門
現在のアプリケーション開発は、以前のように開発者全員が同じ場所に集まって開発を行うスタイルから、開発者が分散してリモートから開発するようなスタイルに変わりつつあります。
このような分散開発が可能になったのは、高速なインターネットが普及し、どこからでも仕事ができるようになったことと、様々なツールが活用できるようになったことが大きな要因といえます。
また、「働き方改革」の一環としてテレワークを可能にするためにも、分散型のチーム開発を実現することが重要となってきます。
以下、分散型チーム開発を成功させるためのポイントを、ツールの活用方法とあわせて解説します。
分散型チーム開発に限らず、ソースコードの管理ツールとしてGit(ギット)の利用が増えています。
Gitは元々Linuxカーネルの開発を分散して行うためにLinus Torvalds氏によって開発されました。
Gitは、サーバーにアクセスして作業を行うのではなく、ソースコードが格納されている「リポジトリ」の完全な複製を各開発者の環境に複製(クローン)するため、開発者が分散していてリポジトリにネットワークでアクセスできない状態でも開発を行えるようになっています。
Gitをチームで活用するためには、ソースコードを開発者間で共有する「リポジトリ」が必要になります。SaaSでは「GitHub.com」が有名ですが、オンプレミスで独自のGitリポジトリを構築したいユーザーにはオープンソースで提供されている「GitLab」(ギットラブ)が多く利用されています。
Gitの基本的な使い方は以下の通りです。
Gitはソースコードをリポジトリで管理しますが、リポジトリには各開発者の開発用端末に作成される「ローカルリポジトリ」と、開発者で共有される「リモートリポジトリ」があります。ローカルリポジトリは各開発者毎に独立していますが、最終的にはリモートリポジトリにソースコードを集めることになります。
「クローン」を行うことで、リモートリポジトリの内容をすべてコピーしてローカルリポジトリを作成できます。
開発者は、自身の開発用端末のローカルリポジトリでソースコードの作成や修正を行います。ローカルリポジトリからリモートリポジトリに自身の書いたソースコードを「プッシュ」すると、他の開発者と共有できるようになります。
リモートリポジトリにある他の開発者がプッシュした変更をローカルリポジトリに反映するには、「プル」を行います。
このようにリポジトリを介して、それぞれの開発者の開発したソースコードを共有することができます。
Gitには、その他にブランチによるソースコードの分離、マージリクエストによるレビュー機能、バージョン管理機能など開発を進める上で便利な機能が備えられているので、少しずつ活用していくとよいでしょう。
プログラムを書くためのツールとしてはエディタが使用されますが、開発のための様々な機能を備えた「IDE」(統合開発環境)を活用する開発者も増えています。
IDEは、ソフトウェア開発に必要な各種ツールを一元的に使えるようにしたソフトウェアです。
IDEを活用しない場合、ソースコードはエディタで記述し、文法チェッカー、Gitクライアント、コンパイラ、テストツール、デバッガなどを開発者がそれぞれ用意し、個別に利用する必要があります。
IDEでは、これら各種ツールが1つの環境として統合されているので、開発者が意識しなくても自動的に必要なツールが利用できます。
IDEの代表的なものとしては「Eclipse」が挙げられるでしょう。特にJavaで開発する場合にはEclipseを使用するケースが多いですが、その他の言語についてもプラグインを導入することで対応できます。「Eclipse Che」を導入すれば、EclipseをWebブラウザから利用することもできます。
その他のIDEとしては、「Visual Studio Code」も人気があります。マイクロソフトの製品ですが、無料/オープンソースであり、WindowsだけでなくmacOSやLinuxでも動作するなどの特長があります。
エディタやIDEは道具なので個々人の使いやすいものを使うのがよいですが、プロジェクトとして統一すると使いこなしのノウハウが共有できるメリットがあるでしょう。
昨今では「チケット駆動開発」とまでいかなくても、チケットを使って開発タスクの管理をすることは一般的になりつつあるようです。その際によく使われるのが「Redmine」のようなチケット管理ツールです。
チケットを活用した開発のメリットは、従来の詳細設計書やタスク管理表を使うよりもスピーディーに開発工程を管理できることです。分散型のチーム開発を行っているのであれば、顔を付き合わせて進捗打ち合わせをすることができないので、オンラインで適宜参照できるチケット管理型の方が適していると言えるでしょう。
ただし、チケットを起票しさえすれば開発がうまく進むわけではなく、チケットの内容をしっかり記述する、進捗ステータスを状況に合わせて適宜変更するなど運用の工夫が必要です。その際にコミュニケーションツールとしてチャットも組み合わせて活用するとよいでしょう。
チャットツールは開発チームだけでなく、様々な業務で活用されるようになってきています。代表例としてSlackが挙げられますが、MatterMostなど様々なチャットツールが使われています。
チャットツールのメリットは、時間が決められた打ち合わせなどに依らず、リアルタイムに情報を共有したり、課題を解決することができる点にあるでしょう。特に普段から顔を合わせているわけではない分散型チーム開発の場合、疑問点を早く解決することが手戻りを少なくするなど開発するプログラムの品質を高め、開発効率を高めるポイントといえます。
また、CI/CDツールなどと連携して自動的に行われる処理の結果、特にエラー発生の通知を受け取るなど、フロントエンドツールとしても活用できます。
小規模な開発ならばともかく、規模が大きな開発プロジェクトになると、参画するメンバーの企業もバラバラとなり、人数もそれなりに多くなります。これらのメンバーをすべて同じ場所に集めてプロジェクトを進めるのも現実的ではありません。
あるプロジェクトの例では、ロジック開発、ユーザーインターフェース開発、インフラ構築を行うメンバーは別々の拠点で作業を行っています。
日常的なやり取りはチャットツール、チケット管理ツール、GitLabなどに備えられているWiki機能を使い、1週間に1回だけ定例会として全員が集まって、課題について議論する場を設けています。開発成果物はすべてGitのリポジトリで管理し、システムはクラウド上に構築しています。
分散型チーム開発は、様々なツールを組み合わせての活用と、密接なコミュニケーションを取ることが重要です。ただし、最初からあれもこれもやろうとするのではなく、少しずつできることから進めていく、ゆっくりと改善していくことが成功の秘訣ともいえるでしょう。
(日本仮想化技術株式会社 代表取締役社長兼CEO/宮原 徹)
※記載されている会社名、製品名、サービス名は各社の商標または登録商標です。