SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

GitHub Copilotに見る生成AIネイティブな開発。そしてエンジニアに求められるスキルとは

【16-B-2】GitHubアーキテクトが語るGitHub Copilotが生み出すAIネイティブ開発の実践と次世代エンジニアに求められる新たなスキルとは

  • このエントリーをはてなブックマークに追加

 業務の効率化のために生成AIを活用することが当たり前になりつつある。開発者も、GitHub Copilotをはじめ、開発をサポートしてくれるAIツールを使いこなさない手はないだろう。GitHub Japanのシニアアーキテクトであり、国内でGitHub Copilotの導入推進をしている服部佑樹氏が、生成AIを活用した開発におけるプラクティスや押さえるべきポイントについて解説した。また、エンジニア組織の支援事業を行うギブリーの取締役 新田章太氏と、これからの開発者に求められるスキルについて議論が交わされた。

  • このエントリーをはてなブックマークに追加

生成AI時代のエンジニアに必要な「AIネイティブ開発」とは

 「AIネイティブ開発」とは、さまざまな用途でAIを活用しながら開発することだ。新田氏は「例えば仕様を満たすコードの生成や、バグの原因の探索、コードの要約など多様な用途で活用できます。エンジニアもAIと働く時代です」と説明する。

株式会社ギブリー 取締役 兼 Trackプロダクトオーナー 新田章太氏
株式会社ギブリー 取締役 兼 Trackプロダクトオーナー 新田章太氏

 エンジニア領域で生成AIの利用が広がっていることは、調査データからも明らかだ。会場でも「業務に生成AIを取り入れていますか」と問いかけると、参加者の50%ほどが手を挙げた。

 その中でも特に注目されているツールが「GitHub Copilot」だろう。GitHub CopilotはAIペアプログラマーであり、AIが開発者に代わってコードを自動生成し、提案する。

 GitHub Copilotを使ってWebサーバーをJavaScriptで実装した場合、使わないユーザーと比べて約55%も生産性が向上するというレポートが出ている。強力なツールとして注目されているのだ。

 服部氏は、GitHub Copilotについて「エディターの中だけの体験ではなく、GitHub.com上、そして開発のライフサイクルの全体で活用してもらいたいので、機能の拡張が進んでいます」と説明する。

GitHub Japan Customer Success部門Architect 服部佑樹氏
GitHub Japan Senior Customer Success Architect 服部佑樹氏

 例えば、画面の左にあるチャットインターフェースでAIとやり取りでき、まるで人とペアプログラミングを行うような体験ができる(図左)。また、Copilot Enterpriseのプランではプルリクエストに対して自動で概要を生成してくれる機能もある(図右)。AIが上司や部下として振る舞う状況に近づいていると言える。

GitHub Copilotの機能「GitHub Copilot Chat」(左)と「Copilot for Pull Requests」(右)
GitHub Copilotの機能「GitHub Copilot Chat」(左)と「Copilot for Pull Requests」(右)

 とはいえ「ただAIを活用すればよいのではない」と新田氏。自身がChatGPTにコードレビューを依頼した際にハルシネーションが起きたことを例に挙げて、「より実践的に業務でAI活用するには、有効活用するためのテクニックが重要です」と補足した。

デモとともに見るGitHub Copilotの機能

 AIネイティブな開発のためのプラクティスを説明する前に、まずは服部氏が、GitHub Copilotが備えている機能をデモを交えて解説した。

 例えばコードの解説を生成するには、「@workspace」でスコープをワークスペースの中に限定し、「/explain」で解説を書かせる指示を出す。このように「いちいちプロンプトを書かなくても助けてくれるのがGitHub Copilotの強み」だと服部氏は言う。

 また、インラインチャットの機能も紹介。例えば効率の悪いコードのリファクタリングにおいて、差分を確認しながらコードの近くでチャットを使える。

 「もちろんエンジニアがコードの行方をハンドリングする必要がありますが、かなりのことがエディターの中で完結する体験を実現しています」(服部氏)

インラインチャットのデモ
インラインチャットのデモ

 さらに、GitHub Copilot Enterpriseで提供される新たな機能についても解説した。

 先述のプルリクエストの概要生成では、「ボタン一つで変更差分を取ってきて、どういう観点で何をレビューしてほしいかレビュアーに説明できるので便利」と服部氏。では、そのプルリクエストが送られたあと、レビュアーはどのような体験になるのか。実は、GitHub Copilot Chatで具体的な変更点を「自然言語で」確認することができる。

レビュアーは変更内容をCopilot Chatで把握できる
レビュアーは変更内容をCopilot Chatで把握できる

 「これによって、チームに新しく入ったメンバーのコードベースへのオンボーディングも簡単です。レビューはするものの、普段からコードベースを深く見ていない方にも使い勝手がよいと思います」(服部氏)

AIネイティブな開発の3つのポイント

 続いて、AIネイティブな開発のためのポイントを3つ挙げ、それぞれ解説した。「ツール特性の理解」「プロンプト作成時の4要素を理解」「AIフレンドリーな開発を心がける」の3つである。

ツール特性の理解

 服部氏は「ツールとモデルを混同しているケースが多いが、われわれが開発しているのは開発者体験を最大化するためのAIツールです」と強調する。AIツールごとに期待できる価値は異なるため、ツールの特性と自分のやりたいことを理解することが重要だ。

 例えば「ある程度頭の中に書きたいコードがあって取り出す作業をしたいだけであれば、AIを用いたコードの自動補完機能でよいですが、もう少し対話形式でやりたいという場合にはChat形式の機能を使うとよい」という。

 その中でGitHub Copilotの大きな特徴は以下の4点だ。特に「確実で安全な出力」についてはエンタープライズから注目されている。「ライセンス汚染を防ぐため、毎回世界最大、最新のオープンソースデータベースにクエリを投げて安全なものだけを返す仕組み。GitHub Copilotを使う理由になっています」と服部氏。

プロンプト作成時の4要素

 服部氏は、GitHub Copilotにおけるプロンプトのコツを「文脈」「意図」「明瞭さ」「具体性」の4つだと説明する。

 AIが何の情報を持っているのかを正しく理解して期待することが大事だという。ノイズを入れ過ぎると精度が下がっていくので、正確な情報を伝えてコントロールする。また、コンテキスト変数の使用やワークスペース指定するエージェント機能を使うなど、該当スコープで何をやりたいのかを明らかにすることが重要だ。

AIフレンドリーな開発

 服部氏は、ai-native.devにおいて「GitHub Copilot Patterns & Exercises」を公開し、GitHub Copilotを活用した開発のベストプラクティスを共有している。服部氏は、その中で重要な項目を紹介した。

 まずは一貫性。一般のプログラミングにおいても命名規則を守ることが重要であるように、GitHub Copilotが読み込むデータも分かりやすいことが好ましい。「AIに理解してもらいやすいコードを書くことで、AIからも最高のアウトプットをもらえる」という。

 また、GitHub Copilotは副操縦士という意味があるように、開発者自身がキャプテンとしてハンドリングすることが求められる。「無限に情報を渡して、過度な期待を持つのは避けるべき」と服部氏。ハイレベルのアーキテクチャをある程度定義し、小さなコードチャンクに区切って作業するとよい。

 さらに、今後GitHub Copilotが開発のライフサイクル全体に入り込んでいくと考えると、「ドキュメンテーションや詳細設計、デザインドキュメントなどが高度に実装に変換可能なものになる可能性がある」と服部氏は言う。AIが読みやすいドキュメント形式まで考慮すると、最終的な成果物の精度も向上すると期待できる。

 また、服部氏いわく「AIは発散は得意だが収斂は苦手」。プロンプトのテクニックとしても、オープンクエスチョンで尋ねてテストやリファクタリングのバリエーションを出すことに集中すると有効に活用できる。プロンプトの使いこなし方については、社内やチームで共有し、テクニックを標準化することもおすすめだという。

これからのエンジニアに求められるスキルとは

 「これからのエンジニアに求められるスキル」についてのパートでは、新田氏と服部氏両名が議論を交わした。

 新田氏が「求められるスキルが大きく変わるのではなく、人と人の間にAIが入ることでスピードが上がる印象がある」と話すと、服部氏もうなずき「良いコードをAIに書かせるためには、コードを書かせる術をエンジニアが知っている必要がある」と提言。GitHub Copilotを含めた生成AIツールは、「最強の学習ツールでもある」と指摘し、教育の観点での活用可能性に期待を寄せた。

 また、生成AIツールを活用する際には、試行錯誤が重要になる。服部氏は「どういうふうに組み合わせたらいいアウトプットが出るのか探ることは、体験を通して探っていく領域です」と話し、「時間をかけて、自分で学んでいくことが大事」だとした。

 さらに新田氏は、「これまでも開発効率を上げるためにエディタの設定やCLIの工夫をしてきたように、AIツールも開発生産性を上げるためにセッティングをして、それを周囲に共有していくことになるのでは」と推察する。服部氏も「ベストプラクティスをチームで共有することで組織の開発効率を上げることが、これからの議論になっていく」と指摘。

 「AIネイティブ開発は、エディターの中に収まるものではない。組織として、エンジニアチーム全体でどう力を養っていくのかが重要になっていきます」(服部氏)

 最後に、新田氏のギブリー社が提供する開発案件マッチングプラットフォーム「Track Works」と、生成AIのスキルを習得するオンライン講座「Track Academy」が紹介された。

 Track Academyは「生成AIに関する知見からプロンプトエンジニアリング、RAG開発やAIネイティブ開発を完全にオンラインで学べることができるようなアカデミー」だ。

 新田氏は「興味のある方はぜひ参加してください」と呼びかけてセッションを締めくくった。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

提供:株式会社ギブリー

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19178 2024/04/15 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング