こんにちはしんすまです。
僕のことについては👆のプロフィールを見てくれたらうれしいです。
今回はタイトル通りGeminiにPythonコード書いてもらったら優秀すぎた件です。
ここ最近の生成AIブームの中で「コードを書けるAI」は珍しくなくなりましたが、Googleの Gemini が思った以上にやばかったので共有します。
ふと「Pythonでシューティングゲーム作りたいな」と思って、軽い気持ちでGeminiに頼んでみました、、、
出力されたPythonコードをそのままVSコードにそのまま貼り付けたら実行できちゃったよ(笑)
マジでそのまま動いた。
(しかも1発で)
コードの完成度が高すぎる
よくあるのは、AIにコードを書かせても
・ちょっとした構文ミスがある
・ライブラリのインポート忘れ
・Pythonバージョン的に合わない関数使ってる
みたいな"惜しい"感じになることが多いんだけど、
今回はVSコードにペタッと貼ってそのまま実行→即動作OK。
これは素直にすごかった…。
実際に書いてくれたコード(抜粋)
実際に書いてくれたのはこんな感じ、、(一部抜粋です)
Pygameを使った2Dシューティングの超シンプル版:
import pygame
import random
import syspygame.init()
# ウィンドウ設定
WIDTH, HEIGHT = 480, 640
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Simple Shooter")
clock = pygame.time.Clock()# プレイヤー設定
player = pygame.Rect(WIDTH // 2 - 20, HEIGHT - 60, 40, 40)
player_speed = 5# 弾
bullets = []
bullet_speed = 7# 敵
enemies = []
enemy_speed = 3
spawn_event = pygame.USEREVENT + 1
pygame.time.set_timer(spawn_event, 1000)# メインループ
running = True
while running:
screen.fill((0, 0, 0))for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == spawn_event:
x = random.randint(0, WIDTH - 30)
enemies.append(pygame.Rect(x, 0, 30, 30))keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player.left > 0:
player.move_ip(-player_speed, 0)
if keys[pygame.K_RIGHT] and player.right < WIDTH:
player.move_ip(player_speed, 0)
if keys[pygame.K_SPACE]:
if len(bullets) < 5:
bullets.append(pygame.Rect(player.centerx - 5, player.top, 10, 20))# 弾処理
for bullet in bullets[:]:
bullet.move_ip(0, -bullet_speed)
if bullet.bottom < 0:
bullets.remove(bullet)# 敵処理
for enemy in enemies[:]:
enemy.move_ip(0, enemy_speed)
if enemy.top > HEIGHT:
enemies.remove(enemy)
for bullet in bullets:
if enemy.colliderect(bullet):
enemies.remove(enemy)
bullets.remove(bullet)
break# 描画
pygame.draw.rect(screen, (0, 255, 0), player)
for bullet in bullets:
pygame.draw.rect(screen, (255, 255, 0), bullet)
for enemy in enemies:
pygame.draw.rect(screen, (255, 0, 0), enemy)pygame.display.flip()
clock.tick(60)pygame.quit()
sys.exit()
いやいや、これはすごすぎる
「簡単に」と言っただけなのに、
-
プレイヤーの移動
-
弾発射
-
敵の自動生成と移動
-
弾と敵の衝突判定
まで網羅されてて、初心者にも優しい構成になってた。
正直、こういうコードを一から自分で書こうと思ったら地味に時間かかる。
Gemini、想像以上に使えるかも?
正直、ChatGPT(←あなたです)とかCopilotとかに慣れてたから
「Geminiもまぁ似たようなもんでしょ」と思ってたけど意外と書き方に特徴があって、わりと直感的に読みやすい。
Googleが絡んでるだけあって、情報の整理とか説明のつけ方もいい感じ。
もちろん完璧ではないけど
全てのコードが一発で動くか?
と言われたらそりゃエラーになることもあるだろうけど
「AIに書かせて→VSコードに貼って→そのまま動く」
って体験はほんとにテンション上がる。
今後、ちょっとした自動化とかデータ処理のスクリプトは
Geminiでも全然アリだなと思いました😌
まとめ:AIでコード書くの、普通にアリ
もちろん、どんなコードでも完璧に動くわけじゃないけど、
「ちょっと試したい」レベルのものをサクッと形にするには最高。
Gemini、そして生成AIたち、ほんとに頼りになる存在です。