見出し画像

「素人でもAI使えばプログラミングができる」みたいな記事をよく見かけるけど、何をもって“出来た”なのか?実際、これだけは最低限理解しておいた方がいいんじゃないか?という話。

こんばんは。
今日は「自戒の念」も込めて、勉強し始めた頃を振り返り、表題のテーマに触れてみたいと思う。(振り返るのが早いのは、気にしないでください。笑)

2年くらい前にChat GPTが大々的に出てきて、「AI使えばプログラミングができる」的な話が話題になり、関連書籍やメディアも非常に増えた。

確かに「コードを書く」という点においては、最近のAIツールを活用すれば一定レベルのコードを生成してくれるようになった。それを繰り返すだけで、「プログラミングスキル」として謳う方もSNSでチラホラ見かける。

かくいう私も最初は「Chat GPTがあれば何でもできるやん!」状態になってしまい、テンションが上がって、初歩的なアプリのコードや一定の処理を自動化するコードを量産していた。それでプログラミングが少し出来た気になっていた。
だが、それが大間違いだったことに気付かされたのが、つい最近のこと。

現在、アプリ開発を共同パートナーと進めながら、色々と教えてもらいながら開発領域の色々な事(要件定義、データベース、アーキテクチャ、Github、docker、プログラミング言語、etc・・・)を学ぶ過程で、自分が如何に無知かを思い知らされる。
実際、全く足りていないのは分かっていたことではあるが、こんなにも果てしないとは。

では何を持って「AIを活用してプログラミングができた」なのか??
AIが出したコードを「理解せず」コピペしても本当の意味でプログラミングが出来るとは言えない。

「AIを使ってコードを書くこと」と「プログラミングができる」は全然別物
前者は「AIの補助でコードを出力してるだけ」後者は「コードを設計・理解・運用できること」です。

前置きが長くなりましたが、今回はChat GPTのようなAIを上手く使いこなす第一歩として、「まず、これは理解したうえでAIを活用したプログラミング」をしてしてみようって話。さすれば、開発の深みにハマると思う。と言う個人的な意見。


最低限知っておきたい事

1.これは理解しておくべき、その1「データ型」

AIツールからコードを生成した時に、このデータ型の概念と種類を覚えておくと各コードがそれぞれ”どんな意味か”を理解できるようになります。「基本的に以下の4種類に分類されます。  

1.1基本型(プリミティブ型)

・言語が標準で提供する、最も基本的なデータ型。  
・ 例:整数(int)、浮動小数点数(float, double)、真偽値(bool)、文字(char)など。   

1.2複合型

・基本型を組み合わせて構成されるデータ型。  
・例:配列(array)、構造体(struct)、列挙型(enum)、タプル(tuple)など。  

1.3言語定義型

・プログラミング言語が提供する特殊なデータ型。  
・例:ポインタ(C, C++)、文字列(string)、コレクション型(List, Map, Set)など。  
※言語によって異なり、特定の用途に最適化されている。  

1.4ユーザー定義型  

・プログラマーが独自に定義するデータ型。  
・例:クラス(class)、構造体(struct)、型エイリアス(typedef, using)など。  

2.これは理解しておくべき、その2「アーキテクチャパターン_ディレクトリ構成」

プログラムにおいてディレクトリ構成と呼ばれる「フォルダ構成」みたいなものがあります。その構成には、色々と手法があり、この概念と手法を知っていると簡単に言えば”どこに””どんなコードを書けば良いのか?”がなんとなく分かるようになります。

2.1 MVC(Model-View-Controller)

データ(Model)、画面(View)、処理の流れ(Controller)を分ける設計。

📁 ディレクトリ構成の例

/project
  ├── models/      # データ関連(データベースとのやり取り)
  ├── views/       # 画面関連(HTML, テンプレート)
  ├── controllers/ # ロジック関連(リクエスト処理)

使われる場面: Webアプリ開発(Ruby on Rails, Laravel, Django など)

2.2 MVVM(Model-View-ViewModel)

MVCの発展系で、画面(View)とロジック(ViewModel)をしっかり分離する設計。
📁 ディレクトリ構成の例

/project
  ├── models/      # データ(API・DB)
  ├── views/       # 画面(UI、テンプレート)
  ├── viewmodels/  # 画面のロジック(データの管理・変換)

使われる場面: モバイルアプリ(iOS, Android)、フロントエンド開発(Vue.js, React など)

2.3クリーンアーキテクチャ(Clean Architecture)

データやビジネスロジックを、外部システム(DB, UI, API)から独立させる設計。
📁 ディレクトリ構成の例

/project
  ├── entities/      # ビジネスルール(最も重要な部分)
  ├── usecases/      # アプリの処理フロー
  ├── interfaces/    # 外部とのやり取り(DB、API)
  ├── frameworks/    # 実際の実装(Webフレームワークなど)

使われる場面: 大規模アプリ、テストしやすい設計が求められる場面

今回は3パターンを紹介しましたが、他にも沢山の手法があります。
コードを書くためのフォルダ構成に種類があるんだくらいに理解して、おくと生成させたコードをどこに記述すれば良いかなんとなく分かるようになります。

ちなみに前回「MVVM」について、下記の記事を書いているので興味がある方は是非。


3.ついでに学習しておくと理解がより深まるやつ「デザインパターン」

デザインパターンは、プログラムのコードを分かりやすく、修正しやすくするための設計の「型」です。よく使われるパターンは大きく3つのグループに分けられます。※各パターンには、「シングルトン」とか「ファクトリー」とかそれぞれのパターンに応じた書き方がありますが、今回のテーマでは特に覚える必要はありません。こんなのがあるんだくらいでOKです。知っておくと後々、良い。

3.1 オブジェクトを作るパターン(生成パターン)

プログラムの中でオブジェクト(データのまとまり)をどう作るかを工夫するパターンです。

3.2 組み立て方のパターン(構造パターン)

オブジェクトをどう組み合わせて使いやすくするかのパターンです。

3.3 動き方のパターン(振る舞いパターン)

オブジェクト同士のやり取りや、動作の決まりを整理するパターンです。

4.まとめ

今回は、「どんな意味のデータ」が「どんな場所に」「どのような構成」で書かれているかを理解するために最低限必要な知識を紹介しました。
まず、ここを抑えなければ「AIを活用してプログラミングができる」の入り口にしか立っていない状態なので、是非覚えてください!!

いいなと思ったら応援しよう!

この記事が参加している募集