Pythonで株価分析を作ってきましたが、『コマンドで動かすだけだと使いにくい』と感じたことはないですか?
そこで今回は、ブラウザで使えるWebアプリ化について説明します。
- Flaskとは何か
- 最小構成でWebアプリを動かす方法
- HTMLを使った画面表示
Flaskとは
Flaskは、Pythonで開発された軽量なWebアプリケーションフレームワークです。
最大の特徴は、『不必要な機能を一切持たず、開発者に自由を与える』という設計思想にあります。
フレームワークとは、アプリ開発に必要な機能をまとめた『土台』のようなもので、これを使うことで一から仕組みを作る必要がなくなります。
このフレームワークは、小規模なプロジェクトやプロトタイプ開発に適しており、短期間でWebアプリケーションの基盤を構築できます。
環境構築
まずはFlaskのライブラリをインストールします。
インストールは非常に簡単でターミナルやコマンドプロンプトで以下のコマンドを実行すればOKです。
pip install Flaskディレクトリ構成
今回ご紹介する実装するコードのディレクトリ構成は下の通りです。
project/
├ app.py
└ templates/
└ index.html実装コード
実際にコードを書きながら説明していきます。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', name='Flask')
if __name__ == "__main__":
app.run(debug=True)<!DOCTYPE html>
<html>
<head><title>Flask Sample</title></head>
<body>
<h1>Hello {{ name }}!</h1>
<p>Flaskのテンプレートから表示しています。</p>
</body>
</html>実行結果:
ブラウザを開いて『http://127.0.0.1:5000』を実行してみてください。

コード解説
Pythonコード(app.py)の解説
Webサーバー側のコードです。
app = Flask(__name__)Flaskのインスタンスを作成しています。name を渡すことで、Flaskはテンプレートファイル(html)や画像ファイルがどこにあるかを判断します。
@app.route('/')『ルーティング』です。『ブラウザでトップページ(/)にアクセスが来たら、すぐ下の関数を実行してね』というイメージです。
def index():ルーティングによって呼び出される関数です。
render_template('index.html', name='Flask')templates フォルダにある index.html を読み込み、さらに name という変数に ‘Flask’ という文字列を乗せて、HTML側に送り出しています。
if __name__ == "__main__": app.run(debug=True)プログラムを直接実行したときに、開発用サーバーを起動します。debug=True にしておくと、コードを書き換えた瞬間にサーバーが自動再起動するので、開発効率が劇的に上がります。
HTMLコード(index.html)の解説
Flaskから送られてきたデータを受け取って表示するコードになります。
{{ name }}これがJinja2テンプレートエンジンの構文です。
Python側で指定した name=’Flask’ という値が、ここに入れ替わります。ブラウザで見たときには、『Hello Flask!』 として出力されます。
全体の処理フロー
- リクエスト:ユーザーがブラウザで http://127.0.0.1:5000/にアクセスする。
- ルーティング:Flaskが@app.route(‘/’) を見つけ、index() 関数を動かす。
- レンダリング:render_template が働き、index.html 内の {{ name }} を ‘Flask’ に書き換えて、完成したHTMLを作る。
- レスポンス:完成したHTMLがブラウザに返され、画面が表示される。
まとめ
今回は、Flaskを使って『ブラウザで動くツール』の土台を作りました。
- Flaskをインストールする
- URLと処理を紐付ける(ルーティング)
- HTMLへデータを渡す
Python+Flaskを使って『株価分析ツール』を作成しているので是非、下の記事も見て頂ければと思います。

【投資に関する免責事項】
本ブログで紹介している株価解析ツールによるスコアリングおよび銘柄分析は、あくまで個人の学習・研究および技術検証を目的としたものであり、特定の銘柄の売買を推奨するものではありません。
ツールの算出結果や掲載情報の正確性については万全を期しておりますが、その内容を保証するものではありません。投資の最終決定は、必ずご自身の判断と責任において行っていただきますようお願いいたします。
万一、本ブログの情報に基づいて被ったいかなる損害についても、当サイトおよび運営者は一切の責任を負いかねますのであらかじめご了承ください。

