生成AIの台頭

AI(Artificial Intelligence)の一つに生成(Generative)AIがある。生成AIはデータや情報に基づいて新しいデータを自動的に生成する技術で、テキストのみならず画像、動画、音楽といったデータを扱うことができる。

この技術が脚光を浴びるようになったタイミングはいくつかあるが、2022年11月30日が大きなタイミングと考えられる。この日、OpenAIが生成AI技術で開発されているチャットボット「ChatGPT」を一般公開した。誰もがChatGPTと自然言語で会話できるようになり、あまりに自然なやり取りが可能であることに驚いた。

  • OpenAI - ChatGPT

    OpenAI - ChatGPT

2022年11月の時点で、スマートアシスタントやデジタルアシスタントと呼ばれる音声認識および返答機能を備えたサービスは存在した。Amazon Alexa、Apple Siri、Google Assistant、Microsoft Cortanaなどだ。これらは確かに自然言語音声による命令が可能で、定められたタスクはこなすことができる。

しかし、理解できる自然言語は単純なものに限られ、その範囲はかなり狭い。さらにシンプルな1文が限界で、複雑な内容の複数の文章は理解することができない。文脈を加味した会話もできない。

スマートアシスタントやデジタルアシスタントは随時賢くなっていくことが期待されていたが、登場以降、それほど性能は改善しなかった。

  • ChatGPTに生成AIについて説明するように指示を出したサンプル

    ChatGPTに生成AIについて説明するように指示を出したサンプル

2022年11月にその名が広く知られるようになったChatGPTはまるで別物だった。長く複雑な自然言語を理解し、文脈を加味し、それに対しスマートな回答を行った。英語のみならず複数の自然言語を理解し、それぞれの翻訳もこなせる。ChatGPTの一般公開は、今後社会が生成AIを通じて大きく変わることを示唆させるものだった。

生成AIチャットボットはプログラミングが得意

ChatGPTの一般公開以降、他のITベンダーも自社の生成AI開発研究の成果物を急ピッチで公開する方向へ舵を切るようになった。本稿執筆時点で、生成AIはホットな技術の一つであり、早いペースで開発および新機能のリリースが行われている。

生成AIチャットボットは自然言語でおしゃべりができるだけではなく、さまざまな機能を提供している。それはどのようなデータをどのような目的に合わせて学習させているかに依存している。

汎用的な生成AIチャットボットであれば、自然言語の理解、学習したデータに基づいた情報提供やアドバイス、文書の要約・翻訳、文書やレポートの自動生成、知識ベースやインターネットから情報を引き出して質問への回答、データの分析や解析、数式の処理などがある。

業界向けに学習された生成AIチャットボットはその業界で必要になるデータを学習し、その業務で必要なことができるようになっている。

さまざまなことができる生成AIチャットボットだが、汎用的な生成AIチャットボットがサポートしていることが多い機能にプログラミングがある。例えば、次のスクリーンショットはChatGPTにPythonスクリプトの生成を指示したサンプルだ。

PythonでCSVデータを読み込んで、そのデータをベースにMicrosoft Excelファイルを作成するスクリプトを作成してください。

  • ChatGPTにPythonスクリプトの生成を指示

    ChatGPTにPythonスクリプトの生成を指示

ChatGPTが生成したPythonスクリプトのサンプル

import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

def csv_to_excel(csv_file, excel_file):
    # CSVファイルをDataFrameに読み込む
    df = pd.read_csv(csv_file)

    # Excelファイルを作成
    wb = Workbook()
    ws = wb.active

    # DataFrameのデータをExcelシートに書き込む
    for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True), 1):
        for c_idx, value in enumerate(row, 1):
            ws.cell(row=r_idx, column=c_idx, value=value)

    # Excelファイルを保存
    wb.save(excel_file)
    print(f"{excel_file} が作成されました。")

# テスト用例
csv_to_excel("input.csv", "output.xlsx")

生成AIチャットボットに条件と必要になるコードの説明を行うと、それに対応するソースコードを生成してくれる。ソースコードのチェックや確認なども行ってくれる。生成AIチャットボットとプログラミングは相性のよい組み合わせだ。

生成AIがプログラミングで手伝ってくれること

そして、生成AIはさまざまな業界で急速に採用が進んだ。一気に普及した分野の一つがプログラミングだ。

まず、生成AIの技術とプログラミングのソースコード生成やソースコード評価という処理は相性がよく、また、学習も容易で得られるメリットも大きい。このメリットは上級者、中級者、初心者のどのレベルにおいても効果的に効いてくる。得られる時短効果も高い。一度使ったらもう手放せない。

生成AIチャットボットを使って行えるプログラミング支援機能をざっと挙げると次のようになる。

  • ソースコードの生成、スニペットの生成
  • ソースコードのレビューやバグ発見と修正
  • ソースコードのデバッグ支援
  • ソースコードの品質向上
  • ソースコードのドキュメントやコメントの生成支援
  • 単体テストや統合テストのコードを生成
  • ソフトウェアアーキテクチャ設計の支援
  • ソフトウェアデザインパターンの提案
  • 統合開発環境と統合し支援機能を提供(自動コード補完、スニペット生成、開発フローの自動化や効率化、各種提案など)
  • 開発環境セットアップのサポート

こうした機能に加えて汎用的な生成AIチャットボットの学習したデータの基づく情報提供やインターネットから情報を引き出して質問に回答する機能などが加わると、生成AIと対話することでプログラミングを進めることができるという状況が整う。

これまでのように書籍やマニュアル、APIドキュメント、Webのナレッジサイトを参考にしながらプログラミングを行うというのとは違ったスタイルでのプログラミングが可能になる。