現時点で明確に作りたいwebアプリがあるわけではないが、フレームワークを使い方がわからないと何が作れるかもよくわからない。
とりあえず使い方を理解しながら、概念的なものをインプットし、簡単なアウトプットをしていきたい。
目次
1.フレームワークとは
2.なぜ使うのか
3.よく使われるWebフレームワーク(GPT調べ)
4.Djangoを使ってみる
5.ディレクトリ構造
6.アプリケーション作成
7.開発用サーバーの起動
1.フレームワークとは
Web開発におけるフレームワークとは、ウェブサイトやウェブアプリケーションを効率的に開発するために、事前に用意されたコードやツール。
とりあえず「設計図」と「部品」が揃った便利なものと理解しておく。
フレームワークの役割
Webサイトやアプリをゼロから作るのはとても大変です。HTML, CSS, JavaScriptの他にも、データベースとの連携やユーザー管理など、必要なことがたくさんあります。これらをすべて一から自分で作るのは、まるで木材を切り出して釘やハンマーも自作して家を建てるようなもの。
フレームワークを使えば、よく使う「部品」(機能やコード)がすでに揃っているので、それらを組み合わせたり、カスタマイズしたりするだけで、効率的に開発を進めることができます。たとえば、ユーザーの登録やログイン機能、フォームの送信機能、データベース操作など、よく使われる機能を簡単に実装できる。
2.なぜ使うのか?
時間の節約: よく使う機能が最初から用意されているため、ゼロから作るよりも早く開発が可能。
セキュリティ: フレームワークは一般的に、セキュリティの面でも配慮されている。
保守性: フレームワークを使うと、コードが整理されやすく、後の保守が容易。
3.よく使われるWebフレームワーク(GPT調べ)
Django (Python): データベースとの連携が得意で、素早くウェブアプリを開発できます。安全性も高いです。
Flask (Python): シンプルで軽量なフレームワーク。小規模なアプリや、Djangoよりも自由度が高い開発に向いています。
streamlit (Pyrhon): データサイエンスやデータビジュアライゼーションのために作られた、シンプルで、Pythonのコードを書く感覚で、インタラクティブなウェブアプリをすぐに作成可能。
Ruby on Rails (Ruby): 簡単に強力なアプリを作れるRubyのフレームワーク。スタートアップでよく使われています。
Laravel (PHP): PHPで人気のフレームワークで、初心者にも優しく、様々な機能がすぐに使えます。
Express (Node.js): JavaScriptを使ったサーバーサイドフレームワーク。シンプルで非常に高速な開発が可能です。
例えば、Djangoを使うと、家(アプリ)を建てる時に壁や屋根、窓などのパーツが既に揃っていて、それらを組み立てていくだけで、すぐに住める家ができます。もし、Djangoを使わないでゼロから家を建てる場合、木材を伐採して、工具を自作して、壁や屋根も全て手作りしなければならないので、非常に時間がかかります。・・・なるほど
例えるとすれば、こんな感じ?
フレームワークなし:林業、建築士、大工など全てを自分で多能工として作る
フレームワークあり:ハウスメーカー
自分なりにこのように理解したが、意義異論は認める。
4.Djangoを使ってみる
Pythonでは、DjangoかFlaskがよく使われているらしく、使い方について書いてある記事も多い。
とりあえずDjangoなら何でもできそうなので、使ってみることにする。
手順1. Djangoをインストールする
# Djangoをインストール
pip install django
手順2. Djangoプロジェクトを作る
# Djangoのバージョンを確認
python -m django --version
# Djangoプロジェクトを作成する
# 任意のプロジェクト名(ここではmyproject)
django-admin startproject myproject
5.ディレクトリ構造
生成されたディレクトリ構造を確認する
Djangoで新しいプロジェクトを作成すると、以下のようなディレクトリ構造が生成される
# 生成されたディレクトリ構造
myproject/
│
├── manage.py
├── myproject/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── db.sqlite3 (データベースファイル、初期状態ではまだ作成されていない)
各ファイル・ディレクトリの役割
manage.py(プロジェクトの根幹となるスクリプトファイル)
Djangoプロジェクト全体を管理するスクリプトです。このファイルを使って、サーバーの起動、マイグレーションの実行、アプリの作成などを行います。たとえば、開発用サーバーを起動するには次のコマンドを実行します。
# 開発用サーバーの起動
python manage.py runserver
myproject/ (プロジェクトのメインディレクトリ)
プロジェクトの設定やルーティングに関連するファイルが含まれています。このディレクトリ名は、作成したプロジェクト名と一致します。
ディレクトリ構造を見ても直感的にはよくわからないので、こちらの図解を参照。
init.py (基本的に触らない)
Pythonにこのディレクトリがパッケージであることを知らせる空のファイル。基本的には何も書かれていない。
settings.py(VScodeのsetting.jsonみたいなもの?)
プロジェクト全体の設定ファイルです。データベース設定、デバッグモード、インストールされているアプリケーション、テンプレートエンジンの設定などが記載されている。
urls.py(URLと処理を紐付けするファイル)
URLルーティングの設定ファイルです。各URLに対してどのビュー(機能)を呼び出すかを定義します。プロジェクト全体のルート設定がここに書かれますが、アプリごとに個別の urls.py を持つことが一般的。
asgi.py
ASGI (Asynchronous Server Gateway Interface) 用のエントリーポイントです。DjangoをASGI対応サーバーで実行するための設定が含まれている。
よくわからん。
wsgi.py
WSGI (Web Server Gateway Interface) 用のエントリーポイントです。DjangoをWSGI対応サーバー(たとえば、GunicornやuWSGI)で実行するための設定が含まれています。
よくわからん。
db.sqlite3 (まだ作成されていない場合もあり)
Djangoのデフォルト設定では、SQLiteという軽量なデータベースが使われます。このファイルは初期状態では存在しませんが、python manage.py migrate コマンドを実行すると、プロジェクトのデータベースとして db.sqlite3 が作成されます。
6.アプリケーション作成
Djangoにおけるアプリケーションとは、いわゆるデスクトップアプリとかwebアプリとは少し解釈を変える必要がある。
ここでは一旦、アプリケーション = 機能をまとめた箱 と定義しておく。
手順1.プロジェクトに新しいアプリケーション(機能)を追加
アプリケーションを追加する
'django-admin startapp myapp'
作成したアプリケーションのディレクトリへ移動
cd myapp
手順2.作成したアプリケーション(機能)をプロジェクトに追加
作成したアプリケーション myapp をプロジェクトに追加するため、myproject/settings.py を開き、INSTALLED_APPS に myapp を追加する。
INSTALLED_APPS = [
'django.contrib.admin', # 管理サイト
'django.contrib.auth', # 認証システム
'django.contrib.contenttypes', # コンテンツタイプフレームワーク
'django.contrib.sessions', # セッションフレームワーク
'django.contrib.messages', # メッセージフレームワーク
'django.contrib.staticfiles', # 静的ファイルの管理フレームワーク
'myapp', # ここにアプリを追加
]
手順3. ビューを作成する(処理の定義)
myapp/views.py ファイルを開き、シンプルなビューを作成します。
ビューはという概念がよくわからないので、処理の定義と覚える。
from django.http import HttpResponse
def welcome_view(request):
return HttpResponse("ようこそ")
手順4. ルーティング設定(URLと処理の紐付け)
myproject/urls.py を編集して、welcome_view を表示できるようにURLを設定する。
from django.contrib import admin
from django.urls import path
from myapp.views import welcome_view # ビューをインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('', welcome_view), # ルートURLでようこそを表示
]
6.開発用サーバーを起動
開発用サーバーを起動し、http://127.0.0.1:8000/ アクセスする。
python manage.py runserver
画面に「ようこそ」と表示されたらOK!