「AIがコードを書いてくれるなら、もうPythonを勉強しなくてもいいのでは?」
Pythonを学んでいると、ふとそう思うことがあるかもしれません。たしかに、やりたいことを日本語で伝えるだけで、それらしいコードが返ってきます。
それでも、Pythonを学ぶ意味はなくなっていない、というのがこの記事の結論です。ただし、学ぶ中身の重心は少し変わりました。コードを一字一句書く力よりも、コードの周りにある理解と判断が大切になっています。
この記事では、前回の「WindowsアプリもPythonで自動化したい|pywinautoで『待ってから操作』を試してみた」で実際に起きたことをもとに、4つの力としてまとめます。
AIが「何でもできる」と言われる時代に

最近は、コードを書くだけでなく、ファイルを開いたり、実行して結果を確かめたりするエージェント型のAIツールも登場しました。「AIに任せれば何でもできる」という話題を目にする機会も多いと思います。
実際、AIはとても頼りになります。前回の記事のコードも、AIと相談しながら作りました。自分だけで調べていたら時間がかかりそうなことでも、候補を出してもらい、試して、結果を返すことでかなり早く前へ進めます。
一方で、やってみてわかったのは、AIが書いたコードが自分のパソコンでそのまま動くとは限らないということです。OSやアプリの状態、バージョン、画面構造など、実際の環境には細かな違いがあります。
動かなかったときは、AIとやり取りしながら状況を切り分け、次に何を確かめるかを決める必要がありました。ここでPythonの基礎を少し知っていると、「この行は何をしているのか」「どこまで成功しているのか」「何を変えて試せばよいのか」が見えやすくなります。
つまり、AI時代のPython学習は、コードを全部暗記するためだけのものではありません。AIから返ってきたものを理解し、試し、修正し、現実の作業につなげるための共通言語として学ぶ意味が大きくなっていると感じます。
メモ帳の自動操作で、人が考える必要があったこと
前回やりたかったのは、「メモ帳を開いて、日本語の文章を入力する」という、ごく単純な操作です。
ところが、最初のコードではメモ帳のウィンドウをうまくつかめませんでした。最終的に動くようになるまでに、判断が必要だった点を整理すると、次の5つです。
Application(backend="uia").start("notepad.exe") ではタイムアウトしたため、起動は Popen(["notepad.exe"])、ウィンドウ探しは Desktop(backend="uia") に分けました。print_control_identifiers() で画面の部品を確認し、入力欄が Document(RichEditD2DPT)だと特定しました。time.sleep() ではなく、wait("ready") で「操作できる状態になるまで待つ」ようにしました。SetValue() を使って日本語を直接設定しました。wait_until() を使い、入力された結果まで確認しました。
こうして並べると、やっていたのはコードを書く作業そのものより、「何が起きているかを知る」ための判断だったことが分かります。ここから4つの力を取り出してみます。
1. UI構造を調べる
画面の自動操作では、「どの部品を操作するか」をプログラムに正しく伝える必要があります。人の目には「文字を打つ白いところ」でも、プログラムから見ると名前と種類を持った部品です。
その名前は、アプリやWindowsのバージョンによって変わります。環境固有のUI構造は、実際の画面で調べる必要があります。
そこで役に立ったのが、次の1行です。
window.print_control_identifiers()Pythonこれで部品の一覧が表示され、入力欄の正体がわかりました。答えを覚えるのではなく、自分の環境を調べる方法を知っていること。これが1つ目の力です。
ここで大事なのは、「正解の部品名を覚えること」ではありません。別のWindowsアプリを自動化するときには、また違う名前や構造が出てくるかもしれません。それでも、調べ方を知っていれば、自分で確認して次へ進めます。
AIに相談するときも同じです。「動きません」とだけ伝えるより、「print_control_identifiers() ではこう見えています」「本文欄は Document でした」と伝えられるほうが、状況を共有しやすくなります。Pythonを学ぶことは、こうした観察結果を言葉やコードで説明する力にもつながります。
2. wait() と sleep() の違いを理解する
アプリを起動してから操作できるようになるまでには、少し時間がかかります。そこで「待つ」処理が必要になります。
time.sleep(3) # とにかく3秒待つ
window.wait("ready") # 操作できる状態になるまで待つPythonsleep() でも動く場面はあります。ただ、固定時間待ちはPCの状態によって短すぎたり、余分に待ったりします。wait() は状態で待つので、準備ができしだい先へ進みます。
この違いを知らないと、「たまに失敗する」原因に気づきにくくなります。どちらのコードが出てきても、その選び方でよいかを判断できること。これが2つ目の力です。
AIがコードを出してくれるようになるほど、「動くコードが出たか」だけではなく、なぜその書き方になっているのかを見ることが大切になります。今回なら、3秒という数字に意味があるのか、それとも「操作できる状態」を待つべきなのか、という違いです。
こうした考え方はpywinautoだけの話ではありません。ブラウザ自動化でも、ファイル処理でも、API通信でも、「一定時間待てばよい」のか「条件がそろうまで待つべきなのか」はよく出てきます。1つのサンプルから考え方を理解しておくと、別の場面でも応用しやすくなります。
3. 失敗原因を切り分ける
うまく動かないとき、原因の候補はいくつもあります。
- ウィンドウが見つかっていないのか
- 部品の指定が違うのか
- 待ち時間が足りないのか
- 入力の方法が合っていないのか
前回、最初につまずいたのは1つ目でした。Application(backend="uia").start("notepad.exe") で進めたところ、タイムアウトになったのです。
調べていくと、この環境では「メモ帳を起動したプロセス」と「実際にウィンドウを持つプロセス」を同じものとして扱えないケースがあるとわかりました。そこで、起動とウィンドウ探しを分けました。
Popen(["notepad.exe"]) # 起動するだけ
desktop = Desktop(backend="uia") # ウィンドウは画面全体から探すPython「起動はできている。つかめていないのはウィンドウのほう」と切り分けられたことで、直すべき場所がはっきりしました。その後も、部品の特定、待ち方、日本語入力と1つずつ確かめ、最後に wait_until() で「本当に入力されたか」まで確認しています。
AIにエラーをそのまま渡して直してもらうこともできます。けれど、「ここまでは動いている。問題はこの部分」と伝えられると、返ってくる答えの質が大きく変わります。問題を小さく分けて確かめること。これが3つ目の力です。
今回も、最初から完成形を一気に直そうとしたわけではありません。まず「メモ帳は起動しているか」、次に「ウィンドウは見つかるか」、その次に「本文欄はどれか」、最後に「入力結果は本当に反映されたか」と順番に確かめました。
この進め方をすると、AIに聞く内容も具体的になります。エラー全文を貼るだけでなく、「起動は成功しています」「Desktop ではウィンドウが見えます」と途中経過を伝えられるからです。AIを使うほど、むしろ自分で小さく検証する習慣が重要になるのだと感じました。
4. 実際の業務にどう使うか考える

