1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

猿でもわかるAIプログラミングシリーズ 🐵💻 Pythonの「if」「for」だけで作る簡単なAIロジック

Posted at

「Pythonのifとforだけで作る簡単なAIロジック」〜ゼロから学ぶ“考えるコード”〜


1. はじめに:AIって、本当に難しい?

「AIプログラミング」と聞くと、多くの人が「難しそう」「ライブラリ覚えるの大変そう」と思いがちです。でも実は、AI的な思考の基礎は、Pythonのifforだけでも実現できます。

本記事では、機械学習やディープラーニングを一旦横に置いて、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の使い方&便利機能ガイド」を予定しています!
フォローして、続きもぜひ読んでみてください 🙌

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?