Flaskは、Python がつかえるWebアプリ開発環境らしい。パソコンの中に独立したサーバーがつくれるみたいだ。
これを利用すれば、アニメ教室で作ったアニメをスマホにダウンロードするサーバーがラズパイで作れるかもしれん。ということで調査することにした。
まず関連情報を検索
以下が初心者向きでわかりやすい
インストール
-
直前の記事に従ってインストール。「anaconda-navigator」とターミナルで入力の部分は、ターミナルでなく、WindowsLOGOボタンメニューから実行した。
- ラズベリーパイにインストールする方法はこちら。ラズパイでは、python / python3, pip / pip3 のように別コマンドで、python2/3 を区別するようだ。
FlaskサーバーにGIF動画を表示する方法
Flaskサーバーはいろんなアドレスを実データに変換する仕組みをもっているらしい。/image との記述を変換して適当なデータを与える。
静的なデータ(後述のQRコードなど)は "{{ url_for('static', filename='xxxxxx') }}" のように設定。
FlaskサーバーとGIF変換を同時に行う方法
WebサーバーとGIF変換を同時に行うにはマルチスレッドをつかう
Flaskサーバーの公開用IPアドレスを設定する方法
下のようにするとできるらしい。8080 は公開するポート(コマンド起動する場合)
flask run --host='xxx.xxx.xxx.xxx' --port=8080
*もし FLASK_APP 未定義エラーがでたら Windowsなら
set FLASK_APP=app.py
export FLASK_APP=app.py
python の app.run の引数でも、URLとポートが指定できるようだ
if __name__ == '__main__':
app.run(host='xxx.xxx.xxx.xxx', port=8080)
公開IPアドレスをQRコードで表示する方法
Pythonで簡単にQRコードが生成できるみたいだ。すばらしい。(pip or pip3 でインストール)
pip install qrcode
pip install pillow
Flaskサーバーにファイルをアップロードする方法
POSTをつかえばスマホで作ったアニメをアップロードする機能がつくれそうだ。早速、PEASmotch! one にその機能を搭載した。
Windows で ローカル Flask サーバーをたてる方法
Flask で作るサーバーは一般に公開するサーバーには適してないと書いてある。しかし、ローカルでインターネット接続しない前提でスマホに公開するには、以下のように設定する。
- Windowsパソコンの ip アドレスを調べる。コマンドから「ipconfig」
- Flask サーバーのURL を上でしらべた 'xxx.xxx.xxx.xxx' ポート 8080 にする。(デフォルトは、'127.0.0.1' ポート 5000 になっている)
- Windows Defender ファイアーウォール > 詳細設定 >受信の規則 > python が接続禁止になっているので、「python (プロトコル TCPのほう)」を選んでプロパティ「接続を許可する」に設定する。
- スマホからは、このネットワークに WiFi接続し、http://xxx.xxx.xxx.xxx:8080 をブラウザで開く
ラズベリーパイの場合、ファイアウォールの設定なしで http://xxx.xxx.xxx.xxx:8080 に接続できた。
Bottle
Bottleというのはもっと小さくて、Pythonだけでサーバーができるみたい。Flaskより小規模。Flaskのほうが人気があるらしい。