JJUG CCC 2023「GitHub Copilot / Copilot Chat で Java コーディングを最大限効率化する」振り返り

## はじめに

皆様、こんにちは！ VMware by Broadcom で Lead Enterprise Architect をしている鈴木章太郎です。このブログエントリは、[TUNA-JP Advent Calender 2023](https://qiita.com/advent-calendar/2023/tuna-jp) 第21日目です。今回は、[先日17日のブログエントリ](https://qiita.com/shosuz/items/cc36e9794f8946eb888a)のアプリをご紹介した VMware Explore 開催3日前（笑）、11/11のJJUG CCC 2023 「GitHub Copilot / Copilot Chat で Java コーディングを最大限効率化する」セッションについて、ご紹介したいと思います。

## JJUG 2023 セッション資料
最初に、この時の登壇資料を掲載しておきます。
お陰様で多くの方に見て頂いているようですね。ありがとうございます。

https://www.docswell.com/s/shosuz/58G6JQ-2023-11-11-152330

## JJUG 2023 登壇の経緯
[資料の3ページ目](https://www.docswell.com/s/shosuz/58G6JQ-2023-11-11-152330#p3)にもあるとおり、僕は Microsoft 入社前から .NET 1.0 を触っていた人間で、.NET のイベントでもコミュニティでも数多く登壇させて戴いています。ただ、Java に関してはこの3−4年、前職 Elastic 在籍時にSpring Boot に興味が出てきて、また触り始めたという形でした。今年の3月に、VMware に Join してからは、Java を思い切り開発言語として使用するようになりましたが、流石に長年の"Java エンジニア"とは言えないです。ただ、そんな出戻りの？ Java 開発者でも、GitHub Copilot および Cooilot Chat を使えば、相当生産性高く開発を進められるということをお伝えしたかったというところで、そのような動機から、CfP を書いて応募して主催者側に採択して戴きました。
※ 実はこの登壇の翌週に .NET Conf 2023 で .NET 8 の正式発表があったので、これについても11月末に .NET ラボというコミュニティでその一部のフィーチャーをセッションにてご紹介しています。もしご関心あればぜひご覧ください。

https://www.docswell.com/s/shosuz/Z4QRL8-2023-11-25-172313

## セッションの中身について
そんな流れでしたので、今回は、GitHub Copilot / Copilot Chat を使って、特に Java の標準的な IDE である IntelliJ と Visual Studio Code を使って、何ができるのか、どんなことが可能で、どうツールを使い分ければ良いのか、Spring Boot で順に Repository、Model、Service、Controller （その後 API としてエンドポイント公開）をしていくか、という話が全体の9割、GitHub Copilot / Copilot Chat および他の AI 支援自動コード生成ツールを併用しながら、あるいは Visual Studio Code の拡張機能等を使って React などのフロントエンドをどう効率的かつ迅速に正確に開発していくか、というところが残りの1割くらいの配分でご紹介しました。

### 補足しておきたい点
あまりないのですが、まずは Java の IDE の使い分けに関する[11ページ目](https://www.docswell.com/s/shosuz/58G6JQ-2023-11-11-152330#p11) ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33599/b6d4cdcb-4c1d-aaa5-c71f-6c024035aa53.png)
この時は Copilot Chat が IntelliJ で未だ使えない状況でしたので、同じプロジェクトをこのように開いてお見せすることが非常に有意義だったと思います。また僕自身、フロントエンド開発では Visual Studio Code 中心であり、そういう方も多いと思われますので、Java の API などのプロジェクト開発も IntelliJ ではなく Visual Studio Code を中心に進めていくのも良いかと思います。この辺りはツールの慣れの問題でもありどちらでも良いのではとお話しました。

またIntelliJ への PlantUML 拡張機能追加に関する[21ページ目](https://www.docswell.com/s/shosuz/58G6JQ-2023-11-11-152330#p21)も、実際に使うことはあまりないかもしれませんが、ドキュメンテーションや教育などでは大変便利に使って戴けるものだと思います。実際に会場でも共感して戴いている方も多かったですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33599/c5f07882-b79b-b5d3-8547-76520088e154.png)

そして、JUnit Test Case の追加と実行に関する[41ページ目](https://www.docswell.com/s/shosuz/58G6JQ-2023-11-11-152330#p41)については、ここが一番面倒なところかもしれませんね。
ただこれも GitHub Copilot / Copilot Chat がもっとも強力にアシストしてくれるところでもあるかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33599/b3e482ca-11e7-07fd-069e-664b1e56e3f9.png)40ページにある手順に従ってやってみてください。

また今回ご紹介できなかった、クラウドのデータベースを使う等の箇所は、これも両機能に任せることができますので、data.sql、schema.sql、pom.xml 等でこれらをうまく活用していけると思います。
加えてクラウドへのデプロイを前提としたアプリ開発の場合には、(次項目の) .NET 版でご紹介しているように、まずは環境を先に作らせるということが結構重要です。クラウド上のインフラを IaC ツールやコマンドで作らせたり、環境変数名、データベース名等を考えさせたり、という準備ですね。

### .NET 版について
その意味で、このセッションの土台となっているのは、夏から秋にかけて .NET ラボというコミュニティでお陰様で面白いと言って戴いてシリーズで３連続で登壇した、こちらの3つのセッションです。もしご興味あれば併せてご覧下さい。

https://www.docswell.com/s/shosuz/KVVM1D-2023-07-22-165653

https://www.docswell.com/s/shosuz/ZGXNWL-2023-08-26-162303

https://www.docswell.com/s/shosuz/K989LJ-2023-09-23-172820

## 当日の所感とフィードバックについて
![スクリーンショット 2023-12-23 9.09.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33599/bb79f42c-b6a3-0acd-2cbb-855d698039ee.png)
ちょっとお部屋が小さかったこともあり、満席立ち見になってしまい、大変ご不便をおかけしました。最後まで真剣に聞いて戴いて有難いです。

当日、最初にどれくらいの方が　GitHub Copilot / Copilot Chat を使われているか、挙手をお願いしたのですが、未だ1割にも満たない感じでした。これは、当日偶然にも客席に混じって聞いて戴いて、途中でコメントも入れて戴いた @yoshioterada さんともセッション後に、意外に少なかったねと話しました。今から使わないと非常に勿体無いので、是非とも皆さん使ってみて戴いて、生産性を向上しつつ素早く開発を進めて戴ければと思います。

アンケートの内容は、大体下記のような内容でした（主催者主催者側から戴いた内容を纏めてあります）。
・生産性がどれくらい上がるかを体感するため、実際に GitHub Copilot を使ってみたいと思った
・使ったことがなかったので知ることができて良かった
・便利ですね
・アプローチも様々（一気に作って編集するか、対話しながら作るか）、勉強になった

## まとめ
今後も、Java / Spring Boot については、VMware として、そして個人として、さらにコミットして行きたいと思っていますので、様々なイベントやコミュニティ、記事、等々でご紹介して行きたいと思っています。引き続きよろしくお願いします！