ITpro Special
週間WEEKLY ITpro Special ITpro

開発事例:マピオンの効率開発を見る

チームでソフトウエアを開発するのに
各自の進捗を把握できるツール

GitHub Japan カントリー・マネージャー 藤田 純 氏
GitHub Japan
カントリー・マネージャー
藤田 純 氏

企業におけるソフトウエア開発は、大勢の開発者が作業をするため、各自の進捗状況を把握することがプロジェクト管理上、重要になってくる。従来は、開発のステージごとに事後的にバージョン管理を見たり、自己申告などで集計したりすることにより、進捗状況を把握していた。しかし、開発案件が複雑になり、複数のアプリケーションが影響を及ぼし合っているときに、ある開発者が今、どこの何を開発しているのか、リアルタイムに“見える化”していくことが効率的な開発に求められるようになってきた。

 「Git」はいつ、誰が、どのような目的でコードを修正したのかを記録できるバージョン管理ツールである。「GitHub」は、さらにチーム開発に適した機能を追加して開発を効率化する共有ウェブサービスだ。今回のセッションでは、ベンダーの日本法人GitHub Japan、ユーザー事例としてマピオン、日本における販売代理店のマクニカネットワークスが順番に登壇して講演を行った。

世界中で1500万ユーザーが利用
3400万の開発プロジェクトで実績

 GitHub Japanのカントリー・マネージャーである藤田純氏は、GitHubについて開発効率化を支援する「Common Network」「Integrated Platform」「GitHub Flow」という3つの要素があると述べた。Common Networkは、全ての開発チームが情報共有するためのハブとしての役割。Integrated Platformは、他社のソフトウエア開発支援ツールと連携する開発基盤としての機能する。GitHub Flowは、シンプルで効果的なワークフローを提供する。

 藤田氏は「ソフトウエアをコーディングし、テストを行い、実際に使ってみる、といった開発サイクルを回しながら作業状況を管理できます。また、誰もが見られるように透明性を高めるツールになっているのです」と開発チームの連携度合が高まることによる生産性アップを強調した。

 販売実績として世界で、1500万のユーザーがいて、世界中のソースコードの開発プロジェクトが3400万もあり、世界でも有数のオープンソースのコミュニティになっているという。GitHubを使っている団体・企業はオープンソース関係では、HadoopやMySQLなどに使われ、企業ではMicrosoftやIBM、Intel、SAP、Salesforce.com、Autodesk、Facebookなどソフトウエア大手に加えて、GEやBloomberg、Walmartなどの大手企業も使っている。

地図情報サービスのマピオンが
使い勝手を語る

マピオン 事業統括部 シニアエンジニア 中村 浩士 氏
マピオン
事業統括部 シニアエンジニア
中村 浩士 氏

 今回の講演では、地図情報をインターネットで提供しているマピオンが、大企業向けのツール「GitHub Enterprise(GHE)」を使った事例を紹介した。マピオンは2012年3月からGHEを使っており、。2016年8月現在60名以上のアクティブユーザー、これまで開発してきたリポジトリーの数は450以上にも上る。

 マピオンの事例紹介は、社内のアプリケーションエンジニアから見たメリット、インフラエンジニアから見たメリットをそれぞれ紹介した。同社のアプリケーションエンジニアである中村浩士氏は、メリットとして、
(1)コードベースに対するアクティビティの可視化、
(2)プルリクエストによるコードレビューの定着、
(3)Webアプリケーションの開発ワークフローに、継続的インテグレーション(CI)やデプロイを統合、
(4)スマートフォンアプリの開発ワークフローで、ビルド配信の自動化による開発サイクルの高速化
--の4点を挙げた。

スマホのアプリ開発は
手間がかかる

 特に(4)のスマホのアプリ開発の高速化について紹介した。改善前のスマホアプリの開発ワークフローでは、開発者がコードを確定(Commit)したり、マージ(Merge)したりして変更を加えていく、そしてあるタイミングで、ローカルの開発環境でビルドする。ビルドしたものを検証端末へインストールし、テストする。さらにテスト結果を開発者にフィードバックする――といった流れになる(図1)。

改善目のスマホアプリの開発ワークフロー
図1 改善目のスマホアプリの開発ワークフロー
[画像のクリックで拡大表示]

 「実際には、一連の流れは何周も行われます。アジャイル開発においてはこのサイクルを頻繁に回すことになるので、そのたびにビルドとインストールが行われ、これが結構な手間となって、期待するような開発スピードが得られないのです」と中村氏はアジャイル開発のボトルネックを指摘する。

 このため、マピオンではGHEにより開発ワークフローを改善することにした(図2)。なるべく自動化を進め、開発を迅速かつ丁寧に進めることにした。最初にコードの変更作業を行い、GHEによるマージを行うと、エグゼクティブによってマージされたことがCIサーバー上にあるCIツールJenkinsの方へ自動的に通知される。予め設定することで、マージなどのイベントが発生すると、任意の他のシステムに通知を送れる。

