👏
GitHub Copilot CLI使ってみた!
本題
招待されたので早速使っていきます。
執筆している時点ではwaitlistに登録する必要があります。
CopilotCLIは何ができるの?
シェルコマンドを自然言語で説明すると、GitHub Copilotがコマンドを生成します。
Usage: Copilot CLI [options] [command]
A CLI experience for letting GitHub Copilot help you on the command line.
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
auth Retrieve and store a GitHub Access
Token.
alias <shell path> Add convenient GitHub Copilot CLI
aliases to your shell.
what-the-shell [options] <query...> Use GitHub Copilot to get shell commands
from natural language descriptions.
git-assist [options] <query...> Translate a natural language description
of a git command to an actual git
command.
gh-assist [options] <query...> Convert plain english to GitHub CLI
commands.
help [command] display help for command
使用方法 Copilot CLI [オプション] [コマンド]。
GitHub Copilotにコマンドラインで助けてもらうためのCLI体験です。
オプションです:
-V, --version バージョン番号を出力する
-h, --help コマンドのヘルプを表示します。
コマンドを紹介します:
auth GitHub Accessを取得・保存する。
トークンを使用します。
alias <シェルパス> 便利なGitHub Copilot CLIを追加する。
のエイリアスをシェルに追加します。
what-the-shell [options] <query...> GitHub Copilotを使用してシェルコマンドを取得する。
を自然言語の記述から翻訳する。
git-assist [options] <query...> 自然言語による記述を翻訳する。
gitコマンドを実際のgitの
コマンドを使用します。
gh-assist [options] <query...> 平文からGitHub CLIに変換する。
コマンドを表示します。
help [command] コマンドのヘルプを表示する
みなさんいな突然ですが、RailsでPostモデルを作ってくださいと言われたら作れますか?
(細かいコラムなどは考えない)
えーっと確かrails g m〜。
普段Railsを使わないとわかりません。
いちいちGoogleで調べるのもめんどくさいです。
そんな時はCopilotに聞きましょう。
╰─>$ github-copilot-cli what-the-shell Postモデルを作るには\?
──────────────────── Command ────────────────────
rails g model Post title:string body:text
────────────────── Explanation ──────────────────
○ rails is the Ruby on Rails command line tool.
◆ g is an alias for generate.
◇ model Post title:string body:text generates a new model called Post with
the attributes title and body.
✅ Run this command
📝 Revise query
❯ ❌ Cance
今のは簡単すぎたのでもう少し難しいタスクを与えてみます。
╰─>$ github-copilot-cli what-the-shell 拡張子が.jsのファイルを検索して、ただしnode_modulesは除外
──────────────────── Command ────────────────────
find . -name "*.js" | grep -v node_modules
────────────────── Explanation ──────────────────
○ find is used to list files.
◆ . specifies that we search in the current directory.
◆ -name "*.js" stipulates that we search for files ending in .js.
○ | grep means we pass that list of files to grep which filters the list.
◆ -v node_modules means we exclude all files containing node_modules in its
path.
❯ ✅ Run this command
📝 Revise query
❌ Cancel
やっぱ .ts
のファイルを検索したいですね。
Revise queryを選択して修正してみます。
.tsも検索できるようにして
──────────────────── Command ────────────────────
find . -name "*.js" -o -name "*.ts" | grep -v node_modules
────────────────── Explanation ──────────────────
○ find is used to list files.
◆ . specifies that we search in the current directory.
◆ -name "*.js" stipulates that we search for files ending in .js.
◆ -o specifies that we want to search for files matching either of the two
patterns.
◆ -name "*.ts" stipulates that we search for files ending in .ts.
○ | grep means we pass that list of files to grep which filters the list.
◆ -v node_modules means we exclude all files containing node_modules in its
path.
❯ ✅ Run this command
📝 Revise query
❌ Cancel
うまくいきました!
上手くいかなかった事
ffmpegを使って動画を変換するコマンドは教えてくれましたが、フォルダ内の動画をすべて変換するコマンドは失敗しました。
多分私がfish shellを使っているからです。
コメントにてご指摘いただきました。
Atsunori Saitoさんありがとうございます。
日本語のプロンプトでは失敗してしまいましたが、英語のプロンプトでは成功しました。
──────────────────── Command ────────────────────
for file in *.mov; ffmpeg -i $file -c:v libx264 -crf 23 -c:a aac -b:a 192k
-movflags +faststart $file.mp4; end
────────────────── Explanation ──────────────────
○ The for loop iterates over a list of items and executes its body for each,
using the loop variable $file.
◆ The list of items is *.mov which means all files ending in .mov in the
current directory.
○ The loop body executes one command for each file:
◆ ffmpeg -i $file -c:v libx264 -crf 23 -c:a aac -b:a 192k -movflags +faststart
$file.mp4 converts the current file to mp4.
◇ -i $file specifies the input file.
◇ -c:v libx264 specifies that we want to use the libx264 codec for video.
◇ -crf 23 specifies the quality of the video, where lower is better.
◇ -c:a aac specifies that we want to use the aac codec for audio.
◇ -b:a 192k specifies the bitrate of the audio.
◇ -movflags +faststart specifies that we want to optimize the file for
streaming.
◇ $file.mp4 specifies the output file.
✅ Run this command
📝 Revise query
❯ ❌ Cancel⏎
動作確認したところ、問題なく動作しました。
やはり英語は正義。
まとめ
まだプレビュー版なので、まだまだ改善されていくと思います。
今後も使っていきたいと思います。
PCを破壊するコマンドを吐く可能性も0%ではないのでしっかりと内容を理解した上で実行しまょう。
もし内容がわからない場合はGPTとかに尋ねましょう。
Discussion
fishの場合reviseに
on fish shell
とか入れると出来るかもです。コメントありがとうございます!
早速記事更新しました!