Flask の基礎
Flask はオープンソースの Web "マイクロフレームワーク" です。 作成者が "マイクロフレームワーク" という用語を使用する場合、フレームワークによって Web フレームワークに必要なタスクが実行されますが、高度な機能や、アプリケーションが正しく動作するために従う必要があるその他の特定の要件は含まれないことを意味します。 このアプローチにより、Flask は非常に柔軟になり、Azure AI サービスのような既存のバックエンドや API に対するフロントエンドとして使用するのに最適です!
任意のフレームワークで Web アプリケーションを作成するときは、ルーティング、メソッド、テンプレートなど、理解しておく必要がある主要な概念がいくつかあります。 コードを記述する前に、これらの概念について調べておきましょう。
ルートによるユーザー要求への応答
ユーザーは、Web アプリケーションを使用するとき、さまざまな Uniform Resource Locator (URL) を参照することにより、行いたいことや、探している情報を示します。 アドレスを直接入力したり (https://adventure-works.com
など)、リンクを選択したり、適切な URL が含まれるボタンを選択したりします。 eコマース サイトでは、次のような URL が使用される場合があります。
https://adventure-works.com/
: メイン ページの場合https://adventure-works.com/products/widget
: ウィジェットの詳細の場合https://adventure-works.com/cart/buy
: 購入を完了する場合
開発者は、実際には、URL の最初の部分つまりドメイン (この例では adventure-works.com) について心配する必要はありません。 アプリケーションは、ドメイン名の後にある / 以降の部分に基づいて動作します。 ドメイン名より後の部分は、ルートと呼ばれます。
ルートは、アクションへのパスです。 モバイル アプリのボタンをタップするのと同様に、ルートはユーザーが実行しようとしているアクションを示します。 アプリケーションによってサポートされているさまざまな要求に応答するため、Web アプリケーションでさまざまなルートを登録します。
このアプリケーションでは、関数を指定することによって、特定のルート要求に応答する方法を示します。 ルートは関数へのマップです。 コードの一般的な記述について考えるとき、この概念は比較的自然なものです。 特定のアクションを実行する場合は、関数を呼び出します。 ユーザーはまったく同じことを行います。 少し異なるのは、ルートにアクセスすることによって行うということです。
メソッドまたは動詞
ルートには、メソッドまたは動詞と呼ばれるものを使用して、さまざまな方法でアクセスできます (2 つの用語は同じことを意味し、同義に使用できます)。 ルートにアクセスする方法によって、ユーザー要求の状態と、ユーザーが実行したいアクションに関する、追加のコンテキストが提供されます。
Web アプリケーションを作成するときは多くのメソッドを使用できますが、最も一般的なものは GET と POST の 2 つです (ここではこれら 2 つにのみ注目します)。 GET は、通常、ユーザーが情報を要求していることを示します。一方、POST は、ユーザーが何かを送信し、かつ、応答を受信する必要があることを示します。
Note
使用される動詞に関係なく、どのような場合でもユーザーに情報を返すことができます。
GET と POST を使用する一般的なアプリケーション フローは、フォームが中心になります。 たとえば、メーリング リストに登録することを望んでいるユーザーのためのアプリケーションを作成するとします。
- ユーザーは GET を使用してサインアップ フォームにアクセスします
- ユーザーはフォームに入力して、送信ボタンを選択します
- フォームからの情報は、POST を使用してサーバーに送り返されます
- "成功" というメッセージがユーザーに返されます
お気付きのとおり、ユーザーが使用する動詞を直接示すのではなく、それはアプリケーションによって制御されます。 一般に、ユーザーが入力したりリンクを選択したりして URL に直接移動する場合は、GET を使用してページにアクセスします。 フォームのボタンを選択すると、通常は、POST によって情報が送信されます。
Note
メソッドの詳細な説明はこのモジュールの範囲を超えているため、この会話については比較的高いレベルに留めておきます。
テンプレート
ハイパーテキスト マークアップ言語 (HTML) は、ブラウザーに表示される情報を構造化するために使用される言語であるのに対し、カスケード スタイル シート (CSS) は、スタイルとレイアウトを管理するために使用されます。 アプリケーションを作成する場合、ほとんどの HTML は静的であるため、変更されません。 ただし、ページを動的にするには、プログラムを使用して HTML ページに情報を配置できる必要があります。 ほぼすべての Web フレームワークでは、テンプレートによってこの要件がサポートされています。
テンプレートを使用すると、コア HTML (つまりテンプレート) を記述して、動的な情報のプレースホルダーを示すことができます。 プレースホルダーの最も一般的な構文は、おそらく {{ }}
です。 Flask のテンプレート エンジンである Jinja の場合、次の構文が使用されています。
<h1>Welcome, {{ name }}</h1>
前の例には、h1
(ヘッダー) の HTML と、表示するテキストが含まれています。 {{ name }}
は、Welcome の直後に name
という名前の変数を表示することを示します。 この構文を使用することにより、既存のスキルを使用して HTML を記述し、必要に応じて動的な情報を挿入できます。