こんにちは。プロジェクトマネージャーを中心に業務を担当することが多い、笹亀です。
今回は9月の1dayオフィスにて、オフラインで開催されたTech勉強会について、レポート形式にて内容のご紹介をします。
今回、勉強会での発表は「生成AIを業務で活用できたケースの紹介」と「アウトプット推進チームからの活動報告」の2つとなります。
「生成AIを業務で活用できたケースの紹介」では、日頃の利用でも生成AIを利用する場面が本当に増えました。実際の業務で活用できたケースを実例からご紹介をいただいた内容でした。実際にメンバーが生成AIをどのように活用しているのかというのを知れる場となり、大変参考になりました。
生成AIを業務で活用できたケースの紹介
インデックス
- 生成AIとは
- GitHub Copilotとは
- ChatGPTとは
- 実例1 ~ 5
- 感想
生成AIとは
まずはご挨拶も含んだ、生成AIについて説明がされました。
- 生成AIは、人間のように文章や画像を生成するAIのこと
- 生成AIの代表例
- 文章生成:ChatGPT, Gemini
- コード生成:Github Copilot
GitHub Copilotとは
次に生成AIの中でもコードを生成するのに特化したツール、プログラミングを生成するAIについての解説がされました。
- AIがコードを生成するツール
- 例えば、関数の名前を入力すると、その関数の中身を生成してくれる
- Visual Studio Codeからは、エクステンションとして利用可能
ChatGPTとは
最近、検索でGoogle以上に利用頻度が増えて利用している生成AIですが、生成AIとして最も有名でイメージされやすい、ChatGPTについての解説もされました。
- ChatGPTは、OpenAIが開発した文章生成AI
- 例えば、文章の要約、文章の翻訳、文章の生成などが可能
- WEBアプリとして利用可能
今回はChatGPTでの活用事例ではなく、生成AIの中でもコードを生成するのに特化したツールのGithub Copilotを活用した事例の紹介となります。
事例1: コードの自動生成
- 似たような部分からコードを自動生成する
- 例
- クラスや関数の定義、変数の初期化など
実際にはデモをしていただきました。GitHub CopilotはVisual Studio Codeのエクステンションとして利用するのが一般的ですが、特徴としてはプロジェクト全体をAIに把握させる(学ばせる)ことによって、そのプロジェクト内での似たようなコードやプログラムしている機能を理解します。その状態からこれから構築しようとするプログラミングをする補助をしたり、構築する部分を予測してプログラムを自動で生成してくれます。
事例2: コードの自動変換
- すでに存在しているプログラムを、同じ仕様で別の言語のプログラムに書き換える
- 例
- javascriptのコードをdartのコードに変換する
- goのコードをpythonのコードに変換する
- 補足
- AIも変数の宣言忘れをすることがあり、何度か聞くと、そのままで実行できるコードを作成してくれるようでした
古くなった既存システムを新しい技術(言語)でリプレイスをするという際のモデルケースを想像しました。一般的には古くなったシステムを保守・開発を続ける場合、それを経験しているエンジニアを探すことが課題になりがちですが、生成AIにプログラムの書き換えを任せることで、エンジニアとしては仕様を理解し、プログラム上の間違いや仕様の認識違いなどを指摘するという作業をするだけでよくなります。精度がより高くなっていくことを考えると「簡単にシステムのリプレイスが生成AIを利用して実現できるのでは?」と想像することができました。
事例3: スネークケースをキャメルケースに変換
- スネークケースとは、単語の間にアンダースコアを入れた命名規則
- キャメルケースとは、単語の先頭を大文字にした命名規則
- 例
- 文字列 "last_name" に"lastName"に変換する
- 文字列 "first_name_kana" に"firstNameKana"に変換する
チーム開発をしている際によく発生する書き方が複数存在してしまって、どっちに統一させるか問題です。いくらチームで「こうしましょう」「こう書きましょう」と決めていた場合でも書き方が異なることが起こります。生成AIの場合は例えば「変数をキャメルケースやスネークケースに統一してください」と依頼をすれば自動で変数の統一をしてくれるので、ミスなくまとめて行ってくれます。
事例4: コメントの自動生成
- コードのコメントは、他の開発者がコードを理解するために重要
- すでに存在しているコードや似たコードから、コメントを自動生成する
コメントも事例3と同様でチーム開発時や保守性をあげるために必要な要素です。生成AIはプロジェクトのコードを把握しており、コメントの書き方や癖を学習している状態なので、変数や関数などに対して自動でコメントを生成させたくなりますね。こちらも事例3と同様にタイポや書き方の統一をサポートしてくれるという点では重宝する使い方です。
事例5: テストコードの自動生成
- テストコード作成は、大切ではあるが、時間が必要な作業
- すでに存在しているテストや、実施したいテスト内容から、コードを生成
テストコード(ユニットテスト)を自動で書いてくれるという恩恵はとても大きいとおもいます。1から自分自身で書くとなると工数が2倍とはいいませんが、1.5倍くらいはかかります。テストコードの書き方(Karmaで書いてとか・・)も指示をすればいいだけなので、それをAIに任せることで工数に関する恩恵は計り知れないです
感想
- AIに任せることができるプログラミング作業は、現段階でも部分的に存在する
- 似たようなコードの生成、コメント作成は得意
- テストコードだけではなく、既にあるデータから似たようなデータも作成できそう(1年毎にデータを作成することがあるので試してみよう)
- アプリケーションをいちから全部完璧に書くというのは無理
- 時間的な節約、タイピング量の節約など利用することのメリットが大きい
- AIが保管しやすいよう、まだエンジニアがAIに寄せてあげる必要がある
- AIだけは完璧ではないので、コードを読む力は引き続き必要(必要要件でこれが無いとまだ厳しい)
アウトプット推進チームからの活動報告
内容
1dayオフィスの勉強会では私(笹亀)もアウトプットを推進するチームの活動報告と勉強会に参加してくださっているメンバーへの働きかけもさせていただきました。弊社ではメンバーが様々な取り組みをしておりまして、その中の一つでアウトプットを推進するチームがございます。様々なチームが様々な施策や取り組みを実施しており、アシアルnoteにて、それらの取り組みをご紹介しております。弊社を知っていただけるとおもいますので、是非、お時間がございましたら、一読いただけますと幸いです。
最後に
10月の勉強会はオンラインでの開催を実施しました。今月にレポート予定ですので、お楽しみに。今年の秋は外部での様々な技術系の勉強会やセミナーなど多く開催される予定で、いまから楽しみです。今年はいろいろと参加して行こうと考えております^^