Djangoでアプリを作ってわかった、独学の落とし穴

― 学習塾経営者が本番運用するまでのリアル ―

1|なぜ Django を選んだのか

私は学習塾を経営しています。
授業記録、宿題管理、画像保存、テスト結果の蓄積…。
エクセルでは限界がありました。

「自分で作れないか?」

そう思って選んだのが Python + Django

理由は単純です。

  • Pythonが読みやすい
  • 管理画面が最初からある
  • Webアプリが作れる

でも、当時の私はこう思っていました。

「チュートリアル通りやれば、そのまま本番でも動くだろう」

これが最初の落とし穴でした。


2|Model設計でつまずいた話

最初に作ったのは「Lessonモデル」。

class Lesson(models.Model):
    lesson_type = models.CharField(max_length=20)
    day = models.DateField()
    subject = models.CharField(max_length=20)
    contents = models.TextField()
    class_img = models.ImageField(upload_to='lessons/')

一見、問題なさそうです。

でも現実は違いました。

  • nullを許可すべき?
  • defaultは必要?
  • choicesにすべき?
  • 将来拡張できる構造?

気づいたことがあります。

モデルは「データ」ではなく「世界観の定義」だ。

設計が甘いと、あとから必ず崩壊します。

ここで初めて理解しました。

Djangoは「コードを書く勉強」ではない。
構造を設計する勉強なんだと。


3|ローカルでは動くのに本番で死ぬ問題

ローカル環境では完璧でした。

でも本番(AWS Lightsail)に上げた瞬間。

真っ白。

500エラー。

原因は:

  • STATIC設定ミス
  • MEDIA_ROOTのパス
  • Apache設定
  • 仮想環境の読み込み
  • 権限(daemon / bitnami)

ここで学んだこと。

「動く」と「運用できる」は別物。

ローカルは甘い。
本番は冷酷。


4|500エラー地獄

ブラウザにはこれだけ。

Internal Server Error

何が悪いのか分からない。

settings.pyを疑い、
BASE_DIRを疑い、
venvを疑い、
マイグレーションを疑い…。

でもエラーは出ない。

なぜか。

ログが出ていなかった。


5|ログが0バイトだった絶望

/opt/bitnami/projects/…/logs/log_20240913.log

サイズ:0バイト

「ログを見ろ」と言われるのに、ログが空。

原因はファイル権限。

Permission denied

ここで初めて学びました。

  • ログは命綱
  • 権限は見えない敵
  • Linuxを理解しないとWebは動かない

Djangoの勉強をしていたはずなのに、
気づけばサーバー管理をしていました。

でもこの経験で、
問題が起きたら感情ではなくログを見る
という姿勢が身につきました。


6|それでもやってよかった理由

正直、何度もやめようと思いました。

でも今は断言できます。

Djangoをやってよかった。

理由は3つ。

① 抽象化思考が身についた

  • Model = データの定義
  • View = ロジック
  • Template = 表現

これは経営と同じ構造です。

② 「再現性」を理解した

本番で動く設計をする。
環境差を潰す。

これはビジネスでも同じ。

③ 自己効力感が爆発する

自分で作ったシステムが、
本番で動く。

これは強烈です。

「自分で世界を作れる」

この感覚は、人生を変えます。

また、プログラミングスクールを受講するのもおすすめです。
特に、私もそうだったんですが、コーチや講師が付いてくれると尚、学習に緊張感が出て、
学ぶスピードは爆速になります。

私の妻もDMM WEBキャンプで、コーチ付のレクチャーを受けて、受講して、しっかり学べたと言っているので、
おすすめです!

▼DMM WEBCAMMPは下記の画像をクリック!


7|独学の質を変えたChatGPTの使い方

私は正直に言うと、
ChatGPTなしではここまで来られなかったと思います。

でも、多くの人が間違った使い方をしています。


❌ よくある間違い

  • 「エラー出ました。どうすればいいですか?」
  • コードを全部貼って丸投げ
  • なんとなく聞く

これだと成長しません。


✅ 私がやった使い方

① 状況を構造化して投げる

例:

  • ローカルでは動く
  • 本番(AWS Lightsail)で500
  • Apache使用
  • 仮想環境あり
  • ログが0バイト

こう整理してから聞く。

→ 原因が一気に絞られる。


② 仮説を持ってから聞く

「権限が怪しい気がするが、確認方法は?」

こう聞くと、

ChatGPTは“答え”ではなく“検証方法”をくれる。

これが重要。


③ 設計レビューとして使う

  • このModel設計で拡張性は?
  • nullを許容するべき?
  • choiceにすべき?

これは検索では出てこない。

ChatGPTは“思考の加速装置”になる。


ChatGPTで学んだこと

実は、Django以上に学んだのはこれです。

「質問の質が、成長の質を決める」

曖昧に聞けば、曖昧な答えが返る。

具体的に聞けば、具体的に返る。

これは教育でも同じ。

独学で学ぶ人へ伝えたいこと

もしこれからDjangoを学ぶなら、

❌ チュートリアルを完璧にやることがゴールではない

⭕ 自分の仕事を解決するものを作ることがゴール

Todoアプリより、

  • 自分の家計簿
  • 自分の事業や日常生活の管理
  • 自分のブログCMS

のほうが100倍伸びます。


結論

Djangoで学んだのは、

  • コードではなく構造
  • 文法ではなく設計
  • 技術ではなく再現性
  • そして「やればできる」という感覚

プログラミングはスキルではない。

自己効力感を育てる装置です。


もしこれを読んで、

「やってみようかな」

と少しでも思ったなら、

それが最初の一歩です。

次に学ぶべきは、
フレームワークでも言語でもない。

自分が解決したい現実の課題です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です