GitHub Copilotやその他のAIコーディングツールがどのように仕事を変え、日々の過ごし方を変えているのかを開発者に聞きました。
AIコーディングツールの登場は、開発者の働き方を変えています。
GitHubによる最近の調査では、ほぼすべての回答者が、ある時点でAIコーディングツールを使用したことがあると回答し、その大多数が、これらのツールによって、より高品質で、よりセキュアなコードを簡単に書けるようになったと答えています。同様に、「State of JS 2023」調査では、AIコーディングツールを定期的に使用して いない 回答者はわずか18%でした。
『ITプロフェッショナルのための生成AI』の共著者であるクリッシー・ルメール氏は最近、LLMが彼女のワークフローを変えていると語りました。「プロジェクトを開始する際には、さまざまな設定を行う必要があり、楽しくプロジェクトが進むようになるには少し時間がかかりますが、私は今ではLLMにそこは任せています。AIのコーディングでワクワクする部分から始められます。」
GitHubの調査によると、AIツールは開発者の生産性を最大55%向上させることができることがわかっていますが、自由に使える時間が増えた時、果たしてその時間を何につかうのでしょうか?調査によると、回答者はシステム設計、同僚との共同作業、新しいスキルの習得などにより多くの時間を費やしていました。
さらに、AIツールは彼らの仕事をより良くし、より多くのコードを書くだけでなく、より良いコードを書くのに役立つポジティブなフィードバック・ループを生み出します。このことが実際の現場でどのように見えているのかを知るために、我々はAIが彼らのワークフローをどのように変えているのか、そしてAIコーディング・ツールを使うことで節約された時間で何をしているのかについて、開発者の皆さんに話を聞いてみました。
この記事では
- 開発者がどのようにAIコーディング・ツールを使って時間を節約しているかについて聞いた内容をお伝えします。
- AIツールを使い始めるためのヒントをいくつか紹介します。
デバッグの時間が減り、計画の時間が増えた
多くの開発者は、AIのおかげで設計や計画段階により多くの時間を費やすことができるようになったと話しています。つまり、システム思考に多くの時間を費やすことができるようになったということであり、これは純粋にメリットとなります。オープンソース開発者のクラウディオ・ヴンダー氏は、AIコーディング・ツールに関する最近のQ&Aで、「試行錯誤して物事を理解する時間を減らすかわりに、コードが安全で高性能であることを確認する時間を増やしました。」と語っています。
そのように時間の使い方を変えたのは彼だけではありません。GitHubの調査では、回答者の40~47%が、AIによってシステムや顧客ソリューションの設計により多くの時間を費やすことができるようになったと答えています。一方、37~43%の回答者は、コードのリファクタリングと最適化に多くの時間を費やしたと答えています。
言い換えればつまり、開発者はコードを動作させることに時間を費やすのではなく、コードをより良いものにすることに時間を費やしています。
AIツールの利用は、コードを書く前から始まっています。例えば、ヴンダー氏はGitHub Copilot Chatをプロジェクトを考える際に使っています。自分の考えを明確にするために、無生物にアイデアを説明するというこの考え方は「ラバー・ダック・デバッキング」と呼ばれています:しかしながらLLMはその考え方に新しい側面をもたらします、そう、彼らは言い返すことができるのです。ヴンダー氏は、ただ自分の考えを整理するのではなく、実際に自分のアイデアに対するフィードバックを受け、自分のコードをどのように構成したいかをより明確に考えて新しいプロジェクトに取り組むことができています。ルメール氏も、自分も同じことをしていることに気づいており、「グランドワークに費やす時間を減らし、チャットする時間を増やしました。」と語っています。
GitHub Copilot を使ってシステム設計やコードのリファクタリングを始めるための、実践的なヒントをいくつか紹介しましょう:
- 自分の好みを伝えます。ヴンダー氏は、新しいプロジェクトを始める際に、GitHub Copilot ChatにES6ビルドインと矢印関数の好みを伝えます。「このようなシンプルなステートメントは、通常、希望するコードが出力されるのに役立ち、GitHub Copilotの思考プロセスをより理解するのに役立ちます。」と彼は説明します。
- 具体例を共有します。ルメール氏は、LLM以前とほぼ同じ方法でプロジェクトに取り組みます:つまり、事例を探すのです。「それからサンプルファイルをアップロードし、時には1つの大きなファイルに連結して、LLMに自分の希望を伝えます。」と彼女は語ります。
- スケルトン関数から始めます。インライン・コードを生成するときは、意味のあるパラメータ、引数、関数はどうあるべきか、各パラメータは何を制御すべきかを説明するコメントから始めることをヴンダー氏は勧めています。
- 会話としてのデバッグ。ヴンダー氏は、関連するコードをすべてVS Codeで開いたままにしておき、「コードをデバッグしましょう」というプロンプトで新しいGitHub Copilot Chatセッションを開始します。その後、GitHub Copilotに、コードが何をしていると考えているのか、さまざまなユーザー入力に対して何が起こるのかなどの質問をします。
ドキュメントを作る時間を減らし、一緒に働きコラボする時間を増やす
AIは機械と会話するためだけのものではありません。開発者同士が話し合う時間も確保できます。調査回答者の40~47%が、AIはプロジェクトでチームメンバーと共同作業する時間を増やすのに役立っていると答えています。また、39~45%の回答者は、コードレビューにより多くの時間を費やしていると答えています。コードレビューは、開発者同士が協力し合い、より良い作品を生み出すための 主な方法の1つです。
LLMは、コードのコメントやドキュメントを自動的に生成することができ、コードを理解しやすくし、ひいては貢献しやすくしてくれます。「いくつかのJavaScriptを調べ、LLMが95%の精度で関数名とパラメータに基づいてJSDoc形式のドキュメントを生成することができました。」とルメール氏は言います。「私のチームはそれをとても気に入っています。」
結果:開発者が一緒に作業する時間が増えただけでなく、より簡単に作業できるようになりました。
コラボレーション改善のためにLLMを使用する際の実践的なヒントをいくつか紹介します:
- お気に入りの既存のヘルプテキストを例として使います。ルメール氏は、あなたが再現したいスタイルでLLMにドキュメントの例を提供することを勧めています。例えば、彼女はお気に入りのPowerShellコマンドのヘルプテキストをLLMに提示することで、LLMが自分の好みに合ったトーンやフォーマットのドキュメントを作成できるようにしています。
- すべてのファイルにコメントを残します。GitHub Copilotがコードを理解しやすくするために、コードファイルを開くときはいつも、ヘッダーとして先頭にコメントを追加しましょう。「これはあなたの生産性を加速させるだけでなく、小さなヘルプを残すことでチームの生産性も加速させます。」GitHubデベロッパー・アドボケイトのクリストファー・ハリソンは言います。
検索する時間を減らし、学習と実験に時間をかけます
最新の言語、データベース、ライブラリ、フレームワーク、APIなどの最新情報にキャッチアップしていくことは大切なことですが、その多さに圧倒されることもあるでしょう。AIは、最先端技術について行く時間を増やすことで、あなたをサポートします。私たちの調査では、回答者の43~47%が学習と開発に、44~46%が研究開発と新興技術により多くの時間を費やしていると答えています。
AIは学習にも役立ち、開発者が新しいスキルを習得する際にリアルタイムで支援を提供します。ルメール氏は最近、DevOpsのキャリアからフロントエンド開発のキャリアに移行し、フロントエンド技術の知識を深めながら、より速く仕事をするためにAIツールを使用しています。「PowerShellとSQLを主に書いていたのを、JavaScriptを主に書くように切り替えたことで、ストレスがかなり減りました。そうでなければ、コンテキストを切り替えたり、物事を調べたりするのに多くの時間を費やす必要があったでしょう。」
同様に、DevOpsアーキテクトのアレッシオ・フィオレンティーノ氏は、GitHub Copilotを使ってRustを学習しています。「Rustは実行フローを完全に制御できる強力な言語ですが、ニュアンスが多く、特にPythonやJavaScriptから始めた人にとっては異なる考え方が必要です。」とフィオレンティーノ氏は以前の記事で語っています。「AIはこうした複雑さをナビゲートしてくれ、効率的で慣用的なRustコードを確実に書けるようにしてくれます。」
「LLMが将来アプリケーション全体を生成できるようになったとしても、コードを評価する必要があります。」とヴンダー氏は言います。彼は、LLMが実装の詳細を担当するにつれて、開発者の役割は変化していくと見ており、開発者には、より高度なコンピューター・サイエンスの概念を理解し、コミュニケーション・スキルを磨くよう勧めています。幸い、そこには相乗効果があります:LLMを使うには明確な指示を書く必要があるので、AIコーディング・ツールによってその部分のスキルを磨くことができます。そしてそれは未来の開発者が必要なスキルとなるでしょう。
ここでは、GitHub Copilotを学習ツールとして使い始めるための実用的なヒントをいくつか紹介します:
- 新しい、または馴染みのない言語や技術をナビゲートする。ヴンダー氏は、GitHub Copilot を使って、指定した言語の構文や機能を順を追って学ぶことを勧めています。「私は最近 Go を学び始めたのですが、GitHub Copilot に”変数定義の
:=<
の後に型を追加すると、どうなりますか?"と質問しました。また、Go の名前空間やモジュール定義の仕組みを理解するのにも役立ちました。」 - 新しいコードベースに取り組みます。コードのブロックをハイライトしてGitHub Copilotに説明を求めたり、どの変数が特定の機能に関連するかなど、コードについて質問してみてください。
- 学習内容を視覚化します。GitHubデベロッパー・アドボケイトのケダシャ・カーは、GitHub Copilot のマーメイド図作成機能を使用して、アプリケーション内のデータの流れを理解しました。
今後について
驚くほど短期間のうちに、AIコーディングツールは開発スタックの不可欠な一部となり、開発者の時間の使い方や仕事への取り組み方を急速に変化させています。ソフトウェア開発は、バグをつぶすこととは対照的に、デザインとコラボレーションへとシフトしているのです。まだ始まったばかりですが、AIはかつてないほど開発者の潜在能力を引き出す力を与えています。開発者の皆さんがAIを使ってどのようなものを作るのか楽しみにしています。
The post How developers spend the time they save thanks to AI coding tools appeared first on The GitHub Blog.