「開発生産性Conference 2024」参加レポート
はじめに
ソフトウェアエンジニアの江﨑です。私は日々の社内基盤の開発業務と並行して、チームの開発プロセスの改善に取り組んでいます。 開発生産性についての知見を深めるため、6月28日から29日にかけて、ファインディ株式会社主催の「開発生産性Conference 2024」1に参加しました。
本カンファレンスは、国内外の開発生産性に関する最新の知見が共有される貴重な場です。 今回は、事業インパクトという観点から、開発生産性の捉え方や進め方・具体的な生産性向上施策などの多岐にわたるセッションが開催され、非常に有意義な学びを得ることができました。 虎ノ門ヒルズフォーラムでのオフライン開催で、直接発表者の方に質問できたり、協賛企業ブースで、各社の開発生産性向上に向けた取り組みやツールについて個別で話を聞くことができたりとオフライン開催ならではの利点を十分に体験することができました。
本稿では、このカンファレンスで得た知見と、それを踏まえたエムシーデジタルの現在の取り組み、そして今後挑戦したい施策について紹介させていただきます。
参加したセッションとその学び
2日間にわたるセッションではさまざまな業界・規模の開発組織の開発生産性に関する事例を聴く機会を得ました。最も印象的だったのは、多くの開発組織が開発生産性をアウトプットではなくアウトカムの生産性として捉えていることでした。 つまり、コストに対してどれだけ顧客価値を高める開発ができるかという、事業成長を重視した視点が共通していました。 単なる生産性向上を超えて、価値創造にフォーカスした取り組みが多く紹介されていました。
また、参加を通して、開発生産性向上のためには技術的な取り組みだけでなく、組織文化の醸成やコミュニケーションの質の向上も同様に重要であることを再認識しました。 紹介された各社の事例は一朝一夕には実現できない長期的な取り組みが多く、粘り強く継続的に改善を重ねていく必要があると感じました。
続いて、特に印象に残った3つのセッションの内容と学びを紹介します。
フィーチャー開発からホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~
このセッションでは、ソフトウェア開発を「本質的作業」(アウトカムを増やす)と「偶有的作業」(アウトプットを増やす)に分類し、事業成長のフェーズに応じて以下のようにソフトウェア開発を進めていたと説明がありました。
ワンチームでの開発フェーズ
本質的作業: ドメイン駆動設計とスクラム開発を採用し、核心的な機能の開発に集中して迅速にリリースする
偶有的作業: スピードを重視しつつも、データ構造の質の確保や自動テスト整備のためにリソースを割く
チーム分化してのフィーチャー開発フェーズ
本質的作業: 各フィーチャーチームで顧客価値を最大化するための施策を愚直に実施する
偶有的作業: 横櫛横断で技術的品質や開発生産性を向上させる取り組みを自律的に実施する
創業期のワンチームのフェーズでは役に立つものを素早く提供するための本質的作業に取り組みながら、今後の事業成長を技術的に加速させるための偶有的作業にも並行して取り組まれていることが伺えました。また、チームが分化しフィーチャー開発が進むフェーズでは、顧客価値を最大化する開発を行うためにヒアリングや動画鑑賞会など本質的作業を丁寧に行っている印象を受けました。
紹介された本質的作業/偶有的作業を参考にして、エムシーデジタルも事業やプロダクトのフェーズに合わせて開発を進めていきたいと感じました。
Mastering Developer Experience: A Roadmap to Success
DevEx(Developer Experience)を向上させるロードマップについてのセッションでした。このセッションの内容を理解する上で重要な前提知識として、DevExに影響を与える3つの主要な要因があります。詳しくは、ファインディ株式会社のテックブログ2 を参照してください。
Feedback Loops(フィードバックループ)
Cognitive Load(認知負荷)
Flow State(フロー状態)
DevExを向上させるロードマップは以下の3つのステップを循環的に進めていく形で構成されています。
ステータスを確認して次の方針を決定する
計画を練る
実行する
「ステータスを確認して次の方針を決定する」ステップにおいて、ステータスを確認して評価するとよい例としてドキュメンテーションやテストパフォーマンス、ビルドパフォーマンスなどが挙げられていました。ドキュメンテーションの充実が開発生産性を50%も引き上げるという調査結果から、ドキュメント整備の重要性が示されていました。
「計画を練る」ステップにおいては、以下の3つの内容を全て計画することが重要であるとされていました。
Technical Details: DevEx向上のために必要な作業の技術的な詳細を詰める
Cultural Details: DevEx向上の活動を実施してもらうための土壌を作る
Communications Plan: DevEx向上の活動を全員で認識を合わせて進める
「実行する」ステップにおいては、前ステップの計画を全て実行し、DevExの向上度合いを以下のフレームワークを用いて確認すると説明されていました。
DORA (DevOps Research and Assessment)
SPACE (Satisfaction, Performance, Activity, Communication, Efficiency)
McKinsey DevEx
ACM DevEx metrics
…
これらのフレームワークはそれぞれ特性が異なるためチームの状況に最適なものを選択することが推奨されています。
本セッションでは、ロードマップの各ステップで具体例を交えて詳細に説明されていたため、DevEx(Developer Experience)の向上について、私のチームでも実践可能な方策が明確になりました。 特に、ドキュメンテーションとテストパフォーマンスの改善は非常に効果的な施策といえるので、小さな改善からでも着手したいと感じました。 また、DevEx向上のためには、技術的な要素だけでなく、活動を円滑に進めるために必要なコミュニケーションなどの非技術的な要素も含めて包括的に考える必要があることがわかりました。
高品質と高スピードを両立させるソフトウェアテストアプローチ
以下の4つの観点から高品質と高スピードを両立させるためのソフトウェアテストアプローチについての共有でした。
テストアーキテクチャ設計の工夫
アーキテクチャのテスト容易性確保
テスト品質の作り込み
妥当なテストを導くプロセス構築
「テストアーキテクチャ設計の工夫」という観点から、テスト活動全体をアーキテクチャとして扱い、適切なテスト活動の全体構造を作り込むアプローチが紹介されました。テストの責務を具体化/関心の分離を行い連携を設計してして、デプロイプロセスを整備するのが重要だとありました。 「アーキテクチャのテスト容易性確保」という観点から、高リスクなテストのモジュール化を進めて品質リスクを分離し、品質レベルに応じたテスト容易性を確保することが推奨されました。 「テスト品質の作り込み」という観点から、フレーキーテストを例にテストの信頼性の高度な作り込み方法を説明していました。 最後に、「妥当なテストを導くプロセス構築」という観点から、テストの改善サイクルにユーザーやビジネスの視点を取り入れることの重要性が強調されました。
この発表内容は、高品質と高スピードを両立させるソフトウェアテストアプローチの方針を網羅的にカバーして包括的な知見を提供していると感じました。これらの知見を適切に組み合わせることで、効果的なソフトウェアテスト戦略を構築できると思いました。
カンファレンス全体を通じて多くの有益な知見を得ることができましたが、上記で紹介した3つのセッションは、事業成長とDevExという点から、チームの開発生産性を向上するにあたって非常に参考になる内容でした。 次のセクションからはエムシーデジタルでの事業成長とDevEx向上の事例を紹介します。
エムシーデジタルでの開発生産性向上の取り組み
事業成長とDevExという観点からエムシーデジタルでの開発生産性向上の取り組みについて紹介します。
顧客価値と向き合うための取り組み
顧客価値と向き合う取り組みの具体例として、私が所属する社内プラットフォームを開発するチームでの活動を紹介します。 私のチームでは社内のデータサイエンティストを主要顧客とし、PoC(Proof of Concept)を高速に実施するための開発を行っています。 開発手法としてスクラムを採用し、チームにプロダクトマネージャーとデザイナーが所属しています。 顧客価値の高い開発を実現するため、以下の本質的作業を重点的に実施しています。
ユーザーヒアリング: 機能要望や既存機能の改善点をユーザーからヒアリングし、PoC における課題を把握します
PoC 体験会: チーム内で実際にPoCを一通り実施し、ペインポイントを炙り出します
スプリントレビュー: スプリントの成果をデモンストレーションして、ステークホルダーとともに成果が顧客価値につながるかを確認します
これらの活動を通じて、私たちのチームは社内のユーザーのニーズに寄り添いながら価値のある機能開発を実現できていると感じます。 実際に機能をリリースした後にユーザーから「便利になった」という声をいただいており、顧客価値を向上させるための取り組みが効果を発揮していると実感しています。
DevEx向上の取り組み
エムシーデジタルでは、多くのDevEx向上の取り組みが行われています。このセクションでは、ドキュメンテーションやテストパフォーマンスを中心に、DevEx向上の取り組みについて一部紹介します。 エムシーデジタルでは、リモートワークの実施に伴い、ドキュメンテーションの文化が深く根付いています。開発者向けに以下のような全社的なドキュメントが定期的に更新・整備されています。
MC Digital Tech Handbook: 開発者向けの役に立つTipsや必須知識がまとめられています
テンプレートリポジトリ: 開発者が新規プロジェクト開始時に参考となるテンプレートが用意されています
アプリケーション向け
PoC(Proof of Concept)向け
これらのドキュメントを通じて、技術スタックの標準化やベストプラクティスの共有が行われ、開発者がより効率的かつ一貫性のある開発を進められる環境が整っています。
テストパフォーマンスの向上に関しては、CI/CD(継続的インテグレーション/継続的デリバリー)におけるテスト自動化の実施に加え、チーム全体(プロダクトマネージャーやデザイナーを含む)で「Bug Bash」を定期的に実施しています。ゲーム性をもたせてテストを行うことで、DevExを損なわずに品質向上につなげています。
ドキュメントやテストパフォーマンス以外にもDevExを向上させている施策はいくつかあります。 DevExに影響を与える要因の一つであるFeedback Loopsという観点からだと、「Findy Team+」というツールを活用してサイクルタイムを可視化し、開発プロセスの改善を進めることができています。 詳しくはインタビュー記事3をご覧ください。 また、Flow Stateという観点からでは、開発に集中できる社内制度が非常に整っていると感じます。 例えば、月1回実施されているENジョイ技術の日4では、エンジニア・データサイエンティストが集まり、通常の業務を少し離れ、プロジェクトを横断したコミュニケーションや技術的負債の解消、そして新しい技術の習得に専念しています。 さらに、社内勉強会や自己研鑽費補助などの制度もあり、エンジニアがスキルを向上し開発業務に集中できる環境が整っていると感じます。
今後の取り組み
今後、チーム内で特にテストパフォーマンスの改善に注力したいと考えています。現在、テストカバレッジは高い水準を維持していますが、一部のテストでは内容に対して実行時間が長くなっています。そのため、テストの実行時間を短縮するための取り組みを進めていく必要があります。 具体的には、「高品質と高スピードを両立させるソフトウェアテストアプローチ」の発表で紹介されていたように、テストアーキテクチャ設計の工夫という観点からソフトウェアテストを改善していきたいと思います。テストの品質を維持しつつ、実行効率を向上させることが可能になると考えています。
また、エムシーデジタル全体でのDevExの向上にも取り組んでいきたいと考えています。 DevExに影響を与える要因の一つにFeedback Loopsがありますが、この改善策として、PR-Agent5というLLMのレビューツールをPR(Pull Request)の1次レビューに導入することを検討しています。 これにより、レビュイー(レビューを受ける側)がより早くフィードバックを得てスムーズに作業を進めることができます。 現在、このLLMを用いたレビュー支援を試験的に導入していますが、PR-Agentは基本的な改善点を適切に指摘してくれる印象があります。1次レビューとしての本格的に採用できるか、さらなる検証と改善を進めていく予定です。
これらの取り組みを通じて、エムシーデジタルの事業成長と開発生産性向上を加速させていきたいと考えています。
おわりに
本稿では、「開発生産性Conference 2024」に参加した際の学びや、それを踏まえたエムシーデジタルでの取り組みについて紹介しました。 また、今後エムシーデジタルで取り組みたいことについて紹介しました。 開発生産性向上に関心のある方々にとって、何かしらの気づきや参考になる点があれば幸いです。
エムシーデジタルに興味を持ってくださった方は、ぜひ採用ページもチェックしてみてください。
▶エムシーデジタルの採用ページはこちら
参考文献
この記事が気に入ったらサポートをしてみませんか?