この記事はヌーラボブログリレー2025 冬の8日目として投稿しています
https://adventar.org/calendars/11965
概要
こんにちはCLBの🐈です。転職しました。
新しい環境でのオンボーディングに
Gemini / GitHub Copilot などのAIツール を活用してみたところ、非常に効果的でした。
自分なりの活用法と、実際に感じたメリット・デメリットを共有します。
良かった点
IDEの機能(定義へ移動)で追えないコードの挙動を追跡できる
コードを読む時、基本的には専用のエディタでcmdを押しながらメソッド名をクリックして「定義に移動」を利用して挙動の詳細を把握しながら
読み進めていくことを基本として行っていました。
しかしながら様々な要因で、必ずしもこの定義に移動ができる状態ではない場合があります。
例えばREST APIで他のモジュールの処理を呼び出す等の場合は「定義に移動」が行えず、
テキストの検索等から呼び出し先のコードを手動で探す必要があったりします。
このような時に AIを利用すると、プログラム言語で直接の呼び出しを行っていない場合でも
言語やエディタの制約を超えて呼び出し先を探す事が出来ます。
どのような時に利用されるのかを教えてくれる
DBからデータを取得する FindData のような単純なメソッドが定義されているとき、
これらのメソッドは大体(三層アーキテクチャにおける)サービスクラスのある業務処理の一部で呼び出しされることが大半だと思います。
このFindDataが利用される業務処理を理解するためには、
その呼び出しされているサービスをすべて読んで把握した上で傾向を探るのが必要でした。
AI を利用すると、大まかな利用傾向を瞬時に知ることができるので
オンボーディングのような「すべてを正確に知る必要はないけど大まかな傾向を知りたい」といった場面では
とても強力な助けになりました。
自分が知らない言語/ライブラリの記述方法を教えてくれる
今回の転職では Salesforce Apex から Java/Kotlin へと大幅に技術スタックが変わりました。
Salesforce Apex は Java に似た文法ですが、ラムダ式やモダンな機能が制限されており、感覚としては Java 5 時代に近い環境でした。
そこから最新の Kotlin 環境へ移行したため、ギャップに苦労しました。
また、 Salesforce Apex では Spring 等の汎用的なフレームワークは存在せず、3rdパーティライブラリの概念もないため
他のフレームワークを参考にしながら似たような物を自身で実装して開発を進めていました。
このような環境から最新の Java / Kotlin の環境へ移行すると、
- ラムダ式の記述で何を利用すればよいかわからない。そもそもどのような挙動なのかもわからない。
- Spring のライブラリやアノテーションはどのように利用すればいいのかわからない。
といった基本的な部分でつまづく事が多くありました。
このような一問一答レベルの内容も、これまで Web で検索して答えを探す必要があったのですが
AIは実際の実装を見て回答してくれるので理解がスムーズになりました。
悪かった点
メソッド名と挙動が一致しない場合、間違った事を話してしまう場合がある
以下のようなコードがあるとします。
fun doIncrement(targetValue: Int): Int {
return targetValue - 1
}
このメソッドを説明してくださいと依頼すると、メソッド名の方が優先されてしまい、
「足し算するメソッドです」と説明する場合があります。
(こんな単純な間違いならさすがにAIでも指摘すると思いますが。)
複雑すぎる処理を説明してくれるが、自分の理解が追い付かない時がある
自分が理解できないので「このメソッドを説明してください」というお願いをする場合があるのですが、
AIが数百行に及ぶ調査結果を出力し、結局それがあっているのかどうかわからない & 理解できないという問題がありました。
このような場合は 諦めて同僚に聞くなどして使い分けています。
(そもそも複雑なものは複雑なままなんだなと)
まとめ
AIが様々な事を行い業務を助けてくれるようになりました。
これまでちょっとした事だったため質問しづらかった内容が AI の導入で簡単に把握できるようになったことはとても良かったと思います。
とはいえまだ完全無欠ではなく、
出力結果を検証するための基礎力や、複雑な仕様を理解する力は依然として自分自身に求められます。
この便利なツールを利用しながら業務を行えればと思います!