PythonのDjangoを使ってWebアプリを実装しHerokuでデプロイしていくステップと勉強法

目次
ウマたん本記事では、PythonのDjangoを使って簡易的なWebアプリケーションを作成し、さらにそれをHeokuというサービスにデプロイしていく方法についてまとめていきます!Djangoは簡単にWebアプリケーションを作成できるフレームワークであり、慣れれば誰でも簡単に扱うことが可能です!
こんにちは!
データサイエンティストで最近はDjangoの開発に没頭中のウマたん(@statistics1012)です!
Pythonには有名な2大フレームワーク、Flask・Djangoがあるのですが、どちらも非常に使いやすく簡単にPythonでWebアプリケーションを作成することが出来てしまうのです。
ただ、Webアプリケーションを開発してもそれを実際に世の中に公開するところに苦労することが多いです。
そんな苦労を解消してくれるのがHerokuというサービス!
この記事では、PythonのDjangoというWebフレームワークを使ってWebアプリケーションを作成し、それをHerokuにデプロイしていくステップを解説していきます!
Djangoの特徴
(引用元:https://docs.djangoproject.com/ja/3.0/)
まずは、簡単にDjangoの特徴について解説していきます。
Djangoは2005年に開発されたDjangoのWebアプリケーションフレームワークで、デフォルトでWeb開発に必要な機能が一通り入っています。
Djangoは元々ニュースサイト管理のためにアメリカで開発されたフレームワークで、名前はギタリストから取ったそうです。
大規模サービス開発に向いていて2000企業ほどの企業に利用されています。
ロボたんそんなに多くの企業に使用されているんだねー!!
ウマたんDjangoが扱えると多くのサービスを開発できるよ!
UGC型のインスタグラムやピンタレストなどに主に利用されています。
(引用元:https://stackshare.io/Django)
Djangoのドキュメントは以下です。
ちなみにDjangoより後に開発されたWebフレームワークFlaskも簡易的にWebアプリケーションを作成できるのでオススメです。
Flaskでできることを確認しながら簡単なWebアプリを作ってみよう!当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!
DjangoとFlaskの違いについては簡単に以下の記事でまとめていますのでよければチェックしてみてください!
【違いは?】Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!
DjangoでWebアプリケーション開発のチュートリアル

それでは早速Djangoを使ってWebアプリを開発していきましょう!
と言っても一旦Hello worldを出力するところまでのチュートリアルです。
Pythonは入っている前提で話を進めていきます。
以下のステップでおこなっていきましょう!
仮想環境作成
まずは、好きな名前のフォルダを作成しフォルダのディレクトリに遷移しましょう!
そして以下のコマンドをVisual studio code上のターミナルに記載して仮想環境を作っていきます。
python -m venv [環境名]
python -m venv myvenv
これでmyvenvという仮想環境を作ることが出来ました。
仮想環境は開発するアプリケーションによってPythonのライブラリのバージョンを管理するために作ります。
続いて仮想環境に入っていきます。
以下のコマンドで仮想環境に入ることが出来ます。
source [環境名]/bin/activate
source myvenv/bin/activate
必要なライブラリをインストール
仮想環境に入ったら、requirements.txtというファイルを作成し必要なライブラリをインストールしていきます。
これは、ライブラリを一括でインストールするためのファイルです。
厳密にはrequirements.txtである必要はありませんが、慣習でrequirements.txtが使われることが多くなっています。
必要最低限のライブラリを記載しておきましょう
以下のように記述することで、記載したライブラリをインストールすることができました。
pip install -r requirements.txt
ちなみに以下のように記述することで現在の環境のライブラリを一括でrequirements.txtに記述して保存することができます。
pip freeze > requirements.txt
普段使っている環境から新しい環境に同様のライブラリを適用される場合はこのように記述するとよいでしょう。
プロジェクトの作成
さて、ここから実際にDjangoでWebアプリ実装をおこなっていきます!
まずDjangoのプロジェクトを作成していきます。
mysiteという名称で作っていきましょう!
django-admin startproject [プロジェクト名] .
django-admin startproject mysite .
これにより以下のようにMysiteディレクトリが出来ます。

続いて、settings.py以下の部分を以下のように変更しておきましょう!
【変更前】
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
【変更後】
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
さて、それでは以下のようにサーバーを起動させてみましょう!
python manage.py runserver
ターミナルに出力されたURLを開き以下のように表示されたらひとまず成功です。

サーバーの起動はCtrl+Cで停止で止めることが可能です。
Appを作成
プロジェクトが立ち上がったのが確認できたのでアプリケーションを作成していきましょう!
ロボたんプロジェクトとアプリケーションの違いは以下って??
プロジェクトとアプリケーションの違いは以下です。
プロジェクトとアプリの違いは何でしょうか? アプリとは、ウェブログシステム、公的記録のデータベース、小規模な投票アプリなど、何かを行う Web アプリケーションです。プロジェクトは、特定のウェブサイトの構成とアプリのコレクションです。プロジェクトには複数のアプリを含めることができます。 アプリは複数のプロジェクトに存在できます。
(引用元:Django公式サイト)
複数のアプリケーションを束ねる存在がプロジェクトであるイメージです。
以下のコマンドでアプリケーションを作成していきます。
python manage.py startapp [アプリケーション名]
appという名前で作成しておきましょう!
python manage.py startapp app
appのディレクトリが出来ているはずです。
続いて、アプリケーション名をsettings.pyのINSTALLED_APPSに記載しましょう!
今回はappという名前のアプリを作成したので、以下のように記述します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]
続いてデータベースのセットアップを行っていきます。
python manage.py migrate
これによりデータベースが作成されます。
migrationsというフォルダが作成されているかと思います。
urls.pyを変更
Mysiteのurls.pyを開いて一部設定を変更します。
【変更前】
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
【変更後】
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include("app.urls")),
]
この部分の意味はトップドメインに遷移した場合はappフォルダのurls.pyファイルを参照してねという意味です。
さて続いて、その参照元となっているapp/urls.pyを作成していきましょう。
app/urls.pyはデフォルトでは作成されていないので、自分で作ります。
from django.urls import path
from app import views
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
]
views.pyを修正
views.pyはappのファイルの中でユーザーのコールに対してどのテンプレートを出すかなど司令塔の役割をします。
サッカーで言うミッドフィルダーみたいな役割のファイルです。
ここには、以下のように記述します。
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = 'app/index.html'
Djangoには簡単に表示をしてくれるテンプレートが用意されており、今回はその中からTemplateViewを使います。
ここでは、後ほど作成するapp/index.htmlを呼んでいます。
templatesフォルダにhtmlファイルを作成
templatesフォルダを作成し、そのさらに配下にappというフォルダを作成しましょう!
そしてその下にindex.htmlというファイルを作成します。
すなわちディレクトリ構造は以下のようになっています。
この時アプリケーション名appと一致させたディレクトリ名にしましょう!
ロボたんなんでこんな階層になるのー??
ウマたんこれはテンプレートのミスマッチをなくすためなんだ!
Django は、名前がマッチした最初のテンプレートを使用するので、もし 異なる アプリケーションの中に同じ名前のテンプレートがあった場合、Django はそれらを区別することができません。そのため、Django に正しいテンプレートを教えてあげる必要がありますが、一番簡単な方法は、それらに 名前空間を与える ことです。アプリケーションと同じ名前をつけた もう一つの ディレクトリの中にテンプレートを置いたのは、そういうわけなのです。
(引用元:Django公式サイト)
index.htmlには表示したいhtmlを記載してあげましょう!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>app</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
これで本当に基本的なアプリケーションが作成できました。
改めて
python manage.py runserver
をしてみましょう!
Hello worldがしっかり表示されたら成功です。
ここまで出来れば、後はアプリケーションに肉付けをしていくだけです。
Djangoで作ったWebアプリケーションをHerokuにデプロイ

