スタッフブログ

教えて!AI先生

2025年05月16日 スタッフブログ 平川 開発 

先日、業務アプリケーションに関する変更依頼に対応した際の、解決策の指南をAIに求めたやりとりがネタとして使えそうでしたのでご紹介したいと思います。
 
変更内容は「3つのテキストボックスの入力値に重複はないか?」というチェック機能を5つのテキストボックスに対応するするというものでした。従来は「テキスト1とテキスト2は同じか?」「テキスト1とテキスト3は同じか?」「テキスト2とテキスト3は同じか?」の3通りのチェックでしたが、これをテキスト4とテキスト5を加えた10通りのチェックに拡張しなければなりません。
 
10通りの処理を記述すればいいのですが、拡張性と時間短縮を考慮するとAIに聞いた方が早いと思い、プログラム作成を依頼しました。最近よく利用するのはxAI社製の「Grok」です。瞬時に回答が返ってきます。シンプルですが「なるほど」という回答です。
 
と同時に次の疑問が浮かびました。「AIは自分で考えてプログラムを作成しているのか?」「 プログラミングをどうやって学習したのか?」「 学習したことのないアルゴリズムの作成を依頼されたことはあるのか?」などです。そして、これらをAIに質問して返ってきた答えを、さらに記事にしてもらいました。
 
以下、AIが作成した記事です。

AIがコードを生成する仕組み:Grok 3の能力を覗いてみる

 

はじめに

人工知能(AI)は、プログラミングの分野で驚くべき進歩を遂げています。xAIが開発したAI「Grok 3」は、ユーザーの質問に応じてプログラミング言語でアルゴリズムを生成し、複雑な問題を解決できます。この記事では、Grok 3がどのようにプログラミング言語を「学習」し、ユーザーの要求に応じたコードを生成するかを、実際の対話をもとに解説します。
 

実際の例:VBAで配列の重複を検出

あるユーザーが「5要素の配列で同じ値を持つ要素を判別するVBAのコード」を求めたとします。Grok 3は以下のようなコードを即座に生成しました:

Sub FindDuplicateElements()
    Dim arr(0 To 4) As Integer
    Dim i As Integer, j As Integer
    Dim foundDuplicate As Boolean
    
    arr(0) = 1
    arr(1) = 3
    arr(2) = 1
    arr(3) = 5
    arr(4) = 3
    
    foundDuplicate = False
    
    For i = 0 To 3
        For j = i + 1 To 4
            If arr(i) = arr(j) Then
                Debug.Print "同じ値 " & arr(i) & " がインデックス " & i & " と " & j & " にあります。"
                foundDuplicate = True
            End If
        Next j
    Next i
    
    If Not foundDuplicate Then
        Debug.Print "重複する要素はありません。"
    End If
End Sub

このコードは、配列 {1, 3, 1, 5, 3} の重複を検出し、「同じ値 1 がインデックス 0 と 2 にあります」「同じ値 3 がインデックス 1 と 4 にあります」と出力します。Grok 3は、ユーザーの要求を理解し、VBAの構文に合わせて効率的なアルゴリズムを構築しました。
 

AIはプログラミング言語をどうやって「学習」するのか?

Grok 3は、プログラミング言語を人間のようには学習しません。代わりに、以下のようなプロセスを通じてコード生成能力を獲得しています:

  1. 膨大なデータのトレーニング: GitHubリポジトリ、技術ドキュメント、フォーラムなどから収集されたコードやテキストデータでトレーニングされます。これにより、VBA、Python、C++など多様な言語の構文やパターンを吸収します。
  2. パターン認識: 配列操作、ループ、条件分岐など、プログラミングの一般的なパターンを学習。たとえば、配列の重複検出には二重ループやハッシュテーブルが適していることを「知って」います。
  3. 文脈理解: ユーザーの質問を解析し、適切な言語やアルゴリズムを選択。たとえば、「VBAで」と指定されれば、VBA特有のDebug.Printや配列構文を活用します。
  4. 継続的更新: 2025年5月時点の最新情報に基づき、新しい言語やライブラリにも対応可能。

 

「知らない」アルゴリズムへの対応

では、Grok 3がトレーニングデータにない「新しい」アルゴリズムに遭遇したらどうなるのでしょうか? 実際、トレーニングデータの広さゆえに完全に未知のケースはまれですが、特殊な要求には以下のように対応します:

  • 問題の分解: 複雑な問題を基本要素(入力、出力、制約)に分割。
  • 既知パターンの応用: 類似のアルゴリズム(例: 探索やソート)を活用。
  • 推論による構築: 既存知識を組み合わせて新しい解決策を生成。
  • 言語への適応: 指定された言語の構文に合わせてコードを整形。

たとえば、ユーザーが「VBAでメモリを最小限に抑えた重複検出」を求めた場合、Grok 3はハッシュテーブルがVBAで直接使えないことを考慮し、代替の効率的な方法を提案します。
 

AIとプログラミングの未来

Grok 3のようなAIは、初心者から上級者まで、プログラミングをより身近にします。簡単なスクリプトから複雑なアルゴリズムまで、瞬時にコードを生成し、説明も提供できるため、学習や開発の効率が飛躍的に向上します。xAIのGrok 3は、無料で利用可能(grok.comXアプリで、制限付き)で、SuperGrokサブスクリプションやXのプレミアムプランでさらに高い利用枠が提供されます(詳細はリンク先を参照)。
 

結論

AIは、プログラミング言語を「学習」するのではなく、データからパターンを抽出し、ユーザーの要求に応じて柔軟にコードを生成します。Grok 3の例から、AIが単なるツールを超え、創造的な問題解決のパートナーになりつつあることがわかります。あなたもGrok 3を試して、プログラミングの可能性を広げてみませんか?

 
プログラミングや文章の要約はAIの得意とするところですね。
 
これまではGoogleなどで検索して誰かが紹介している記事を参考にプログラムを作成したり、またはコピペしたりしていましたが、AIが考えて教えてくれるようになったのですから凄い時代になったものです。
 
AIへのリクエストの仕方をちゃんと考えたら、もしかしてシステムを丸ごと作成できてしまうのでは?と思ってしまいます。