メモ帳に文字を入力できても、それだけでは仕事は楽になりません。大切なのは、この仕組みを自分の仕事のどこに当てはめるかです。
たとえば、毎日同じ画面に同じ内容を入力している作業はないでしょうか。逆に、自動化すると確認がおろそかになって困る作業はどれでしょうか。
これは、その仕事を知っている人だからこそ判断できることです。AIは方法を提案してくれますが、「何を自動化すると助かるのか」を決めるのは自分です。これが4つ目の力です。
自動化の候補にしやすいのは、たとえば「毎日・毎週くり返す」「手順がほぼ決まっている」「転記ミスが起きやすい」「一回は短くても積み重なると時間を使う」といった作業です。反対に、例外が多い作業や、人の判断を最後に残したい作業まで無理に全部自動化する必要はありません。
たとえば、入力だけをPythonに任せて、最終確認は人がする。データの取得までは自動化して、判断は人が行う。こうした一部だけを任せる設計でも十分に価値があります。
Pythonを少し知っていると、「全部自動化するか、何もしないか」の二択ではなくなります。仕事の流れを見ながら、「ここだけなら任せられそう」と考えられるようになります。これが、実務でPythonを学ぶ面白さの1つだと思います。
Pythonの基礎を手元で確認したい方へ
AIにコードを書いてもらう時代でも、変数・関数・条件分岐などの基本が少し分かるだけで、「このコードは何をしているのか」を追いやすくなります。
今回のように、AIと相談しながら実際にコードを動かしていくなら、分からない文法をすぐ確認できる初心者向けの入門書を1冊、手元に置いておくのも便利です。
基礎から順番に確認したいなら
『スッキリわかるPython入門 第2版』は、Pythonを初めて学ぶ方向けの入門書です。AIに質問しながら進める場合でも、「この書き方はどういう意味だったかな?」と基本に戻れる場所があると安心です。
※このリンクはアフィリエイト広告を利用しています。

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)
まとめ:学ぶ中身が「書く」から「わかる」へ広がった
AI時代にPythonを学ぶ意味は、次の4つの力を身につけることにあると考えています。
- UI構造を調べる
wait()とsleep()の違いを理解する- 失敗原因を切り分ける
- 実際の業務にどう使うか考える
どれも、文法を暗記していなくても始められます。一方で、コードを少しでも読めるようになると、AIとのやり取りはかなり変わります。「何をしているコードなのか」「どこを変えると動きが変わるのか」が少しずつ見えるからです。
以前なら、Python学習というと「自分でコードを書けるようになること」が大きな目標でした。もちろん今でもそれは大切です。ただ、AIがコードを書く時代には、そこに読める・試せる・切り分けられる・使い道を考えられるという力が加わったのだと思います。
AIと人のどちらが上か、という話ではありません。AIに書いてもらい、人が調べて、確かめて、使い道を決める。その役割分担をうまく進めるための土台が、Pythonの基礎なのだと思います。
今回のpywinautoも、最初からすべて理解していたわけではありません。動かし、失敗し、調べ、AIと相談しながら少しずつ前に進みました。その過程そのものが、今のPython学習なのかもしれません。
まずは短いコードを1つ動かしてみる。そして、動いたら「なぜ動いたのか」、動かなければ「どこまで動いているのか」を確かめる。AIがそばにいる今だからこそ、そんな学び方が以前より始めやすくなっています。
