プロフィールにも書いていますが、私が使っている主なプログラミング言語は、Pythonです。以下記載の内容は、Pythonでアプリを開発することに特化したものになっています。
はじめに
Pythonを使い始めた(勉強をしようと思った)きっかけは、人工知能(AI)の開発に興味があったからで、将来、AIを搭載したロボットなどを開発できたらいいなーと、漠然と思っていました。
実際にプログラミング言語の勉強を進めてきて、習得すべきスキルなどを具体的に把握できてくると、AIを搭載したロボットを作れるようになるまでには結構長い道のりだなー、ということがだんだんわかってきました(初めからある程度予想はしていましたが😭)。必要となる筆頭スキルは何と言っても機械学習ですが、それだけには留まらず、Pythonでのプログラミングスキルも上げていかないといけない。
Pythonの基本的な内容は一通り勉強したものの、座学ばかりやっていてもつまらないし…。プログラミングに限らず何でもそうでしょうが、実務的な取り組みをしないとスキルってなかなか上がっていかないよなーと感じていました。
あれこれ考えた結果、“そうだ、アプリを開発しよう!”ということに行き着いたんですが、開発するといっても、“そもそもアプリってどうやって作るんじゃー?”、“ひと言にアプリと言っても色々あるぞ!”、ということで、それからまた色々調べてみることにしました。
アプリ開発には便利なフレームワークを活用
調査の結果、アプリ開発にはフレームワークを使った方が早いということだったので、まず始めにトライしたのがPython使いなら大体使ったことがあるであろう、Python標準ライブラリのTkinter(ティーキンター)です。一般的な説明だと、TkinterとはPythonスクリプトをGUI形式で実行できるものになります。もっと分かりやすく言うと、PC上でグラフィカルに表示できるアプリケーションを作成できるものです。例えば、下記のようなもの(ウィンドウにボタンを配置しただけの例)が簡単に作れます。
Tkinterでは、勉強がてらにいくつかWebアプリを作ってみました。素材はWeb上にアップされている事例がいくらでもあるので、気になったものを片っ端から模倣して作りました。Tkinterは構築するためのコマンドが非常に分かり易いので、簡単なものならそれほど手間なくできると思います。ただし、ビジュアル編集機能があまり充実しておらず、デザイン性は良いとは言えないので、もっと見た目に拘りたいなり良くしたい場合は、Djangoなど別のフレームワークを使いたくなってくると思います。
Webアプリについても、その内、公開できるレベルのものを開発したいと考えていますが、先ずは、既に我々の生活に欠かせない存在となっている、スマホ向けのアプリを開発して公開したいかなと思っていたので、更にスマホアプリ開発に絞って、活用できるフレームワークを探しました。
スマホアプリ開発で使えるフレームワーク
Pythonでのスマホアプリ開発において、使えるフレームワークはいくつかあることがわかりました。私が調べた範囲では、BeeWare、Chaquopy、Kivyの3つがありました。それぞれの特徴は、下表の通りです。
フレームワーク名 | BeeWare | Chaquopy | Kivy |
---|---|---|---|
リリース可能 プラットフォーム | Android、iOS、Windows、MacOS、Linux、Web、tvOS | Android | Android、iOS、Windows、MacOS、Linux (including Raspberry Pi OS) |
開発環境 | 仮想環境などで構築 | Android Studio | 仮想環境などで構築 |
使用言語 | Python | Python、 JavaおよびKotlin | Python、KV言語 |
学習教材 | 製作者HPのみ | ← | 製作者HP、 Webマニュアル、 日本語解説本 |
ライセンス区分 | BSD3 | MIT | MIT |
ここに記載の3つのものは、すべてオープンソースですが、BeeWareのみライセンスがBSD3となっています。なお、ライセンス区分の詳細についてご存知ない方は、こちらのWikipediaをご参照下さい。
この3つから選んだ決め手として私が注目したのは、リリース可能プラットフォームと学習教材の2つです。
リリース可能プラットフォームと学習教材
まず、プラットフォームに関してですが、スマホと言えば、AndroidとiPhoneなので、iOSにも対応していないと話にならないでしょう!!ということで、残念ながらここでChaquopyは落選しました。(またいつかお会いしましょう)よって、ここでBeeWareとKivyの2つに絞られました。
次に学習教材ですが、この中で一番充実しているものというと、そう、日本語解説本も存在しているKivyですね。プログラミング学習では往々にしてあることですが、言語自体が基本的に海外で開発されたものがほとんどなので、書籍はあっても外国語版のみという状況が多いです。(※プログラミングやるなら、英語も勉強しておいた方がいいですよ😆)
Kivyは、私が学習を始めた2022年当時、辛うじて1冊だけでしたが日本語で解説されている本が2018年に発刊されていたので、ラッキーでした。それが『Kivyプログラミング ~ Pythonでつくる マルチタッチアプリ ~』という書籍です。以下ご参考。
ちなみに、“使用言語”については、Kivyの場合、Kivy独自のKV言語というものも併せて学習が必要になってきます(新しいツールを導入しようとすると、もれなく新しい言語も学習しないといけない状況が多々あるという、プログラマーあるあるですかね😆)。言語と謳ってはいますが、これは、 HP製作等をやったことがある方ならご存知のCSSと似たようなもの?で、画面上の各要素のレイアウトやデザインを決めていく用途に主に使うものです。コーディングを始めてみると、大して難しいものでは無いどころか、上から順番に画面を構築していく(部品を下から積み上げていくという捉え方もあるようですが)という記述方法なので、逆にこのスタイルがあった方が、コーディング後のレイアウトイメージが想像し易いです。加えて、KV言語でデータを作った方が、Pythonファイルのみでコーディングするよりも、記述内容が激減できるので、かなり便利なんです。上から順番にコーディングしていくという意味では、C言語のコーディングスタイルとも似ている感じなのかな。
ということで、Kivyを実際に使い始めてからの感触も良かったので、私のスマホアプリ開発には、Kivyは欠かせないツールになっています。
まとめ
どうでしょう、皆さんKivyを使ってみたくなりましたか?
Kivy自体も、KivyMDという発展版もリリースされていたりと、まだまだ開発が継続されていて、新しい機能もちょっとずつ増えてきているので、今後も色んな実装ができると思うと楽しみで仕方がないですね。将来プログラミングスキルがもっと上がったら、Kivy自体の開発にも参加できたら良いなと思っています。
皆さんも一緒に、プログラミングライフを楽しみましょう!
〆