メモ:生成AIと開発組織力

コード×AIーソフトウェア開発者のための生成AI実践入門を読んだ感想や今まの業務の中の自分の学びのまとめです。

全体感想

  • 開発組織レベルでAIの最大限活用のため、個人のスキルセットだけではなく、組織全体で生成AIの力を引き出す方法が必要
  • AIと協調しながら個人が成長し、それから組織の成長に繋がる好循環を生み出す
  • 3つのステップ
    1、既存の個人やチームのナレッジを共有して、AIが活用可能な形式に変換する
    2、組織のナレッジを透明化し、多くの人がアクセス可能にする
    3、共用ナレッジ資産を常に最新状態に維持していく

    開発組織として考えられるナレッジ資産

  • 高品質なソフトウェアライブラリ
  • PJの設計書や運用ドキュメント
  • 再利用可能なソースコードの断片(ロジックやアルゴリズムなど)
  • 開発規約やガイドライン
  • 共通PFのマニュアル及びサンプルコード
  • 設計手法や運用ノウハウ
  • AI生成時における中間成果物やドキュメント
  • AIと協働するための技術スタックの内部標準化


    生成AIを意識する具体例

  • AIが理解しやすいナレッジの整理。たとえば主語やコンテキストの明確の提示
  • 記述的なコードで可読性向上の工夫。たとえば自己説明的な変数名と関数名や適切なコメントやコードの分割
  • 社内コード資産のライセンス(インナライセンス)導入。たとえば特定部門ソフトウェア資産に対して「使用する自由」、「変更する自由」、「共有する自由」、「変更したソフトウェアの再配布自由」

    プロセス及び注意点

  • 生成AIはあらゆる工程の工数を削減しうる可能性を秘めているが、エンジニアに新しい知識やスキルの習得が必要のため、内製化を進めることが大切。安易に外注しないこと
  • 情報のポータビリティ性の考慮し、ポータビリティ性の欠けたツールへの過度依存「ツールロックイン」しないこと。たとえば独自フォーマットやデータのExportとAPI提供ができないなどデータの移植性がないこと
  • 生成AIの特性と限界を理解した上で、適切な指示とレビュー、修正が不可欠
  • 生成AIの活用範囲やレビュー方法やコードの管理方法をチーム単位で議論し、合意形成することが大切
  • 安易に生成AIのコードをPRしてしまい、エンジニアの成長機会を逃さないよう、AIペアプログラミング的な実践が有効。たとえばAIへの指示の仕方やコード品質向上のコツやお互いの解説など
  • プロンプトのユースケースの発掘と共有。たとえばテストケースコード、リファクタリング、DB設計など
  • 上記の実践知見の組織内の共有と展開。特に推進チャンピオンの育成が大事。ある程度技術と業務面での深い知見が求められるので、単なるHOWのツールやプロンプトの使い方ではなく、Whatを意識することが大事
  • セキュリティ担当のため、DevSecOpsのシフトレフトの考え方を取り入れて生成AIを活用する

    技術ドキュメント化の活用法

  • シンプルな構造と余分な意図が入り込まないリーンさ
  • 簡潔に意図を示すためのマークアップ言語。図をテキストで扱える図示言語。MarkdownとMermaid言語の利用
  • 従来のマークアップ言語と図示言語で表現が難しい情報は、画像やファイルに対してマルチモーダルの活用
  • マルチモーダル精度の課題があるので、AI出力に対して修正できるファーマットの使用や詰めすぎないようなファイルごとの情報量の提供が大事
  • プロンプトでフォーマットを指定して、ドキュメントの自動生成で統一化を図る

    効果評価

  • 一般的にDORA MetricsのFour KeysとSPACE Frameworkが有効な生成性指標
  • 開発生産性はAIが開発者にもたらすことの一側面しかない
  • コストパフォーマンスだけではなく、多面的な視点が必要
  • より大事にしたいのは、開発者体験Developer Experienceである
  • 開発者体験=(開発者生産性+開発者インパクト+開発者満足度) ^ コラボレーション
    開発者生産性: 効率性とスピード
    開発者インパクト: 開発工程全フェーズにおいて、開発者がどの程度の影響力を持ち、どれだけ迅速にアイディアを実際の製品に変えられるか
    開発者満足度: 作業環境、ワークフロー、ツールなど、低い摩擦で高いインパクトを達成できるにおいて、開発者が自分の仕事にどれだけ満足しているか、ワークフローがどれだけスムーズか、ツールがどれだけ効果的か。
  • SPACE Framework
    Satisfaction and Well-being 満足度と幸福度
    Performance パフォーマンス
    Activity 活動
    Communication and Collaboration
    Efficiency and Flow
  • AIがもたらすのは、生産性だけではなく、品質向上、AI技術学習伴う成長、新たな機能の創出など様々な側面がある。プロダクトへの影響だけではなく、組織そのものに対する影響でもある

    いつくか指標例

  • 開発者サーベイ。作業時間削減パーセンテージ、品質向上感触など
  • AIからの提案の採用率
  • Issue登録してからPull Requestクローズまでの時間
  • コード行数

    一般業務に対して汎用的なナレッジ管理と検索システムを開発したが、
    LINEヤフーの生成AIへの取り組み、SeekAIサービスの技術の全貌 「ThinkIT Day AI for DevOps 〜AIはアプリケーション開発・運用をどう変えるのか?〜」
    これから開発にフォーカスして、システムとプロセス提供を考えている。