「Pythonのifとforだけで作る簡単なAIロジック」〜ゼロから学ぶ“考えるコード”〜
1. はじめに:AIって、本当に難しい?
「AIプログラミング」と聞くと、多くの人が「難しそう」「ライブラリ覚えるの大変そう」と思いがちです。でも実は、AI的な思考の基礎は、Pythonのif
とfor
だけでも実現できます。
本記事では、機械学習やディープラーニングを一旦横に置いて、Pythonの基本構文だけで“AI的なロジック”を組む練習をしていきます。
目的は、複雑な仕組みの前に、まず「考えるロジック」を体験することです。
2. AIロジックとは?人間的判断をコードに落とす
ここでいう“AI的ロジック”とは、以下のような特徴を持つコードを指します:
- 状況に応じて動作が変わる(条件分岐)
- 過去の情報を学びに使う(履歴記録)
- 試行錯誤して改善する(簡易的な報酬設計)
複雑な数学モデルがなくても、こうしたロジックは簡単なPythonコードでも再現可能です。
3. 実装:ifとforだけで作る迷路脱出AI
🧩 テーマ:迷路のゴールを目指すエージェント
迷路のような2次元グリッドの中で、エージェントがゴールにたどり着くプログラムを作ります。
maze = [
["S", ".", ".", "#", "."],
["#", "#", ".", "#", "."],
[".", ".", ".", ".", "."],
[".", "#", "#", "#", "."],
[".", ".", ".", "G", "#"]
]
-
"S"
:Start(開始位置) -
"G"
:Goal(ゴール) -
"."
:通れる道 -
"#"
:壁
🎯 ルール:
- 上下左右に1マスずつ移動可能
- 壁にはぶつかれない
- ゴールに着いたら終了
👨💻 コード例:最短ではないが「考えて進む」
def find_start(maze):
for i in range(len(maze)):
for j in range(len(maze[i])):
if maze[i][j] == "S":
return i, j
moves = [(-1, 0), (1, 0), (0, -1), (0, 1)] # 上下左右
def escape_maze(maze):
visited = set()
path = []
def move(x, y):
if (x, y) in visited:
return False
visited.add((x, y))
path.append((x, y))
if maze[x][y] == "G":
return True
for dx, dy in moves:
nx, ny = x + dx, y + dy
if 0 <= nx < len(maze) and 0 <= ny < len(maze[0]):
if maze[nx][ny] != "#":
if move(nx, ny):
return True
path.pop()
return False
sx, sy = find_start(maze)
if move(sx, sy):
return path
else:
return None
result = escape_maze(maze)
print("ゴールへの経路:", result)
4. 実務TIPS:ルールベースAIを使うときのコツ
✅ 現場での使い方例
- 簡易なチャットボット:キーワードに基づいて返答を切り替える
- 工場ラインの動作判定:条件分岐で異常検知やアラートを発生
- ゲームAIの初期ロジック:ランダム移動から「報酬付き行動」へ
❌ よくある失敗例
-
if
が多すぎて保守不能(→関数化で整理) - 状態をメモしていない(→「履歴」や「報酬」の設計が重要)
- 複雑な条件を一文に詰め込みすぎる
5. 応用編:簡易報酬付きロジックに進化させる
例:ゴールに近づいたら+1点、遠ざかったら-1点
def distance_to_goal(x, y, gx, gy):
return abs(gx - x) + abs(gy - y)
# ゴール位置の取得
def find_goal(maze):
for i in range(len(maze)):
for j in range(len(maze[i])):
if maze[i][j] == "G":
return i, j
こうした距離ベースの「簡易報酬関数」を導入するだけでも、
AI的な判断の幅がぐっと広がります。
6. まとめ:まずは「考えるコード」から始めよう
観点 | 価値 |
---|---|
✅ メリット | 概念理解に最適/ライブラリ不要/動作が目で追える |
⚠️ デメリット | 実用性には限界あり/大規模には不向き |
🚀 伸びしろ | ここからQ-Learning, 強化学習, Agent設計へ発展可能 |
🧠 最後にひとこと
AIは必ずしもブラックボックスではなく、ルール・行動・学習の組み合わせでできています。
まずはPythonの基本文法を使って、**“思考するコード”**を書いてみませんか?
📎 次回は「Jupyter Notebookの使い方&便利機能ガイド」を予定しています!
フォローして、続きもぜひ読んでみてください 🙌