SHOEISHA iD

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

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

開発用エディタのド定番「VSCode」を使いこなそう

VSCodeにChatGPTを! 導入方法や使い方を理解して次世代の開発環境を整えよう

開発用エディタのド定番「VSCode」を使いこなそう 第4回

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

Genie AIによるコーディング支援

 ここから、プログラムコードをChatGPTに自動生成してもらい、Genie AIを通じていろいろとChatGPTのお世話になってみることにします。

コードを自動生成してみる

 まずは、コードを自動生成するために以下の質問を投げてみました。

配列を受け取ってソートして返す関数をJavaScriptで作成してください。ソートのアルゴリズムはバブルソートとします。

 これで回答がプライマリサイドバーに返りますが、コードだけでなく説明文も加わるという親切ぶりです(図6)。なお、回答文は、質問文のニュアンス、設定、タイミングによっても変わるので、あくまでも一例です。回答文はコピーすることができ、マークダウン表記になります。

図6:バブルソートのコードの生成
図6:バブルソートのコードの生成

 コードは、ソート済みの配列が渡された場合の処理も入ったものとなっています。この処理がないものや、さらに繰り返し範囲を最適化するコードが返ってくるケースもあります。説明文は、筆者が書いた文のようにも見えますが、これはChatGPTの書いた文です。関数の利用例まで付けてくれる親切さです。このように、ChatGPTはコードだけでなく説明文や利用例も加えてくれます。

テストコードを追加してみる

 基本となるコードができたので、テストコードを追加してみましょう。上記で作成したbubbleSort関数をVSCodeのエディタにコピーします。コピーは、コードの上にある[Copy]アイコンをクリックします。[New]アイコンでファイルを新規作成してもよいです。そして、エディタでコード全体を選択して右クリックし、表示されるコンテキストメニューから[Genie: Add tests]を選択します。

図7:テストコードの生成
図7:テストコードの生成

 このように、テストデータとテスト用の関数、そしてその呼び出しのコードが生成されます(図7)。この場合は単独でテスト可能なコードを生成してくれますが、Mochaなどのテストフレームワークを使うことを前提としたコードを生成する場合もあります。なお、生成したコードはコードの上にある[Insert]アイコンをクリックすると、先ほど作成したファイルにそのまま挿入することができます。

コメントを追加してみる

 コメントを付ける作業は必要ですが面倒なものです。これを代行してもらいましょう。上記で作成したbubbleSort関数全体を選択して右クリックし、表示されるコンテキストメニューから[Genie: Add comments]を選択します。

図8:コメントの付与
図8:コメントの付与

 このようにコメントが付与されました(図8)。質問文が日本語なので、このように日本語のコメントが付きます。英語で質問するとコメントは英語になります。また、コメントの粒度はコードの長さなどで変わるようです。今回のように要所要所のみに付与される場合もあれば、毎行に細かく付く場合もあります。

説明させてみる

 コードの説明は、コードのドキュメンテーションには必要なものです。これを代行してもらえたら、かなり楽だと思うのは著者だけではないでしょう。上記で作成したbubbleSort関数とテストコードの全体を選択して右クリックし、表示されるコンテキストメニューから[Genie: Explain]を選択します。

図9:説明文の表示
図9:説明文の表示

 このケースでは手順がメインとなりましたが、うまい具合に要点を絞ってくれる場合もあります。計算量オーダーまで示してくれるケースもあるので、アルゴリズムの評価の参考にもなるでしょう(図9)。

バグを指摘させてみる

 自分で書いたコードが思うように動かない場合、ChatGPTの力を借りようとすることは、その是非はともかく増えてくるでしょう。bubbleSort関数を少しいじって想定通りに動かないようにして、関数全体を選択して右クリックして表示されるコンテキストメニューから[Genie: Add Find bugs]を選択します。

if (arr[j] > arr[j + 1]) {
↓比較演算子の向きを逆にしてしまう
if (arr[j] < arr[j + 1]) {

 以下のように、期待通りに指摘されました(図10)。

図10:バグの指摘
図10:バグの指摘

 修正されたコードまで提示されるのは便利です。ただし、検証は必要なので鵜呑みは禁物です。あくまでもSuggestionという位置付けにしておきましょう。

最適化させてみる

 最後は最適化です。自分では最善と思って書いたコードに改善の余地がないか、聞いてみるのはプログラミングスキルの向上によいことです。関数全体を選択して右クリックして表示されるコンテキストメニューから[Genie: Optimize]を選択します。

図11:コードの最適化
図11:コードの最適化

 バブルソートの弱点である、無駄な繰り返しを省略できることが例示されています(図11)。

まとめ

 今回は、AIを開発効率やプログラミングスキルの向上に役立てようということで、話題のChatGPTをVSCodeから利用できる拡張機能、ChatGPT - Genie AIを紹介しました。

 次回は、VSCodeをWeb開発用エディタとして強化する設定と拡張機能を紹介します。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
開発用エディタのド定番「VSCode」を使いこなそう連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook <個人紹介> WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17730 2023/05/15 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング