【入門】FlaskでHello Worldする方法【Python】

2019年7月9日

当サイトはPR広告を利用しています。

本記事ではFlaskをインストールするところからHello Worldするまでをやさしく解説します。

著者環境

python: 3.6.8

Hello Worldまでの流れ

FlaskでHello Worldするまでの大きな流れは以下です。

  1. Flaskのインストール
  2. コーディング
  3. 実行

また最後にコーディングした内容を1行1行解説していきます。

インストール

ubuntuをご利用の方は以下のコマンドを実行してFlaskをインストールしてください。

# flaskをインストールするため、python3系のパッケージを取得するためのツールであるpip3をinstallします
$ sudo apt install python3-pip

# pip3を使ってflaskのインストール
$ pip3 install flask

ubuntu以外をご利用の方は以下の記事に従ってFlaskをインストールしてください。

Hello World用コーディング

インストールが完了したら、Hello World用のコードを書いていきます。

hello_flask.pyというファイルを作成して以下のコードを記載します。作成するディレクトリはどこでも良いです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello World"

app.run()

実行

先ほど作成したPythonファイルを実行します。

$ python hello_flask.py
 * Serving Flask app "hello_flask" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

出力された英文に一行ずつ和訳付けてみました。

 * Serving Flask app "hello_flask" (lazy loading)
 (和訳)"hello_flask"というFlaskのアプリケーションが利用可能状態です (遅延読み込み)
 
* Environment: production
 (和訳)環境: 本番環境

   WARNING: This is a development server. Do not use it in a production deployment.
 (和訳)注意: これは開発用のサーバーです。製品用には展開しないでください。

   Use a production WSGI server instead.
 (和訳)代わりにWSGIサーバーを使ってください

 * Debug mode: off
 (和訳)デバッグモード: off

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 (和訳)http://127.0.0.1:5000/で動いています(止めるためにはCTRL+Cを押すこと)

出力の最後の行で"http://127.0.0.1:5000/"にて動いているとのことなので、ブラウザで"http://127.0.0.1:5000/"にアクセスしてみましょう。

「Hello World」が出力されたと思います。

よく分かるコード解説

ここからはhello_flask.pyに書いたコードの一行一行がどんな役割を持っているのか解説します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello World"

app.run()
  • from flask import Flask

flaskというライブラリからFlaskクラスを持ってきています。

  • app = Flask(__name__)

__name__という名称をつけて、Flaskをインスタンス化しています。

__name__はpythonがもともと確保している変数(予約語)であり、特別開発者が値を代入するコードを書かなくても最初からファイルの名称が代入されています。今回の場合は__name__には"hello_flask"が代入されます。

__name__の詳細について知りたい方は以下の記事もご確認ください。

【Flask】初期化時の一つの謎を解明したので解説【無駄知識】

@app.route('/’)

ここが今回紹介したコードの中で一番難しい箇所です。
Flask公式サイトによると以下のように役割が説明されています。

We then use the route() decorator to tell Flask what URL should trigger our function.

つまり「引数として渡しているパスに対してアクセスが来たら、この直下の関数を実行する」というコードです。
今回の場合は"/"、つまりhttp://127.0.0.1:5000/(一番最後のスラッシュがルートを表している)にアクセスが来たら以下の関数が実行されることになります。

def hello():
    return "Hello World"

大切なところなので、もう一つ例を上げておきます。

@app.route('/ringo')
def apple():
    return "apple"

今回の場合はhttp://127.0.0.1:5000/ringoに対してアクセスがきたら、apple関数が実行されることになります。

app.run()

Flaskアプリケーションを起動させています。
起動後は先ほど説明した@app.route('/’)が効力を持つようになります。

まとめ

以上でFlaskでHello Worldするまでの流れは解説終了です。

Flaskとよく一緒に使われるuWSGI, nginxとの連携方法を以下の記事でまとめてるので、応用編として是非ご確認ください。記事内でuWSGIとnginxとは何かについても説明しているので、あまり気負わず読めると思います。この組み合わせはWebアプリによく使われる構成なので実践的です。

直近でおすすめの本

直近十数冊読んだ中で一番おすすめの本です。

ビジネスデザイナーという肩書きを持つイノベーションシンキングの世界的第一人者である濱口秀司さんの書かれた本です。肩書きだけだとどのようなことをしている人か分かりにくいかもしれませんが、USBメモリやマイナスイオンドライヤーなど誰もが知る有名商品の産みの親の方です。

アメリカのコンサルタントの中でも最高額のコンサルティングフィーを受け取っている方で、私の友人から聞いた話だとこの人のコンサルティングを受けるためには1時間でも7桁の額は準備する必要があるとのことでした。

濱口秀司さんは自分の中でイノベーションを起こすための型を持っており、その型について本の中でかなり詳しく教えてくれています。革新的なアイデアを出す方法をここで詳細にはお伝えしませんが、とてもざっくりとまとめると以下の手順になります。

バイアスの特定→バイアスの破壊

革新とは現状の破壊です。現在世の中にあるバイアスを認知するところからアイデアの創出は始まります。この本ではバイアスを認知する方法、そして破壊する方法を詳しく述べてくれています。個人開発をしようとしているけど何を作れば良いか思い浮かばない方やや会社を立ち上げようとしている方に特におすすめの本です。

過去におすすめした本は以下の記事にまとめています。

Pythonflask

Posted by ラプラス