FlaskでWebアプリ(ニューロンシミュレータ)を作ってみた話
はじめに
Webアプリケーションと言えば,PHP (CakePHP)やRuby (Ruby on Rails),Java (Java Servlet)といった言語がよく使われます.
実はPythonでもWebアプリケーションが作れるのをご存知でしょうか?
今回は,Pythonで実際にWebアプリケーションを作ってみたので,その紹介と作成背景について書いていきます.
成果物: SPINE Web
先に出来上がったものを載せます.
SPINE Web -Web上で動作するニューロンシミュレータ-
細かくエラー処理を書いていないので,もしかしたらシステムとしたら小さな欠陥がたくさんあるかもしれません...
いわゆるSPA (Single Page Application) で,全て単一のページで処理を行っています.
以下は動作例です.
優しく使ってあげてください.
動作軽量化のために,広告等はつけていませんし,これからもつけません.
もちろん登録とかもいらないです,勝手に使ってください.
Python Web Frameworks
PythonのWebフレームワークって,最近になって登場したものでも無いのですが,今は以下ようにたくさんのPythonのWebフレームワークがあります.
- Django (2005 ~ )
一番有名?ほとんどの必要なファイルを自動生成してくれる - Bottle (2009 ~ )
一から自分で構築できて,一つのインポートで済む軽量フレームワーク - Flask (2010 ~ )
Bottleを真似たやつ.最近だとこっちの方が有名になってしまった - Responder (2018 ~ )
Flaskのような単一インポートで済むフレームワーク.非同期処理が得意で最近人気.バックではStarletteというフレームワークが動いていて,ラップしたものに過ぎない. - FastAPI (2018 ~ )
Responderとベースは同じだが,API構築を想定したフレームワーク.その名の通り速さが売り.
他にも多分いろいろありますが,有名どころはこんな感じです.
今回はDjangoほどの高機能は使わないので,単一インポートで済むFlaskを使います.
個人的にはResponderが好きなのですが,レンタルサーバ上での構築なので,ネット上に(比較的)知見がたくさんあるFlaskを選びました.
環境
本アプリケーションが動作している環境でも掲載しておきます.
誰も興味無いかもしれませんが...
サーバ
サーバは以前から借りているさくらレンタルサーバーです.
さくらレンタルサーバーは,PythonのCGIアプリケーションはほとんど想定していないようで,環境づくりにかなり手間取りました.
また,VPSではないのでルート権限も無い中,どう構築していくかにはかなり苦戦しました...
Python3の導入からはじまり,NumPyを動かすためのgccとgfortranの導入,などなど長い道のりでした.
途中でPHPで構築しなおそうかとも思いましたが,なんとか動作するまでに至りました.
ここで参考にしたページは最後に掲載しておきます.
バックエンド
OS | FreeBSD 9.1 |
Python | 3.6.8 |
NumPy | 1.13.3 |
Flask | 1.1.1 |
NumPyがなけれればもっと簡単に完成していたと思いますが,NumPyが曲者でした.笑
フロントエンド
フロントのグラフ描画はChart.jsというフレームワークを使っています.
以下のように,グラフにカーソルを当てれば簡単な情報は可視化されます.
デザインは特にフレームワークは使わずに,適当にCSS書いています.
おわりに
短い記事ですが,SPINE Webの紹介で書きました.
需要はあまり無いのかもしれませんが,せっかく作ったのでさりげなく公開しておきます.
アプリとしてはとても単純なものですが,適当に使ってください.
参考
以下のページには大変助けられました.
この場をお借りして感謝いたします.
- さくらレンタルサーバーにgcc、Python3、numpy、scipy、scikit-learn、gensimをインストールする | 悠雀堂ブログ
(このページに本当に助けられた...) - 【さくらレンタルサーバー】flaskを使ってみる。
関連リンク
以下はSPINE Webに関連した私の管理しているリンクです.
もし良かったら覗いてみてください.