Home

公開日

Metaは開発者の生産性をどう計測している? DAT による効果測定とその実例

img of Metaは開発者の生産性をどう計測している? DAT による効果測定とその実例

巨大テック企業として知られるMeta社では、エンジニアが最大の資産であるという考えに基づき、エンジニアの生産性向上は重要な課題と位置付けられています。Meta社では、エンジニアリング組織全体で生産性向上をミッションとして掲げ、様々な取り組みを推進しています。

本記事では、その取り組みの中でも画期的な指標「Diff Authoring Time (DAT)」に焦点を当て、Meta社の公式Podcastである”Meta Tech Podcast”のエピソード「Diff Authoring Time: Measuring developer productivity at Meta」および「To type or not to type — Measuring productivity impact with DAT」の内容をもとに、その詳細に迫ります。DATの概要から、実際の活用事例、そして今後の展望までを解説し、Meta社のデータドリブンな開発効率化への挑戦を紹介します。

Metaにおけるエンジニアの生産性向上施策の効果測定指標「DAT」とは?

Diff Authoring Time (以下、DAT) とは、エンジニアがコードの変更を提出するまでにかかる時間、つまり「diffのオーサリング時間」を計測する指標です。Meta社では、エンジニアがより効率的に、そして快適に開発を行える環境を整備するために、DATを重要な指標の1つとして活用しています。

DATの定義と測定方法

DATは、エンジニアがコードの編集を開始してから、その変更をコードレビューに提出するまでの時間を計測します。具体的には、エンジニアがIDE(統合開発環境)上でコーディング作業を行い、その変更を「diff」と呼ばれる単位でコミットし、最終的にコードレビューのために提出するまでの一連のプロセスにかかる時間を指します。

DAT計測における技術的詳細

DATの計測には、OSレベルのテレメトリと、IDEから収集されるデータの2つが活用されています。OSレベルのテレメトリにより、ユーザーがどのアプリケーションで作業をしているか、またそのアプリケーションがアクティブ状態なのか、それともバックグラウンド状態なのかを判別します。これにより、ユーザーが実際にコーディング作業に費やした時間をより正確に把握することが可能です。

さらに、DATを算出するためには、IDEからバージョン管理システム( Mercurial )の情報を取得します。具体的には、IDE上でいつ、どのような「コミット」が作成されたかという情報です。この情報とOSレベルのアクティビティ情報を組み合わせることで、「どのdiffの作成にどれだけの時間がかかったか」を特定することができます。

DATの計測は、現在Meta社内で標準的に使用されている VS Code および Android Studio のプラグインとして提供されており、これらのIDEを使用するエンジニアであれば、特別な設定を行うことなく、自動的にDATが計測される仕組みになっています。ただし、他のIDEを使用している場合や、プラグインが利用できない場合は、OSレベルのテレメトリからコーディングに関連するイベントを検知し、直近のコミット情報と関連付けることである程度DATを算出することも可能です。

DAT計測におけるエッジケースとその対応

DAT計測においては、いくつかのエッジケースが存在します。例えば、複数のdiffを並行して作成するする場合や、コーディング作業中に長時間離席する場合などです。

複数のdiffを並行して作成するケースでは、それぞれのdiff作成に要した時間を正確に分離することが困難です。現在のDATでは、最後にコミットされたdiffにそれ以前の作業時間を紐づけることで、この問題に対処しています。また、長時間離席する場合は、OSレベルのテレメトリ情報から、ユーザーが非アクティブ状態であったことを検知し、その時間帯を計測から除外します。

また、DATはあくまで「diffのオーサリング時間」を計測するものであり、エンジニアの勤務時間全体を計測するものではありません。そのため、会議やメール対応などの時間、つまり開発に関係のない時間はDATには含まれません。

DATを活用した具体的成果:Hack言語、コード共有、AIツールの事例から

Meta社では、DATを活用して、様々な施策の効果測定を行っています。ここでは、その中でも特に興味深い3つの事例、「Hack言語における型アノテーション導入の効果」、「コード共有フレームワーク導入の効果」、そして「AIツール導入による生産性への影響評価」について紹介します。

事例1: Hack言語における型アノテーション導入による生産性向上

Meta社では、PHPをベースに開発された、静的型付け言語「 Hack 」を広く利用しています。Hack言語チームは、型アノテーションの有無がエンジニアの生産性に与える影響を調査するため、DATを用いた実験を行いました。

具体的には、型アノテーションが導入される前と後で、Hackを用いて開発を行うエンジニアのDATにどのような変化が生じたかを比較しました。その結果、型アノテーションを使用することで、DATが約14%改善することが明らかになりました。つまり、型アノテーションを導入することで、エンジニアはより短時間でコードの変更を完了できるようになったということです。

この結果は、静的型付け言語が、動的型付け言語と比較して、大規模なコードベースにおける開発効率を高める可能性があることを示唆しています。型アノテーションによって、コンパイル時に型エラーを検出し、早期にバグを修正できるようになったことが、生産性向上に寄与したと考えられます。

事例2: コード共有フレームワーク導入による開発効率化

Meta社の開発現場では、UIなどのコードを一度書けば、Android、iOS、Webなど複数のプラットフォームで再利用できるコード共有フレームワークが導入されています。このフレームワークの導入効果を測定するためにも、DATが活用されました。

具体的には、コード共有フレームワークを用いて開発されたdiffと、従来の方法(プラットフォームごとに個別に開発)で開発されたdiffのDATを比較しました。その結果、コード共有フレームワークを利用することで、開発者一人当たりの「diff」作成までにかかる時間が大幅に短縮されることが確認されました。特に、複数のプラットフォームをターゲットとするdiffにおいては、平均で50%以上の時間節約効果が見られ、コード共有のメリットが数値として証明されました。

この結果は、コード共有フレームワークが、特に複数のプラットフォームをターゲットとする開発において、開発効率を大幅に向上させることを示しています。

事例3: AIツール活用による生産性への影響評価

近年、AI技術の発展に伴い、ソフトウェア開発の現場でもAIツールの活用が進んでいます。Meta社では、AIが生成したコードと、エンジニアが手動で作成したコードのDATを比較することで、AIツールがエンジニアの生産性に与える影響を評価しています。

初期段階の実験では、AIツールが生成したコードは、人間が作成したコードと比較して、DATが長くなる傾向が見られました。つまり、AIツールは、まだ人間のエンジニアほど効率的にコードを生成することはできていないということです。しかし、この結果は、AIツールの改善に向けた貴重なフィードバックとなり、今後の開発に活かされています。

DATの今後に向けて:継続的な改善とAI共存時代における展望

DATは、Meta社のエンジニアの生産性向上に大きく貢献していますが、現状に満足することなく、継続的な改善と発展が続けられています。現在、第5世代のDATが稼働しており、将来的には、よりシンプルな単一の指標としてDATを再構築する計画や、他の指標と組み合わせることで、より詳細な分析を可能にする構想が存在し、第6世代以降の開発が進められています。

さらに、AIと共存する未来のソフトウェア開発において、DATは重要な役割を果たすと考えられます。AIツールが生成したコードの品質評価や、AIツールとエンジニアの協調を最適化するための指標として、DATを活用できる可能性があります。Meta社では、AIツールの開発とDATの改善を並行して進めることで、エンジニアがより創造的で価値の高い仕事に集中できる環境の実現を目指しています。

まとめ

本記事では、Meta社におけるエンジニアの生産性向上への取り組みの一環として開発された指標「DAT」について、その概要、具体的な活用事例、そして今後の展望を紹介しました。DATは、エンジニアの開発プロセスをデータに基づいて分析し、改善するための強力なツールです。今後も、DATの活用と改善を通じて、エンジニアがより効率的に、そして快適に開発を行える環境が整備されていくことが期待されます。そして、この取り組みは、Meta社内にとどまらず、他の多くの企業にとっても参考になる事例と言えるでしょう。


開発生産性やチームビルディングにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!

参考資料: