質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.94%

Python3でKivyを使わずにスマホ向けネイティブアプリを作成したい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,905

score 3

前提

Pythonの勉強とスマホアプリ作成の勉強を兼ねて
Pythonでロジックを書いたandroidアプリの作成を行おうと考えています。

PythonでのネイティブアプリはKivyを利用すればよいのですが
今回は画面をkv言語ではなくhtmlで書きたいのと、
iOSとandroidに対応したハイブリッドアプリを作成したいので
Ionic というWebアプリケーションフレームワークと
Django REST framework を組み合わせて
ガワ + Pythonのロジック
でネイティブアプリを作成する算段です。

そもそもWebアプリケーションフレームワークを用いた
オフラインのネイティブアプリというのが矛盾しており、
手段と目的が逆転している感は承知していますが
以下悩んでいるポイントについて
知識がある方、助言いただけると助かります。

悩んでいるポイント

IonicとDjangoRESTframeworkの連携についてです。

html + js の画面から
カスタムURLスキームのような形で
アプリ内のDjangoRESTframeworkで作成したAPIへリクエスト
返ってきたレスポンスを元に画面を再構築する
といったクライアントとサーバのような関係を疑似的に同一アプリ内で
構築してやればWebアプリケーションフレームワークを用いた
ネイティブアプリが作成できるのではないか
と思っているのですが
上記のようなことは実現可能なのでしょうか…?

有識の方がいらっしゃいましたら助言のほど宜しくお願い致します。

補足情報

開発環境
・Windows 10
・Visual Studio Code

技術構成
・Cordova
・Ionic
・Django
・Django REST framework

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

実践したことがないのですが、とてもむずかしいです。

Ionicを動かすためには、 Cordova や Capacitor のような Web View を表示するためのフレームワークが必要ですが、これらは HTML/CSS/JS を動かすもので、 Python(Django) を動かすことはできません。
そこで、 Kivy 上で Web View を表示してその中で Ionic を表示することになりますが、 Kivy には Web View と Native をブリッジさせるための機能がないので、そのまわりをすべて自作する必要がでてきます。

オフラインアプリということなので、個人的にはPythonを使わずにCordovaやCapacitorを利用するか、Ionicを利用せずKivyでアプリをつくることが一番近道だと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/16 11:37

    まさかIonic Japan User Group 代表の方から助言いただけるとは思いませんでした。
    やはり難しいのですね。
    おとなしくKivyを利用する方向で考えます。
    大変勉強になりました。ありがとうございました。
    Ionic自体はとても興味を惹かれましたので
    機会があれば触ってみたいと思います。

    キャンセル

+1

kivyの姉妹projectにpython-for-androidという物があるのですが、これ自体はkivyとは独立しているのでkivyを使わないアプリでもandroidのapkにする事ができるようです。私自身はまだwebviewアプリのapk化に成功していませんが。(webview option)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/16 15:54

    情報いただきありがとうございます。
    apk化にも一苦労しそうな雰囲気ですね。
    今回は Kivy を利用する方向で考えますのでapk化は buildozer を利用する形にします。
    もし buildozer が何らかの要因で利用できなかったりはまってしまった場合は
    python-for-android も視野に入れてみます。
    android 向けのapk化が可能な Python の version は絞られているようですね。
    私は Python 7.3.4 を利用しかけていましたが、apk化の都合で 7.3.1 に落とさないといけないかな、と思っています。
    貴重な情報ありがとうございました。

    キャンセル

  • 2019/08/16 16:39

    > 今回は Kivy を利用する方向で考えますのでapk化は buildozer を利用する形にします。

    buildozerはpython-for-androidやkivy-iosを使いやすくする為の只のwrapperなので、python-for-androidでもkivyアプリのapk化はできますし、buildozerでもwebviewアプリのapk化はできるはずです。(私がした事あるのはbuildozerを使ったkivyアプリのapk化だけですが)。ただbuildozerを使った方が多分楽なのでそれでいいのもしれません。

    > 私は Python 7.3.4 を利用しかけていましたが、apk化の都合で 7.3.1 に落とさないといけないかな、と思っています。

    私が最期(約2ヶ月前)にapk化に成功した時に使えたpython3系は3.7.1の一択だったので、変わってなければそのはずです。


    後WindowsだとLinux上でapkを作るより難しいらしいです。

    キャンセル

  • 2019/08/19 16:27

    追加でコメントいただきありがとうございます。
    私もその後ビルドについて調べるうち、 Buildozer が wrapper であることを知りました。

    > 私が最期(約2ヶ月前)にapk化に成功した時に使えたpython3系は3.7.1の一択だったので、変わってなければそのはずです。

    どこかの技術ブログでも同様の実績を見かけました。
    やはり3.7.1なんですね。情報ありがとうございます、大変助かります。

    > 後WindowsだとLinux上でapkを作るより難しいらしいです。

    Buildozer は Windows では使えないようですね。
    クロスコンパイルが技術的な問題で Linux か macOSX でないと
    難しいのだとか…(詳しく分かってません)
    今回はWindowsでの開発なので Buildozer はあきらめます。
    (Buildozer をインストールした Linux の VM を Kivy から配布していたらしき情報もありましたが、現在は見つけられませんでした…。)
    まだ結論に至っていませんが、python-for-android で apk 化ができないか模索してみます。
    もし無理そうなら自分で Linux の仮想環境を準備することも考えないといけないのかなと思っています。

    キャンセル

  • 2019/08/19 16:37

    追記:
    もしやと思い gottadiveintopy 様のプロフィールから Qiita を拝見しました。
    本件の調査を行う上で何度もお見かけしたアカウントでした…。
    日本語のKivy情報が少ない中貴重な発信をありがとうございます…!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.94%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る