この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
業務でPythonを使うことになりましたので、現在Pythonの学習をしております。
Pythonはプログラミング言語の中でも人気の言語のひとつで、多くの用途に対応しています。
例を挙げると、Web開発、データ分析、データサイエンス、自動化などです。
わたしはいまPythonを使用してのWeb開発について学んでおり、フレームワークのFlaskを使っています。今回の記事では、Pythonを使って簡単なWebアプリの構築入門を紹介します。
PythonでWebアプリ作ってみる
■Flaskとは
FlaskはPythonのマイクロフレームワークの1つで、ウェブアプリケーションの開発を簡素化し、柔軟性を提供するツールです。
【概要】
- 
マイクロフレームワーク: Flaskは軽量でシンプルなマイクロフレームワークです。
 - 
ルーティング: FlaskはURLと関数を対応付けるためのルーティングシステムを提供します。URLのパターンに対応するビュー関数を作成し、リクエストを処理できます。
 - 
テンプレートエンジン: FlaskはJinja2というテンプレートエンジンをサポートしており、HTMLページの生成や動的コンテンツの表示を容易にします。
 - 
拡張性: Flaskは多くの拡張機能をサポートしていて、セッション管理、データベース接続、認証、API開発などのタスクを簡単に実現できます。
 
【メリット】
- 
シンプル: Flaskは非常にシンプルで直感的な構文を持っており、初心者にも扱いやすいです。
 - 
柔軟性: Flaskはマイクロフレームワークなので、プロジェクトに必要な機能を自由に選択できます。
 - 
学習コストの低さ: Flaskは学習コストが低く、Pythonを基本的に理解していれば、比較的簡単に始めることができます。
 - 
カスタマイズ性: Flaskは小規模なプロトタイプから大規模なアプリケーションまで幅広いプロジェクトに適しており、必要に応じてカスタマイズできます。
 - 
軽量: Flaskは軽量なフレームワークであり、リソースの消費が少ないため、クラウド環境や制約のある環境でも適しています。
 
Flaskを活用して、Webアプリを作っていきましょう!
■前提
今回の構築では、IDEツール"PyCharm"を利用します。PyCharmのインストール方法はこちら
- OS: Windows
 - IDE: PyCharm
 
■Hello World
"Hello World"の表示をやってみます。Flaskの公式ドキュメントで、一番最初に紹介されている内容ですね。
紹介するコードに関してはPyCharmで利用しやすいように変えています。
まずはPyCharmの新しいプロジェクトを作成して、実行環境を作成しましょう。
↓PyCharmを起動します。

↓[New Project]をクリックします。

↓

↓新しくディレクトリを作成し、任意の名前を付けましょう。

↓

↓[Create a main.py welcome script]のチェックを外し、[Create]をクリックします。

↓左のProjectで作成ディレクトリの上で右クリックを押し、[New]→[Python File]をクリックします。

↓[app]と名付けます。
app
 

↓

↓app.pyをデフォルトで実行できるように設定していきます。右上の[Current File]から[Edit Configurations]をクリックします。

↓[+]をクリックし、[Python]をクリックします。

↓

↓[Name]はディレクトリ名と一緒にしました。なんでも大丈夫です。[Script path]は[app.py]のパスを絶対パスで入力します。[Python Interpreter]はanaconda3のものを選択します。[Working directory]は[app.py]があるディレクトリのパスを入力し、[OK]をクリックします。

長くなりましたが、準備完了です。"Hello World"を表示していきましょう。コードは公式ドキュメントを参考にしています。以下のコードをapp.pyに貼り付けてください。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return '<p>Hello, World!</p>'
def main():
    # デバックモードで起動
    app.debug = True
    app.run()
if __name__ == '__main__':
    main()
開発する際は"デバックモード"で起動するのがおすすめです。コードを書き換えた際に自動で再始動してくれて、いちいち実行しなくてよくなります。
↓貼り付けたら、実行ボタンを押しましょう。

↓内蔵サーバが起動します。

↓お使いのブラウザで"http://127.0.0.1:5000/" にアクセスしてみましょう。
http://127.0.0.1:5000/

↓

"Hello, World!"と表示されたでしょうか。数行のコードでルーティングやサーバ起動もできるなんて、Flaskは便利ですよね。
■ルーティング
"Hello World"だけでは物足りないかと思いますので、Flaskの便利機能"ルーティング"をやってみます。
Flaskではデコレータを使って、関数(‘hello_world()’)とURLを結びつけることで簡単にルーティングを実装できます。
つぎのコードを[app.py]に追加してみましょう。
@app.route('/greeting')
def greeting():
    return '<p>Hi!</p>'
