Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Flask】電子掲示板を作る~①まずはFlaskで「Hello world」を表示~


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210718062603p:plain

おはようございます。Shotaです。

今日から自作のPythonで作ったWebアプリの作り方を解説していきます。作るアプリは「電子掲示板」です。(画像は電子掲示板のアプリ)ただし、使用するソフト、バージョンは次の通りです。


なお、本記事はすでにPythonがインストールされている、VScodeがインストールされている前提で解説します。まだPythonをインストールしていない人は次の記事を参照しながらPythonのインストールをしてください。

www.javadrive.jp

▼自作の電子掲示f:id:ShotaNukumizu_1000:20210822095850p:plain

作り方をいっぺんに書くと記事が膨大な量になりますので、まずはFlaskで「Hello world」と表示させる場面から始めていこうと思います。



Flaskをインストール

まずはWindowsキーと「R」キーを同時に押して入力欄に「cmd」と入力してコマンドプロンプトを開いてください。

f:id:ShotaNukumizu_1000:20210822100919p:plain

そして、入力が終わったらコマンドプロンプトで次のコマンドを入力してください。

pip install flask

このコマンドを入力したあと、「Successfully Installed」という文字が表示されていれば無事にインストールが成功しています。

すでにインストールされている場合は、

pip install flask
> Requirement already satisfied: flask ~
....

コマンドプロンプト上にこのように表記されていると思います。

それでは、実際にHello worldをFlaskを使って表示してみましょう。


Hello worldを表示

まずは、VSCodeに適当なフォルダー「sampleapp」を作り、その中にファイル「main.py」を作りましょう。このとき、「.py」を付けないとPythonファイルとして認識されないので十分に注意してください。

最初のファイルであるmain.pyが仕上がったら、次のプログラムをコピペしてください。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return '<h1>Hello World</h1>'

if __name__ == '__main__':
    app.run(debug=True)

VScodePythonファイルを実行するときは、ターミナルを開いて次のように入力してください

py main.py

これを入力すると、以下のような表示が出ると思います。

 * Serving Flask app "main" (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: on
 * Restarting with windowsapi reloader
 * Debugger is active!
 * Debugger PIN: 162-320-345
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

このような表示が出れば、問題なくプログラムを実行できたことになります。これを実際に表示してみると、次のようになると思います。(画像を参照)

f:id:ShotaNukumizu_1000:20210822102444p:plain


プログラムの仕組み

それでは、実際に書いたプログラムの説明に入っていきます。先程の説明にもありましたが、書いたプログラムは次の通りです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return '<h1>Hello World</h1>'

if __name__ == '__main__':
    app.run(debug=True)

では、このプログラムで一体何をしているのでしょう?


①Flaskクラスをインポートする

最初に、次の一行でFlaskクラスをインポートしています。この一行がないとFlaskを動かすことができないので十分に注意してください。

from flask import Flask

Flaskに限らず、どの外部クラスもそうですが、Pythonではインポートしたいクラスを最初に書くのは鉄則です。ぜひ押さえておきましょう。


②Flaskクラスのインスタンスを作る

次に、Flaskクラスのインスタンスを作ります。私の場合は、変数名を「app」として次のように定義します。

app = Flask(__name__)

これは、Flaskがテンプレートや静的ファイルを探すために絶対に必要です。


③routeデコレータを使って、どのURLで関数を呼び出すのかFlaskに教える

このコードを見てみましょう。

@app.route('/')
def hello_world():
    return '<h1>Hello World</h1>'

使いたい関数とURLを結びつけたいときは、route()デコレータを使います。()の中にURLとして使いたい文字列を書き、そのしたに関数を書いてFlaskにしてほしい処理を書いていきます。


④メインプログラムとして実行・デバッグモード

このコードを見てみましょう。

if __name__ == '__main__':
    app.run(debug=True)

if _name_ == '_main_':の意味は、「該当のファイルがコマンドラインからスクリプトとして実行された場合にのみ処理を実行する」という意味になります。このとき、他のファイルからインポートされたときは処理が実行されません。

if _name_ == '_main_':を使うことで、モジュールのテストコードを記述したり、モジュールをコマンドとして使うことができます。

FlaskはデフォルトでdebugがFalseとなって実行されますが、これを直接いじってdebug=Trueとするとデバッグが可能になります。

デバッグとは、コンピュータプログラムの誤りや不具合、血管というようなバグを探して取り除き、修正することです。

ただし、デバッグモードのままにすると自由自在にコードをいじれるようになってしまいます。そのため、深刻なセキュリティ上のリスクがありますのでデバッグモードは本番環境では実行してはいけません。


まとめ

今日はFlaskで電子掲示板を作るための下準備として、Flaskで「Hello world」を表示するために必要なプログラムとその説明をしました。

今日の記事を参考に、Flaskに対する理解を深めてくれると幸いです。

今日の記事はこれで終了です。

【参考サイト】

msiz07-flask-docs-ja.readthedocs.io

note.nkmk.me

www.nblog09.com