LoginSignup
5
1

私的GitHub Copilot活用方法紹介

Last updated at Posted at 2023-12-02

こんにちは。プロダクト開発本部の初鹿です。

この記事は、Supershipグループ Advent Calendar 2023の2日目の記事になります。

はじめに

皆さんはGitHub Copilot使いっていますでしょうか!?
ChatGPTが2022年11月末に花開き、Stable Diffusionにはじまる画像生成AIブーム。
2023年はAIの単語を聞かなかった日は無いほど世の中を席巻していました。

巷ではAIで仕事が奪われるなどの記事が目につくようになりました。
かくいう私も日々の業務で似たようなコードの生成やデザインパターンでの実装を行う度に
パターンや繰り返しなら自動生成できるんじゃないのか?としばしば思っていました。

そこで、このAIビッグウェーブを期にうまくAIと付き合っていく方法を探ることがこれからのエンジニア人生に重要なんじゃないかと思いました。

幸いにも弊社ではGitHub Copilotを使用する機会があり、気軽に試せる環境があったので、他の人のTipsなどを聞きながら自分に適した付き合い方を模索いたしました。
私なりの使い方を共有しようと思います。

今回はVSCodeにGitHub Copilot拡張を導入されている前提で話を進めます。

Prompt Craftingを意識する

GitHub Copilotも基本的には情報を渡し、如何に精度の高いレスポンス(提案)を返してもらうかが重要になってきます。
Prompt CraftingというのはGitHubの社内用語のようでしてどのような情報を渡すかCraftできるかがキーになっているようです。
その指針として以下の4つが提唱されています。

  • Language Marker
    • プログラミング言語情報
      • 現状だと、GitHub Copilotは同じプログラミング言語のファイルを読んで提案をしてきます。ですので、このファイルはどの言語なのかなどの情報を読み込んで判断しています。rubyですと#! /usr/bin/env rubyなどの記述のこと
  • Path Marker
    • 現在のファイルパス
      • このファイルはlib配下なのかmodule配下なのかファイルがどの階層にあるかなどの情報のことです。
  • Neighboring Tabs
    • 非アクティブなオープンしているタブ
      • こちらは現在コーディングしている以外に開いているタブのことです。GitHub Copilotでは最大20ファイルの非アクティブなタブ(ファイル)を参照することができます。FIFOでファイルをアクティブにするなど順番ごとにキャッシュしてこのファイルの次はこのファイルを参照したってことは... などとファイルをアクティブにするという行為も学習の一環として利用されています。
  • Code Retrieval
    • コードベースの中の他の場所のコード
      • 文字の類似性でファイル内を検索しているので一貫性のある命名規則や関数名を意味のあるシンプルなものにすると精度が上がっていくそうです。

このような、裏側でのちょっとした仕組みを意識して使ってみると精度が上がるかもしれません。

宣言ファイルをなどをピン留めする

これは、TypeScriptだとわかりやすいですが、型の定義ファイルなどをVScodeのタブを右クリックしてメニューのピン留めするを選択。するととピン留めすることができ、関数内の情報を類推して提案精度を高めることができるというTipsです。

ショートカットを駆使する

macOS のキーボード ショートカット

アクション ショートカット
インライン候補を受け入れる タブ
インライン候補を無視する Esc
次のインライン候補を表示する Option (⌥) または Alt+]
前のインライン候補を表示する Option (⌥) または Alt+[
インライン候補をトリガーする Option (⌥)+\
GitHub Copilot を開く (別のペインに追加の候補) Option (⌥) または Alt+Return

このようにいくつかの候補の中から提案を受け入れたり次の候補に進んだりなどショートカットを駆使することによってサクサクとサイクルを回していけます。

環境での GitHub Copilot の構成

GitHub Copilot Chatを使いこなす

私が今一番使っているのがこちらになっています。
こちらはいわいるチャット形式で質問に対してCopilotくんが返答を返してくれるもので何が便利かというとコード選択してコードの説明を選択するだけでこの関数は何をやっているものかを説明してくれて更に追加の質問内容まで提案してくれます。

例:
スクリーンショット 2023-12-02 3.03.57.png

更にテストを書いてや、ドキュメントを書いてなどを依頼すると文句も言わずに回答してくれます。
これを駆使し、使用したことのない言語やライブラリなどでいろいろ質問し理解のスピードが格段に上がり大変感動しました。

しかし、局所的な知識は得られても体系的には知識は得られないので体系的に学ぶにはやはり書籍等などで保管する必要があるなと感じました。

おわりに

一部ではありますが、私なりに便利だと思った機能、Tipsを紹介させていただきました。
皆様のより良いプログラミング体験の参考になれば幸いです。

参考:

最後に宣伝です。

Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
Supership 採用サイト
是非ともよろしくお願いします。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1