Pythonミニマム・ガイド:AIプログラミングのための最短コース
はじめに
「AIやディープラーニングを始めるには、まずPythonを完璧にマスターしないと…」
もしあなたがそう考えているなら、少しだけ肩の力を抜いてください。その完璧主義が、AIプログラミングの世界へ踏み出す一番の障害になってしまうことがよくあります。
このテキストが目指すゴール
このテキストの目的は、あなたをPythonの専門家にすることではありません。 目標はただ一つ、AIライブラリ(TensorFlowやPyTorchなど)のコードを読み解き、その「使い方」を理解するための最低限の知識を身につけることです。
例えるなら、海外旅行でレストランのメニューを注文するための、必要最低限の会話フレーズを学ぶようなもの。文法を完璧に知らなくても、目的は達成できますよね。
走りながら学ぼう
本書で紹介するのは、広大なPythonの世界の、ほんの一部です。しかし、それはAIという冒険に出るための、最も重要な装備だけを集めたものです。
このテキストの学習法はシンプルです。
- まず動かす:コードを読んで、まずは動かしてみる。
- 意味を理解する:そのコードが何をしているのか、本書で確認する。
- 少し変えてみる:数字や文字列を変えて、結果がどう変わるか試す。
この「実践 ⇄ 学習」のサイクルこそが、プログラミングを最も速く、そして楽しく身につけるための最短コースです。
さあ、準備はいいですか? AIプログラミングの世界へ、最初の一歩を踏み出しましょう!
ディープラーニングの第一歩を踏み出すための、Pythonの基礎知識について解説します。
第1章:Pythonとの対話 - 基本の「き」
この章では、プログラムの最も基本的な要素を学びます。難しく考えず、まずは「こういう風に書くんだな」と雰囲気を掴むことから始めましょう。
1-1. 「変数」というデータの保管箱
プログラミングでは、数値や文字などのデータ(値)を一時的に保管しておく場所が必要です。その保管場所が変数です。
変数には、好きな名前(変数名)を付けることができます。ちょうど、ダンボール箱に「本」や「服」とラベルを貼るようなイメージです。
Pythonで変数を使うのはとても簡単です。
# 'x'という名前の変数に、数値の10を保管する
x = 10
# 'message'という名前の変数に、「こんにちは」という文字列を保管する
message = "こんにちは"
このように、=
(イコール)を使って、右側の値を左側の変数に代入します。
1-2. 最も基本的なデータ型:数値と文字列
Pythonが扱うデータには様々な種類(データ型)がありますが、最初に覚えるべきは「数値」と「文字列」の2つだけです。
- 数値 (Number):
10
や3.14
のような計算に使われるデータです。整数(int
)や小数(float
)などがあります。 - 文字列 (String):
"こんにちは"
や'hello'
のように、文字の並びを表すデータです。シングルクォーテーション'
かダブルクォーテーション"
で囲んで作ります。
# 数値型の変数
price = 150
pi = 3.14
# 文字列型の変数
name = "山田"
AIの世界では、画像や音声も最終的には全て数値の集まりとして扱われます。まずはこの2つの型に慣れることが大切です。
1-3. PCに計算させる:基本的な算術演算子
変数に数値を入れたら、それらを使って計算ができます。四則演算には以下の記号(演算子)を使います。
記号 | 意味 |
+ | 足し算 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
x = 10
y = 5
# 足し算
sum_result = x + y # sum_resultには15が入る
# 掛け算
mul_result = x * 2 # mul_resultには20が入る
このように、プログラムは計算の得意な電卓としても使えます。
1-4. 結果を表示する:print()
関数
変数に値を入れたり計算したりしても、その結果がどうなったかを知る必要があります。そのために使うのがprint()
関数です。
print()
のカッコの中に変数名や値を書くと、その中身を画面に出力してくれます。これは、コードが正しく動いているかを確認するための、非常に重要なツールです。
price = 150
message = "円です。"
# 変数priceの中身を表示する
print(price)
# 文字列と変数を組み合わせて表示する
print(price, message)
実行結果:
150 150 円です。 |
これであなたはPythonと対話し、データを保管し、簡単な計算と結果の表示ができるようになりました。これが全てのプログラミングの基礎となります。
第2章:たくさんのデータを扱う - リストと辞書
第1章では、一つの変数に一つのデータを入れていました。しかし、実際のデータは「クラスの生徒名簿」や「一週間の気温」のように、たくさんのデータの集まりであることがほとんどです。この章では、そうしたデータの集まりを効率的に扱うための2つの便利な道具、「リスト」と「辞書」を学びます。
2-1. 順番にデータを並べる「リスト」
リストは、複数のデータを順番に並べて格納できるデータ型です。ちょうど、買い物リストや、番号が振られたロッカーのようなものです。
リストを作るには、角括弧[]
でデータを囲み、カンマ,
で区切ります。
# 複数の数値を格納したリスト
scores = [80, 95, 72, 88]
# 複数の文字列を格納したリスト
members = ["佐藤", "鈴木", "高橋"]
# 数値と文字列を混ぜることも可能
mixed_list = [1, "田中", 3.14]
# 空のリストも作れる
empty_list = []
2-2. リストからデータを取り出す・追加する
リストの便利な点は、番号を指定して特定のデータを取り出せることです。この番号をインデックスと呼びます。
注意! プログラミングの世界では、番号は0から数えるのがルールです。
scores = [80, 95, 72, 88]
# 0番目(先頭)のデータを取り出す
first_score = scores[0]
print(first_score) # 結果: 80
# 2番目のデータを取り出す
third_score = scores[2]
print(third_score) # 結果: 72
また、リストの末尾に新しいデータを追加するには、.append()
という命令(メソッドと呼びます)を使います。
members = ["佐藤", "鈴木", "高橋"]
print(members) # 結果: ['佐藤', '鈴木', '高橋']
# リストに「田中」を追加する
members.append("田中")
print(members) # 結果: ['佐藤', '鈴木', '高橋', '田中']
2-3. キーと値のペアで管理する「辞書」
もう一つの便利な道具が辞書です。辞書は、キーと値をペアにしてデータを格納します。ちょうど、英和辞典が「英単語(キー)」と「その意味(値)」をペアで管理しているのと同じです。
辞書を作るには、波括弧{}
を使い、キー: 値
の形でデータを記述します。
# 個人のプロフィールを辞書で管理する
profile = {
"name": "山田",
"age": 25,
"city": "東京"
}
辞書からデータを取り出すときは、インデックスの代わりにキーを指定します。
# "name"というキーに対応する値を取り出す
user_name = profile["name"]
print(user_name) # 結果: 山田
# "age"というキーに対応する値を取り出す
user_age = profile["age"]
print(user_age) # 結果: 25
2-4. こんな時に使う!リストと辞書の使い分け
リストと辞書、どちらを使えばいいか迷うかもしれません。使い分けのポイントは非常にシンプルです。
- リストを使うとき: データの順番が重要な場合。
- 例:一週間の気温、テストの成績ランキング、処理の手順
- 辞書を使うとき: データに意味のあるラベル(キー)を付けて管理したい場合。
- 例:個人のプロフィール(名前、年齢、住所)、AIモデルの設定項目(学習率、エポック数)
ディープラーニングでは、学習データやモデルのパラメータなど、あらゆる場面でこのリストと辞書が登場します。この2つを使いこなせることが、次のステップに進むための重要な鍵となります。
第3章:プログラムの流れを操る - 繰り返しと条件分岐
これまでのプログラムは、上から下へ一本道で実行されるだけでした。しかし、実際のプログラムでは、特定の処理を何度も繰り返したり、状況に応じて処理を分けたりする必要があります。この章では、プログラムの流れを自在に操るための「for
ループ」と「if
文」を学びます。
3-1. 決まった回数繰り返す:for
ループ
同じような処理を何度も書くのは大変ですよね。例えば、100人の生徒の成績を処理するのに、同じコードを100回書くのは現実的ではありません。
そんな時に使うのがfor
ループです。for
ループを使うと、指定した回数だけ、またはデータの集まりの数だけ、特定の処理を自動で繰り返すことができます。
3-2. for
ループでリストの中身を一つずつ処理する
for
ループの最も一般的な使い方は、リストの中の要素を一つずつ順番に取り出して処理することです。
構文:
for 変数 in リスト:
# 繰り返したい処理
for
の後の処理は、インデント(字下げ)を必ず入れてください。Pythonでは、このインデントで繰り返し処理の範囲を判断します。
# 生徒の成績リスト
scores = [80, 95, 72, 88]
# scoresリストから、1つずつ点数を取り出してscoreという変数に入れ、それを表示する
for score in scores:
print("点数は", score, "です")
実行結果:
点数は 80 です
点数は 95 です
点数は 72 です
点数は 88 です
このように、リストの要素数である4回、print
文が繰り返されているのが分かりますね。
3-3. 条件によって処理を変える:if
文
プログラムに判断をさせたい時に使うのがif
文です。「もし〜〜という条件を満たすなら、この処理をせよ」という命令を書くことができます。
構文:
if 条件式:
# 条件が満たされた(真: True)場合に実行する処理
for
ループと同様に、if
の後の処理もインデントが必要です。
temperature = 32
# もしtemperatureが30より大きいなら、という条件
if temperature > 30:
print("暑いのでエアコンをつけましょう")
このコードでは、temperature
が30
より大きいので、メッセージが表示されます。もしtemperature
が25
だったら、何も表示されません。
3-4. if
とelse
:もし~なら、そうでなければ
if
文にelseを組み合わせると、「もし条件を満たすならAの処理を、そうでなければBの処理を」という、より細かな制御ができます。
score = 55
# もしscoreが60点以上なら
if score >= 60:
print("合格です!")
# そうでなければ
else:
print("不合格です。")
実行結果:
不合格です。 |
このscore
は60
点未満なので、else
ブロックの処理が実行されました。
for
ループによる「繰り返し」とif
文による「条件分岐」。この2つをマスターすれば、書けるプログラムの幅が劇的に広がります。例えば、「リストの全要素をチェックし、80点以上のものだけ表示する」といった処理も簡単に書けるようになります。
第4章:処理をまとめる魔法 - 関数
プログラムを書いていると、「あれ、この処理さっきも書いたな」と思うことがよくあります。同じコードを何度も書くのは、ミスの元ですし、後から修正するのも大変です。この章で学ぶ関数は、そうした問題を解決する強力な魔法です。
4-1. 「関数」ってなんだろう?
関数とは、特定の目的を持つ一連の処理をひとまとめにし、名前を付けたものです。
例えるなら、毎日行う「コーヒーを淹れる」という作業を、全自動コーヒーメーカーに任せるようなものです。ボタンを一つ押すだけで、「豆を挽く」「お湯を沸かす」「ドリップする」という一連の処理を自動で実行してくれますよね。
関数も同じで、一度作っておけば、後はその名前を呼び出すだけで、まとまった処理を何度でも実行できます。
4-2. 簡単な関数を作ってみる:def
の使い方
Pythonで関数を作るには、def
というキーワードを使います。
構文:
Python
def 関数名():
# ここに実行したい処理を書く
def
の後ろには、インデント(字下げ)を忘れずに入れてください。
# 「こんにちは!」と表示するだけのシンプルな関数
def say_hello():
print("こんにちは!")
# 作った関数を呼び出す
say_hello()
say_hello()
実行結果:
こんにちは! こんにちは! |
このように、say_hello()
と書くだけで、定義した処理を何度でも呼び出せます。
4-3. 引数(ひきすう):関数に情報を渡す
先ほどの関数は、いつも同じことしかできませんでした。関数をより便利にするのが引数(ひきすう)です。引数を使うと、関数を呼び出す側から、関数の中へ情報を渡すことができます。
コーヒーメーカーで言えば、「豆の種類」や「淹れる量」を指定するようなものです。
# nameという引数を受け取る関数
def greet(name):
print(name, "さん、こんにちは!")
# 関数を呼び出すときに、引数として具体的な値を渡す
greet("佐藤")
greet("鈴木")
実行結果:
佐藤 さん、こんにちは! 鈴木 さん、こんにちは! |
greet()
という同じ関数でも、渡す引数を変えることで、動作を柔軟に変えることができました。
4-4. 戻り値(もどりち):関数から結果を受け取る
関数は、処理を実行するだけでなく、その結果を呼び出し元に返すこともできます。この返される値のことを戻り値(もどりち)と呼び、return
という命令を使います。
コーヒーメーカーが、最終的に「淹れたてのコーヒー」を返してくれるのと同じです。
# 2つの数値を受け取り、その合計を返す関数
def add(a, b):
total = a + b
return total
# add関数を呼び出し、戻り値を変数resultに代入する
result = add(5, 3)
print(result) # 結果: 8
# 戻り値を直接使うこともできる
print(add(10, 20)) # 結果: 30
print()
や.append()
など、これまで何気なく使ってきたものも、実はPythonが予め用意してくれている便利な関数(組み込み関数)の一種です。
関数を使いこなせると、コードが整理されて非常に見やすくなり、プログラム全体の構造を設計する力が身につきます。
第5章:巨人の肩に乗る - ライブラリとimport
プログラミングの素晴らしい世界へようこそ。ここでは、すべてのコードをゼロから書く必要はありません。世界中の開発者が作成し、公開してくれている便利なプログラムの部品集(ライブラリ)を活用することで、複雑な処理も簡単に実装できます。これはまさに「巨人の肩に乗る」ようなものです。
5-1. ライブラリ:便利な道具箱
ライブラリとは、特定の目的のためによく使われる関数やクラスをひとまとめにした「道具箱」のようなものです。
- 数学的な計算が得意なライブラリ
- グラフをきれいに描画するためのライブラリ
- そして、ディープラーニングのモデルを構築するためのライブラリ
など、様々な専門分野のライブラリが存在します。これらを活用することで、私たちは専門的で高度な処理を、まるで元々用意されていた部品を組み立てるかのように簡単に利用できるのです。
5-2. 道具を借りてくる:import
文
ライブラリという道具箱を使うには、まず自分のプログラムに「この道具箱を使いますよ」と宣言する必要があります。そのために使うのがimport
文です。
構文:
import ライブラリ名
この一行をプログラムの最初に書いておくだけで、そのライブラリに含まれる便利な機能を呼び出せるようになります。
5-3. AIの必須科目:NumPyライブラリに触れてみよう
数あるライブラリの中でも、科学技術計算、特にAIやデータサイエンスの分野で絶対に欠かせないのがNumPy(ナムパイ)です。
NumPyは、高速な数値計算を行うためのライブラリで、特に配列(array)と呼ばれる、数値の集まりを効率的に扱うための強力な機能を提供します。ディープラーニングで扱う画像や音声データは、最終的にこのNumPyの配列形式で処理されることがほとんどです。
5-4. NumPy配列の作り方と簡単な計算
実際にNumPyを使ってみましょう。ライブラリをimport
する際には、as
を使って短い別名を付けるのが一般的です。NumPyはnp
という別名を付けるのが世界共通の慣習です。
# NumPyライブラリを「np」という名前でインポートする
import numpy as np
# Pythonのリスト
python_list = [1, 2, 3, 4]
# Pythonのリストを元に、NumPyの配列を作成する
numpy_array = np.array(python_list)
print("Pythonのリスト:", python_list)
print("NumPyの配列: ", numpy_array)
実行結果:
Pythonのリスト: [1, 2, 3, 4] NumPyの配列: [1 2 3 4] |
見た目は似ていますが、NumPy配列は計算において絶大な力を発揮します。例えば、配列の全ての要素を一度に2倍してみましょう。
# NumPy配列なら、これだけで全要素の計算が可能
result_array = numpy_array * 2
print(result_array)
実行結果:
[2 4 6 8] |
もしこれを通常のPythonリストでやろうとすると、第3章で学んだfor
ループを使って、一つずつ要素を取り出して計算するコードを書く必要があります。NumPyを使えば、そうした処理をシンプルかつ高速に実行できるのです。
この「配列全体に一括で計算を行う」という考え方は、ディープラーニングの計算を効率化する上で非常に重要です。
第6章:AIの設計図を読む - クラスの「使い方」入門
いよいよ最後の関門です。AIのコードで頻繁に目にするSequential()
やDense()
といった記述。これらはクラスという概念に基づいています。クラスは一見すると難しそうですが、この章では「自作する」のではなく「使い方」に焦点を絞ります。ここを乗り越えれば、あなたはもうAIのコードを読み解く準備が整います。
6-1. クラスは「設計図」、オブジェクトは「実体」
クラスとは、モノの「設計図」だと考えてください。例えば、「自動車」というクラス(設計図)には、色や最高速度といった「属性(データ)」と、エンジンをかける、加速するといった「動作(処理)」が定義されています。
そして、その設計図を元に作られた具体的な製品、例えば「赤いスポーツカー」や「青いトラック」がオブジェクト(またはインスタンス)です。
一つの設計図(クラス)から、色や形が違うたくさんの実体(オブジェクト)を作ることができるのです。
6-2. 設計図から実体を作る(インスタンス化)
設計図(クラス)から実体(オブジェクト)を作ることを、インスタンス化と呼びます。
ディープラーニングのコードで見てみましょう。
# TensorFlow/KerasライブラリからSequentialというクラスをインポート
from tensorflow.keras.models import Sequential
# Sequentialクラス(設計図)から、modelという名前のオブジェクト(実体)を作る
model = Sequential()
この一行がやっているのは、まさにインスタンス化です。 Sequential
という「モデルの設計図」を元に、私たちがこれから育てていくmodel
という名前の「具体的なモデル(オブジェクト)」を1つ作成した、という意味になります。
6-3. オブジェクトの機能を使う(メソッドの呼び出し)
オブジェクトが持つ「動作(処理)」のことを、特にメソッドと呼びます。メソッドを使うには、オブジェクト名の後ろにドット.
を付け、続けてメソッド名を書きます。
# modelオブジェクトが持つ、addというメソッドを呼び出す
model.add(...)
# modelオブジェクトが持つ、fitというメソッドを呼び出す
model.fit(...)
これは、先ほど作ったmodel
という具体的なモデル(オブジェクト)に対して、「層を追加せよ(.add()
)」や「学習を開始せよ(.fit()
)」と命令しているのです。
model.fit()
は、「model
オブジェクトよ、あなたのfit
という機能(メソッド)を使いなさい」という意味になります。
6-4. (応用)クラスを自作する必要はないの?
結論から言うと、初学者の段階では全く必要ありません。
ディープラーニングを始めるにあたっては、TensorFlowやPyTorchといったフレームワークが用意してくれている、Sequential
やDense
、SimpleRNN
といった、非常に優れたクラス(設計図)をユーザーとして使いこなすことが目標となります。
自分でクラスを設計(自作)するのは、論文に書かれているような新しいモデルを実装したり、非常に特殊な処理をさせたりといった、より応用的な段階に進んでからです。
まずは、ライブラリが提供してくれる便利なクラスの使い方に慣れることに集中しましょう。
おわりに
お疲れ様でした!これで、ディープラーニングのコードを読むための最低限のPython文法知識はすべて揃いました。
変数、リスト、for
、if
、関数、そしてライブラリとクラスの使い方。これらの部品がどのように連携してAIのコードが作られているのか、以前よりもずっとクリアに見えるようになったのではないでしょうか。
このテキストはあくまで地図です。本当の冒険は、これからあなたが実際にコードを書き、モデルを動かしてみることから始まります。恐れずに、どんどんAIの世界に飛び込んでいってください!
巻末付録
この付録では、プログラミング学習の序盤でつまずきやすい「エラー」と、最も手軽にディープラーニングを始められる「開発環境」について解説します。困ったときに見返してみてください。
1. よくあるエラーとその意味
プログラムが期待通りに動かない時、Pythonはエラーメッセージを出して原因を教えてくれます。最初は英語で戸惑うかもしれませんが、パターンは限られています。よく遭遇するエラーを覚えておけば、素早く問題を解決できます。
エラー名 | 意味とよくある原因 |
SyntaxError | 文法の間違いです。カッコの閉じ忘れ、コロン: の付け忘れなど、Pythonのルール通りに書けていない場合に発生します。 |
IndentationError | インデント(字下げ)の間違いです。for 文やif 文、関数の後の処理で、インデントが正しく揃っていない場合に発生します。Python特有の非常に多いエラーです。 |
NameError | 名前の間違いです。定義していない(値を入れていない)変数を使おうとしたり、関数名を打ち間違えたりした場合に発生します。 |
TypeError | データ型の間違いです。例えば、数値と文字列を+ で足し合わせるなど、異なるデータ型同士で許されていない操作を行った場合に発生します。 |
IndexError | インデックスの間違いです。リストの範囲外のインデックスを指定した場合に発生します。例えば、要素が3つしかないリスト(インデックスは0, 1, 2)で、list[3] にアクセスしようとした場合などです。 |
Google スプレッドシートにエクスポート
エラーが出ても慌てずに、まずはどの種類のエラーなのかを確認する癖をつけましょう。
2. 開発環境の準備(Google Colaboratoryのすすめ)
ディープラーニングを実行するには、専門的なライブラリやツールをPCにインストールする必要がありますが、この「環境構築」は初心者にとって非常にハードルが高い作業です。
そこでおすすめするのが、Googleが提供している無料のサービスGoogle Colaboratory(略してColab)です。
Google Colabをおすすめする理由:
- インストール不要: Webブラウザさえあれば、すぐにPythonとディープラーニングのコードを書き始められます。
- 主要ライブラリが導入済み: NumPy、TensorFlow、PyTorchといった主要なライブラリが既にインストールされています。
- 無料でGPUが使える: ディープラーニングの重い計算を高速化するためのGPU(高性能な計算装置)を無料で利用できます。これは最大のメリットです。
学習を始めるにあたって、これ以上最適な環境はありません。まずは以下のURLにアクセスし、Googleアカウントでログインするだけで、あなたのAI開発環境が手に入ります。
https://colab.research.google.com
生成AI研修のおすすめメニュー
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。