まず初めに
みなさん、こんにちは。はねすけと申します。
今回のテーマはざっくりというと「PythonのフレームワークであるDjangoの仕組み」です。
機械学習などに適した言語として有名な言語であるPython。
そのPythonにおける開発補助となるフレームワークの1つに「Django」というものがあります。
ちなみに読み方ですが、「D」は発音せずに「ジャンゴ」だったりします。
Djangoは非常に便利で、本格的なシステムを作成することもできる優秀なフレームワークだと思います。
今回は自分自身の復習もかねて、初学者~中級者向けにDjangoの開発構成に関するまとめをご紹介したいと思います。
それでは早速行ってみましょう!
・Djangoをこれから始めて使ってみたい方
・まずはDjangoの全体像をざっくりと把握してみたい方
基礎情報整理
python
まずは情報整理のために、今回関連してくる各キーワードの整理から行っていきます。
最初は「python」からです。
pythonとはざっくりというと、「クリーンで読みやすい構文が特徴な汎用的なプログラミング言語」です。
近年では機械学習の需要の高まりにより、コミュニティも活発で世界的にも人気なプログラミング言語の1つですね。
非常にシンプルで理解しやすい構文で書くことができたり、多種多様なライブラリ機能がすでに存在しているのも開発者にとっては有難いですね。
そんな最近もてはやされているpythonではありますが、意外とその歴史は古くなんと1980年代に生まれたプログラミング言語なのです。
pythonのバージョンとしては2系と3系の2種類が存在します。3系の方が新しく、2系についてはすでに公式のサポートが終了していることもあり、使用しないことをお勧めします。
今後もさらに新しいバージョンがリリースされ続けると思います。どんな機能が新しく追加されるかとても楽しみですね。
私が最初にpythonを使おうと思ったきっかけは、機械学習に対しての興味があったからでした。
最初に使ってみての感想は、「ほかのプログラミング言語と比較してとてもスッキリかけるな」というものでした。
直感的に書いていけるので、初心者の方でもわかりやすい部類の言語ではないでしょうか。
以降、仕事であったり個人のアプリ開発であったりと幅広い場面でお世話になっています。
そんな魅力がいっぱいのpython。まだ使ったことがないという方は、まずはぜひ公式サイトよりpythonをインストールしてその使いやすさ・面白さを体験してみてくださいね。
フレームワーク
次にご紹介するのは「フレームワーク」です。
日本語でいうと「枠組み」となる言葉ですが、その名前の通りシステム開発を行っていく上での基礎的な構造や骨組みになる構成を提供してくれるものです。
例えば「python フレームワーク」で検索してみてもらえばわかるのですが、非常にたくさんのフレームワークがあることがわかります。
どんなシステムを作りたいのか・重要な要件は何かを明確にさせ、最適なフレームワークを選択することで、開発を効率的に進めることができます。
システムエンジニアとして開発を行う際には、ほぼ確実に何らかのフレームワークを使用します。
そうでないとディレクトリ構成やら基本的な設定やら事前に準備しなければならず、要する時間は非常に大きくなってしまいます。
様々なフレームワークがありますので、違いを比較してみるだけでも面白いですよ。
Django
最後にご紹介するのは、今回の主役でもある「Django」です。
Djangoとはpythonにおけるフルスタックフレームワークの1つです。
フルスタックというのは、簡単に言うと機能が豊富ということです。
Django1つでデータベース接続や認証機能(ログインなど)を簡単に実装することができたりと、機能がモリモリになっているフレームワークということですね。(その分サイズが大きく速度が遅めだったりするのですが…
先ほどもお伝えしましたが、Django以外にもpythonには様々なフレームワークが存在しています。
しかし、様々なケースに柔軟に対応できるという意味で、最初にDjangoを選択するというのは非常に有効な選択になります。
以下が公式サイトになります。どんどんと新しい機能が追加されますので、気になる方は小まめにチェックしてみてくださいね。
最初のアプリを立ち上げるまでの手順
手順① 必要ライブラリのインストール
まず大前提となりますが、「python」をご自身の端末に前もってインストールをしておきましょう。
ここでは詳細を割愛しますが、「python インストール」などで検索すれば無数にインストール手順をみつけられますので、忘れずにやっておきましょう。
初心者の頃はわかりにくいかもしれませんが、プログラミング言語自体もPCにインストールしなければ使用できないものが大半です。
ちなみにですが、端末にpythonがインストールされているどうかについては以下のコマンドで確認できます。
こちらはpythonのバージョンを確認するコマンドです。
インストールされていればpythonのバージョンが表示されますので、それでインストール済みかの判断が可能です。
※以下に端末がWindowsの場合の手順も記載しますので、参考にしてください。
python --version
pythonのインストールが問題なければ、次に今回使用するライブラリである「Django」をインストールしていきましょう。
pythonのインストールとは異なり、以下のコマンドを実行するだけで簡単にインストールができます。
pip install django
手順② プロジェクトを作成
インストールができましたら、次に「プロジェクト」の作成に入っていきます。
プロジェクトとは、アプリの入れ物と考えてもらうとわかりやすいです。その中にこれからアプリに必要なものをどんどんいれていくための箱をつくっていくわけですね。
プロジェクトを作成するコマンドは以下の通りです。
併せて「testApp」というプロジェクトを作成する例を掲載しますので、参考にしてください。
django-admin startproject プロジェクト名 .
手順③ 基礎情報をデータベースに作成
無事プロジェクトが作成できたら、次に基礎情報をデータベースに作成しましょう。
どんなデータベースを使うかなど、細かい設定をカスタマイズすることももちろん可能です。しかし今はひとまずデフォルトの状態で作成していきます。
実行するのは以下のコマンドです。
python manage.py migrate
手順④ アプリを起動!
ここまで来たらあとはアプリを起動するだけです!
CommandLine上で以下のコマンドを実行した状態で、ブラウザからアクセスしてみてください。
ローカル環境であれば「http://127.0.0.1:8000/」のアドレスで接続が可能です。
python manage.py runserver
全体構成振り返り+α
まずは構成を整理してみましょう
Djangoに限った話ではありませんが、システムは様々なファイルの集合によって構成されています。
とは言ったもののDjangoをざっくりと大まかな構成で見たときには、①models.pyファイル・②urls.pyファイル・③views.pyファイル・④htmlファイルの4つが軸となってきます。
それぞれのファイルの役割は以下のようになります。
当然の話ではありますが、開発を進めていくとさらに細かい要素・ファイルが多数登場してきます。
しかし、主にこれら4つのファイルの連携によってDjangoのWebアプリケーションは構成されています。
故に、新たにページを増やす場合などは基本的にこの連携に処理をそれぞれ追加していくことで実現することができます。
最低限この一連の流れだけ抑えておけば、Djangoを使用して様々なアプリケーション構築することができるでしょう。
① models.py…データベースの項目構成などを定義する。※データベースを使う場合のみ
② url.py…どのファイルパスを呼び出すか・リダイレクトさせるかなどを記載する
③ views.py…どのHTMLファイルを呼び出すか・データベースから値を呼び出すかなど、画面描写全般のロジックを記載する
④ htmlファイル…templateフォルダ内に格納され、各画面構成を定義する。Pythonでの記載を挿入することもできる
それではイメージを膨らますために、上で作成した「testApp」プロジェクトに実際に新しいページを追加してみましょう。
シンプルなページの追加であり、データベース操作は不要のためmodels.pyは登場しませんが、作業実施の手順イメージはつかめるのではないでしょうか。
python manage.py startapp アプリケーション名
新しいページや機能とつくるまて、まずは上記のコマンドで「アプリケーション」をプロジェクトに追加します。
Djangoにおいては、基本的に機能ごと(基本的なページや認証機能など)にアプリケーションを作成し、別々に管理していきます。それによりソースごとの役割をほかの人が見たときもわかりやすくすることができます。
誰が見てもわかりやすい構造になっていることは、システム開発において非常に重要な要素です。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 追加ページ用設定
'testPage.apps.TestpageConfig'
]
from django.contrib import admin
# 追加ページ用設定
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 追加ページ用設定
path('', include('testPage.urls')),
]
ここまでで「testApp」フォルダ内における「testPage」アプリを使用するために設定は完了です。
具体的に何をしているかという話については後々自然と理解できてくるはずですので、ここではひとまず手を動かして流れをつかんでいきましょう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>シンプルなHTMLサンプル</title>
</head>
<body>
<h1>こんにちは、世界!</h1>
<p>これはシンプルなHTMLファイルのサンプルです。</p>
</body>
</html>
from django.urls import path
from . import views
urlpatterns = [
# 追加ページ用設定
path('', views.TestPageView.as_view(), name="testpage"),
]
from django.shortcuts import render
# 追加ページ用設定
from django.views import generic
# Create your views here.
class TestPageView(generic.TemplateView):
# 追加ページ用設定
template_name = "testpage.html"
管理画面に入ってみましょう
さて、ここでは管理画面に入る方法をご紹介したいと思います。
管理画面とは、一般ユーザーとは別にサイトの情報を直接追加・変更・削除するためのページのことを指します。
Djangoはそれをフレームワークの機能として自動で提供してくれます。これがあると非常に便利で、開発効率は大きく改善されます。
管理画面に入るためには、まず管理画面にログインするためのユーザー(スーパーユーザー)を作成する必要があります。
下記にそのコマンドを掲載するのと併せて、実行手順を記載しますのでぜひ試してみてください。
python manage.py createsuperuser
今回は登場しなかった「models.py」への更新については以下の記事で詳しくご紹介していますので、さらなる理解のためにもぜひ読んでみてくださいね。
Django活用時注意点まとめ
注意点① インポートの仕方を覚えておきましょう
Djangoを用いて開発を行っていく上での注意点を基礎的なものではありますが挙げておきたいと思います。
モデルやクラスを別ファイル内で使用したい場合は、基本的にすべて各ファイル内でインポートする必要があります。
その際にはファイルの上部に下記のようなフォーマットで対象の参照情報を記載すればよいです。
import 参照物 from ライブラリ名
開発作業が単独のファイルだけで完結することはほぼなく、役割ごとに分かれた多数のファイルを活用してシステムを構築していきます。
つまり開発していく上で幾度となく上記の処理を記載していくことになるので必ず忘れないようにしたいですね。
注意点② 先人の知恵は積極的に活用しましょう
ログインなど、汎用的な機能はすでに仕組みが用意されていて、活用できるのがフレームワークの強みです。
実装したい機能があれば、すでに機能が存在していないかまずは探してみましょう!
既に存在しているライブラリやモジュールを使用することで、開発期間を大幅に短縮させることができるだけでなく、バグの少ない保守性の高いシステムをつくることができます。
これら以外にも開発を行っていく上での注意事項は無数に存在します。
開発と課題は常に隣りあわせですので、その都度調べて対策を1つずつ習得していくことが必要になってきます。
しかし大抵の問題についてはWeb上の先人の知恵で対処することができますので、ぜひ活用してみてください。
まとめ
いかがだったでしょうか?
本日お伝えしたかった内容を簡単にまとめると以下のようになります。
ぜひ何らかの形でお役に立てれば幸いです。
それでは次の記事でまたお会いしましょう♪
・まずはフレームワークの構成をしっかりつかむと以後の開発がスムーズです。
・既存ライブラリの活用など、効率の良い開発を意識していきましょう。