{"id":1303,"date":"2025-06-16T07:56:56","date_gmt":"2025-06-15T22:56:56","guid":{"rendered":"https:\/\/beeknowledge.co.jp\/?p=1303"},"modified":"2025-06-16T08:31:41","modified_gmt":"2025-06-15T23:31:41","slug":"%e3%81%8a%e9%81%8a%e3%81%b3%e3%83%8d%e3%82%bf%ef%bc%81ai%e6%90%ad%e8%bc%89%e3%83%89%e3%83%ad%e3%83%bc%e3%83%b3%e9%98%b2%e8%a1%9b%e3%82%b7%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3","status":"publish","type":"post","link":"https:\/\/beeknowledge.co.jp\/?p=1303","title":{"rendered":"\u304a\u904a\u3073\u30cd\u30bf\uff01AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u4f5c"},"content":{"rendered":"<div class=\"veu_autoEyeCatchBox\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te.jpg 1024w, https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te-300x300.jpg 300w, https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te-150x150.jpg 150w, https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te-768x768.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div>\n<!DOCTYPE html>\n<html lang=\"ja\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u4f53\u9a13\uff01AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u4f5c<\/title>\n    <meta name=\"description\" content=\"AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092Python\u3067\u81ea\u4f5c\u3002\u9632\u885b\u30fb\u5b89\u5168\u4fdd\u969c\u30fb\u793e\u4f1a\u6539\u5584\u30fb\u8da3\u5473\u306b\u3082\u5f79\u7acb\u3064\u3001\u521d\u5fc3\u8005\u3067\u3082\u697d\u3057\u304f\u5b66\u3079\u308b\u5b9f\u8df5\u8b1b\u5ea7\u3002\u6700\u65b0AI\u30cb\u30e5\u30fc\u30b9\u306e\u80cc\u666f\u3084\u6280\u8853\u306e\u89e3\u8aac\u3082\u3002\">\n    <style>\n        body { font-family: \"Meiryo\", \"Hiragino Sans\", \"Arial\", sans-serif; margin: 2em; background: #f7f8fa; color: #222;}\n        h1, h2, h3 { color: #2072c7; }\n        code, pre { background: #eee; padding: 0.3em 0.5em; border-radius: 5px;}\n        .tip { background: #e0f7fa; border-left: 5px solid #00acc1; margin: 1em 0; padding: 1em;}\n        .bgbox { background: #f1f8e9; border-left: 5px solid #8bc34a; padding: 1em; margin: 1.5em 0;}\n        .keyword { color: #ad1457; font-weight: bold;}\n        .section { margin-bottom: 2.5em;}\n        .highlight { background: #ffe082; font-weight: bold;}\n        ol { padding-left: 1.2em;}\n        .toc { background: #fff3e0; padding: 1em; margin-bottom: 2em; border-radius: 8px; border-left: 5px solid #ff9800;}\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"toc\">\n        <h2>\u76ee\u6b21<\/h2>\n        <ol>\n            <li><a href=\"#intro\">\u306a\u305cAI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u304c\u8a71\u984c\uff1f<\/a><\/li>\n            <li><a href=\"#news\">\u6700\u65b0AI\u30cb\u30e5\u30fc\u30b9\u3068\u793e\u4f1a\u80cc\u666f<\/a><\/li>\n            <li><a href=\"#sim\">Python\u3067\u4f5c\u308b\uff01AI\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3<\/a><\/li>\n            <li><a href=\"#stepup\">\u30b9\u30c6\u30c3\u30d7\u30a2\u30c3\u30d7\uff1a\u3055\u3089\u306bAI\u4f53\u9a13\u3092\u6df1\u3081\u308b\u306b\u306f<\/a><\/li>\n            <li><a href=\"#society\">\u793e\u4f1a\u6539\u5584\u30fb\u8da3\u5473\u306e\u6d3b\u304b\u3057\u65b9\u30a2\u30a4\u30c7\u30a2<\/a><\/li>\n            <li><a href=\"#words\">TOEIC800\u8a9e\u6ce8\u91c8\u4ed8\u304d\u30ad\u30fc\u30ef\u30fc\u30c9\u96c6<\/a><\/li>\n            <li><a href=\"#summary\">\u307e\u3068\u3081\u3068\u4eca\u5f8c\u306e\u5c55\u671b<\/a><\/li>\n        <\/ol>\n    <\/div>\n\n    <div class=\"section\" id=\"intro\">\n        <h2>1. \u306a\u305cAI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u304c\u8a71\u984c\uff1f<\/h2>\n        <div class=\"bgbox\">\n            \u30c9\u30ed\u30fc\u30f3\u306bAI\uff08\u4eba\u5de5\u77e5\u80fd\uff09\u304c\u642d\u8f09\u3055\u308c\u308b\u3053\u3068\u3067\u3001<span class=\"highlight\">\u300c\u753b\u50cf\u89e3\u6790\u300d\u300c\u7d4c\u8def\u6700\u9069\u5316\u300d\u300c\u81ea\u52d5\u76e3\u8996\u30fb\u9632\u885b\u300d<\/span>\u306a\u3069\u3001\u5f93\u6765\u4eba\u9593\u304c\u884c\u3063\u3066\u3044\u305f\u8907\u96d1\u306a\u5224\u65ad\u3084\u64cd\u4f5c\u304c\u81ea\u52d5\u5316\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u9632\u885b\u30fb\u707d\u5bb3\u5bfe\u5fdc\u30fb\u30a4\u30f3\u30d5\u30e9\u70b9\u691c\u30fb\u8fb2\u696d\u306a\u3069\u591a\u69d8\u306a\u5206\u91ce\u3067\u6d3b\u7528\u304c\u9032\u307f\u3001\u4eca\u3084\u56fd\u3084\u4f01\u696d\u3060\u3051\u3067\u306a\u304f\u3001\u8da3\u5473\u306e\u5206\u91ce\u3067\u3082\u201cAI\u30c9\u30ed\u30fc\u30f3\u201d\u306f\u6ce8\u76ee\u306e\u7684\u3067\u3059\u3002\n        <\/div>\n        <ul>\n            <li>\u6575\u3084\u969c\u5bb3\u7269\u3092\u81ea\u52d5\u3067\u691c\u77e5\u3057\u3001\u56de\u907f\u3059\u308b<\/li>\n            <li>\u4eba\u9593\u306e\u6307\u793a\u304c\u306a\u304f\u3066\u3082\u76ee\u7684\u5730\u306b\u5230\u9054\u3059\u308b<\/li>\n            <li>\u753b\u50cf\u30fb\u6620\u50cf\u304b\u3089\u5371\u967a\u3084\u7570\u5e38\u3092\u7d20\u65e9\u304f\u767a\u898b\u3059\u308b<\/li>\n        <\/ul>\n        <p>\n            \u3053\u3046\u3057\u305f\u6700\u5148\u7aef\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u304c\u8eab\u8fd1\u306b\u611f\u3058\u3089\u308c\u308b\u65b9\u6cd5\u3068\u3057\u3066\u3001\u300c\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u81ea\u4f5c\u300d\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\uff01\n        <\/p>\n    <\/div>\n\n    <div class=\"section\" id=\"news\">\n        <h2>2. \u6700\u65b0AI\u30cb\u30e5\u30fc\u30b9\u3068\u793e\u4f1a\u80cc\u666f<\/h2>\n        <h3>\u25a0 AI\u3068\u9632\u885b\uff1a\u65e5\u672c\u306e\u6700\u65b0\u52d5\u5411<\/h3>\n        <p>\n            2025\u5e746\u6708\u3001\u9632\u885b\u7701\u306f\u300cAI\u642d\u8f09\u88c5\u5099\u54c1\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u300d\u3092\u7b56\u5b9a\u3057\u3001<b>\u5b89\u5168\u6027\u3084\u502b\u7406\u6027\u3092\u78ba\u4fdd\u3057\u306a\u304c\u3089\u9632\u885bAI\u6280\u8853\u306e\u958b\u767a\u3092\u52a0\u901f<\/b>\u3059\u308b\u65b9\u91dd\u3092\u767a\u8868\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u4e16\u754c\u7684\u306aAI\u8ecd\u62e1\u7af6\u4e89\u306b\u5bfe\u5fdc\u3057\u3064\u3064\u3001<span class=\"keyword\">\u900f\u660e\u6027<\/span>\u3084<span class=\"keyword\">\u8aac\u660e\u8cac\u4efb<\/span>\u3092\u62c5\u4fdd\u3059\u308b\u8a66\u307f\u3067\u3059\u3002\n        <\/p>\n        <div class=\"tip\">\n            <b>\u80cc\u666f\u89e3\u8aac\uff1a<\/b><br>\n            <ul>\n                <li>AI\u6d3b\u7528\u304c\u9032\u3080\u4e2d\u3001\u30c9\u30ed\u30fc\u30f3\u306a\u3069\u300c\u7121\u4eba\u5316\u9632\u885b\u30b7\u30b9\u30c6\u30e0\u300d\u306e\u7814\u7a76\u304c\u6d3b\u767a\u5316<\/li>\n                <li>\u793e\u4f1a\u5168\u4f53\u3067AI\u306e\u30ea\u30b9\u30af\u3068\u30d9\u30cd\u30d5\u30a3\u30c3\u30c8\u306e\u8b70\u8ad6\u304c\u9032\u3080\uff08\u8ecd\u4e8b\u3001\u707d\u5bb3\u3001\u7523\u696d\u2026\uff09<\/li>\n                <li>\u8457\u4f5c\u6a29\u3084\u502b\u7406\u554f\u984c\u306b\u3082\u914d\u616e\u3057\u305f\u653f\u7b56\u3065\u304f\u308a\u304c\u6c42\u3081\u3089\u308c\u3066\u3044\u308b<\/li>\n            <\/ul>\n        <\/div>\n        <h3>\u25a0 \u82f1\u8a9e\u570f\u306eAI\u30cb\u30e5\u30fc\u30b9\u304b\u3089<\/h3>\n        <p>\n            Getty Images\u304cStability AI\u3092\u8457\u4f5c\u6a29\u4fb5\u5bb3\u3067\u63d0\u8a34\uff082025\u5e746\u6708\uff09\u3002AI\u306b\u3088\u308b\u753b\u50cf\u751f\u6210\u3084\u89e3\u6790\u306b\u304a\u3051\u308b\u300c\u30c7\u30fc\u30bf\u5229\u7528\u306e\u502b\u7406\u300d\u3082\u30db\u30c3\u30c8\u306a\u8a71\u984c\u3002AI\u696d\u754c\u306e\u6210\u9577\u306b\u6cd5\u6574\u5099\u3084\u793e\u4f1a\u7684\u30eb\u30fc\u30eb\u304c\u4e0d\u53ef\u6b20\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\n        <\/p>\n    <\/div>\n\n    <div class=\"section\" id=\"sim\">\n        <h2>3. Python\u3067\u4f5c\u308b\uff01AI\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3<\/h2>\n        <h3>\u25a0 \u30b7\u30ca\u30ea\u30aa\u6982\u8981<\/h3>\n        <p>\n            <b>\u76ee\u6a19\uff1a<\/b>AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\uff08\u9752\u3044\u70b9\uff09\u304c\u6575\uff08\u8d64\u3044\u70b9\uff09\u3092\u81ea\u52d5\u691c\u77e5\u3057\u3001\u56de\u907f\u3057\u306a\u304c\u3089\u57fa\u5730\uff08\u7dd1\u56db\u89d2\uff09\u3092\u76ee\u6307\u3059\u30b7\u30f3\u30d7\u30eb\u306a\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002Python\u3068\u300cpygame\u300d\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u5b9f\u88c5\u3057\u307e\u3059\u3002\n        <\/p>\n        <div class=\"tip\">\n            <b>\u6e96\u5099\uff1a<\/b>\n            <ol>\n                <li>Python 3.x\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n                <li>\u30bf\u30fc\u30df\u30ca\u30eb\/\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3067 <code>pip install pygame<\/code> \u3092\u5b9f\u884c<\/li>\n                <li>\u4e0b\u8a18\u30b3\u30fc\u30c9\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u5b9f\u884c\uff01<\/li>\n            <\/ol>\n        <\/div>\n\n        <h3>\u25a0 \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/h3>\n        <pre><code>\nimport pygame\nimport heapq\nimport random\nimport math\nimport os\n\nWIDTH, HEIGHT = 600, 400\nGRID = 20\nROWS, COLS = HEIGHT \/\/ GRID, WIDTH \/\/ GRID\n\nBLUE = (0, 150, 255)\nRED = (255, 50, 50)\nGREEN = (50, 200, 50)\nWHITE = (255, 255, 255)\nGRAY = (170, 170, 170)\nBLACK = (30, 30, 30)\n\nENEMY_NUM = 10\nOBSTACLE_NUM = 10\nENEMY_MOVE_INTERVAL = 6\nOBSTACLE_MOVE_INTERVAL = 18\nMAX_EPISODES = 10\nCATCH_RANGE = 1\n\ndef heuristic(a, b):\n    return abs(a[0] - b[0]) + abs(a[1] - b[1])\n\ndef get_neighbors(pos):\n    neighbors = []\n    x, y = pos\n    for dx, dy in [(-1,0), (1,0), (0,-1), (0,1)]:\n        nx, ny = x+dx, y+dy\n        if 0 <= nx < COLS and 0 <= ny < ROWS:\n            neighbors.append((nx, ny))\n    return neighbors\n\ndef astar(start, goal, grid_map):\n    heap = []\n    heapq.heappush(heap, (0, start))\n    came_from = {}\n    cost_so_far = {start: 0}\n    while heap:\n        _, current = heapq.heappop(heap)\n        if current == goal:\n            break\n        for neighbor in get_neighbors(current):\n            if grid_map[neighbor[1]][neighbor[0]] == 1:\n                continue\n            new_cost = cost_so_far[current] + 1\n            if neighbor not in cost_so_far or new_cost < cost_so_far[neighbor]:\n                cost_so_far[neighbor] = new_cost\n                priority = new_cost + heuristic(goal, neighbor)\n                heapq.heappush(heap, (priority, neighbor))\n                came_from[neighbor] = current\n    if goal not in came_from:\n        return None\n    # \u7d4c\u8def\u5fa9\u5143\n    path = [goal]\n    while path[-1] != start:\n        path.append(came_from[path[-1]])\n    path.reverse()\n    return path\n\ndef random_move(pos, grid_map):\n    candidates = []\n    for n in get_neighbors(pos):\n        if grid_map[n[1]][n[0]] == 0:\n            candidates.append(n)\n    return random.choice(candidates) if candidates else pos\n\ndef random_move_wall(pos, grid_map, start, goal, avoid=[]):\n    candidates = []\n    for n in get_neighbors(pos):\n        if (grid_map[n[1]][n[0]] == 0 and n != start and n != goal and n not in avoid):\n            candidates.append(n)\n    return random.choice(candidates) if candidates else pos\n\n# --- \u65e5\u672c\u8a9e\u30d5\u30a9\u30f3\u30c8\u81ea\u52d5\u691c\u51fa ---\ndef get_jp_font(size=30):\n    font_paths = [\n        \"C:\/Windows\/Fonts\/msgothic.ttc\",\n        \"C:\/Windows\/Fonts\/meiryo.ttc\",\n        \"\/usr\/share\/fonts\/truetype\/fonts-japanese-gothic.ttf\",\n        \"\/usr\/share\/fonts\/opentype\/noto\/NotoSansCJK-Regular.ttc\",\n        \"\/System\/Library\/Fonts\/\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W3.ttc\",\n        \"\/usr\/share\/fonts\/opentype\/ipaexfont-gothic\/ipaexg.ttf\",\n    ]\n    for path in font_paths:\n        if os.path.exists(path):\n            return pygame.font.Font(path, size)\n    return pygame.font.SysFont(None, size)\n\ndef main():\n    pygame.init()\n    screen = pygame.display.set_mode((WIDTH, HEIGHT))\n    pygame.display.set_caption(\"\u52d5\u7684A*\u30c9\u30ed\u30fc\u30f3\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\uff08\u5175\u58eb10\u4eba\u30fb\u7a81\u7834\u53ef\u80fd\uff09\")\n    font = get_jp_font(28)\n    font_small = get_jp_font(20)\n    clock = pygame.time.Clock()\n\n    start = (2, 2)\n    goal = (COLS-3, ROWS-3)\n    episode = 0\n    results = []\n\n    while episode < MAX_EPISODES:\n        # \u969c\u5bb3\u7269\n        fixed_obstacles = []\n        while len(fixed_obstacles) < OBSTACLE_NUM:\n            x = random.randint(4, COLS-4)\n            y = random.randint(2, ROWS-2)\n            p = (x, y)\n            if p != start and p != goal and p not in fixed_obstacles:\n                fixed_obstacles.append(p)\n        # \u6575\uff08\u5175\u58eb\uff09: \u30b4\u30fc\u30eb\u5468\u56f23\u30de\u30b9\u306f\u7a7a\u3051\u308b\n        enemies = []\n        while len(enemies) < ENEMY_NUM:\n            if len(enemies) < ENEMY_NUM \/\/ 2:\n                x = random.randint(COLS-7, COLS-4)\n                y = random.randint(ROWS-7, ROWS-4)\n            else:\n                x = random.randint(6, COLS-7)\n                y = random.randint(3, ROWS-4)\n            p = (x, y)\n            # \u30b4\u30fc\u30eb\u3068\u305d\u306e\u5468\u56f23\u30de\u30b9\u306f\u7a7a\u3051\u308b\n            if (abs(x-goal[0]) <= 3 and abs(y-goal[1]) <= 3):\n                continue\n            if p != start and p != goal and p not in fixed_obstacles and p not in enemies:\n                enemies.append(p)\n\n        drone_pos = start\n        drone_path = [drone_pos]\n        frame_count = 0\n        running = True\n        arrived = False\n        msg = \"\u8a70\u307f\"\n\n        while running:\n            grid_map = [[0]*COLS for _ in range(ROWS)]\n            for x, y in fixed_obstacles:\n                grid_map[y][x] = 1\n            for ex, ey in enemies:\n                for dx in range(-2,3):\n                    for dy in range(-2,3):\n                        nx, ny = ex+dx, ey+dy\n                        if 0<=nx<COLS and 0<=ny<ROWS:\n                            grid_map[ny][nx] = 1\n            grid_map[drone_pos[1]][drone_pos[0]] = 0\n            grid_map[goal[1]][goal[0]] = 0\n\n            path = astar(drone_pos, goal, grid_map)\n            if drone_pos == goal:\n                msg = \"\u5230\u9054\u6210\u529f\"\n                arrived = True\n                running = False\n                continue\n            if not path:\n                msg = \"\u8a70\u307f\"\n                arrived = False\n                running = False\n                continue\n\n            if len(path) > 1:\n                drone_pos = path[1]\n                drone_path.append(drone_pos)\n\n            # \u6575\uff08\u5175\u58eb\uff09\u79fb\u52d5\n            if running and frame_count % ENEMY_MOVE_INTERVAL == 0:\n                new_enemies = []\n                for e in enemies:\n                    avoid = fixed_obstacles + enemies\n                    ne = random_move(e, grid_map)\n                    # \u30b4\u30fc\u30eb\u5468\u56f23\u30de\u30b9\u306f\u5165\u308c\u306a\u3044\n                    if (abs(ne[0]-goal[0]) <= 3 and abs(ne[1]-goal[1]) <= 3):\n                        new_enemies.append(e)\n                    elif ne != start and ne != goal:\n                        new_enemies.append(ne)\n                    else:\n                        new_enemies.append(e)\n                enemies = new_enemies\n\n            # \u969c\u5bb3\u7269\u79fb\u52d5\n            if running and frame_count % OBSTACLE_MOVE_INTERVAL == 0:\n                new_fixed_obstacles = []\n                for i, o in enumerate(fixed_obstacles):\n                    avoid = [start, goal] + enemies + new_fixed_obstacles + fixed_obstacles[i+1:]\n                    no = random_move_wall(o, grid_map, start, goal, avoid=avoid)\n                    new_fixed_obstacles.append(no)\n                fixed_obstacles = new_fixed_obstacles\n\n            # \u6355\u6349\u5224\u5b9a\n            for ex, ey in enemies:\n                if abs(drone_pos[0]-ex)<=CATCH_RANGE and abs(drone_pos[1]-ey)<=CATCH_RANGE:\n                    msg = \"\u6355\u6349\"\n                    arrived = False\n                    running = False\n                    break\n\n            screen.fill(WHITE)\n            for y in range(ROWS):\n                for x in range(COLS):\n                    rect = pygame.Rect(x*GRID, y*GRID, GRID, GRID)\n                    if grid_map[y][x] == 1:\n                        pygame.draw.rect(screen, GRAY, rect)\n                    pygame.draw.rect(screen, (220,220,220), rect, 1)\n            for x, y in fixed_obstacles:\n                pygame.draw.rect(screen, GRAY, (x*GRID+1, y*GRID+1, GRID-2, GRID-2))\n            gx, gy = goal\n            pygame.draw.rect(screen, GREEN, (gx*GRID+3, gy*GRID+3, GRID-6, GRID-6))\n            for ex, ey in enemies:\n                pygame.draw.circle(screen, RED, (ex*GRID+GRID\/\/2, ey*GRID+GRID\/\/2), GRID*2\/\/3)\n            for px, py in drone_path:\n                pygame.draw.circle(screen, (100, 180, 255), (px*GRID+GRID\/\/2, py*GRID+GRID\/\/2), GRID\/\/4)\n            px, py = drone_pos\n            pygame.draw.circle(screen, BLUE, (px*GRID+GRID\/\/2, py*GRID+GRID\/\/2), GRID\/\/2)\n            count_txt = font_small.render(f'{episode+1}\u56de\u76ee\/{MAX_EPISODES}', True, BLACK)\n            screen.blit(count_txt, (10, 5))\n            pygame.display.flip()\n            clock.tick(13)\n            frame_count += 1\n\n        results.append(msg)\n        result_show = font.render(f\"{episode+1}\u56de\u76ee: {msg}\", True, BLACK)\n        screen.blit(result_show, (WIDTH\/\/2-80, HEIGHT\/\/2-18))\n        pygame.display.flip()\n        pygame.time.wait(1100)\n        episode += 1\n\n    screen.fill(WHITE)\n    endtxt = font.render(f\"\u5168{MAX_EPISODES}\u56de\u7d42\u4e86\", True, BLACK)\n    screen.blit(endtxt, (WIDTH\/\/2-80, HEIGHT\/\/2-20))\n    for i, r in enumerate(results):\n        txt = font_small.render(f\"{i+1}\u56de\u76ee: {r}\", True, BLACK)\n        screen.blit(txt, (30, HEIGHT\/\/2+20 + i*25))\n    pygame.display.flip()\n    pygame.time.wait(3500)\n    pygame.quit()\n\nif __name__ == \"__main__\":\n    main()\n\n\n        <\/code><\/pre>\n<div class=\"tip\">\n    <b>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u89e3\u8aac\uff1a<\/b><br>\n    \u30fb\u30c9\u30ed\u30fc\u30f3\u306f\u73fe\u5728\u5730\u304b\u3089\u30b4\u30fc\u30eb\u307e\u3067\u306e\u6700\u77ed\u7d4c\u8def\u3092\n    <a href=\"https:\/\/ja.wikipedia.org\/wiki\/A*\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\" target=\"_blank\">A*\uff08A\u30b9\u30bf\u30fc\uff09\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/a>\n    \u3067\u63a2\u7d22\u3057\u307e\u3059\u3002<br>\n    \u30fbA*\u306f\u300c\u4eca\u3044\u308b\u5834\u6240\u304b\u3089\u30b4\u30fc\u30eb\u307e\u3067\u306e\u63a8\u5b9a\u30b3\u30b9\u30c8\u300d\u3092\u8a08\u7b97\u3057\u3001\u6700\u3082\u52b9\u7387\u306e\u826f\u3044\u9053\u3092\u6bce\u56de\u9078\u3073\u307e\u3059\u3002<br>\n    \u30fb\u6575\u3084\u969c\u5bb3\u7269\u306e\u5468\u56f2\u3092\u300c\u901a\u884c\u4e0d\u53ef\u30a8\u30ea\u30a2\u300d\u3068\u3057\u3066\u6271\u3044\u3001\u5b89\u5168\u306a\u9053\u7b4b\u3060\u3051\u3092\u9078\u629e\u3057\u307e\u3059\u3002<br>\n    \u30fb\u6575\u3084\u969c\u5bb3\u7269\u304c\u52d5\u3044\u305f\u5834\u5408\u3082\u3001\u30c9\u30ed\u30fc\u30f3\u306f\u6bce\u30b9\u30c6\u30c3\u30d7\u3067\u65b0\u3057\u3044\u7d4c\u8def\u3092\u518d\u8a08\u7b97\u3057\u3001\u67d4\u8edf\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002<br>\n    \u30fb\u30b4\u30fc\u30eb\u5230\u9054\u307e\u3067\u300c\u885d\u7a81\u3092\u56de\u907f\u3057\u7d9a\u3051\u308b\u300d\u3053\u3068\u304cAI\u306e\u76ee\u7684\u3067\u3059\u3002<br>\n    <br>\n    <a href=\"https:\/\/ja.wikipedia.org\/wiki\/A*\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\" target=\"_blank\">\u25b6 A*\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff08Wikipedia\u65e5\u672c\u8a9e\uff09<\/a><br>\n<\/div>\n\n    <\/div>\n\n    <div class=\"section\" id=\"stepup\">\n        <h2>4. \u30b9\u30c6\u30c3\u30d7\u30a2\u30c3\u30d7\uff1a\u3055\u3089\u306bAI\u4f53\u9a13\u3092\u6df1\u3081\u308b\u306b\u306f<\/h2>\n        <h3>\u25a0 \u30b9\u30c6\u30c3\u30d7\u3054\u3068\u306b\u6311\u6226\uff01<\/h3>\n        <ol>\n            <li><b>Step 1:<\/b> \u6575\u3084\u57fa\u5730\u3092\u8907\u6570\u914d\u7f6e\u3001\u969c\u5bb3\u7269\u3092\u8ffd\u52a0\u3057\u3066\u307f\u3088\u3046<\/li>\n            <li><b>Step 2:<\/b> \u753b\u50cf\u8a8d\u8b58\uff08OpenCV\u306a\u3069\uff09\u3092\u5c0e\u5165\u3057\u3001\u672c\u7269\u306e\u753b\u50cf\u304b\u3089\u6575\u3092\u8b58\u5225<\/li>\n            <li><b>Step 3:<\/b> \u5f37\u5316\u5b66\u7fd2\uff08Q-Learning\u3084Deep RL\uff09\u3092\u4f7f\u3063\u305f\u81ea\u5df1\u5b66\u7fd2\u578bAI\u3078<\/li>\n            <li><b>Step 4:<\/b> Web\u30a2\u30d7\u30ea\u5316\u3057\u3066\u4e16\u754c\u4e2d\u304b\u3089\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u53c2\u52a0<\/li>\n            <li><b>Step 5:<\/b> Raspberry Pi\u3084\u30de\u30a4\u30b3\u30f3\u3068\u9023\u643a\u3057\u3001\u30ea\u30a2\u30eb\u30c9\u30ed\u30fc\u30f3\u3067\u8a66\u3059<\/li>\n        <\/ol>\n        <div class=\"bgbox\">\n            <b>Tips:<\/b> <br>\n            Python\u306e\u4ed6\u306b\u3082\u300cUnity + C#\u300d\u3084\u300cProcessing\u300d\u300cJavascript\u300d\u3067\u53ef\u8996\u5316\u3057\u305f\u308a\u3001IoT\u6a5f\u5668\u3068\u3064\u306a\u3052\u3066\u81ea\u5b85\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5b9f\u9a13\u3082\u53ef\u80fd\u3067\u3059\uff01\n        <\/div>\n    <\/div>\n\n\n    <\/div>\n\n    <div class=\"section\" id=\"words\">\n        <h2>5. \u3064\u3044\u3067\u306b\u3053\u306e\u30d6\u30ed\u30b0\u3092\u4f5c\u6210\u3059\u308b\u306b\u3042\u305f\u3063\u3066\u8abf\u3079\u305f\u3000\u6ce8\u91c8\u4ed8\u304d\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9\u96c6<\/h2>\n        <ul>\n            <li><b>Mitigation<\/b>\uff08\u7de9\u548c\uff09\uff1a\u5371\u967a\u3084\u640d\u5bb3\u3092\u5c0f\u3055\u304f\u3059\u308b\u3053\u3068<\/li>\n            <li><b>Optimization<\/b>\uff08\u6700\u9069\u5316\uff09\uff1a\u30d9\u30b9\u30c8\u306a\u89e3\u6c7a\u7b56\u3092\u898b\u3064\u3051\u3066\u52b9\u7387\u3092\u9ad8\u3081\u308b\u3053\u3068<\/li>\n            <li><b>Guideline<\/b>\uff08\u6307\u91dd\uff09\uff1a\u884c\u52d5\u3084\u5224\u65ad\u306e\u57fa\u6e96\u3068\u306a\u308b\u30eb\u30fc\u30eb<\/li>\n            <li><b>Transparency<\/b>\uff08\u900f\u660e\u6027\uff09\uff1a\u7269\u4e8b\u3092\u660e\u78ba\u306b\u3057\u3001\u96a0\u3057\u3054\u3068\u304c\u306a\u3044\u3053\u3068<\/li>\n            <li><b>Ethics<\/b>\uff08\u502b\u7406\uff09\uff1a\u5584\u60aa\u3084\u793e\u4f1a\u7684\u306a\u898f\u7bc4\u306b\u95a2\u308f\u308b\u8003\u3048\u65b9<\/li>\n            <li><b>Compensation<\/b>\uff08\u88dc\u511f\uff09\uff1a\u640d\u5bb3\u3084\u6a29\u5229\u4fb5\u5bb3\u3078\u306e\u304a\u91d1\u3084\u652f\u6255\u3044<\/li>\n            <li><b>Threaten<\/b>\uff08\u8105\u304b\u3059\uff09\uff1a\u5371\u967a\u306b\u3055\u3089\u3059\u3053\u3068<\/li>\n        <\/ul>\n    <\/div>\n\n    <div class=\"section\" id=\"summary\">\n        <h2>6. \u307e\u3068\u3081\u3068\u4eca\u5f8c\u306e\u5c55\u671b<\/h2>\n        <p>\n            AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u306e\u6280\u8853\u306f\u3001\u4eca\u3084\u56fd\u5bb6\u306e\u5b89\u5168\u4fdd\u969c\u304b\u3089\u65e5\u5e38\u306e\u66ae\u3089\u3057\u3001\u8da3\u5473\u307e\u3067\u591a\u69d8\u306a\u5834\u9762\u3067\u6d3b\u8e8d\u306e\u5834\u3092\u5e83\u3052\u3066\u3044\u307e\u3059\u3002\u5b9f\u969b\u306b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u3063\u3066\u307f\u308b\u3053\u3068\u3067\u3001\u6700\u65b0\u30cb\u30e5\u30fc\u30b9\u306e\u610f\u5473\u3084\u3001AI\u304c\u3082\u305f\u3089\u3059\u5909\u5316\u3092\u300c\u81ea\u5206\u3054\u3068\u300d\u3068\u3057\u3066\u611f\u3058\u3089\u308c\u308b\u3067\u3057\u3087\u3046\u3002\n        <\/p>\n        <p>\n            \u4eca\u5f8c\u306f\u3001<span class=\"keyword\">\u30ea\u30a2\u30eb\u306a\u9632\u885b\u30b7\u30ca\u30ea\u30aa\u3084IoT\u6a5f\u5668\u3068\u306e\u9023\u643a\u3001AI\u502b\u7406\u30fb\u6cd5\u5f8b<\/span>\u3078\u306e\u7406\u89e3\u3082\u6b20\u304b\u305b\u307e\u305b\u3093\u3002\u307e\u305a\u306f\u697d\u3057\u304f\u4f53\u9a13\u304b\u3089\u59cb\u3081\u3001\u793e\u4f1a\u8ab2\u984c\u3084\u30ad\u30e3\u30ea\u30a2\u30fb\u8da3\u5473\u306b\u5fdc\u7528\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01\n        <\/p>\n        <div class=\"tip\">\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u4f53\u9a13\uff01AI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u4f5c \u76ee\u6b21 \u306a\u305cAI\u642d\u8f09\u30c9\u30ed\u30fc\u30f3\u304c\u8a71\u984c\uff1f \u6700\u65b0AI\u30cb\u30e5\u30fc\u30b9\u3068\u793e\u4f1a\u80cc\u666f Python\u3067\u4f5c\u308b\uff01AI\u9632\u885b\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3 \u30b9\u30c6\u30c3\u30d7\u30a2\u30c3\u30d7\uff1a\u3055\u3089\u306bAI\u4f53\u9a13\u3092\u6df1\u3081\u308b\u306b\u306f  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1309,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"saved_in_kubio":false,"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"vkexunit_cta_each_option":"","footnotes":""},"categories":[6,54],"tags":[27,51,41,36],"class_list":["post-1303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programing","category-54","tag-27","tag-51","tag-41","tag-36"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/beeknowledge.co.jp\/wp-content\/uploads\/2025\/06\/te.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/1303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1303"}],"version-history":[{"count":7,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/1303\/revisions"}],"predecessor-version":[{"id":1311,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/1303\/revisions\/1311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=\/wp\/v2\/media\/1309"}],"wp:attachment":[{"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beeknowledge.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}