本セッションの登壇者
セッション動画
アステリア株式会社の森一弥です。TechFeedではブロックチェーンの公認エキスパートを務めており、マンガでわかるブロックチェーンのトリセツの執筆、BCCC(ブロックチェーン推進協会) の技術応用部会への参加、ブロックチェーンに関する特許出願などのブロックチェーン中心の活動に加えて、最近はAIやIoTなどの先端技術のレクチャーなどの活動もしています。

私が所属しているアステリア株式会社は、1998年創業の日本のソフトウェアメーカーです。ノーコードのデータ連携基盤「Asteria warp」をはじめ、4つの製品を提供しています。

また、アステリアにはAIやロボティクスの研究開発を行っている子会社のアステリアARTがあります。2019年4月に設立され、代表は早稲田大学講師/情報科学博士/音声認識などのAI企業「ウタゴエ」の創業社長でもある園田智也氏です。

今回はAIの研究開発に携わるアステリアARTのメンバーがChatGPTをどのように使っているのか、4つの事例でご紹介します。
事例1 - AIエンジニア(25歳/3年目)の場合
1つ目は音声分析プログラムの生成事例です。アステリアARTはAIで音声認識も行っているので、こちらのAIエンジニアは音声の周波数ごとの強さを可視化するプログラムを作ろうとしていました。プログラミング言語はPythonで、音声ファイルの波形を読み込んでlibrosa
というライブラリを使って音声ファイルの波形を読み込み、下図のようなスペクトログラムを出力するプログラムです。

このようなプログラムをChatGPTに作成させるため、「librosa
を使い、wavファイルを読み込んでスペクトログラムにし、それをまた波形に戻すコードを作成して」とリクエストしました。
その結果、このようなプログラム(下図)を得ることができました。生成されたコードでは、librosa
を使うにあたって必要な前処理(波形の逆変換や正規化)まですべて実装されています。現時点で同じことをリクエストすると少し違った回答になるようですが、この例からChatGPTが「みなまで言わずともやってくれる」ということがわかります。

事例2 - モバイルアプリエンジニア(24歳/2年目)の場合
2つ目は、モバイルアプリのコード生成事例です。こちらのモバイルアプリエンジニアは、ダウンロードの進捗状況を示すために丸いメーターを出すプログラムを作ろうとしていました。アプリケーションはFlutter(Dart)で作成していて、Circular Progress Indicatorというライブラリを利用しようとしたものの、リファレンスにはシンプルな実装例しか載っておらず、そのまま使えるものではありませんでした。

そこで、ChatGPTに「Flutterで動画のダウンロード待機時にCircular Progress Indicatorによる画面表示を行う実装を書いて」とリクエストしました。
その結果、進捗メーターの表示部分だけではなく、非同期でのダウンロード実装も含めたコードが出力されました。ライブラリのリファレンスにはメーターの実装部分が簡単に書かれているだけで、そのままコピー&ペーストして使える状態ではありませんでしたが、ChatGPTは周辺のコードも含めてすぐに動くコードを生成してくれることがこの事例からわかります。

事例3 - フロントエンドエンジニア(25歳/3年目)の場合
3つ目はコードのデバッグと修正の事例です。こちらのフロントエンドエンジニアは、GPSの時系列データから中心座標を求めるプログラムを作成中でしたが、エラーが発生し、修正しなければなりませんでした。コードを修正しようにも、エラーメッセージからは原因が判断できず調査が必要です。

ChatGPTにエラーの原因を聞くために、「以下のコードは、GPSの時系列データを読み込み、その中心を計算するコードです。これを実行すると"gpsJsonがundefined"というエラーで正しく動作しませんが、このエラーが出る理由がわかりません」という文章とコードをそのまま渡しました。

その結果、ChatGPTはエラーの原因の解説とともに、正常に動作するコードを返してくれました。エラーの原因は非同期処理が正しく実装されていなかったことでしたが、ChatGPTは元のコードを書いた人が非同期処理を理解していないと判断したのか、親切丁寧に非同期処理に関して解説しています。

ちなみに、ChatGPTにコードを入力する際には注意が必要です。ChatGPTをWebブラウザから使う場合は、入力データをOpenAIが学習に利用する可能性があります(利用規約では、個人情報を取り除いた上で利用する可能性がある、とされています)。そのため、業務で利用するようなプログラムについては注意が必要です(注: 4/28時点ではChatGPTの設定画面からON/OFFが可能となっています)。
また規約では「API経由でChatGPTを利用した場合は学習には利用されない」となっていますが、バグなどで漏洩する可能性はゼロとは言い切れないため、場合によっては注意が必要です。なお、申請フォームにアカウント情報(メールアドレス/組織名/組織ID)を入力して、ChatGPTへの入力を学習に利用しないようにオプトアウトを申請することもできます。

事例4 - プロジェクトマネージャー(40歳/10年目)の場合
最後は複数のHTMLページを同時に生成する事例です。こちらのプロジェクトマネージャーは、Webサイトを作成するために複数のHTMLページ(ログイン/サインアップ/ユーザーアクティベーション/パスワード忘れ)を作成しようとしていました。HTMLがわかっている人でも数が多いと煩雑ですが、ChatGPTに任せるとどうなるでしょうか。

ChatGPTには「Webサイトを作成するにあたり、ログイン、サインアップ、ユーザアクティベーション、パスワードを忘れた場合の各ページのHTMLコードを書きたい」とリクエストしました。
その結果、セキュリティに関する注意点とともに複数のHTMLコードが一度に出力されました。なお、出力文字数の制限により4つ目のページのHTMLが途中で切れてしまっていましたが、「4つ目のページのHTMLをもう一度出して」とリクエストすると問題なく出力されました。さらに、「上記のHTMLをBootstrapを使って書き直して」とリクエストすると、追加のリクエストに沿って修正されたHTMLが出力されました。

この事例から、ChatGPTは1つのリクエストから複数のコードを生成できることがわかります。また、各ページ間のリンク(未登録ユーザーをログインページからサインアップページへ誘導するリンクなど)も設定されており、各ページの役割や関連性も理解した上で生成していることがわかります。
まとめ - ChatGPTは開発作業を効率化する「便利なツール」である!
これらの事例から、ChatGPTは開発作業のさまざまな場面で活用でき、効率化できる「便利なツール」として今後も利用できると思います。
- プログラムコード生成 … APIリファレンスやサンプル検索を軽減できる
- デバッグ … 不具合の調査そのものができる、同僚への質問やネット検索を軽減し、新たな知識の学習にも役立つ
- 複数のコードを一気に生成 … 単純作業や繰り返し作業を軽減できる

社内でもこれだけの事例があり、開発作業以外にも利用できる場面があるはずですので、ぜひ試してみてはいかがでしょうか。
ご清聴ありがとうございました。