0
1
テーマ、知りたいこと
・GUIアプリ(カレンダー系のアプリ)を作る時にPythonのFlaskを使うメリット
背景、状況
すいません、ものすごい単純な事かもしれないのですが、ご意見お聞かせ下さい。
ラズパイか泥タブでGUIアプリを作ろうかと検討しています。
その中で調べると様々なライブラリが存在することが分かりました。
- Python系では、tkinter,pyQt5,flet,kivy,Flask
- Androido系では、Flutter,kotlin
元々ウェブ系の開発が得意なので、カレンダーのベースと動作をHTML+JSで作って
敷居が低そうなFlaskで開発をしようと思い調べると、これ単体でPOST送信できたり、
DB使えたりいろいろできることが分かりました。
そんな中、わざわざFlask使ってやるよりブラウザをキオスクで立ち上げて
PHP+MySQL使ってウェブサーバーに処理させるのとどう違うんだろ?
ローカルで実行できるだけ?と思いました。
正直他から見れば、そっちでできるならそっちでやればいいじゃんと思うのは
ごもっともですがご意見あれば下さい。
+わがままな事で申し訳ないのですが、「そんなもの使ってるの?!もっとこういった便利なものがあるよ。」みたいな意見もあれば下さい。(調べてはいるのですが、なかなか先が決まらなくて…)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
#1
総合スコア13907
投稿2024/12/15 10:44
・GUIアプリ(カレンダー系のアプリ)を作る時にPythonのFlaskを使うメリット
Flaskってのは、Webサーバ側のAPIなどを作るためのpythonのフレームワークですので、そういう用途で使うのでなければ、メリットはありません。
「PHP+MySQL使ってウェブサーバーに処理させる」のPHPのところをpython+Flaskで作る感じですね。
Webアプリでということであれば、pythonではAIなどデータ解析系のツール/情報が豊富ですので、そういう機能と連携させて作る場合は、親和性が高いので便利です。
#2
総合スコア5
投稿2024/12/15 11:32
#1 TakaiYさん
しょうもない意見に回答ありがとうございます。。。
Webサーバ側のAPIなどを作るためのpythonのフレームワーク
なるほど、単にUIを実装するものではなく、機能の提供者側(?)のフレームワークなんですね。
実際に作りたいのは、そこまで大規模なものではなくて、単純な予約システムを作りたいと思っているのです。
ウェブ上のみで完結するように作ってみても良いのですが、現場のみで動いている人もいるので、施設に実際に来てから、その場で予約をする高齢者の方もいます。
今までは紙に○を書いていましたが、これをデータで管理すべくラズパイ+タッチ式のディスプレイを置いて、
カレンダーを表示させて日付を選択→予約→DBに格納→表示という感じで構想をしています。
そこでGUI系のフレームワークやライブラリを見るとカレンダーを表示させるだけでも、ちょっとめんどくさそうなので、もっと手軽にできないか調べていたら、htmlのテンプレートを使えるFlaskを発見したというのが経緯になります。
やはり当初のPHP+MySQLで組んで、ブラウザをPython&seleniumで制御して表示するのが手っ取り早そうですね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#3
総合スコア13907
投稿2024/12/15 12:58
やはり当初のPHP+MySQLで組んで、ブラウザをPython&seleniumで制御して表示するのが手っ取り早そうですね。
なぜそこに python&seleniumが出てくるのでしょう?
単純な予約システム
であれば、普通にWebアプリとして実装すればいいのでは? サーバ側をPHP+MySQL、クライアント側はJSでもなんでもいいいでしょう。
現場のみで動いている人もいる
Webアプリとして作っておけば、ネット経由でも、ローカルネットワークでもどちらでも対応できるでしょう。
ただし、パプリックなネットで使えるようにするのであれば、セキュリティなどに注意する必要はありますが。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#4
総合スコア10769
投稿2024/12/15 13:13
ラズパイか泥タブでGUIアプリを作ろうかと検討しています。
その中で調べると様々なライブラリが存在することが分かりました。Python系では、tkinter,pyQt5,flet,kivy,Flask
Androido系では、Flutter,kotlin
Flask
はPython用の軽量なウェブアプリケーションフレームワークですし、Kotolin
はオブジェクト指向のプログラミング言語ではないでしょうか。
それぞれ「GUIアプリ用のライブラリ」とは異なるかと思います。そもそも比較対象ではないと思われます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#5
総合スコア5
投稿2024/12/16 00:41
#3 TakaiYさん
なぜそこに python&seleniumが出てくるのでしょう?
すいません、ちょっと勘違いしていました。
キオスクで立ち上げるのに必要なさそうですね。
ラズパイのconfigいじるだけで起動できるのを忘れてました。
[ Raspberry Pi] RasiPiでブラウザを自動起動してキオスク端末にする方法 | 映像とその周辺
諸要件として、下記の要項がありますが、全て対応できそうですね。。
- 放置対策として無操作時に自動的にトップページに戻す(JS)
- ボタンを押すと「受付しました!」等音声を流す(JS)
- 別端末からの更新できるようにする(パブリック上のネットワーク)
- 下手にいじられたくない(キオスクモードで起動で解決)
怖いのはキオスクモードで起動したブラウザが何かの原因でクラッシュしたときの
自動で再起動的な処理を入れないと…シェルスクリプト+cronで定期的なプロセスの監視でいけるかな…。
パプリックなネットで使えるようにするのであれば、セキュリティなどに注意
専門家ではないのですが、不正アクセスできないような対策は実施します…簡易的ですが。f(^_^;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#7
総合スコア13907
投稿2024/12/16 01:48
編集2024/12/17 01:14僕も種々の言語/フレームワークが比較対象として出てくるのには違和感があったのでmeg_さんの意見も半分同意ですが、
kotlinはAndroidoアプリとしての開発をざっくりと調べていた時に出てきたので、
アプリを作るもの=GUIができると思っていましたが、違うようですね。
「違うようですね」というのも違います。
Flaskでサーバサイドを作って、Androidアプリをクライアントにするというのはありうる構成です。
ただ、 ユーザにインストールしてもらわなければいけない(メリットにもできますが)し、他のプラットフォームへの対応も必要になるので、ブラウザ+JSに対するメリットはあまり無いでしょうね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#8
総合スコア2441
投稿2024/12/17 00:52
他の人の回答見てませんが、かぶってたらすみません。
また、質問文の最後から、単語を並べ立てています。
・GUIアプリ(カレンダー系のアプリ)を作る時にPythonのFlaskを使うメリット
この質問に回答します。
いろいろ誤解があるようなので、Flaskの説明から行います。
Flaskは、PythonのWebフレームワークです。
そもそも、GUIアプリを作るものではありません。
この場合のGUIアプリとは、特定の環境(OSなど)で動くネイティブアプリを指しており、Webアプリのことは指しません。
WebアプリをGUIアプリという人もいると思いますが、一般的にはネイティブアプリのことを指すと思います。
そのため、FlaskはGUIアプリを作るものではないと説明しています。
Flaskで作成したWebアプリを、キオスクモードのChromeで表示し、擬似的にGUIアプリのように動作させることもできるので、thizmさんが考えているGUIアプリの仕様を満たせる可能性は高いです。
さて、Flaskの説明の続きです。
Flaskはマイクロフレームワークと自称しているWebフレームワークです。
最近のドキュメントからは削除されましたが、傾向は変わっていません。
「マイクロ」はいろいろな捉え方ができると思いますが、私が説明するなら「Webアプリを作成する上で必要な最小限の機能を備えている」となります。
Flask単体ではDBへアクセスする機能は持ちませんが、別途Flask用のライブラリをインストールすれば機能を追加することができるため、機能が不足しているということもありません。
Flaskを使えば大抵のWebアプリを作成することが可能です。
Flaskを使うメリットは、例えば、PythonのWebフレームワークであるDjango、PHPのlaravel、RubyのRuby on Rails、C#のBlazor/ASP.NET、GoのGin、NodeのExpressなどのバックエンド側のWebフレームワークを使うのと同じです。
いろいろなプログラミング言語がありますが、それらにも大体Webフレームワークがあります。
言語単体でも頑張ればWebアプリを構築可能ですが、Webフレームワークが作られ利用されるのは、Webアプリに求められる機能がだいたい同じであるためです。
例えばルーティング、例えば静的ファイルの処理、セッション、ログ機能などです。
これらを使って簡単にWebアプリを構築することができます。
さらにFlaskの利点を挙げるとすれば、Flaskは最低限の機能で構築されており、学習曲線が緩やかです。
フルスタックのWebフレームワークはいろいろな機能が含まれており便利ですが、いろいろな機能が含まれているせいで学習することが多く、いろいろ学習した後じゃないと使い始められないというデメリットがあります(全部入っているので後から迷わなくて良いというメリットともいえますが)。
そのため、とりあえず始めたい場合には最適です。
当然ながら、大きなプロジェクトを作りたい場合にも対応可能になっており、でかくなったら対応できないということはありません。
つまり、PytnonのFlaskを使うメリットは以下のようになります。
- プログラミング言語としてPythonが使える
- 学習曲線が緩やかであり、比較的容易に使い始められる
- 機能が最小限に抑えられているので理解しやすい
- 当然ながらHTMLやCSS、JavaScriptと組み合わせたWebアプリが作れる
そんな中、わざわざFlask使ってやるよりブラウザをキオスクで立ち上げて
PHP+MySQL使ってウェブサーバーに処理させるのとどう違うんだろ?
これについては、「かわらない」という答えになります。
作っているのはWebアプリなので、何を使って作っても結果は同じです。
「そんなもの使ってるの?!もっとこういった便利なものがあるよ。」みたいな意見もあれば下さい。(調べてはいるのですが、なかなか先が決まらなくて…)
Web技術を使ってGUIアプリを作る場合に選択肢に入るのは以下だと思います。
- Electron
- Tauri
これらは、Web技術を応用しながらGUIアプリが作成可能です。
ElectronはNode、TauriはRustです。
VS CodeはElectronでできているという噂を聞いたことがあります。
ああいうのを頑張れば作れるかもしれません。
Webアプリの延長線でいえば、フロントエンドフレームワークである以下3つのようなものを使えば、より高度なUIが作成可能になります。
- React
- Vue.js
- Angular
Flaskと組み合わせる場合はバックエンドをFlaskで作成し、フロントエンドを上記のフロントエンドフレームワークで作成して組み合わせます。
Angularはフルスタックであるため、学習曲線が急峻であり、小さなプロジェクトを行うのに向いていないという話があり、嫌煙されがちのようですが、選択肢に入らないわけではありません。
日本で人気なのはVue.jsで、世界で人気なのはReactのようです。
また、上記それぞれにはエコシステムというものがあります。
ReactならNext.jsのようなものです。
Vue.jsはNuxt.jsあたり。
AngularのエコシステムはAngular Materialなどでしょうか?
React、Vue.js、Angularで不足している機能を補完する機能を持っており、より簡単にフロントエンドの構築が可能になります。
ただし、最近SSRがはやっているので、エコシステムを使うと問答無用でSSRだったりします。
MPA、SPA、CSR、SSR、SSGみたいな単語を調べる必要が出てくるかもしれません。
また、CSSもフレームワークがあり、最も有名なのはBootstrapだと思います。
これらを使うとそれなりのWebアプリを作れるようになりますが、プログラミング言語や使用するフレームワークなどが増えるとそれだけ複雑になり、設計も管理も大変になります。
FlaskだけでMPA(Multi Page Application)を作るのが一番簡単だと思います。
特にログイン機能が不要であれば、Flask単体でOKです。
(CSSを使うためにBootstrapを入れたり、Sassを使ったりするのはありだと思います。)
と、まとめましたが、デバイス側の機能を使いたい場合、ネイティブアプリを作った方が良いです。
例えばAndroidでカメラ機能を使いたいとかですね。
仕様により適切な技術を選んでください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。