【簡単】Pythonで始めるwebアプリ開発入門【Flask】

業務でPythonを使うことになりましたので、現在Pythonの学習をしております。

 

Pythonはプログラミング言語の中でも人気の言語のひとつで、多くの用途に対応しています。

 

例を挙げると、Web開発、データ分析、データサイエンス、自動化などです。

 

わたしはいまPythonを使用してのWeb開発について学んでおり、フレームワークのFlaskを使っています。今回の記事では、Pythonを使って簡単なWebアプリの構築入門を紹介します。

 

 

PythonでWebアプリ作ってみる

■Flaskとは

FlaskはPythonのマイクロフレームワークの1つで、ウェブアプリケーションの開発を簡素化し、柔軟性を提供するツールです。

 

概要

  1. マイクロフレームワーク: Flaskは軽量でシンプルなマイクロフレームワークです。

  2. ルーティング: FlaskはURLと関数を対応付けるためのルーティングシステムを提供します。URLのパターンに対応するビュー関数を作成し、リクエストを処理できます。

  3. テンプレートエンジン: FlaskはJinja2というテンプレートエンジンをサポートしており、HTMLページの生成や動的コンテンツの表示を容易にします。

  4. 拡張性: Flaskは多くの拡張機能をサポートしていて、セッション管理、データベース接続、認証、API開発などのタスクを簡単に実現できます。

 

 

メリット

  1. シンプル: Flaskは非常にシンプルで直感的な構文を持っており、初心者にも扱いやすいです。

  2. 柔軟性: Flaskはマイクロフレームワークなので、プロジェクトに必要な機能を自由に選択できます。

  3. 学習コストの低さ: Flaskは学習コストが低く、Pythonを基本的に理解していれば、比較的簡単に始めることができます。

  4. カスタマイズ性: Flaskは小規模なプロトタイプから大規模なアプリケーションまで幅広いプロジェクトに適しており、必要に応じてカスタマイズできます。

  5. 軽量: Flaskは軽量なフレームワークであり、リソースの消費が少ないため、クラウド環境や制約のある環境でも適しています。

 

 

Flaskを活用して、Webアプリを作っていきましょう!

 

 

■前提

今回の構築では、IDEツール"PyCharm"を利用します。PyCharmのインストール方法はこちら

 

  • OS: Windows
  • IDE: PyCharm

 

 

■Hello World

"Hello World"の表示をやってみます。Flaskの公式ドキュメントで、一番最初に紹介されている内容ですね。

 

紹介するコードに関してはPyCharmで利用しやすいように変えています。

 

まずはPyCharmの新しいプロジェクトを作成して、実行環境を作成しましょう。

 

↓PyCharmを起動します。

 

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

 

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

saitou-intro-flask新しいプロジェクト作成

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

saitou-intro-flask新しいプロジェクト作成

 

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

 

saitou-intro-flask新しいプロジェクト作成

 

 

長くなりましたが、準備完了です。"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()

 

 

開発する際は"デバックモード"で起動するのがおすすめです。コードを書き換えた際に自動で再始動してくれて、いちいち実行しなくてよくなります。

 

↓貼り付けたら、実行ボタンを押しましょう。

 

Flask-helloworld

 

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

 

Flask-helloworld

 

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

 

Flask-helloworld

Flask-helloworld

 

"Hello, World!"と表示されたでしょうか。数行のコードでルーティングやサーバ起動もできるなんて、Flaskは便利ですよね。

 

 

■ルーティング

"Hello World"だけでは物足りないかと思いますので、Flaskの便利機能"ルーティング"をやってみます。

 

Flaskではデコレータを使って、関数(‘hello_world()’)とURLを結びつけることで簡単にルーティングを実装できます。

 

つぎのコードを[app.py]に追加してみましょう。

 

@app.route('/greeting')
def greeting():
    return '<p>Hi!</p>'

 

 

↓追加するとこんな感じです。

 

flaskルーティング

 

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

 

flaskルーティング

 

↓デコレータを使ってルーティングする際に、変数を設定して関数に引数を渡すこともできます。

 

@app.route('/greeting/<yourname>')
def greeting(yourname):
    return '<p>Hi {}!</p>'.format(yourname)

 

flaskルーティング

 

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

 

flaskルーティング

 

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

 

flaskルーティング

 

↓"Not Found"を回避するために、デコレータを追加し、デフォルトで"None"を渡すように設定します。

 

@app.route('/greeting')
@app.route('/greeting/<yourname>')
def greeting(yourname=None):
    return '<p>Hi {}!</p>'.format(yourname)

 

flaskルーティング

 

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

 

flaskルーティング

 

デコレータを使ったルーティングの設定は便利ですよね。ルーティングについては以上です。

 

 

■htmlファイルを使う

さきほど"greeting()"関数内に色々書きましたが、このままソースコードファイルにhtmlを記述するのは、見た目的にも、処理的にも、メンテンナンス的にもよくないですよね。

 

そんなときに便利なのがFlaskの"render_template"です。説明するより、実際に触ってもらった方がわかるかと思います。

 

 

↓左のプロジェクトで新しくディレクトリを作成します。

 

flask-templates

 

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

 

flask-templates

 

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

 

flask-templates

 

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

 

flask-templates

 

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

 

flask-templates

 

↓以下のように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>

 

flask-templates

 

↓[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()

 

flask-templates

 

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

 

flask-templates

 

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

 

flask-templates

 

 

今回は以上です。

 

 

まとめ:Pythonで始めるwebアプリ開発入門

Pythonはプログラミング言語の中でも人気の言語のひとつで、多くの用途に対応しています。

 

今回の記事ではWebアプリ開発について紹介しました。入門部分をさらっと説明しましたが、Flaskを活用することで簡単にWebアプリ開発を行うことができそうですよね。ぜひ使ってみてください。

 

参考リンク:PyCharmFlask – クイックスタート
 

 

↓ほかの協栄情報メンバーも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/
 
 

Last modified: 2023-09-02

Author