改善後のスマホアプリの開発ワークフロー
図2 改善後のスマホアプリの開発ワークフロー
[画像のクリックで拡大表示]

 次に、通知を受けたJenkinsは、最新のソースコードの自動的テストとビルドを実行する。さらに成果物を回収サーバーがアップロードして、予め設定しておいた検証端末にビルド結果を自動的にメールで通知する。このメールの中には最新ビルドをインストールするためのURLが記載されている。

 チャットツールのSlackを利用することで、Jenkinsがその結果をSlackに通知。メールを受信した検証者が通知内のURLをアクセスするだけで、最新ビルドが実装される。インストールが完了したら検証を行い、さらに開発チームにフィードバックする――これが改善後の自動化された開発ワークフローだ。

自動化、ミス撲滅で
速い開発と高い品質

 CIサーバーを中心としたワークフローが自動化されている。このワークフローで改善されている点をまとめてみると、主に3点ある。第1は、これまで手作業で行っていたビルドやインストールが自動化されていたこと。マージを行ったあとは、ネットワーク経由で検証端末へのインストールまでの準備が完了しているため、インストールまでの手間がほぼ解消している。

 第2は、ビルド環境による作業ミスの撲滅である。以前は、一部のスマホのアプリケーション開発で、ビルド環境の変数によるデバッグモードの切り替えを設定していたが、これに起因した失敗を経験している。作業ミスがなくなれば、ビルド環境で成果物が変わってしまう問題もない。

 第3は、CIとの統合によって自動テストの実行が必然的になり、ワークフローに組み込まれ、自動テストをクリアしていないことが、そもそもなくなった。以上のことから、実装からフィードバックまでの開発サイクルが短縮した結果、アプリケーションの品質が大きく向上したという。

ソースコードを社内環境に持てる
インフラエンジニアは安定性を重視

マピオン サービス技術部 インフラグループ 須藤 宏典 氏
マピオン
サービス技術部 インフラグループ
須藤 宏典 氏

 GHEは、インフラエンジニアから見てもメリットがある。マピオンのインフラグループの須藤宏典氏は、GHEのメリットとして、ソースコードを社内環境に持てるので、その結果、ソース管理のセキュリティポリシーにも抵触しにくいことなどについて語った。同社のGHEシステムはアマゾンのAWSクラウド上に構築しているが、別のデータセンターから専用線でAWSにつなげており、AWSへのアクセスは、内部ネットワークを通じて行っている。このため、内部のクラウドで使っているように見えるという。

 インフラエンジニアはどちらかと言えば保守的に考える傾向があり、むやみにバージョンアップせずこれまでの安定性を担保したい。一方、GHEの進化が早いので、バージョンアップして進化についていきたいという要求もある。「バージョンアップと安定性確保の両立を図ることが重要だという視点で見ると、GHEはクラウドとの相性が良く、しかもGHEのAWS版が入手可能なので、簡単に構築できました」(須藤氏)。GHEのイメージAMIが用意されているため、それを起動してGUIで設定するだけで済んだという。

バージョンアップが簡単・安全
講習会など教育サービスも用意

マクニカネットワークス 営業統括部 データインテリジェンス営業部 第3課 課長 根本 竜也 氏
マクニカネットワークス
営業統括部 データインテリジェンス営業部 第3課 課長
根本 竜也 氏

 何よりもハージョンアップへの移行は容易でしかも安定に移行できる。アマゾンのAmazon EC2(Elastic Compute Cloud)仮想サーバーホスティングサービスを使っているが、GHEの旧バージョンのEC2のデータを、別のEC2サーバーにダンプして、新バージョンのEC2にリストアする。ここでは、仮想的に2台のサーバーに旧バージョンと新バージョンのGHEが入っている形になる。そのあと旧バージョンに向けていたDNSを新バージョンのサーバーに切り替え、旧バージョンのサーバーを停止する。これだけである。

 このアップグレードでのメリットは2週間程度で新バージョンを検証し、その間、旧バージョンをいつでも再開できる状態にしておくことができる。このため、検証が終われば新バージョンに切り替えられるため比較的短時間でバージョンアップができるというわけだ。

 GHEの一次代理店であるマクニカネットワークスの根本竜也氏は、「GHEの啓蒙のために、講習会を開いています。旅行代理店や製造業、金融、SIerなどの参加者があり、ユーザーが着実に広がっています」(http://www.macnica.net/github/seminar.html) と実績をアピールした。同社はインスタンスの構築や、GitHub.comからの移行、トレーニング、保守、運用(カスタマイズやアップグレード)などのサポートおよび支援サービスを行っている。

お問い合わせ