↓追加するとこんな感じです。

↓お使いのブラウザで"http://127.0.0.1:5000/greeting" にアクセスしてみましょう。
http://127.0.0.1:5000/greeting

↓デコレータを使ってルーティングする際に、変数を設定して関数に引数を渡すこともできます。
@app.route('/greeting/<yourname>')
def greeting(yourname):
    return '<p>Hi {}!</p>'.format(yourname)

↓"http://127.0.0.1:5000/greeting/任意の文字列" にアクセスしてみましょう。
http://127.0.0.1:5000/greeting/任意の文字列

↓引数を入れないで、"http://127.0.0.1:5000/greeting" にアクセスしてみましょう。
http://127.0.0.1:5000/greeting

↓"Not Found"を回避するために、デコレータを追加し、デフォルトで"None"を渡すように設定します。
@app.route('/greeting')
@app.route('/greeting/<yourname>')
def greeting(yourname=None):
    return '<p>Hi {}!</p>'.format(yourname)

↓"http://127.0.0.1:5000/greeting" にアクセスしてみましょう。

デコレータを使ったルーティングの設定は便利ですよね。ルーティングについては以上です。
■htmlファイルを使う
さきほど"greeting()"関数内に色々書きましたが、このままソースコードファイルにhtmlを記述するのは、見た目的にも、処理的にも、メンテンナンス的にもよくないですよね。
そんなときに便利なのがFlaskの"render_template"です。説明するより、実際に触ってもらった方がわかるかと思います。
↓左のプロジェクトで新しくディレクトリを作成します。

↓ディレクトリ名は[templates]とします。Flaskはテンプレートをtemplatesフォルダの中から探しますので、一文字も間違えないように作成しましょう。
templates

↓[templates]ディレクトリ配下に[HTML File]を作成します。

↓[greeting]と名前を付けました。

↓ファイル作成時にHTMLを指定すると、簡単なテンプレートが書かれています。

↓以下のようにHTMLの記述を追加します。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Greeting</title>
</head>
<body>
{% if yourname %}
Hi! {{ yourname }}
{% else %}
Hi!
{% endif %}
</body>
</html>

↓[app.py]に"render_template"をインポートし、greeting()を書き換えます。
from flask import Flask
from flask import render_template # 追加
app = Flask(__name__)
@app.route('/')
def hello_world():
    return '<p>Hello, World!</p>'
@app.route('/greeting')
@app.route('/greeting/<yourname>')
def greeting(yourname=None):
    return render_template('greeting.html', yourname=yourname) # 変更
def main():
    app.debug = True
    app.run()
if __name__ == '__main__':
    main()

↓まずは"http://127.0.0.1:5000/greeting" にアクセスしてみましょう。

↓つぎに、"http://127.0.0.1:5000/greeting/任意の文字列" にアクセスしてみましょう。
http://127.0.0.1:5000/greeting/任意の文字列

今回は以上です。
まとめ:Pythonで始めるwebアプリ開発入門
Pythonはプログラミング言語の中でも人気の言語のひとつで、多くの用途に対応しています。
今回の記事ではWebアプリ開発について紹介しました。入門部分をさらっと説明しましたが、Flaskを活用することで簡単にWebアプリ開発を行うことができそうですよね。ぜひ使ってみてください。
参考リンク:PyCharm、Flask – クイックスタート
 
↓ほかの協栄情報メンバーもPythonに関する記事を公開しています。ぜひ参考にしてみてください。
■Pythonの3つの共通パス操作(lujian)
https://cloud5.jp/python-path/
■天気予報情報をスクレイピング(Python)で、LINE NotifyによりLINE通知の構築(INAMURA)
https://cloud5.jp/web-scraping_line-notify/
■Pythonでlxmlを用いてhtmlから情報取得(zhangzy)
https://cloud5.jp/python-ixml/
■仮想環境作成ツール”virtualenv”を使ってみる(齊藤弘樹)
https://cloud5.jp/saitou-howtouse-virtualenv/
■【初学者向け】PCにPythonを学習するための環境を整える part1【Windows編】(齊藤弘樹)
https://cloud5.jp/saitou-python-install/
 
 


