オールリモートだから生まれたコミュニケーション方法とは?
GitLabは包括的なDevSecOpsプラットフォームを展開する企業だ。プロダクトはオープンソースモデルで世界中のコントリビューターと強固なコミュニティを築いている。2011年設立、2014年法人化、2021年10月にはナスダックに上場した。特徴は、世界60ヶ国以上に2000名以上の従業員がいるにも関わらずオールリモートでオフィスを持たないことだ。
出社回帰の動きもあるなか、なぜそこまでオールリモートを徹底するのか。単に従業員の利便性や維持費といった経済的な理由だけではない。同社が理念として掲げ、またコーポレートミッションになっている「Everyone can contribute」が答えになるだろう。誰もが貢献できること。世界中のどこに住んでいても、どんなライフスタイルでも、能力と意欲があれば貢献できるようにする。
GitLab合同会社 Senior Solutions Architect 佐々木直晴氏は「いろんな制約があるなかでも“Everyone can contoribute”するためにはオールリモート。生産性や経済的な合理性とは違うレイヤーの議論なのです」と話す。

オールリモート環境下では同期コミュニケーション(リアルタイムでの対話)に制約が生じるため、非同期コミュニケーション(各自が都合の良いタイミングで行う対話)が奨励されている。この実践を効果的に支えるのが、徹底したドキュメント化によるSSOT(Single Source of Truth:信頼できる唯一の情報源)の確立だ。このSSOTが共通のコンテクストを提供するため、リモートワーク環境下であっても円滑なコラボレーションが可能となる。
またこうしたコンテクストの共有にあたっては、オンラインだけでなく必要に応じてオフラインも活用する。例えば、同社では社員同士の交流を深める活動には一定の費用を負担する「Visiting Grant」制度がある。その制度を利用して、佐々木氏は大人数が乗れる車で北海道旅行をしたそうだ。国籍も仕事も違うメンバーが1台の車内で長い時間を共有する。「そうすると話すことしかやることがなく、みんなでたくさん身の上話を共有しました。いい思い出です」と佐々木氏は笑う。
こうしたコンテクストを基盤としたコラボレーションの理念はGitLabのプロダクト設計そのものにも深く反映されている。GitLabはソフトウェア開発のために必要な機能、例えばチケット管理、リポジトリ、生産性分析、セキュリティスキャン、CI/CDなどの機能を1つのプラットフォームに統合したDevSecOpsプラットフォーム。2024年のガートナーのマジック・クワドラントではDevOpsプラットフォームでリーダーとして評価されている。
1つのプラットフォームに集約される開発関連データが、SDLC全体を通じた豊富なコンテクストを形成する。この方活的なコンテクストに基づいて、さまざまな提案をするのがGitLabのAI「GitLab Duo」だ。

AI活用のレベルとそれぞれに浮上する課題
生成AIが登場すると、すぐに開発現場に導入が進んだ。今ではAIを使わない開発現場は少ないのではないだろうか。ただし活用のレベルには差があり、それぞれに課題もある。
活用レベル1:ソースコードの生成にAIを活用
ここは日常化が進んだ領域と言えるだろう。コーディングの生産性は向上したものの、ソフトウェア開発ではコーディングの時間は2割程度で、会議やトラブルシューティングなどコーディング以外の時間の方が圧倒的に長い。せっかくの効果も限定的となる。

活用レベル2:ソフトウェア開発のさまざまな局面でAIを活用
コーディングツール以外に、チケット管理ツール、CI/CDツール、セキュリティスキャンツールなど、ツール毎に内包されているAIを活用するような場合がこのレベルにあたる。ツール毎にライセンス料が発生するほか、ツール同士をいかにシームレスに連携させるかが課題となる。

活用レベル3:各局面に応じて優れたLLMを採用
さらに活用が進むと、各局面に応じて優れたLLMを採用する。例えばコーディングにはChatGPT、CI/CDにはGeminiなど。これらが「AI時代の新しいサイロ」となり、AIが学習すべきコンテクストをどう統合するかが課題となる。またデータプライバシーなどの問題も露呈する。

