【個人開発】Python/Django×PostgreSQL×Nginxで作るWebアプリ開発入門!

アイディアが閃いた!

こんにちは!

Python / Djangoを使って自分のWebアプリ「[ThinkRich](https://thinkr1ch.com/)」をゼロからデプロイまでやってみました。

その過程で学んだことを、これから一連のブログ記事として共有していきます!

「スキルアップの方法がわからない」「このまま成長できるのか不安」という悩みを持つSESエンジニアの方は必見です。

【個人開発】SESエンジニアこそポートフォリオを持とう!キャリアの可能性が広がる理由

2025年4月10日

目次

完成したものから見てみよう!

まずは成果物のイメージをご覧ください。

一連のブログ記事を通して、下記のようなWEBアプリを作成 / デプロイ(本番リリース)できるようになることを目標としています。

Django + PostgreSQL + Nginx + Ubuntuという技術スタックで構築されています。

業務でも利用可能なバックエンド、データベース、高速なWebサーバーが連携した、Webアプリケーションです。

なぜこの技術スタックがすごいのか?

Python

Pythonについては、当ブログにて過去に投稿してきました。

いくつか今後の開発で利用するものもありますので、都度紹介していきます。

【Python】Vscode+ターミナルで開発をする基本ステップ

2022年10月5日

【Python】繰り返し処理の基本と利用例(SQLiteに接続してfor文でデータ取得する)

2022年10月12日

Django

Pythonで書かれた、Webサイトを簡単に作るための便利ツール集です。

Djangoは「フレームワーク」と呼ばれるもので、一からコードを書かなくても、Webサイトに必要な機能の多くが最初から用意されています。

特徴
  1. 管理画面が自動で作られる(データの追加・編集が超簡単!)
  2. ユーザー登録・ログイン機能がすぐに使える
  3. データベースとの連携が直感的に書ける
  4. セキュリティ対策も標準装備

Pythonが読みやすいプログラミング言語なので、プログラミング初心者でも比較的取っつきやすいんです。「Webサイトを早く作りたい!」という人には最高の味方です。

PostgreSQL

データを整理して保存する、信頼性の高い倉庫システムです。

Webアプリではユーザーやコンテンツのデータをどこかに保存する必要がありますよね。PostgreSQLはそのための「データベース」です

特徴
  1. 無料なのに企業レベルの高性能・高信頼性
  2. 大量のデータも効率的に管理できる
  3. 複雑な検索や計算もお手のもの
  4. データの整合性を保つ機能が充実(大事なデータが壊れないように守ってくれる)

MySQLなど他のデータベースと比べて「より高度な機能」が使えるので、成長するアプリにピッタリなんです。

Nginx

インターネットからのアクセスをさばく、高速な交通整理係です。

ユーザーがあなたのWebサイトにアクセスしてきたとき、その「お客さん」を適切に案内するのがNginx(エンジンエックスと読みます)の役割です。

特徴
  1. 同時に大勢のユーザーが来ても安定して対応
  2. 静的ファイル(画像やCSS)を超高速で配信
  3. セキュリティを高める防御壁としても機能
  4. Djangoアプリへの通信を賢く転送(「リバースプロキシ」と呼ばれる技術)

ApacheというWebサーバーもありますが、Nginxはより少ないコンピュータリソースで高いパフォーマンスを発揮できるので人気です。

Ubuntu

サーバー用のパソコンを動かすための、使いやすくて安定したシステムです。

UbuntuはLinuxという種類のOSで、サーバー運用に最適化されています。

特徴
  1. 無料で使えて機能が豊富
  2. セキュリティ更新が定期的に提供される
  3. 必要なソフトウェアが簡単にインストールできる
  4. コミュニティが大きいので、困ったときに情報が見つかりやすい

WindowsやMacは普段使いには便利ですが、サーバーとしては色々と制限があります。Ubuntuなら、サーバー運用に必要な自由度と安定性を両立できるんです。

これから、このブログで何を学べるの?

このブログシリーズでは以下のようなトピックを扱っていく予定です。

1. 開発環境のセットアップとDjangoプロジェクトの作成

2. モデル設計とデータベース連携(PostgreSQL編)

3. バックエンドロジックの実装とAPIの作成

4. フロントエンド開発とDjangoテンプレートの活用

5. Ubuntuサーバーのセットアップとセキュリティ対策

6. Nginxの設定とGunicrornによるデプロイ

7. Let’s Encriptによる、HTTPS化

「自分には難しそう…」と思ったあなたへ

HELP
禄太
「大丈夫、私がきた。」くらいの自信を持ってお伝えさせていただきます。

大丈夫です、そんなことを言う私も自信がありません!

社会人として働いて、くたくたで帰ってきて、せっかくなら明日に向けてゆっくり休みたい。
その気持ちよくわかります。。。

ましてや私は子育て世代なので、子供の小学校のことやらなんやらで夜も忙しいし。

そして何より、私がこの企画をやり通せるか、どうか。と、若干不安ではあります(途中で更新止まるかもしれません( ; ; ))

でも、一歩一歩進めていくうちに、意外とできるものなんですよ!

子育てと同じですが、「小さな成功体験の積み重ね」がいずれ大きな成長をもたらすんです。

そんな成功や、動作するアプリを作成する楽しさ。
また、表面上動いているように見えるものではなく、バックエンド側もちゃんと考慮されたアプリが作成できた時の喜びを一緒に味わってもらいたい。

禄太
そんなに子育ても頑張っているのか?!って突っ込まれると「うっ、、、」ってなりますが。

さあ、一緒に作っていこう!

このブログでは、コードのコピペだけでなく、「なぜそのコードを書くのか」、「どう動作するのか」を丁寧に解説していきます。つまずいたポイントや解決策も包み隠さず共有します。

「プログラミングって難しそう」という先入観を捨てて、一緒に素敵なWebアプリを作っていきましょう!