DjangoのFBVとCBVを徹底比較!初心者でもわかるビューの基本と選び方
生徒
「DjangoでWebアプリを作るときに、FBVとかCBVって言葉を見たんですが、違いがまったくわかりません…」
先生
「Djangoでは、画面の動きを決める“ビュー”の書き方が2種類あります。それがFBVとCBVです。」
生徒
「パソコンもほとんど触ったことがないんですが、大丈夫でしょうか?」
先生
「大丈夫です。料理のレシピのように、順番に見ていけば必ず理解できます。一つずつ見ていきましょう。」
1. Djangoのビューとは何かを超やさしく解説
Djangoのビューとは、「ブラウザからのお願い(リクエスト)」を受け取って、「どの画面を表示するか」「どんな内容を返すか」を決める場所です。Webサイトの裏側で働く、いわば“受付係”のような存在だと考えるとイメージしやすいです。
たとえば、スマートフォンでボタンをタップした瞬間に新しい画面が表示されますよね。そのときDjangoでは、まずビューが呼び出され、「このURLが来たから、この画面を返そう」と判断しています。この判断を担当しているのがビューです。
専門用語でいうと、「リクエスト」はユーザーからのお願い、「レスポンス」はDjangoからの返事です。ビューは、このお願いを受け取り、正しい返事を返す仲介役として動いています。
ここで、いちばんシンプルなビューの例を見てみましょう。まだ意味が完全にわからなくても大丈夫です。「お願いが来たら、文字を返している」という雰囲気をつかめればOKです。
from django.http import HttpResponse
def sample_view(request):
return HttpResponse("これはDjangoのビューです")
このサンプルでは、ブラウザからアクセスがあると、「これはDjangoのビューです」という文字をそのまま表示します。難しい処理は一切ありませんが、これでも立派なビューです。
まずは「ビューは、画面に何を表示するかを決める場所」という点をしっかり覚えておきましょう。ここを理解できると、Django全体の仕組みがぐっと分かりやすくなります。
2. FBVとは?関数で書くシンプルなビュー
FBVは「Function Based View」の略で、日本語では「関数ベースビュー」と呼ばれます。関数とは、決められた処理をひとまとめにした箱のようなものです。
初心者にとってFBVはとても分かりやすく、上から下に処理を読むだけで何をしているか理解できます。
from django.http import HttpResponse
def hello_view(request):
return HttpResponse("こんにちは、Django!")
この例では、ブラウザでページを開くと「こんにちは、Django!」という文字が表示されます。難しい仕組みはなく、お願いが来たら文字を返す、という単純な流れです。
3. CBVとは?クラスで整理されたビュー
CBVは「Class Based View」の略で、「クラスベースビュー」と呼ばれます。クラスとは、設計図のようなもので、同じ種類の処理をまとめて管理できます。
最初は少し難しく見えますが、機能が増えても整理しやすいのが特徴です。
from django.http import HttpResponse
from django.views import View
class HelloView(View):
def get(self, request):
return HttpResponse("こんにちは、CBV!")
FBVと同じ表示ですが、クラスという箱の中に処理を書いています。getは「画面を表示するときの処理」という意味です。
4. FBVとCBVの考え方の違いを例えで理解
FBVは、紙にその日のやることを一行ずつ書くメモのようなものです。短い内容なら、とても分かりやすいです。
一方CBVは、ノートを章ごとに分けて整理する方法です。最初は準備が大変ですが、後から追加するときに迷いません。
小さなWebページならFBV、大きなWebアプリならCBVが向いていることが多いです。
5. URLとビューのつながりを見てみよう
Djangoでは、URLとビューを結びつけて使います。これをURLルーティングと呼びます。
from django.urls import path
from . import views
urlpatterns = [
path("hello/", views.hello_view),
]
この設定により、helloというURLにアクセスすると、先ほどのFBVが実行されます。住所と行き先を結びつける地図のような役割です。
6. CBVをURLに設定する方法
CBVの場合は、少し書き方が変わりますが、考え方は同じです。
from django.urls import path
from .views import HelloView
urlpatterns = [
path("hello/", HelloView.as_view()),
]
as_viewは「クラスをビューとして使える形にするための準備」と考えると理解しやすいです。
7. 初心者はどちらを使うべきか?
プログラミング未経験であれば、最初はFBVから始めるのがおすすめです。理由は、処理の流れがそのまま読めるからです。
慣れてきて、画面が増えたり、同じような処理が多くなってきたら、CBVの便利さが実感できます。
Djangoでは、FBVとCBVを混ぜて使うこともできるため、無理にどちらか一方に決める必要はありません。
8. FBVとCBVを比較して理解を深めよう
FBVはシンプルで理解しやすく、学習初期に最適です。CBVは少し難しいですが、整理された書き方ができ、実務でよく使われます。
Djangoのビュー基本として、この2つの違いを知っておくことで、Webアプリ開発の全体像が見えてきます。
まずは「画面を表示する役割がビュー」という点をしっかり押さえておくことが大切です。