記事内に広告が含まれています。

AIを使って、初めてPythonに触れたその日のうちに、デスクトップアプリまで作成した話

オピニオン

AIを使って1日でPythonアプリを作ってみた
こんにちは、natsukiです。日々進歩するAI。私も、少しでも自分の業務や生活に役立てられないか、あれこれと試しています。特に最近、AIの限界と進歩を両方実感することがあったのでご紹介したいと思います。How toというよりは日常的なエピソードですが、「AIってそもそも何に使えばいいの?」という一つのアイデアとして読んでいただければと思います。

簡単に言うと、AIのバカさ加減にいったんブチ切れ、そしてAIのおかげで、生まれて初めて触ったPythonで、はじめAIにやらせようとしていたことをほぼ完璧に実行するデスクトップアプリを、たったの1日で作成できたという話です。

私は、日常的にプログラミングやシステム系の業務をやっているわけではありませんが、ExcelやAccessをVBAで動かしてルーチンワークを自動化する程度の経験はあります。適切な表現かは分かりませんが、「プログラミング初心者」くらいのスキルレベルだと思います。「ExcelやAccessといった既存のアプリに指示を出す」というようなマクロの延長線上のことはできるけど、自力でデスクトップアプリそのもの作るまではイメージできない、くらいの感じです。それが、アッサリと思い通りの動作をするアプリを作成できてしまったのには、やはりちょっと感動しました。

スポンサーリンク

1.事のはじまり ― AIにブチ切れる

とりあえず、私の日常的なAI利用法として、一定のルーチンワークを任せる、というものがあります。例えば、GeminiのGem機能などは、この用途に非常に有用です。この件については、すでに記事にしていますので、下記記事をご覧ください。

使わなきゃ損、Geminiを個人向けにカスタマイズできるGem機能!毎回同じプロンプトをコピペしているあなたに朗報
Geminiを特定の用途向けにカスタマイズできるGem機能の紹介です。文章構成や翻訳、定型文の作成など、同じような作業をGeminiに行わせるときに、いちいちプロンプトを書き込まなくても、目的に合わせてカスタマイズが可能です。使い方次第で、より高度な事も可能になります。生成AIを使うなら、是非、利用したい機能です。

一方で、使えば使うほど、明らかにAIが不得意とする分野や作業があるのも実感しています。特に手を焼いているのが、Chat GPTにしろGeminiにしろ(NotebookLMなどの関係サービスも含む)、AIというのは、実は網羅的かつ緻密な作業が案外苦手ということです。
error
これは、とある作業をやらせたときのGeminiでの一幕です。数百✕数百セルの値の入ったCSVファイル100個ほどを、特定条件の値の入ったセルを抽出して、抽出した値に特定の処理を行い、特定の方法で並べ替えて整理する、という作業をやらせようとしたところです。単なるルーチンワークなんですが、ところがこれができない! ファイルを1つだけにしてもできない! Chat GPTでもGeminiでも、できない! 存在しない値を返したり、条件に合う値をすっ飛ばしたり、お話にならない雑な処理を行う。もちろん、「AIに通る指示の仕方(いわゆるプロンプト・エンジニアリング?)」は、色々工夫していますよ。上の結果も、「アップロードしたファイルのみをソースとしろ」「推測やデータの補正などは一切行うな」といった指示は当然あらかじめしています。でも従わない。指示の仕方を変えたり、AI自身にどう指示すれば正確にやるのか確認したり、結果の検証指示も出したり、それでもできない。

この他にも、どうも「網羅的な作業」を行わせようとすると、ともかく抜けが出たり、指示通りの処理をしなかったり、要するにサボることが多い。で、「コンピューターってのはルーチンワークこそ期待されるもんだろうがバカヤロウコノヤロウ」と問い詰めると、「これで自分で処理してね」と、ベロベロッとPythonコードを吐き出す。いや、チャット形式などでAIに指示するのと、コンピューター言語を扱うのでは、作業のハードルが違いすぎるだろうがって話ですよね。

2.仕方ないのでPythonでデスクトップアプリを作ったら、ビックリするくらい簡単にできた