さて、続いて先ほどのアプリケーションはローカル環境で実装しました。
このアプリケーションを一般にデプロイするためにHerokuというサービスを利用していきます。
Herokuでのデプロイ方法は詳しくは以下の記事も参考にしてみてください。
Herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法と注意点!当サイト【スタビジ】の本記事では、PythonのWebフレームワークであるFlaskを使って作成したWebアプリケーションをインターネット上に公開するためにHerokuというサービスを使ってデプロイしていきます。Herokuを使えば簡単にWebアプリケーションを公開することが可能なんです。
他にもアプリケーションを外部公開する方法にngrokを使う方法もあります。
以下の記事で解説しているので、チェックしてみて下さい。
ngrokの仕組みや使い方解説!Pythonで作ったアプリを外部公開してみよう!当サイト【スタビジ】の本記事では、ngrokの使い方を解説していきます!ngrokを使うとローカル環境で作成したWebアプリをグローバルに公開できる便利ツールです!ぜひ使い方をマスターしていきましょう!
ファイルの準備とsettings.pyの修正
必要なファイルは以下です。
Procfileには以下のように記述します。
web: gunicorn [プロジェクト名].wsgi
web: gunicorn mysite.wsgi
プロジェクト名を記載してgunicornを動かしましょう!
これはDjangoをローカルで起動させる時にmanage.py runserverの役割をやってもらうイメージです。
続いてruntime.txtには以下のように記述します。
python-3.8.6
現在使っているPythonのバージョンをここに記載するようにしましょう!
またsettings.pyに以下のように追記しましょう!
import django_heroku
django_heroku.settings(locals())
herokuにデプロイ
それではここからherokuにデプロイしていきます。
当たり前ですが、herokuのアカウント作成とインストールが必要になります。
herokuサイトに移動し、アカウントを作成してください

