最終的に実行結果をスマホで実行させる
₍2024/5/7‗改訂)今どきの皆さんはスマホで時間を使うことが多く、スマホゲームを楽しんだりしている事でしょう。そうした発想で考えました。自分がパソコンを使って作ったアプリをスマホで動かせるかという「夢」が出てきたのです。
個人的に課題をクリアしていくことは楽しいです。一つ一つ課題をクリアして実力値をつけていって下さい。技術に挑戦する興奮と、克服出来た時の充実感を味わってください!!楽しいですよ。
私はプログラム作成から長らく離れていたので、確認を含めて出来るだけ実現へ近づいていく作業を進めてます。その中で初学者が疑問に感じる点をいくつか記録として残していけたらよいと考えてます。
また、蛇足としてスマホ環境でPythonを動かすことも考えて見ます。
誰しも疑問に感じる部分がるはずです。
なお、スマホでPython環境を構築してプログラム作業する事も出来ますが、本稿ではそうした内容は詳しく取りあげません。マイクロソフトが提供しているColaboなどを活用する手段も考えられます。(別例として「Pythonista3」などの有料アプリを使いスマホ内に統合開発環境がつくれます。)
また、パイソンを導入したパソコンといつもスマホをつないでおく手法も考えられます。パソコンを何時も立ち上げっぱなしって、セキュリティー上で少し怖い気もしますが。
実際にここで私が勉強に使っていたBMIの簡易プログラムを題材として取りあげます。身長、体重を入力してもらい、実行結果としてBMIを表示するだけです。
こんな簡単なプログラムですが、実際にスマホで動かすのは難しそうです。(参考文献:「ゲーム作りで楽しく学ぶPythonの基本」)
(簡易的な質疑応答でのBMI)
実行前に何をしないといけないか?
自分のパソコンを使って作成したPythonのプログラムを、色々な人が使うスマホ環境で実行するにはいくつかの段階が必要です。ここでは最終的に圧縮したZIPファイルにして配布する作業を想定してみましょう。
PythonでGUIを含む最新のプログラムを動かすハードルは高いと思えますが、「input」のコマンドを使った簡単な会話のやりとりだけのプログラムから初めてみます。
Pythonのプログラムをスマートフォンで実行できるようにするためには、いくつかのステップがあります。以下に、簡単な対話型のPythonプログラムを例に、スマートフォンで実行可能な形に変換する手順を想定してみます。
Pythonスクリプトの作成:
最初に、対話型のPythonスクリプトを作成します。例えば、以下のようなシンプルなプログラムを考えてみましょう。やりとりを進める為に以下のようなコマンドを作成しています。
# conversation.py
name = input("あなたの名前は? ") print(f"こんにちは、{name}さん!")
ターミナルでの実行確認:
まず、このスクリプトがコマンドライン上で正しく動作することを確認します。ターミナルでスクリプトを実行して、対話型の会話ができるか確認しましょう。
python conversation.py
正しく動作したので、次に進みました。
Pythonスクリプトの実行環境の検討:
スマートフォンでPythonスクリプトを実行するためには、適切な実行環境が必要です。以下の選択肢を想定してます。
Pythonista (iOS): iOSデバイス向けにPythonスクリプトを実行できるアプリです。
QPython (Android): Androidデバイス向けにPythonスクリプトを実行できるアプリです。
私は以後、Androidのスクリプトを実行していこうと計画しています。
アプリのダウンロード:
選んだ実行環境に合わせて、対応するアプリをスマートフォンにダウンロードしてインストールします。
実際に自分のスマホでテストが
出来るかどうか、ドキドキしますね。
スクリプトの転送:
作成したPythonスクリプトをスマートフォンに転送します。これには、クラウドサービスやUSB接続などの手段がありますね。私はGoogleIDでの複数端末でのファイル共有を考えています。
アプリでの実行:
選んだアプリを開いて、スクリプトを選択または開いて実行します。アプリによっては、対話的なコンソールが表示され、プログラムが実行されるでしょう。
以上が、簡単な対話型のPythonプログラムをスマートフォンで実行する基本的な計画です。GUIが必要な場合や、複雑なプログラムの場合は、それに応じた対応が必要となります。
私のPython実行環境
そして、私が使っているPythonの環境を確認の為に記載します。自宅のノートPCにパイソン環境をインストールしています。当然、そうしたPCで作ったプログラムを同じPCで動かす事は簡単です。違うOSで動かすから難しいのです!!
ちなみに、PythonのバージョンはPyinstallerの導入の為にPython3.8.9をいれています。
(作業画面イメージ)
今後の課題
色々なバージョンのアンドロイドやi-Phoneで動かせるスクリプトが出来るか模索します。また、アプリ自体も、よりゲーム性の高いものにチャレンジしていきます。
上記のQPythonをインストールして作業しましたが、そこでPythonが使えるだけです。QPythonをインストールしているスマホだけで使えます。スマホ向けに配布する仕組みを考えないといけませんね。
Pythonプログラムをスマートフォンに配布する方法はいくつかあります。以下にいくつかの一般的な方法を挙げてみましょう。
ネイティブアプリの開発:
Pythonを使用してネイティブアプリを開発することができます。KivyやBeeWareなどのフレームワークを使用すると、Pythonで書かれたアプリをiOSやAndroid向けにコンパイルできます。ただし、ネイティブアプリの開発は学習コストが高くなる可能性があります。
PyQtやKivyのようなクロスプラットフォームフレームワーク:
PyQtやKivyなどのクロスプラットフォームのフレームワークを使用して、Pythonで書かれたアプリケーションをスマートフォンにデプロイできます。これにより、同じコードベースでiOSやAndroid向けのアプリを開発できます。また例えば、「Buildozer」をかつようする手法もあります。これはPython + Kivyで開発したプログラムをスマホアプリへパッケージング(ビルド)するためのラッパーと呼ばれるツールです。KivyアプリをパッケージするようビルドしてAndroidやiOSで動くようにできます。Buildozerは、macOS / Windows / Linux(Ubuntu)で利用可能ですが、注意点があります。
「Windowsにはそのままインストールできません!!」なんとか利用する為にはWindows 10環境でWSL(Windows Subsystem for Linux)を有効化します。その後にLinuxをインストールます。
Webアプリケーション:
FlaskやDjangoなどのPythonのWebフレームワークを使用して、Webアプリケーションを構築することができます。スマートフォンのウェブブラウザからアクセスできるため、ユーザーはアプリをダウンロードせずに使用できます。
コードランナーの使用:
Pyqtdeployやcx_Freezeなどのツールを使用して、Pythonコードを実行可能な実行ファイルに変換し、それをスマートフォンに配置することができます。ただし、いくつかの制約があるかもしれません。
KivyMDやBeeWare TogaのようなUIフレームワーク:
- KivyMDやBeeWare TogaのようなUIフレームワークを使用すると、PythonでモバイルアプリのUIを構築できます。これにより、PythonコードがネイティブなUI要素と統合されるため、ネイティブアプリに近い外観と感触が得られます。
以上の方法の選択は、プロジェクトの要件や開発者の経験によって異なるようです。どの方法が最適かは、具体的なプロジェクトの要件に基づいて検討する必要があります。
Pythonスクリプトを使ってファイルをEXE化
段々パイソンに慣れてきた私はライブラリーを使ってPythonスクリプトをEXE化してしまおうと思いつきました。具体的にはPyinstallerをインストールして使います。PIPコマンドが活用できました。
実際調べてみると、PyInstallerを使ってPythonスクリプトをEXE化するのは一般的な方法であり、pipコマンドを使用してPyInstallerをインストールすることができます。
32ビットOSだったら?とかパイソンのバージョンは?
とか考えだしたらきりがありませんが、とりあえずチャレンジしてました。
具体的には以下。
PyInstallerのインストール:
pip install pyinstaller
これにより、PyInstallerがインストールされます。【今の私の困難はバージョン管理が出来ていませんでした。⇒もともとPython3.12を使っていましたが問題解決にはPython3.8.9が必要だと分かり、削除・インストールをしています。python3.8.9:https://www.python.org/downloads/release/python-389/】
そしてまず、PIPとPythonのバージョンが確認できています。更に「py -m」コマンドを使って起動し、指定されたインストールされているモジュールを実行することでPyInstallerがインストールされました。更にDOSで実行しようとすると「pyinstaller’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というメッセが出ます。
DOSプロンプトの画面で作業を繰り返してパスの設定を考え直して、大文字・小文字・スペルミスが無いか?と作業を続けて行ったら漸く作業が出来たのです。そしてpy -m pip listと入力するとバージョンの確認が出来ます。
(←インストールしたPyinstalerのバージョン確認)
そもそも、当該インストーラーはZIPファイルを作ってパイソンプログラムでの成果を配布する事が可能になるプラグインなのです。小さな成果ですが、会社のメンバーに自分の作ったプログラムを渡して試してもらえるはず。更に作業を進めていきたいと思います。
PythonスクリプトのEXE化:
インストールが完了したら、以下のようにしてPythonスクリプトをEXE化できます。
pyinstaller --onefile make_bmi.py
このコマンドは、make_bmi.pyという名前のPythonスクリプトを単一のEXEファイルに変換します。--onefile
オプションは、単一のEXEファイルを作成するためのものです。もし複数のファイルを生成したい場合は、このオプションを省略しても構いません。
なにより、ここで作業ディレクトリーに注意して下さい。Pyinstallserをインストールしているディレクトリーで変換作業を行ってください。
生成されたEXEファイルの場所:
PyInstallerはデフォルトでdist
ディレクトリに生成されたEXEファイルを保存します。例えば、your_script.py
があるディレクトリでpyinstaller --onefile your_script.py
を実行した場合、生成されたEXEファイルはyour_script/dist
ディレクトリに格納されます。
作成されたファイルが重い!!
これで、簡単にPythonスクリプトをEXEファイルに変換できます。より具体的にはpyinstallerを実行するとspecファイルが作成が作成されて、変換できます。distの中に実行ファイルが作成されるので、実行してみます。4ギガの重いファイルでしたがファイルとして実行可能でした。今回の作業で予想していなかった困難です。軽いと思えた他のプログラムが重くなるのでしょう。
なお、PyInstallerは外部ライブラリや依存関係も含めてEXEにバンドルすることができ、便利なツールです。一方でPythonスクリプトをEXEファイルに変換する際に、そのスクリプトが必要とする外部ライブラリやリソースが含まれると、EXEファイルのサイズが大きくなることがあります。これは、pyinstallerがスクリプトとその依存関係をすべて含めるためです。
また、EXEファイルは実行可能なバイナリ形式であり、通常のPythonスクリプトよりもメモリやCPUリソースを多く消費する可能性があります。そのため、特に大きなファイルを変換する場合や、スクリプトが大量のデータを処理する場合は、EXEファイルが実行される際にシステムのリソースをより多く消費する可能性があります。
要するに、PythonスクリプトをEXEファイルに変換することで、ファイルサイズや実行時のリソース使用量が増える可能性がありますが、これはそのスクリプトの内容や使用しているリソースによるものです。他のプログラムが重くなる理由は、そのプログラム自体の特性によるものです。
〆最後に〆
以上、間違い・ご意見は
次のアドレスまでお願いします。
最近は全て返信出来てませんが
適時、返信して改定をします。
nowkouji226@gmail.com
【全体の纏め記事へ】
コメント