code
とはいえ、日頃からいまどきはPythonくらい使えないとマズいよなぁ、とは思っていたところでした。子どもの高校「情報Ⅰ」の教科書を見ると、もはやPythonは学校教育でも当たり前に出てくるんですよね。ということで、自らのスキルアップのためにも、しゃーないか、AIにできないならPythonでデスクトップアプリを作るか、となったわけです。

まず、いきなり、機能の要望を出してPythonコードを書かせました。このとき、日頃からある程度AIに指示し慣れているのと、上記のようにまったくプログラミング未経験というわけでもないので、次のような指示の仕方はしました。
・Pythonでデスクトップアプリを作るという前提を指示
・Pythonのインストールからアプリの出力まで、逐一作業手順を示すように指示
・機能をマークダウン形式(要するにAIに伝わりやすい箇条書き)で要求
・ユーザーインターフェースもマークダウン形式で要求(どんなボタンをどう配置してどういう機能と結びつけ、どう表示を切り替えるかなど)
・コードはひとかたまりごとに、どのような処理をしているかのコメントを付けるよう要求
・可読性を高めるために、変数の名称を指定
・要求した動作が実際に行われるか、アップロードしたサンプルファイルを使って出力したコードの自己検証をすることを指示(気休め)

すると、Pythonのインストールにはじまり、完成までのなんやかんやを「コマンドプロンプトでこれを実行して」、と逐一指示してくれるので、あとはコマンドプロンプトもしくはパワーシェルを開いて、指示されたコードをコピペして進めるだけです。いちおう、コマンドプロンプトとパワーシェルで必要なコマンドが異なる場合もあるらしいので、ちゃんとAIに指示されたのを使った方がいいでしょう。なお、同様な指示をChat GPTとGeminiで試していますが、さすがコード生成は得意分野と見えて、どちらでもおおむね同様の段取りでアプリの作成ができました。

私自身のPythonの最低限の習得も兼ねているつもりなので、指示や出力されたコードをざっと読みます。VBAくらいなら扱った経験があるので、コードに書き込ませたコメントを見つつ、「Pythonだとこう記述するのね」と、どんな手順でどう処理しているか確認します。んで、気になったことは検索したりAIに質問したりして、「アプリ作成は仮想環境を構築して行った方がよい」「データを扱うときにはPandasってライブラリが追加で必要」「アプリのインターフェース作成の標準ライブラリはTkinterで、見た目を良くしたいなら追加のライブラリが必要」「作成したデスクトップアプリを一つの実行ファイルにするにはPyInstallerというツール(コンパイラ)を使う」「PyInstallerを使った場合はアプリの起動が遅くなりがちなので、これを改善するためにはNuitkaなど他のツールをを使う方法もある」といった基礎知識を調べていきました。

一連の作業で、一箇所、大きく引っかかったところがありました。最後の、PyInstallerというツールを使って実行ファイルを出力するのがうまくいかなかったんです。これは、コマンドプロンプトに表示されるなんか大量のエラーコードをベタっと貼り付けて、AIに聞いた結果、Pythonの最新版(バージョン3.14.x)と上で触れたPandasとPyInstallerの相性が悪いことが分かり、いったんPythonをアンインストールして、古いバージョンのPythonを再インストールすることで解決しました。どこまで古くするかは諸説あるようですが、とりあえずAIのアドバイスに従ってバージョン3.10をインストールしています。

これにて、無事、実行ファイル(.exe)を出力。ダブルクリックすると、「出所不明のファイルです!」みたいなセキュリティの警告が出ますが、もちろんこれは許可し、起動と動作を確認。こ、こいつ、動くぞ! いやぁ、まさかこんなに簡単にデスクトップアプリが作れてしまうとは、シンプルに感動しました。

あとは実際に動かしてみて、修正を加えます。AIに「ここをこうしたい」といった指示を出せば、すぐにコードを修正してくれます。基本的な話ですが、機能の確認だけなら、もちろんいちいちアプリ出力をしなくても、コードの実行だけで済みます。かくして、「複数のCSVもしくはエクセルファイルを選択して」「選択したファイルのリストを表示して削除や追加も可能」「指示通りの処理を行い、結果を表示するとともに、そのまま必要な部分を選択してのコピーや、結果のCSVファイルもしくはエクセルファイルでの出力も可能」という思い通りのアプリを無事作成できました。これ、途中で生成されたコードを調べたりとか遊んで時間食ってますが、それでも、AIが思い通りの作業をしないことにブチ切れてから、思い通りの挙動のデスクトップアプリを作成するまで1日の出来事です。

