Featured image of post AIコーディングで必要な教養とは「理論」では?

AIコーディングで必要な教養とは「理論」では?

AIコーディングが普及する中で、「AIコーディングで必要な教養は理論ではないか」という意見を聞くことがあります。確かに、理論的な知識は重要ですが、実践的な知識も同様に重要です。

この記事では、AIコーディングに必要な教養について、理論と実践のバランスを考えます。

AIコーディングの現状

AIコーディングは、ChatGPTやGitHub Copilotなどのツールによって、誰でも簡単にコードを生成できるようになりました。

AIコーディングの利点

AIコーディングの利点は、コード生成の速度と効率です。複雑なコードでも、適切な指示を与えれば短時間で生成できます。

また、初心者でも"目的が明確なら"基本的なコードを生成し、アプリケーションを作成できるようになりました。

AIコーディングの課題

AIコーディングの課題は、生成されたコードの品質と、適切な指示を出す能力です。

AIが生成したコードは、必ずしも最適とは限らず、修正や改善が必要な場合があります。また、適切な指示を出すには、プログラミングの基礎知識が必要です。

実務に携わっている人は、「大雑把に作成して客に見本として出す用にAIコーディングは楽だけど、詳細な完成まではプロのエンジニアが有利」との声をよく聞きます。効率化=品質とは限らない……ことがわかります。

理論的な知識の重要性

AIコーディングにおいて、理論的な知識は重要です。なぜなら、AIの学習資料が理論をもとにしているからです。

プログラミングには多種多様の言語があり、必要な要素を実現するには"最適な言語"から選択する必要があります。「何が最適か?」とAIに質問するのもアリですけど、理論で動いているプラグラムだからこそ、理論の名称をキーワードにして指示したほうが効率的です。

アルゴリズムとデータ構造の理解

アルゴリズムとデータ構造の理解は、効率的なコードを書くために必要です。AIが生成したコードを評価し、改善するには、アルゴリズムとデータ構造の知識が必要です。

ソフトウェア設計の原則

ソフトウェア設計の原則(SOLID原則など)を理解することで、保守性の高いコードを書けます。AIが生成したコードを評価し、リファクタリングするには、設計原則の知識が必要です。

計算機科学の基礎

計算機科学の基礎(計算量、複雑性理論など)を理解することで、コードの効率を評価できます。AIが生成したコードが、どの程度効率的かを判断するには、計算機科学の知識が必要です。

プログラムに三角形と四角形を理解させるには?

三角形の面積を計算したいなら「底辺*高さ/2」が公式ですけど、目を持たないプラグラムは四角形の底辺と高さからでも、“三角形の面積"を求めたりもします。

目がある人間なら三角と四角の違いは明確でしょう。けれど、三角形と四角形の違いを言語でどう説明したらいいのか?

三角形(triangle)

1
2
3
4
5
6
7
8
構成要素:
  頂点数 = 3
  辺数 = 3
  内角数 = 3
条件:
  各辺は2つの頂点を結ぶ線分
  3つの頂点は同一直線上に存在しない(非共線)
  各内角の和 = 180°

四角形(quadrilateral)

1
2
3
4
5
6
7
8
構成要素:
  頂点数 = 4
  辺数 = 4
  内角数 = 4
条件:
  隣接する辺が4つの頂点を順に結ぶ閉じた図形
  各内角の和 = 360°
  隣り合う3点が同一直線上に存在しない(非共線)

プログラムが三角形か四角形かを理解するには、頂点数と辺数で三角と四角を指定する必要があります。

1
2
3
4
5
6
7
8
def shape_type(vertices):
    n = len(vertices)  # 頂点の数
    if n == 3:
        return "triangle"
    elif n == 4:
        return "quadrilateral"
    else:
        return "other polygon"

これで質問したとして、もしかしたら「頂点て何……?」となるかもしれません。上記の場合は3と4以外を入力すると「角の数は?」と聞いてくるので、プログラミングで重要なのは「言葉で伝える能力・知識」が大切だとわかります。

プログラム的に理解させる場合のポイント

プログラムに図形を理解させるには、理論的な定義を明確に伝える必要があります。頂点数、辺数、内角の和などの理論的な概念を理解していなければ、適切な指示を出すことができません。

実践的な知識の重要性

理論的な知識だけでなく、実践的な知識も重要です。

プログラミング言語の習熟

プログラミング言語の習熟は、AIが生成したコードを理解し、修正するために必要です。理論的な知識があっても、実際のコードを読めなければ、AIコーディングを活用できません。

フレームワークとライブラリの知識

フレームワークとライブラリの知識は、実用的なアプリケーションを開発するために必要です。AIが生成したコードを、実際のプロジェクトに適用するには、フレームワークとライブラリの知識が必要です。

デバッグとテストのスキル

デバッグとテストのスキルは、AIが生成したコードの品質を確保するために必要です。AIが生成したコードには、バグが含まれている可能性があるため、デバッグとテストのスキルが重要です。

理論と実践のバランス

AIコーディングにおいて、理論と実践のバランスが重要です。

理論が実践を支える

理論的な知識は、実践的な知識を支えます。アルゴリズムやデータ構造の理解は、効率的なコードを書くために必要です。また、ソフトウェア設計の原則は、保守性の高いコードを書くために必要です。

実践が理論を補完する

実践的な知識は、理論的な知識を補完します。プログラミング言語の習熟は、理論的な知識を実際のコードに適用するために必要です。

また、フレームワークとライブラリの知識は、実用的なアプリケーションを開発するために必要です。

両方のバランスが重要

理論と実践の両方が重要です。理論的な知識だけでは、実際のコードを書けません。

また、実践的な知識だけでは、効率的で保守性の高いコードを書けません。両方のバランスを取ることで、AIコーディングを効果的に活用できます。

AIコーディングに必要な教養

AIコーディングに必要な教養は、理論と実践の両方です。

基礎的な理論の理解

アルゴリズム、データ構造、ソフトウェア設計の原則など、基礎的な理論の理解は必要です。これらの知識は、AIが生成したコードを評価し、改善するために必要です。

実践的なスキル

プログラミング言語の習熟、フレームワークとライブラリの知識、デバッグとテストのスキルなど、実践的なスキルも必要です。これらのスキルは、AIが生成したコードを実際のプロジェクトに適用するために必要です。

継続的な学習

AIコーディングの技術は日々進化しています。そのため、継続的な学習が重要です。新しいツールや技術を学び、理論と実践の両方を向上させることが大切です。

より最適化された演算に組み替える能力は、思考と発想ができる人間がまだ有利ですが、量子コンピューティングが主流になってくると、どう転ぶかはわかりません。

もしそうなったとしても、指示をするのは基本的に人間がすることになるので、人間側がプログラミングとは何たるかを理解していたほうが、より良い結果を導くことができます。AIと争うのではなく、共同作業をする感覚がベストだと考えます。

まとめ:理論と実践の両方が必要

AIコーディングで必要な教養は、「理論」だけではありません。理論と実践の両方が必要です。

理論的な知識は、アルゴリズムやデータ構造の理解、ソフトウェア設計の原則、計算機科学の基礎などです。これらの知識は、AIが生成したコードを評価し、改善するために必要です。

実践的な知識は、プログラミング言語の習熟、フレームワークとライブラリの知識、デバッグとテストのスキルなどです。これらの知識は、AIが生成したコードを実際のプロジェクトに適用するために必要です。

理論と実践のバランスを取ることで、AIコーディングを効果的に活用できます。継続的な学習を通じて、理論と実践の両方を向上させることが大切です。