Ed Price氏は彼がマイクロソフトに勤めていた頃にSmall Basicという入門用プログラミング言語のコミュニティを支えてくれた方なのですが、彼が今度はPython入門のコミックを出版するらしく、そのコミュニティ(LinkdIn の IncrediCoders Community)に誘ってくれました。今までPythonはmicro:bit用のものを少し触った程度でほとんど知りませんでした。大学やAIの分野ではよく使われる言語なので、私も学んでみることにしました。
Small BasicやJavaScriptを過去に学んだときは、リファレンス(関数などの一覧)を参照しながらコーディングして走らせてみてデバッグ(バグ取り)というのをひたすら繰り返したものですが、時代が変わってきました。生成AIがプログラミングを助けてくれるようになったのです。さっそく生成AIに手伝ってもらいながら、Pythonのプログラムを組んでみました。
最初に頼ったのはGoogleのGemini 2.5 Flashです。Geminiに対し以下の質問をして最初のプログラムを書いてもらいました。
TkinterでClick Meというアプリは作れる?
TkinterとはPython標準のボタンやメニューなどのコントロールを扱うライブラリです。そして最初にできたのは「Click Me!」というボタンを押すと「こんにちは/ボタンがクリックされました!/よくできました!」というポップアップが表示されるものでした。
このプログラムをマイクロソフトのVisual Studio CodeというエディタにPythonのインタプリタ(実行環境)で実行させてみながら、今度はVisual Studio Codeに組み込むことのできる生成AI GitHub Copilotの助けを借りながら、ボタンがマウスから逃げるように変更しました。最終的にできたのが以下のコードです。71行のコードですが、コメントも提案してもらえて、まずまずのプログラムができたと思います。
Geminiによると日本での生成AI元年は2023年だそうです。それから2年経ちましたが、AIを使ったプログラミングはもう当たり前になっていると感じました。従来に比べ圧倒的に学びやすくなったと言えるでしょう。今から40年以上も前(まだパソコンも普及していなかった)、コンピュータの業界に入社してソフトウェアのエンジニアになりました。当時高卒だった私は「日本は資源が少ないので、ソフトウェア産業に従事することはこれからの日本にとっても大切な道だ」とか勝手に考えていました。今となっては日本が資源に乏しいとは言い切れないと思いますが、いずれにせよ、ソフトウェアの人材を育てる事は重要だし、AIが手伝ってくれるので誰にでもチャンスがあるように思います。
これから、Pythonについて記事を書き続けていくつもりですが、メインターゲットを中学生にしようと思います。小学生や高校生以上の読者も歓迎いたします。
それから、ちなみにこの記事のアイキャッチ画像はWordpress.comのプラグインに含まれるJetpack AI assistantという生成AIに作ってもらいました。

# Click Meアプリケーション
# Version 1.0
# Copyright © 2025 たかはしのんき. The MIT License.
# このプログラムは、ボタンをクリックするとポップアップメッセージボックスを表示する
# シンプルなGUIアプリケーションです。
# 初期のコードは以下の質問からGemini 2.5 Flashによって生成されました。
# 「Tkinterを使ったClick Meというアプリは作れる?」
# その後、VSCodeのCopilotの指南を仰ぎながらコードを改善し、ボタンの上にマウスをホバーしたときに
# ボタンの位置をランダムに変更する機能を追加しました。
import tkinter as tk
import random
from tkinter import messagebox # メッセージボックス表示のためにインポート
# --- イベントハンドラの定義 ---
# この関数はボタンがクリックされたときに呼び出されます
def on_button_click():
# ポップアップメッセージボックスを表示
# showinfo(タイトル, メッセージ)
messagebox.showinfo("こんにちは", "ボタンがクリックされました!\nよくできました!")
# この関数はボタンの上にマウスをホバーしたときに呼び出されます
def on_button_hover(event):
# ウィンドウサイズを取得
# ボタンがウィンドウからはみ出さないようにランダムな位置を計算
x = random.randint(0, max(0, win_width - btn_width))
y = random.randint(0, max(0, win_height - btn_height))
click_button.place(x=x, y=y)
# --- メインウィンドウの作成 ---
# Tkinterアプリケーションのルートウィンドウを作成します
root = tk.Tk()
# ウィンドウのタイトルを設定
root.title("Click Meアプリケーション")
# ウィンドウのサイズを設定 (幅x高さ)
root.geometry("300x200") # 幅300ピクセル、高さ200ピクセル
root.update_idletasks() # ここでサイズ情報を更新
win_width = root.winfo_width()
win_height = root.winfo_height()
# --- ラベルの作成 (オプション) ---
# アプリケーションの指示や説明を表示するためのラベル
instruction_label = tk.Label(root, text="下のボタンをクリックしてください:")
instruction_label.update_idletasks() # ラベルのサイズ情報を更新
lbl_width = instruction_label.winfo_reqwidth()
lbl_height = instruction_label.winfo_reqheight()
# ウィンドウ内に配置
x = (win_width - lbl_width) // 2 # ウィンドウの中央に配置
y = (win_height - lbl_height) // 2 - 20 # 少し上に配置
instruction_label.place(x=x, y=y)
# --- ボタンの作成 ---
# Buttonウィジェットを作成します
# text: ボタンに表示されるテキスト
# command: ボタンがクリックされたときに呼び出される関数
click_button = tk.Button(root, text="Click Me!", command=on_button_click)
click_button.update_idletasks() # ボタンのサイズ情報を更新
# ボタンのサイズを取得
btn_width = click_button.winfo_reqwidth()
btn_height = click_button.winfo_reqheight()
# ウィンドウ内に配置
x = (win_width - btn_width) // 2 # ウィンドウの中央に配置
y = (win_height - btn_height) // 2 + 20 # 少し下に配置
click_button.place(x=x, y=y)
# ボタンのホバーイベントをバインド
click_button.bind("<Enter>", on_button_hover)
# --- メインループの開始 ---
# Tkinterアプリケーションを実行し、ユーザーとのインタラクションを待ちます
# この行がないとウィンドウはすぐに閉じてしまいます
root.mainloop()