3.AIを利用してPythonデスクトップアプリを作るときの、とりあえずのポイント

その後も、いくつかデータ処理のためのアプリを作成しています。その程度の初心者レベルで、気づいたことをいくつかメモしておきます。先にお断りしておきますが、私はプログラミングやアプリ開発のプロではなく、むしろ、それでもデスクトップアプリができてしまった、というのがこの記事の趣旨なので、以下のポイントは、実際の作業で気づいた点に過ぎず、実際のところはどんなアプリを作るかや、個人の環境によって大きく異なると思います。

まず「なにができるか」より、「なにをやらせたいか」

最近(アプリ作成よりも後)、とある知人がやっていたAI関係の講演で、「AIを使う」というのは、「AIになにができるか」から入るのではなく、先に「あなたがやりたいこと」があって、それを実現するためのツールとしてAIを利用するという発想で考えるとよい、みたいな話があって、なるほどと思いました。

例えば、私は趣味でイラストを書いたり作編曲を行ったりします。その上で様々なデジタルツールは欠かせないもので、イラスト作成や音楽関係については、ウインタブでもたびたび記事に取りあげてきました。一方で、生成AIといえば、イラスト作成や作曲が話題を集めていますが、じゃあ、私もAIに思い通りのイラストを書かせたり作編曲をやらせようかというと、いずれも、まさに自分自身の趣味としてやっていることもあって、その手間をかける楽しみをAIに任せる気なんてのはサラサラありません。これが、マンガを描きたくてストーリーは思いつくけど絵が描けない、とかだとAIの出番となるかもしれません。

まずは、「あ、これ面倒くせぇな」というのがあって、そういう「やりたくないこと」を任せられる、いや、押しつけるのがAIなんじゃないでしょうか。AIに何をやらせるかがはっきりしていれば、それをどう具体化するかは、それこそAIが考えてくれます。

プログラミングスキルはあるに越したことはないが……

私のプログラミングスキルは、繰り返し述べたとおりで、VBAでExcelやAccessに指示を行うくらいのものです。または、そのくらいのスキルはあるという言い方もできるでしょう。ただ、重要なのは、やはり「これをやらせたい」という意識と、新しいことに拒否反応を起こさないことだと思います。分からなければ、AIに聞けば教えてくれます。

Pythonのバージョンは、最新ではなくとりあえず3.10

デスクトップアプリを作るにあたって、上記のように、ちょっと大きくつまずいたのがここでした。これは外部ライブラリPandasを使い、PyInstallerというツールを使って実行ファイルを出力する、という場合のことですが、これらのツールは実際アプリを作ってみるとかなり使う可能性の高いものです。私は、とりあえずAIに言われたとおりにバージョン3.10をインストールして、今のところ特に問題は起きていません。

なお、2回目以降の作成についてAIとやりとりした際のAIからの提案では、Pandasの方のバージョンも、互換性の面では最新のバージョン3.xではなく、バージョン2.xを使った方が無難だとも言われました。

Pythonインストール時の注意

python_install
Pythonのインストール時に、必ず「Add python.exe to PATH」にチェックを入れましょう。これを忘れると、コマンドプロンプトで指示が通らないエラーが続発します。

また、そのあとに出てくる「Disable path length limit」も選択しておくとよいでしょう。これはそのまま、ファイルパスが長すぎるときにエラーになるのを防ぐものです。

関係するフォルダやファイルに2バイト文字を使わない

関係するファイルやフォルダに日本語などの2バイト文字を使用していると、エラーが出ることがあります。使わないように気を付けましょう。

コードの可読性を高めるための指示