アカウントを作成し、ログインした後は以下のコマンドでインストール(Mac)
$brew tap heroku/brew && brew install heroku
Windowsの場合はこちらからダウンロードしてください。
さて、ターミナル上で以下のコマンドを打つことでherokuにログインすることが出来ます。
heroku login
キーを押してしばらくするとherokuのブラウザが開きます。

ブラウザ上からログインしましょう!
さてローカルで実装したファイルをherokuの環境にコミットしていきますよー!
まずherokuのアプリケーションを作成していきます。
heroku create [アプリ名]
heroku create django-test1111
今回はdjango-test1111という名前のアプリケーションにしました。
続いて以下のコマンドでローカルで実装したファイルをコミットしていきましょう!
git add .
git commit -m "1"
gitを理解しなくてもHerokuデプロイはできますが、出来れば理解しておきたいので興味のある方は以下の記事を読んでみて下さい。
【入門】Gitの基本や勉強方法についてまとめておく!当サイト【スタビジ】の本記事では、Gitの基本と勉強方法についてまとめていきます!Gitはコードやドキュメントのバージョンを管理する上で非常に重要なツールです。Gitについて理解しておくことで開発効率が大きく変わるのでぜひおさえておきましょう!
さらに最後に以下のコマンドでherokuへのデプロイが完了します。
git push heroku master
masterブランチではなくて別のブランチを切って作業している場合はmasterの代わりにそのブランチ名を入れてください。
少し時間がかかりますが、HerokuアプリのURLが表示されると思うのでそちらをクリックしてアプリを開きましょう!

Hello worldと表示されたら成功です。
Djangoを勉強する方法

ここまでで本当に初歩の初歩であるHello worldを出力するまでですが、DjangoによるWebアプリケーションを作成してHerokuによってデプロイする方法について見てきました。
この流れが一旦把握できれば、後は肉付けしていくだけで複雑なWebアプリケーションも作成可能です。
ここからより複雑なWebアプリケーションをDjangoを勉強する方法について紹介していきます。
UdemyのDjangoコース

