開発してみようと思ったきっかけ
#100日チャレンジ 毎日連続100本アプリを作ったら人生が変わった
という本をご存じでしょうか?
怠け者の大学4年生がChatGPTに出会い、ノリでプログラミングに取り組んだら、
教授に褒められ、海外論文が認められ、ソフトウェアエンジニアとして就職できた。
大学4年の春。授業でChatGPTを知った私は、宿題をサボるためにその活用法を編み出した。
プログラミングにも使えることを知り、出来心で「#100日チャレンジ」に取り組み始めた。
毎日1本、新しいアプリ(作品)を作り、X(旧ツイッター)に投稿するというものだ。
暇つぶしで始めたそれは、過酷な挑戦であると同時に、日常的な興味と学び、そして飛躍をもたらした……。
―― Z世代の著者によるAI駆動型プログラミング学習探究記 ――
Amazon紹介ページより引用
最近、バズっているこの本の存在を知ってしまい
何か初めてみたい!!!
という気持ちになりました(単純)
(欲を言えばいつかプログラミングを副業にしたいな~とか思ってます(激甘))
流石に毎日1つのアプリはレベルが高すぎるので、まずは週に1つアプリを作成してみようと思います
と言うことで、早速アプリづくりに取り掛かるのですが、何ができるのかさっぱりわかりません(笑)
少し調べてみても、何でも自由に作れます!!みたいなことしか書いていなくて、初心者過ぎて何を作りたいのか自分でもわからず第一歩が踏み出せません…
困ったときは偉大な先人に習おうということで、#100日チャレンジ でも最初に作成されていた
「オセロゲーム」を参考に「〇×ゲーム」を作成しようと思い立ちました
(オセロゲームは盤面も大きく難しそうで止めました)
ChatGPTに相談してみた
ということで、早速ChatGPTに相談開始です
相談した内容はこちら

そして帰ってきた答えがこちら(一部抜粋)

なんと、たった一度のやり取りで完成してしまいました(笑)
それも今後の拡張アイディアまで提案してくれています
これには拍子抜けを通り越して全休子抜けです
こんなに簡単にできるなら副業で稼げるようになる日も近いのでは…?(笑)
と言うのは冗談ですが、3日は徹夜しようと考えていたのに、ものの1分で完成です!
思わぬ落とし穴
と思っていたら思わぬ落とし穴がありました
作成されたコードを実行してもうんともすんとも言わないのです
特にエラーが出るわけでもない…
作成したコードを実行するだけじゃないの???
と言うことで、困ったらGPTさんに聞いてみます

帰ってきた答えを抜粋すると
✅ 方法1:ファイル名を半角英数字に変更する(おすすめ)
例えば:フォルダ名 01_〇×ゲーム → 01_tictactoe
✅ 方法2:明示的にスクリプトをフルパスで指定する
✅ 補足:Pythonのバージョン確認
念のため、Pythonが正しく動いているか確認するには以下を入力:
python –version
言われたことを一つづつ確認して結果をGPTさんに報告します
すると…
「ありがとうございます。出力内容から、あなたのPCには Python が正しくインストールされていない ことが確定しました。」
な、なんだってーーー!!
思わずずっこけそうになりました。
まさか、アプリ開発したのにそのアプリ自体がインストールされていないとは…
と言うことで、Pythonを公式ページからDLしてインストールすると…
完成しました

できましたーーー!!!!
〇も×も自分で操作することになりますが、ちゃんと勝ち負けの判定もしてくれます

苦節、30分(29分は自分のせい)で完成された初めての我が子のコードも公開します!
import tkinter as tk
from tkinter import messagebox
class TicTacToe:
def __init__(self, root):
self.root = root
self.root.title("〇×ゲーム")
self.current_player = "〇"
self.board = [["" for _ in range(3)] for _ in range(3)]
self.buttons = [[None for _ in range(3)] for _ in range(3)]
self.create_board()
def create_board(self):
for row in range(3):
for col in range(3):
btn = tk.Button(self.root, text="", font=("Arial", 40), width=5, height=2,
command=lambda r=row, c=col: self.on_click(r, c))
btn.grid(row=row, column=col)
self.buttons[row][col] = btn
def on_click(self, row, col):
if self.board[row][col] == "":
self.board[row][col] = self.current_player
self.buttons[row][col].config(text=self.current_player)
if self.check_winner(self.current_player):
messagebox.showinfo("勝利", f"{self.current_player} の勝ち!")
self.reset_game()
elif self.check_draw():
messagebox.showinfo("引き分け", "引き分けです!")
self.reset_game()
else:
self.current_player = "×" if self.current_player == "〇" else "〇"
def check_winner(self, player):
# 横・縦
for i in range(3):
if all(self.board[i][j] == player for j in range(3)) or \
all(self.board[j][i] == player for j in range(3)):
return True
# 斜め
if all(self.board[i][i] == player for i in range(3)) or \
all(self.board[i][2 - i] == player for i in range(3)):
return True
return False
def check_draw(self):
return all(self.board[r][c] != "" for r in range(3) for c in range(3))
def reset_game(self):
self.current_player = "〇"
self.board = [["" for _ in range(3)] for _ in range(3)]
for r in range(3):
for c in range(3):
self.buttons[r][c].config(text="")
# アプリ起動
if __name__ == "__main__":
root = tk.Tk()
game = TicTacToe(root)
root.mainloop()
まとめ
完全ど素人でもわずか30分でアプリを開発することができました!
実際には1分でできてます(笑)
ChatGPTって凄いですね…
ターミネーターの世界も本当に近づいているのかもしれません
皆さんも、やってみたら意外と簡単にできるかもしれませんよ!
興味がわいた方はぜひトライしてみてください!
来週は何を作ってもらおうかな?と考えながらまた来週!!
コメント