私自身が、VBAのコードを書いたことがある経験から、これも一部は先に触れたように、以下のような指示をしました。その結果、出力されたコードを見て、Pythonを初めて見ても、大体何をやっているか理解することができました。
・マークダウン形式(AIに伝わりやすい箇条書き)で指示を書く。
・機能の指示とユーザーインターフェースの指示は、別々に指示。
・コードのかたまりごとに、どのような処理をしているかのコメントを付ける。
・使いそうな変数の名称を指定する。
このくらいで、プログラミングをいじったことのある人であれば、Pythonを知らなくても、おおよそ、出力されたコードの意味を読むことができると思います。

仮想環境(venv)内でアプリ開発を行う

デスクトップアプリの開発は、仮想環境で行った方が、パソコン全体の環境へ影響を及ぼさず、また、アプリ作成時によけいなデータを巻き込まずに軽量化できる可能性もあります。「仮想環境とかよく分からん」という人は、とりあえず、デスクトップにでもマイドキュメントにでも、「仮想環境を作る作業用フォルダ」を作成し、そこに仮想環境を作って作業するように指示すればよいです。ただし、先に触れたようにフォルダ名には日本語など2バイト文字を使わないようにしてください。

出来上がったアプリの出力場所

せっかくできたアプリが、どこに出力されたか分からなくて探すというのは、マヌケながらありがちです。出力先を指定しておくと安心です。

AIへの指示まとめ

以上のことを、AIへの指示に記述するとだいたい以下のような感じになります。もちろん、フォルダ名などは適宜書き換えてください。

# 作業概要
– Pythonを使用して、Windows上で動作するデスクトップアプリを作成する。
– 必要な作業は、一つ一つ区切って順番に分かりやすく指示すること。
# アプリ開発環境
– 使用言語は、Pythonのバージョン3.10.xとする。
– 互換性のため、Pandasのバージョンは、できる限り2.xを使い、機能上3.xが必要な場合は確認を行う。
– Pythonのバージョンが3.10.xであることを前提として、PandasやPyInstaller,Nuitkaなどのライブラリやツールを使用する際は、バージョンによる相性に留意して、安定したバージョンを選択せよ。
– デスクトップアプリの動作環境は、一般的なWindows10以降とする。
– アプリ開発は、「デスクトップ」の「app_build」フォルダに仮想環境(venv)を構築して行え。
– 作成したデスクトップアプリは一つのファイルに収めること。
– デスクトップアプリの動作環境は、一般的なWindows10以降とする。
– 生成したアプリは、「デスクトップ」に出力する。
# コード生成規則
– 生成したコードは段落ごとに、どのような作業を行っているか分かるように解説するコメントをつけること。
– コードはクラスベースで作成し、ユーザーインターフェースのレイアウト定義とロジック(検索やデータ処理)を分離して記述せよ。
– 例外処理を適切に入れ、エラー発生時にはメッセージボックス(通知)を表示するようにせよ。
– 生成したコードが想定通り動作するか、実際に確認を行い改善を行うこと。

コードについては、先述のように、使いそうな変数をあらかじめ「○○は変数「××」に格納する」といったように指示しておいたり、機能やユーザーインターフェースについての指示の書き方によっても、可読性が高まります。特に機能やユーザーインターフェースの指示については、AIとやり取りして修正する中でコードが汚くなることもあるので、上のように「クラスベースで記述せよ」とか書いておくとよいでしょう。

上記の記述以下に、機能やユーザーインターフェースのレイアウトと挙動などを書き込んで指示を作ります。これで、デスクトップアプリを作れちゃいます。

AIとやり取りしながら実行

実際には、AIの指示が足りないこともあります。または、作成者の知識や環境次第で、AIの指示が分かりにくいこともあるでしょう。実際のところ、私も、より具体的に指示を求めつつ作業し、また、指示通りにやったつもりでも色々とエラーが出るのはここまでに書いた通りでもあります。ともかく、そういうときは、また逐一どうすればいいか聞けばいいだけです。

例えば、途中で処理が止まったりした場合も、コマンドプロンプトの止まったところやエラーメッセージ、なんなら表示全部をコピペして聞けば、改善指示を出してくれます。

スポンサーリンク

4.次のステップへ

より高度なアプリを作るための、もうワンランク上のステップです。プログラミングに慣れている人なら、はじめからこの辺も取り込んでよいでしょう。