| 【オススメ度】 | |
|---|---|
| 【レベル】 | 初級~中級 |
| 【価格】 | 1200円〜 |
Djangoの勉強に是非活用してほしいのがUdemy!
Udemyは世界最大の教育プラットフォームで世界中の様々なプロフェッショナルが良質なコンテンツを公開しており、それを買い切りで1200円ほどから受講できるサービスです。
購入後も30日間返金無料ですので安心して講座を購入することが出来ます。
特に以下のコースがオススメです!
【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース
| 【オススメ度】 | |
|---|---|
| 【講師】 | 僕自身!今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください! |
| 【時間】 | 3.5時間 |
| 【レベル】 | 初級~中級 |
手前味噌ですが、Pythonでアプリを構築するのにオススメなコースを僕自身が出しています!
Pythonで出来ることのうち以下の5つを網羅して学んでいきます。
データ集計・加工・描画と機械学習モデル構築に関してはKaggleというデータ分析コンペティションのWalmartの小売データを扱いながら学んでいきます。
WebスクレイピングとAPI利用とWebアプリケーション開発に関しては、楽天の在庫情報を取得してSlackに自動で通知するWebアプリケーションを作成して学んでいきます。
Pythonで何ができるのか知りたい!という方には一番はじめにまず受けていただきたいコースです!
Twitterアカウント(@statistics1012)にメンションいただければ1500円になる講師クーポンを発行いたします!
\30日以内なら返金無料/
スタビジアカデミーのDjangoコース
なかなか自分一人で進める自信のない人、モチベーションが続かない人はぜひ当メディアが運営する「スタビジアカデミー」という教育サービスを検討してみてください!
| 【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
|---|---|
| 【オススメ度】 | |
| 【サポート体制】 | |
| 【受講形式】 | オンライン形式 |
| 【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組みあわせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
ここではAIやデータサイエンスにまつわる様々なコースを展開していて、Djangoを使ったアプリ開発のコースもございます!
このコースではDjangoで画像生成のアプリを構築していきます。OpenAIのDALL・EのAPIを使っていきますよー!
独学で学ぶライトなプランと現役データサイエンティストがメンターとして付きながら質問もし放題のプランがあるので挫折せず進めることができます!
ご受講お待ちしております!
PyQのDjango講座
公式サイト:https://pyq.jp
| 【オススメ度】 | |
|---|---|
| 【レベル】 | 初級 |
| 【価格】 | 3040/月〜 |
PyQはPythonに特化したサービスです。
完全オンライン学習サービスで、定額制で全ての講座を受講することができます。
実際に手を動かすことをかなり重視しているので、楽しくモチベーションを保ちながら進めることが可能です。
網羅的にPythonのコースがあるので、もちろんDjangoのコースもしっかり用意されています。
以下の記事でPyQの体験を基に詳しくレビューしています。
【体験談】PyQの評判は?3か月本気でPythonを勉強してみたので徹底レビュー!PyQはPythonを学ぶ上で非常にオススメで評判の高いサービスです。ただ、他のサービスとの違いが分かりにくいのも事実。そこで当サイト【スタビジ】では、実際にPyQを3か月体験した僕がPyQのメリット・デメリット・評判について徹底的にレビューしていきます!
以下の記事でDjangoの学習にオススメなサイトを学習の際の注意点についてまとめていますので是非目を通しておいてください!
Djangoの学習におすすめのサイトと勉強を進める上での注意点本記事では、PythonのDjango(ジャンゴ)というWebアプリケーションを作成するフレームワークを学習する方法をまとめていきます!Djangoは簡単にWebアプリケーションを作成できるフレームワークなのですが、なかなか学習するのに苦…
ウマたん自分に合った勉強方法を選ぼう!
Djangoで実装したWebアプリをHerokuで実装 まとめ
最後までご覧いただきありがとうございます!
Djangoで実装したWebアプリをHerokuで実装することで、Webアプリケーションを0から作り世の中に発信していく道筋が見えてきましたね!
ロボたんDjangoをなんとなーく理解することができたよ!
ウマたんここからしっかりDjangoを学んで自分のものにしていこう!
ぜひさらに深くDjangoを勉強して自分の作りたいWebアプリケーションを作成していきましょう!
以下の記事でPythonでのWebアプリ開発についてFlaskでの実装とあわせてまとめています!
【入門初心者向け】PythonでWebアプリを作ってみた!開発方法徹底解説!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークを用いてWebアプリを開発していく方法を徹底解説していきます。実際にDjangoでの実装とFlaskでの実装をおこなっていったあと、勉強法についても見ていきましょう!
最近ではPythonのWebアプリのフレームワークで「Streamlit」や「Gradio」がデータサイエンスの分野でよく利用されているのでチェックしてみて下さい!
以下の記事でPythonの勉強法についてまとめています!
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。
また、以下の記事でPythonのスクールについてまとめています!
【2022年最新】Python学習に最適なオンラインスクールおすすめ6選当サイト【スタビジ】の本記事では、実際にスクールに通ったりWebサービスを利用したりしながらPythonを習得した僕がおすすめするオンラインメインのスクールを紹介していきます。正直Python学習スクールは乱立し過ぎていてどれを選べばよいのか難しい!そんな人にぜひ読んで欲しいです読んだ内容を、手を動かして身につける
データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。
スタアカを見てみる






