【Python】flaskの特徴は?Djangoとの違いは?徹底解説
「pythonのflaskってなに?」
「そもそもフレームワークをよく知らないかも。。。」
「Djangoと何が違うの?」
Pythonの基礎的なところは習得し、さあこれから作るぞ!というときに、フレームワークやらなんやらという言葉が出てきます。
この記事では、現役ITコンサルタントがPythonのフレームワーク「flask」が一体どういうものかを解説いたします。
フレームワークの知識をつけることで、これから開発する上で、「あなたの作りたいもの」「身に着けたい知識」に合ったフレームワークを選ぶことができるようになります。
目次(クリックで読みたい部分にジャンプできます)
フレームワークとは?
では、そもそもフレームワークとは何でしょうか?
フレームワークとは、「骨組み」「枠組み」「下部構造」という意味ですが、プログラミングでは主にwebアプリケーションを開発するための基本的な仕組みのことです。
Pythonにはいくつものライブラリが揃っています(フレームワークもその一つです)。
Pythonが優れているといわれるのはそのようなライブラリが多数あるからというのが大きな理由の一つとなります。
以下の記事で詳しく解説していますので、併せて読んでみてください。
フレームワークの良い点
フレームワークがあるとどんな良いことがあるのでしょうか?
フレームワークはwebアプリ作成において、いわば「土台」のような役割を果たします。
フレームワークがない場合は、開発者が1からコードを書く必要があります。
しかし、フレームワークがあることによって、開発者は不足している部分だけを補えばよく、用意されている部品をどのように組み合わせればよいかを指示するだけでいいのです。
このように工数を圧倒的に削減できるのが、フレームワークの優れている点です。
Flaskとは?
では、今回のテーマである「Flask」とはどんなフレームワークなのでしょうか?
ちなみに、ここでは「Flask」についてのみ解説いたします。
フレームワークはほかにもいくつかありますので、他のが気になる人は以下の記事を参考にしてください。
「Flask」とはオープンソース(誰でも使える)のフレームワークです。
最大の特徴は、最低限の機能で超軽量だということです。
最低限の機能とは、サーバーやデバッガ、ユニットテストなどの一通りの機能は揃えています。
しかし、例えばデータベースへの接続などの機能は揃えていません。
え!じゃあデータベースの機能はないから、使えないの?
いえ、そんなことはありません。
「Flask」では、外部のモジュールを簡単にインストールして使えるような仕組みが揃っています。
そのため、必要な機能を、必要な分だけ用意することができます。
なので、Djangoなどのフルスタック(全部の機能が入っている)フレームワークよりも、開発する準備がとっても楽なのです。
「Flask」はこれからPythonを学んでいこうという人には、準備するものが少なくとても始めやすいフレームワークなのかな!と思います。
Flaskで超簡単に作ってみる
では、実際にFlask を触ってみましょう。
というと、「え!いきなり!?」と驚かれてしまうかもしれません。
ですが、こんないきなりの無茶ぶりみたいな感じでも、「Flask」は使えてしまうとほど簡単で単純なのです。(たとえ初心者であってもです。)
まずは準備。
まずは、あなたが「Flask」を使える状態かを確認します。
以下が満たされているか確認してください。
- パソコンが準備されている(windows,mac,LinuxなんでもOK)
- コードエディタがある(VScode,atom,などなど)
- Python(CPython)がインストールされている
以上です。準備されていますか?
ちなみに、コードエディタはなくても、何とかなります。笑
「Pythonをまだインストールしてないよ!!」って方は、以下の記事で紹介していますのでご覧ください。
では、準備ができたみなさまは、さっそく「Flask」をインストールしていきましょう!
Flaskのインストール
コマンドプロンプト(コマンドライン)を開き、以下コードを打ちます。
(ディレクトリは移動せず初期表示のところにしときましょう!)
pip install Flask
すると、以下のようにインストールが始まります。
これで完了です。
作ってみる
では、実際に作ってみましょう。
「Flask」で作る基本的なwebアプリには、次の3要素があります。
- インポート文(ここでFlaskを組み込む)
- インスタンスの作成(webアプリの本性)
- ルートに割り当てる関数の定義
基本的にそこまで難しくないので、一つ一つ見ていきましょう。
インポート文(ここでFlask を組み込む)
インポート文は、Pythonのモジュールを使うときなどに使ったことはあるんじゃないでしょうか。
それと同じく、Flaskを使う場合はFlaskをインポートします。
Flaskのインポートは以下のように書きます。
from flask import Flask
インスタンスの作成(webアプリの本性)
これが、「Flask」でwebアプリを作る時の心臓部分となります。
「Flask」を使うときは必ず書きましょう。
ちなみに、Flask(アプリケーション名) で、ここでは__name__属性を指定していますが、他のテキストでも大丈夫です👍
app = Flask(__name__)
#ここに中身
if __name__ == '__main__':
app.debug = True
app.run(host='localhost')
ルートに割り当てる関数の定義
ルートとは以下のようなコードを指します。
@app.route('/')
これは、「/」にアクセスがあった時の動きを指定するところです。
この下に、関数を定義し、どんな動きをするのかを書いていきます。
関数は「def 関数名()」で表し、その下にどんな処理をするかを書きます。
ルートに関数を定義すると以下のようになります。
@app.route('/')
def hello_world():
return 'Welcom to Flask World'
これは、hello_world()という関数を定義して、その中に、「Welcom to Flask」の文字を出力させる処理を書いています。
全部を組み合わせる
では、今開設したものを全て組み合わせてみましょう。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Welcom to Flask World'
if __name__ == '__main__':
app.debug = True
app.run(host='localhost')
これを適当なディレクトリに保存します。
そして、コマンドプロンプトで保存したディレクトリから実行しましょう。
実行は、python ファイル名.py です。
実行と終了方法は次の記事で詳しく解説しているので、併せて読んでみてください。
以下はコマンドプロンプトで実行したところです。
C:\Users\anbuy\Documents\blog\samplecode2>python app.py
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://localhost:5000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 143-254-799
そして、http://localhost:5000にアクセスしてみると、
以上のように表示されました!!
まとめ
今回はflaskの特徴~その使い方までを実践的に解説しました。
以下の記事では、さらにflaskを使い込んでログイン機能の実装を行っています。初心者でもできる内容(私が初心者のときできた)なので、試してみたい方はやってみてください。
やったら、損はしないと思います。