より見栄えのするインターフェースに

特に指示しなければ、ユーザーインターフェースの構築は、Python標準のGUIライブラリであるTkinterが使われると思います。この場合、コードがシンプルなため可読性が高く、ボタンの入れ替えなんかも、生成したコードから手作業で簡単にできるでしょう。その分、見た目はレトロで、Windows98時代を彷彿とさせます。まあ、自分で使うならこれで十分なんですけどね。

見た目にもこだわるなら、他に多様なライブラリが提供されています。例えば私の環境のGeminiは、やたらPySide6というのを推してきます。この辺は、お好みで。AIへの指示に「PySide6を使え」と書けば、インストールのやり方も指示してくれるし、それに合わせたコードを生成してくれます。

実行ファイルの生成にNuitkaを使い、起動や容量を軽量化

nuitka
デスクトップアプリの作成にあたって、特に何も指定しなければ、実行ファイルの生成にはPyInstallerというツールが選択される場合が多いと思います。で、実際に作成したアプリを使ってみると、起動にそこそこ時間がかかります。これを改善するには、PyInstallerの代わりにNuitkaというコンパイラを使うのが常道のようです。

一方でNuitkaにもそれなりにクセはあり、特に、PyInstallerと同様な、PythonやPandasとのバージョンによる相性問題が存在します。まずPythonのバージョンは、やはり3.10.xを使っておくのが無難なようです。あとは、「実行ファイルの生成にはNuitkaを使用せよ」「Pandasとの相性を考慮して、適切なPandasのバージョンを選択し、必要に応じて相性問題を解決するためのコードを追加すること」といったような指示をしてやるとよいでしょう。

また、アプリの出力には、Nuitkaの方が時間がかかります。アプリの動作確認と手直しを繰り返すときには、この出力の待ち時間はかなりのロスです。コードの修正だけなら、いちいちアプリを出力する必要はありませんが、アプリとしての挙動を繰り返し確認したい場合は、はじめはとりあえずPyInstallerで出力して、色々と手直しをした上で、最終的な完成版のみNuitkaで出力する、というように使い分けてもよいでしょう。

ちゃんとしたコードエディタの導入

以上の作業において、Pythonコードの編集は、修正の必要があれば適宜テキストエディタで開くという、かなり原始的なスタイルで十分行えます。
VS-Code
ただ、本格的にアプリ開発を行うなら、やはりコードエディタを利用するのが良いでしょう。このあたりは、私は全く門外漢で、知人にコードエディタ「VS Code」とVS Code用AIサービス「GitHub Copilot」の組み合わせは良いぞ、と勧められて、とりあえず使い始めてみているところです。

5.まとめ

日頃、AIを積極利用してみようとしている中で、有用な部分もありつつも、そのアホさ加減に呆れることもまた非常に多いのですが、今回もはじめは「全然使えねーじゃないか!」からはじまり、しかし、たった1日で、初めて触れるコンピューター言語を使って、思い通りの動作をするデスクトップアプリの作成まで進んだのは、かなりの衝撃でした。

あらためて感じるのは、AIというのは、ひとまず私たちエンドユーザーにとっては、どこまで行っても「道具」であるということです。「こんな新しいことができるようになった」とAIをオモチャとして遊んでみるのも、それはそれで楽しいことですが、やはり、まず何か目的があってそれを実行するための道具としてAIを使う、という接し方こそ、AIのすごさというのを実感できるし、いわゆる生産性の向上といったようなものにも結びつくんじゃないでしょうか。少なくとも、私のこれまでのスキルだと、AIなくして完全に独立したデスクトップアプリを作るのは困難なことでした。

否応なく、ますます世の中に普及していくAI。うまく付き合っていくための一つの事例として、参考にしていただければ幸いです。

執筆者:natsuki ウインタブをきっかけに、海外通販で奇天烈なガジェットを漁ることにハマる。趣味は旅行(自然も史跡も)、アマチュアオーケストラなど。自分の知識欲も満たせるので、楽しんで記事を書いています。興味を持ったもの、面白いと思ったものを、読者の皆さんと共有できれば幸いです。
サイト紹介・ウインタブについて

コメント

タイトルとURLをコピーしました