実はPythonでも作れるもの
人気のあるプログラミング言語は何?と聞かれるとPythonと答える人は多いと思います。
理由はいくつかあって、よく挙げられるのは
・書きやすい
・便利なライブラリが豊富
・AI等の最先端技術に使われている
etc
しかし一般的にPythonでスマホアプリ等を作ることはできないと言われていますが、実はスマホ用のアプリやWindows、Mac用のアプリも作ることができるのです。
プログラムを動かせるという意味ではなく、アプリストアに配信・公開できるアプリを作れるという意味です。
例えばiOSアプリの場合はXcodeプロジェクト、Androidアプリの場合は.apkは.aabを作成することができます。
具体的に言うと、Android、iOSアプリをPythonで作成するにはKivyというGUIフレームワークを使って画面レイアウトを作成します。
Kivyによってどんなものが作れるかは以前に公式サンプルアプリをYouTube動画で解説したので良かったらそちらを見てください。
KivyでPythonアプリを作ったら、iOSアプリの場合はKivy-iOSを使ってXcodeプロジェクトに変換します。
環境構築が難しいですが、こちらの動画で解説しているので良かったら見てください。
Androidアプリの場合はBuildozerを使ってapkファイルまたはaabファイルを作成します。
こちらもKivy-iOSと同様に環境構築が難しいです。
こちらの動画で解説しているので良かったらどうぞ。
iOS、AndroidどちらもKivyを使って画面レイアウトを作成する必要があり、またKivyは結構癖があるので大変ですが、Kivy-iOS、Buildozerを使えばApp Store、Play Storeに公開することも可能です。
といっても私は実際にPythonで作ったアプリをアプリストアに公開したことはありませんが(^_^;)
Windowsアプリ(.exe)、Macアプリ(.app)もPythonを使って作成することができます。
有名で比較的お手軽なのはpyinstallerですね。
しかし私はpyinstallerをあまりおすすめはしません。
なぜかというと、pyinstallerでビルドしたアプリは起動時にPythonを含むモジュール群をパソコンの一時フォルダに解凍・コピーし、そこから起動しています。
なのでファイルサイズも大きく、また起動もかなり時間がかかってしまいます。
では何がおすすめなのかというと、Nuitkaです。
NuitkaはPythonのコードをC言語に変換してからコンパイルするので動作が速いです。またoptionとなりますがzstdでpyinstallerの1/3くらいの容量に圧縮することができます。
これはすごい。
またNuitkaはGUIフレームワークに指定はないのでkivyやtkinter等が使えます。
実際に私はtkinterを使って画面レイアウトを作成し、PythonでWindowsアプリを作ってマイクロソフトストアで公開・販売しています。
これが私がPythonで作成し、マイクロソフトストアで公開している「文字でつたエール」です。
私のように言葉を話しづらい人がビデオ通話しやすいように、キーボードからリアルタイムで字幕を作成できるアプリです。
体験版があるので良かったら試してみてください(^^)
ただ、NuitkaはMacだと少し難しいです。
.app形式にビルドできるのですがzstdと相性が悪いのか、解凍時にそれなりに時間がかかってしまいます。
起動してしまえば動作は速いのですが。
圧縮しなければ起動も速いのですがファイル容量は大きくなってしまいます(^_^;)
またストアに公開する際の署名等はコマンドラインから行う必要があるのでなかなか敷居は高そうです。
しかしこれに関してはPyinstallerも同様なので、Macアプリ自身の問題な気もします。
一応NuitkaでMacアプリをビルドするのはまだexperimentalなので後々もっと楽にできるようになるかもです。
以上、Pythonでもスマホやパソコン用アプリを作れるよって話でした。
ただこれだけは言っておきます。
普通と違うやり方をする場合はめちゃくちゃ大変です!!
どうしても使いたいライブラリがある等、Pythonを使う明確なメリットがある場合は以外は絶対におすすめはしません(笑)
というわけで長々とありがとうございました。
私が作成したアプリはこちらのサイトから確認できるので、よかったら覗いてみてください。
またYouTubeでプログラミング解説もしてます!!
よくあるプログラミングの雑談ではなく、しっかりとわかりやすく解説していますので、(マニアックな内容が多いですが)よかったら見てくださいね☆
今後もプログラミングや英語に関した記事を書いていきたいと思いますので、よければサポートよろしくお願いします!