Python

PythonのFlaskで簡単なWebアプリケーションを作ってみよう!

macとsurface
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!

こんにちは!

データサイエンスに携わっているウマたん(@statistics1012)です。

Webブラウザで動くアプリケーションのことをWebアプリケーションと呼びます!

アプリケーションと言えば、スマホのネイティブアプリのイメージが強いかもしれませんがWebブラウザで動くWebアプリケーションも負けていません!

そして、そんなWebアプリケーションであればPython・Javascript・HTML・CSSを使って簡単に作ることが可能です!

Pythonは普段データ解析用の言語として用いているのですが、実はWebアプリケーションを開発するサーバーサイド言語としても使えます。

Pythonは非常に優秀なプログラミング言語なのです。

この記事では、PythonのFlaskというモジュールを用いて簡単なWebアプリケーションを作っていきます!

ウマたん
ウマたん
Pythonの勉強は以下の記事をチェック!
【独学入門】初心者が3か月でPythonを習得できるようになる勉強法!当ブログ【スタビジ】の本記事では、Pythonを効率よく独学で習得する勉強法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

PythonのFlaskとは?

Webアプリケーションを実装する言語としてはRubyやPHPなどもありますが、Webアプリケーションのロジック部分で数値計算を行うのであればPythonを同時に使用してしまった方がラクです。

高度な数値計算もWebアプリケーション開発も同時に出来てしまうのがPythonの特徴であり最強である所以なのです。

そんなPythonでWebアプリケーションを開発するためにはDjangoを使うパターンとFlaskを使うパターンがありますが、Flaskの方が軽量で簡単に実装が可能なため最初はFlaskでWebアプリケーション開発に慣れたほうが良いでしょう。

Flask Django
Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!...

複雑なWebアプリケーションを実装する際にはDjangoの方が良い場合があります。

ちなみにFlaskのリファレンスは以下のサイトを参考にしてみてくださいね!

https://a2c.bitbucket.io/flask/

Flaskを使って実現したいこと

ここでは、数値を入力したら有意差を算出してくれるWebアプリケーションを作成していきたいと思います。

データのやり取りや有意差計算を行うのはPythonになりますが、表示する画面を作るのはHTML・CSS・Javascriptになります。

まずは、有意差計算のための数値を入れる画面をHTML・CSS・Javascriptを使って作ります。

そしてAjaxで非同期にデータをサーバーサイドに渡しPythonで有意差計算をしてクライアントサイドに戻し表示するという流れになります。

有意差に関しては詳しく以下の記事にまとめていますのでご覧ください!

有意差とは?簡単な例で見ていこう!当サイト【スタビジ】の本記事では、統計学の基礎となる有意差の考え方についてカンタンな例と共に見ていきたいと思います。学術的な文脈でも実務の文脈でも必ず登場する有意差について深く理解しておくことが大事です。...

Flaskを使ってロジック部分を作る

まずは、PythonのFlaskを使ってロジックを作っていきます。

以下がコードになります。

順番にコードを見ていきましょう!

こちらはFlaskを定義する部分。おまじないみたいなモノです。

最終的にここで定義したncをrunしてWebアプリケーションを走らせていきます。

続いて@nc.routeでルートを指定します。Webサイトで言うURLにあたります。

ここでsig.htmlという画面表示部分をレンダリングしています。

sig.htmlについては後で見ていきましょう!

この部分では、画面上で入力してもらった数値を動的にAjaxでPOST形式でサーバーサイドに送信しています。

送信形式はPOSTとGETがありますが、POSTの方が秘匿性が高くなっており今回はPOSTを用いています。

json形式でデータをもらった後は、有意差を計算していきます。

今回はAとBのパターンの有意差はカイ二乗検定を行って算出しています。

WebマーケティングでありがちなメールのABテストなどを実装できます。

最後にこのWebアプリケーションを実装して終了です。

Webアプリケーション表示部分を作る

ロジック部分が出来上がったので、続いてWebアプリケーションの表示部分を作っていきます!

コードは以下です。

ここでは、簡単に見やすいUIを作成することの出来るBootstrapというフレームワークを使っています。

HTMLやCSSの細かい知識がなくても比較的簡単に綺麗な画面を作成することができますが、ある程度の知識は必要です。

BootstrapはTwitter社が作成したフレームワークです。

以下細かいリファレンスが載っているので参考にしてみてください。

https://getbootstrap.com/

以下でBootstrapを使って画面部分を記述していきます。

比較的見やすい画面表示が出来上がりました。

続いて入力された数値を非同期にサーバーサイドに送信していきます。

Flaskのルールとして、HTMLファイルはPythonファイルと同じディレクトリ内に「templates」という名前のファイルを作成し、その中に格納しておかなくてはいけませんので注意しましょう。

CSSファイルやJSファイルは「static」ファイルに入れる必要があるのですが、今回はHTMLの中で全て完結させたので問題ありません。

デプロイはherokuというアプリケーションを使っておこないました。

heroku
herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法当サイト【スタビジ】の本記事では、PythonのWebフレームワークであるFlaskを使って作成したWebアプリケーションをインターネット上に公開するためにHerokuというサービスを使ってデプロイしていきます。Herokuを使えば簡単にWebアプリケーションを公開することが可能なんです。...

見てみてください!

→有意差アプリケーション

※少し読み込みに時間がかかる場合があります

Python flask まとめ

これで有意差計算Webアプリケーションが完成しました。

Flaskを使ってWebアプリケーションを作るのは比較的簡単であることが分かってもらえたと思います。

Pythonはデータ解析やスクレイピングそしてWebアプリケーション作成まで出来る幅広いプログラミング言語!

以下の記事で初心者がPythonを習得する方法についてまとめていますのでよければご覧ください!

【独学入門】初心者が3か月でPythonを習得できるようになる勉強法!当ブログ【スタビジ】の本記事では、Pythonを効率よく独学で習得する勉強法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

 

Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!