Special
» 2021年04月28日 10時00分 公開

リモート環境での効率的な開発に欠かせない「3つのポイント」 グリーとラックはいかにしてGitHubを活用して実現したかコロナ禍の開発効率向上に何が必要?

社会環境が著しく変化する中で開発者や運用管理者の働き方もテレワークに変わりつつある。では、リモート環境でも開発や運用を効率化できるポイントはどこにあるのか。

[PR/@IT]
PR

 新型コロナウイルス感染症の拡大により、テレワークが広まる中で、開発者や運用管理者もテレワークで作業する機会が増えている。では、リモート環境において開発や運用を効率化できるポイントはどこにあるのか。

 GitHubは2021年3月25日、Webキャスト「GitHub Enterprise Summit - リモート環境での生産性向上」を開催。「リモート環境下でのコミュニケーション/コラボレーションの継続」をテーマに「自動化による工数削減」「ソフトウェア開発の見える化」といったトピックについて、GitHubとマイクロソフトのほか、GitHubの利用企業としてグリーとラックがそれぞれの取り組みを語った。

効率的な開発に欠かせない3つのポイント

 冒頭のセッションは、GitHubのシニア ソリューションズ エンジニア 田中裕一氏が登壇。「GitHubで実現するモダンなソフトウェア開発」と題し、ソフトウェアの品質担保とスケジュール管理の問題点をどのように解決し、どう取り組みを進めていくかなどついて指針を示した。

 田中氏は、ソフトウェアの品質を担保すると同時にリリーススケジュールを守ることが難しい背景について「事前にソフトウェア開発全体を見積もることが難しいため、プロジェクト終盤で計画通りに終わらないことが判明します。納品が間に合うように機能を削ったり、人海戦術で対処したりする方法もありますが、品質を犠牲にしてしまうケースが多くあります」と説明した。

 では、こうした問題をどう解決していけばよいのか。そこで重要になるのが、アジャイル開発により、顧客が満足する高品質なソフトウェアを効率的に開発することだ。田中氏によると、高品質なソフトウェア開発を実践するためには3つのポイントがあるという。

 1つ目は、「小さい単位で機能を完成させていく」こと。

「完成とは、リリース可能な状態まで持っていくことです。小さい単位で開発〜完成を繰り返し、機能を作り上げることで、品質の高いソフトウェアにつながります。注意が必要なのは、顧客にリリースするかどうかは別問題ということです。ビジネスの観点では、ユーザーは頻繁なリリースを求めていない場合も想定する必要があります。ユーザーに届けられる状態を頻繁に作っていくことが重要です」(田中氏)

完成した実績を元に残りのプロジェクト計画を更新することが重要だとした(出典:Github)

 2つ目は、「自動化は必須」ということ。

 「改善を繰り返すことで、テスト、ビルド、デプロイなどの作業回数は増えていきます。さらに飛躍的に改善をしようとすると、手作業では限界です。自動化は『あればいい』ではなく『必須』だと考えてください」(田中氏)

 3つ目は、「自動化導入のコストを下げる」こと。

 「GitHubが提供する機能やエコシステムを活用することで、小さい単位で開発を回すサイクルが始めやすくなり、低コストで自動化を導入、推進できるようになります」(田中氏)

 最後に田中氏は、これらのポイントを踏まえてソフトウェア開発の在り方を変革させてほしいと訴えた。

DevOpsを推進するための開発ツールやサービスを提供

 次のセッションでは、日本マイクロソフトのクラウド&ソリューション事業本部 Azure AppDevスペシャリスト 服部佑樹氏が登壇。「Code to Cloud! -開発環境クラウド化!-」と題し、開発環境や文化、プラクティスの変化や、リモート開発においてクラウドを活用するメリット、各種ツールの機能を紹介した。

 服部氏はまず、デジタルトランスフォーメーション(DX)の取り組みが進む中、アプリケーション開発の在り方が変化しており、クラウドネイティブ、インテリジェント、オープンソースソフトウェア(OSS)、顧客エクスペリエンスが重視されるようになったと指摘。

 「これからのサービスを作るためには、最新のエンジニアリング手法が不可欠です。問題を解決し、新しい技術に適応し、チーム間で協力しあうために、重要になってきたのがDevOpsです。マイクロソフトはDevOpsを、ユーザーに継続的な価値を提供するために人、プロセス、技術を統合することと定義し、DevOpsの可能性を再構築しています」(服部氏)

 環境が激変する中、高い生産性を保ち、継続して成長するためには、開発プロセスに柔軟に適応できるツールやサービスが重要になる。そこで、マイクロソフトは統合開発環境の「Microsoft Visual Studio(以下、Visual Studio)」や、ブラウザベースで直接開発ができる「GitHub Codespaces」などを通じて、どこからでもコーディング、共同作業ができるようにしている。