プロジェクトの経緯を把握して開発者を支援するGitLab Duo
そこで必要になるのがGitLabのAI「GitLab Duo」だ。先述したように、GitLabはソフトウェア開発に必要な全ての機能が1つのプラットフォームに統合されている。このアプローチにより、開発プロセス全体のデータが一元管理され、AIに対して一貫性のあるコンテクストを提供することが可能となる。その結果、GitLab Duoは開発者に対して、包括的な支援を効率的に行うことができる。例えばプロンプトベースのコード生成以外にも、イシューの議論を要約、テストコードをもとに仕様書を(リバースで)作成するといったことができる。

通常のクラウド環境だけではなく、オンプレミス環境でも利用可能だ。例えばローカルに閉じたLLMを使う、あるいは閉じたプライベート環境で使えるのも独自の強みとなる。
一般的に単独で使うAIは「スポットで入る助っ人」のような存在だ。優秀だが、与えられる情報が限られていれば、分かることも限られる。一方、GitLab Duoは開発全体のコンテクストを共有しているので、全て知っているチームメンバーのような存在だ。佐々木氏は「同じ釜の飯を食い、同じバンで北海道を旅行した仲間のように」と言う。
例えば、イシューでの議論を踏まえた上で最適なソースコードを提案したり、継続的インテグレーション(CI)での失敗時には、CIのログだけでなく、プラットフォーム上のあらゆる情報を参照した上で失敗の原因分析をしたり、脆弱性が検出された際には、既存のコードのどこに修正を加えたらよいかを提案したりといったように、開発フェーズ毎の断片的なサポートではなく、方活的なサポートが得られる。こうしたことは、1つのプラットフォームに集約されたデータを基に、一貫したコンテクストをAIが理解しているからこそ可能となる。
佐々木氏は次のようなデモを披露した。まずはCIで失敗したケース。新たなロジックを組み込んだら、CIでうまくいかなくなることがある。そういう時、CIに詳しいメンバーを呼び「どこが悪いか見てくれる?」と相談する。人間だと休暇中や離席中ですぐに聞けないこともあるが、AI(GitLab Duo)なら属人化せずにいつでも質問できる。
GitLab Duoで「CIで失敗した理由を教えてください」と依頼すると、過去のCIのログやソースコード変更履歴も参照し、根本原因を探し当てる。例えば「正常終了を期待したケースで、例外が発生しています。このstaticなmethodに、こういうexceptionハンドリングを加えてください」と対処方法まで提案してくれる。
ポイントは、提案したmethod名やソースコードが、ログにはないものということだ。AIがCIのログしか見ない場合、ソースコードでどのような関数や引数を使っているかは知ることができない。これまで通り、例えばChatGPTのプロンプトにCIのログだけコピペして原因分析を求めても、コンテクストを共有していないためこうした修正案を出すことはできないはずだ。一方GitLab Duoは、このCIがどのようなソースコードのコミットからキックされたかを把握できる。そのため文脈に応じた修正案を示すことができる。
佐々木氏は「こうした効果がいろんなところにまぶされています。AIが全てのコンテクストを知り尽くしている仲間のように活躍できます」と強調する。
あらためてAIがチームメンバーの一員として活躍することで得られる効果を振り返ってみよう。繰り返し述べているようにコンテクストを踏まえたコーディング、脆弱性の自動的な検出・修正提案、CI/CDの失敗分析などトラブルシューティングのような開発支援がある。他にも、これまでの議論の要約をAIがやることで、新人や新規メンバーがスムーズにチームの仲間入りすることができる。プロジェクトに途中から入るメンバーにとって、プロジェクトのコンテクストをキャッチアップするために延々と続くイシューを読むのは大変だ。だから、AIが要約してくれることは時間の短縮にも繋がる。
最後に佐々木氏は次のように述べた。「ぜひAIをチームの一員として招いてみてください。GitLabは開発者がより創造的な作業に集中できるような環境を作れるようにとGitLab Duoを提供しています。それから普段のチームメンバーと一緒に北海道などに旅行してみてください。本当に身の上話しかすることがないので、互いの人生のコンテクストを共有できて、とても強いチームになると思います!」
3月26日開催!GitLabを90分で学ぶウェビナー
GitLabでは誰でも無料でお使いいただける、Community Editionを提供しております。このウェビナーではその機能を90分で解説いたします!
是非ご参加ください!