Visual StudioでGitHubのプルリクエスト管理をしたり、ソースコードのレビューをしたりすることができる(出典:日本マイクロソフト)

 「開発のワークフローは、プランニング、デペロップ、デリバリー、オペレーションで構成されますが、マイクロソフトはそれぞれツールやサービスを提供しています。Azure DevOpsでは、チーム単位の作業を計画、追跡、議論できます。Visual StudioでGitHubのプルリクエスト管理をしたり、Azureに直接コードをデプロイしたりできます。また、GitHub Actionsを利用したCI/CD(継続的インテグレーション/継続的デリバリー)で、コードからクラウドにデプロイするワークフローを自動化できます。Azure App Insightsによる高度な分析とモニタリングも可能です」(服部氏)

 服部氏は、それぞれの機能についてデモを交えて紹介し「マイクロソフトは皆さまの組織を支援するための技術とツールを持っています」と強調した。

オンプレからクラウドへの移行を進めるグリーの事例

 グリーのセッションでは、開発本部 インフラストラクチャ部の林 記代一氏が登壇。「Code to Cloud at GREE -AzureによるGitHub Enterprise Cloudの導入-」と題して、グリーがGitHub Enterprise Cloudへの移行で工夫しているさまざまなポイントを紹介した。

 グリーは2012年1月からGitHub Enterprise Serverをオンプレミスで利用して開発に取り組んできたが、コロナ禍の影響もあり、従業員のさまざまな利用環境に対応することを目指した取り組みを進めている。その1つが、最新の開発環境をグリーグループ全社に展開するためのGitHub Enterprise Cloudへの移行だ。

 「テレワークが活発になる中で複数の課題が出てきていました。VPNなどを使ってGitHub Enterprise Serverを利用していたのですが、トラフィックが増え、全体の80〜90%の帯域を利用する状況でした。そこで、今後の展開を視野に、最新の環境を可能な限り素早く、安全に提供することを目指してクラウド移行を決めました」(林氏)

 GitHub Enterprise Cloudを利用するために工夫しているポイントは大きく2つある。1つは、利用ユーザー管理で、もう1つはAudit(監査ログ)管理だ。

 「会社として統制を効かせるには利用ユーザー管理は必須です。人が作って利用する以上、ミスは必ず起きるのでリカバリーが重要になってきます。また、Auditにより事後で何らかのインシデントが発生しても説明が可能であることも重要です」(林氏)

2つのAudit利用を組み合わせ、全体をカバーしている(出典:グリー)

Azure ADでSSOを実現、GitHub Actionsで自動化を推進

 利用ユーザー管理はAzure Active Directory(AD)を使ったシングルサインオン(SSO)環境を構築している。GitHub Enterprise Cloudを利用する場合、個人向けのgithub.comのユーザーと企業向けのEnterpriseユーザーとを区別する必要がある。

 「github.comは個人の世界なので会社の統制という観点では手出しできません。そこでEnterprise版に対して、Azure ADでSSOを強制します。ただ、GitHub Enterprise Cloudは、個人ユーザーとしてログインし、その後はGitHub Enterprise配下のOrganizationやリポジトリにアクセスする仕組みです。そのため、SSH KeyやPersonal Access TokenについてもAzure ADの認証を通す必要があります」(林氏)

 Audit管理は、Azure ADのAuditと、github.comのAuditの2つを組み合わせることで全体をカバーしている。Azure ADで入退社など人事関連の変更が発生したら、連携してgithub.comでユーザーの削除や棚卸しを実施する。github.comでは、より強い権限を用いた作業やgit pull/fetchなどが適切に行われているかの監査を実施する。

 「Azureが主とする内容はAzureで、GitHubが主とする内容ならGitHub内で実施することを基本にしています。Azure ADのauditログからアラートを上げ、GitHub Actionsを使って削除や変更をしています」(林氏)

 林氏は「ゴールはユーザーにSSOをしてもらうことではなく、IDの変化に合わせた削除や権限の変更が柔軟にできることです。手作業による運用は破綻するため、自動化に取り組み、快適な開発、運用環境を実現することが重要です」とアドバイスした。

システム開発現場で組織横断的な導入を目指すラックの事例

 最終セッションは「GitHub Enterprise導入に向けた検討ポイント」と題し、ラックのアジャイル開発センター長 大沼重成氏が登壇した。

 ラックは、黎明(れいめい)期に日本で情報セキュリティ事業を展開し、セキュリティ対策におけるパイオニアの1社として知られる。同社の創業事業はシステムインテグレーション(SI)であり、現在もセキュリティ対策の強みを生かしたSI事業を展開している。こうした背景を持つ同社がGitHub Enterprise導入に当たってどのような点に注目しているのか、セキュリティ分野を中心に紹介した。

 2018年7月にはDXの取り組みを加速させる顧客企業向けにシステム開発を支援するため、アジャイル開発センターを設立。アジャイル開発のメソッドの開発やノウハウの蓄積を行い、顧客との共創による新事業創出などに取り組んでいる。同センターを中心に、GitHub Enterprise Cloudを導入し、システム開発の現場に対する組織横断的な取り組みを加速させようとている。

 「社内アクセスが前提だった開発現場は一斉にリモートアクセスする環境に変化しました。VPNによる帯域の逼迫(ひっぱく)や、個別構築したリポジトリに対する現地対応の遅れが課題となる中、今後はリモートアクセス前提の環境が求められていくと考えています。ITエンジニアのさまざまな働き方にも適応していく必要があります。そこで注目したのがGitHub Enterprise Cloudでした」(大沼氏)

リモート開発との相性の良さなどがGitHub Enterprise Cloud導入のきっかけに(出典:ラック)

 導入に当たっては、プロジェクトごとにOrganizationを割り当て、個々のOrganization に対して他のプロジェクトや組織外から参照ができないような設計を前提に検討しているという。

セキュリティ対策を中心に重点的に5つのポイントを検討

 ただ、セキュリティ面では、幾つか注意を要するポイントが出てきたという。大沼氏によると、重点的に検討しているポイントは5つある。

 1つ目は、リポジトリの公開、複製への対応だ。リポジトリをパブリックな状態で作成したり、リポジトリを個人ユーザーのパブリックなリポジトリに複製したりするとソースコードの漏えいにつながる。それを防ぐためには、リポジトリ公開、複製、公開リポジトリの点検、運用ルールの整備と教育が必要になる。

 2つ目は、Organizationの公開だ。Organizationは、リポジトリのように非公開に設定できない。外部から名前部分が見えてしまうため、Organizationの命名規則、ガイドラインを作成し、定期的に点検する必要がある。

 3つ目は、GitHubユーザーアカウントだ。github.comでは、仕事用アカウントとプライベート用アカウントが混在し、アカウント情報の統制を取ることが難しくなる可能性がある。そこで既存アカウントの招待可否を決めたり、アカウント設定を点検したり、新規アカウント作成手順や設定ガイドラインを作成したりすることが必要になる。

 4つ目は、認証だ。アカウントの不正利用を防ぐために、認証の強化、監査ログを点検する必要がある。

 5つ目は、プロジェクト活用だ。開発者やチームで「GitHubが活用できない」「使われない」というケースが生じやすい。これに対し、トレーニングや利用支援、社内説明が必要になる。

 大沼氏は最後に「機能による制約だけでなく、運用をどう進めるか、社内説明、トレーニングを含めて検討したうえで、最終的に社内の利用者にとって、効果のある導入を実現したいと考えています」と今後の抱負を述べ、講演を締めくくった。

Copyright © ITmedia, Inc. All Rights Reserved.


提供:日本マイクロソフト株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2021年7月4日

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。