11月の月報(HappinessChain 入会10ヶ月目)

はじめに

学習をスタートさせてから10ヶ月が経過しました。
本記事では11月に行った学習について振り返ります。

11月の学習時間

11月の学習時間は41.5時間でした。
前半はあまり学習に時間を割くことができませんでしたが後半は盛り返してなんとか目標としている40時間には到達することができました。
やる気の波も感じた1ヶ月だったので細く長く、継続することを優先してこれからも学習していきたいと思います。

今月の学習内容

Django twitterクローン作成

  • サインアップ、ログイン機能

デザインが苦手なため時間はかかると思っていましたがまさか1ヶ月かかるとは思ってもみませんでした。
自分の成果物となるのでこれからも時間をかけすぎない程度には綺麗にしていきたいと思います。
デザインはsassを用いて行いました。調べるうちに細かくファイルを分割して管理していくことがスタンダードということでその辺りがもっと突き詰められると感じました。 デザインを定義しておいてincludeで呼び出すなど基本的な部分は取り入れることができ入れ子での見通しの良さなどsassの利点を実際に感じながら学ぶことができました。


今月の感想

11月の目標としてtwitterクローンの3つ目に着手することを掲げていましたが1つ目のPRをなんとか提出するところで着地しました。
1つ目の画面のデザインに1番時間がかかりあとは同じcssを当てていくため次第に実装時間が短くなっていくことを実感できました。
思いの外デザインに時間がかかったのと目標は大きくと思っていましたが達成できなかったことを考えると小さなゴールを設定しておくのもありかなと感じています。
年末年始は帰省などのイベントがあるのでできるだけ11月で学習時間を確保したかったので最低限40hの学習時間が確保できてよかったです。
12月後半はイベントもありなかなか学習時間が伸ばせないと予想できるため前半に積極的に学習できるように日々の過ごし方を考えて行動していきます。

来月の目標

  • 30h + α 学習する。
  • twitterクローンの3つ目に着手する。


上記を目標に掲げ年末にやり切ったと思えるように学習を進めていきたいと思います。

10月の月報(HappinessChain 入会9ヶ月目)

はじめに

学習をスタートさせてから9ヶ月が経過しました。
本記事では10月に行った学習について振り返ります。

10月の学習時間

10月の学習時間は49時間でした。
過去の学習時間のと比較すると高い水準でした。
Django ECサイト作成の課題を終えて気が抜けているという自覚がありますが案外学習時間は取れていたので無理のない範囲で継続していきたいと思います。

今月の学習内容

Django ECサイト作成

  • チェックアウト機能
  • プロモーションコード機能

先月に引き続いてECサイト作成のアウトプット課題に取り組みました。
チェックアウト機能ではカートの機能で登録部分の実装を行なっていたので登録部分に関しては迷うことなく実装することができました。
チェックアウトの際のメール送信処理をはじめは同期処理で記述していましたが完了までが遅かったため並列処理で書き直しました。
ここで初めて並列処理の選択肢としてasync, threading, multiprocessingの3つがあることを知りました。
課題優先で理解はそこそこになってしまっているので振り返りはちゃんと行いたいと思います。
プロモーションコード機能はこれまでの知識を活かせば難なく完了させることができました。
意外と力がついていることもこの課題を通して感じることができました。

Django twitterクローン作成

  • サインアップ、ログイン機能 実装を始めるためのセットアップとallauthを使用してのエンドポイント作成まで進めました。
    これからTOPページのデザインに入っていきますがデザインが苦手なため時間がかかりそうですがじっくり進めていきます。

今月の感想

10月の目標としてDjango ECサイト作成課題の完了を掲げていましたがtwitterクローン作成課題にも着手できたので進捗としては申し分ありませんでした。
ECサイトの課題を通してDjangoの基礎的な部分は理解できてきたと思える場面も増えたので嬉しく思います。
実際にtwitterクローン作成課題にもスムーズに入っていけているので今の調子をできるだけ崩さないように進めていきます。
12月は年末年始のイベントもありなかなか学習時間が伸ばせないと予想できるため11月はそれを見越して頑張ります。

来月の目標

  • 40h + α 学習する。
  • twitterクローンの3つ目に着手する。


上記を目標に今年の残り2ヶ月を悔いのないように11月も進めていきます。

9月の月報(HappinessChain 入会8ヶ月目)

はじめに

学習をスタートさせてから8ヶ月が経過しました。
本記事では9月に行った学習について振り返ります。

9月の学習時間

9月の学習時間は52時間でした。
ほぼほぼ過去一の学習時間となりました。
アウトプットの実装課題を行なっていると「このエラーが解決したら寝よう」、「この要件だけやり切って寝よう」というキリのいいところまで進めたい気持ちが湧いてきました。
日中眠いことがあったので10月は夜更かしは程々にします。

今月の学習内容

Django

  • 商品管理機能
  • カート機能

先月に引き続いてECサイト作成のアウトプット課題に取り組みました。
月の前半は商品管理機能の実装を行い、後半はカート機能の実装を行いました。
商品管理機能はCRUDの作成が要件だったのでインプットの内容を思い出しながら迷いなく進めていくことができました。
カート機能は要件にセッションが絡み今までの要件の中では難易度が高く感じ時間もかかりました。
案の定、PRにも指摘をしっかりいただいて修正にも時間を要しました。(セッションに情報を詰め込んでいたので軽量化しました。)
最終的に月末にカート機能のLGTMもいただけました。


今月の感想

先月に9月の目標として掲げていた3つ目の要件のPRを出すというのが達成できてよかったです。
カート機能のPRは指摘をもらいましたがそこで初めて知り得たこともあってレビューのありがたみを感じました。
最終的にPRをパスできたコードは修正前と比べて見通しがよく理解しやすいものとなりました。
動くものは作れていたのですが最適化された一例を示してもらえてハッとさせられたこともあり ここで指摘してもらえた内容は忘れないと思います。
若干順調すぎている気もしますが要件も残り2つのため10月でECサイト作成課題が終われるように励みます。

来月の目標

  • 35h + α 学習する。
  • ECサイト作成課題を完了させる。

上記を目標に10月も学習を進めていきます。
引き続き楽しく進めていきたいと思います。

Django + Heroku デプロイでハマったところまとめ

現在、Djangoを使用してECサイト作成に取り組んでいます。
その中でアプリを Heroku にデプロイする際に詰まってしまったポイントをまとめました。
ECサイト制作の次にXクローン制作にも取り組むので同じ轍を踏まぬようにしたいです。

環境

  • フレームワーク: Django 4.2
  • デプロイ先: Heroku
  • 静的ファイル: Whitenoise
  • メディアファイル: 本番 Cloudinary, 開発 ローカル

MEDIA_ROOT と STORAGES の記述が重複

症状

原因

  • エラーログを確認すると、/app/staticfiles/ が存在しないという警告が出ていた。
  • 直接的な原因はローカルで使用するMEDIA_ROOT と MEDIA_URL を共通設定ファイルbase.pyに設定したまま STORAGES["default"] で Cloudinary の設定をしていたため競合が起こっていたため。

解決方法

  • MEDIA_ROOT と MEDIA_URL のローカル用設定を共通設定ファイルからローカル設定ファイルに移動した。

base.py

STORAGES = {
    "staticfiles": {
        "BACKEND":"whitenoise.storage.CompressedManifestStaticFilesStorage",
    },
}

local.py

from .base import *

MEDIA_ROOT = BASE_DIR / "media/"
MEDIA_URL = "/media/"

production.py

from .base import *

STORAGES["default"] = {
    "BACKEND": "cloudinary_storage.storage.MediaCloudinaryStorage",
}

Herokuの環境変数が設定できない

症状

原因

  • アプリの再起動がされなかった?
  • 環境変数をset すると自動でDyno再起動されるようだがなんらかの理由で反映されなかった?

解決方法

  • デプロイをエラーなく完了させた後にheroku configで確認すると反映されていた。

学び

  • 設定ファイルは開発とテストや本番などで適切に分割されていなければならない。
  • デプロイ環境をリスタートしたり時には環境を一度破棄することも検討する必要がある。

まとめ

  • Cloudinary を使うなら MEDIA_ROOT/MEDIA_URL は不要。
  • Herokuで設定した環境変数が取得できないときは再起動する。それでダメなら再デプロイ。

8月の月報(HappinessChain 入会7ヶ月目)

はじめに

学習をスタートさせてから7ヶ月が経過しました。
本記事では8月に行った学習について振り返ります。

8月の学習時間

8月の学習時間は37時間でした。
過去の月と比較すると平均的な学習時間となりました。
このくらいの学習時間が家族も蔑ろにせず取り組めるラインに感じています。引き続きマイペースにやっていきます。

今月の学習内容

Django

月の前半はインプットを行い後半からECサイト作成のアウトプット課題に取り組みました。
じっくりインプットを行なったかいもあってか1つ目のインプットのPR作成前まではスムーズに実装を進めることができました。
アウトプット前までは進めていけるか不安な気持ちもあったのですが始めてみると不安とは裏腹にインプットしたことをもとに実装していくことができました。
Herokuへのデプロイが難航していますがなんとか乗り越えて残りの課題もこなしていきたいと思います。
少なくとも年末までにはECサイトの課題を完了させてXクローン作成の課題に着手できていたら御の字という目標感で進めていきます。


今月の感想

1つ目の課題のPRを出す寸前まで進められたことが予想外の結果でした。
インプットを行なっている途中にECサイトの課題の内容を見ましたがどのように進めていったらいいのか全く想像がつきませんでした。
しかしながら始めてみると思ったよりも時間がかからずに初めのPRまで辿り着けてたことがある程度理解できていることの証明になる気がして嬉しく思います。
2つ目、3つ目の機能の実装につれて難易度も上がりそうなので楽しみです。

来月の目標

  • 35h + α 学習する。
  • 課題の3つ目のPRができるまで実装を進める。

上記を目標に9月も学習を進めていきます。
引き続きDjangoの実装になりますが焦らず理解を深めながら楽しく進めていきたいと思います。

Django公式チュートリアルの感想

はじめに

今回はDjango公式チュートリアルを行ったので感想をまとめていきます。

良かった点

  • アプリケーションの作成を通して基本的な実装からテスト・パッケージのインストール・静的ファイルの配信・管理画面のカスタマイズ・アプリのパッケージ化まで網羅的に学習できること

    内容的に公式チュートリアルを初めてのDjangoの学習で行うのは難しいと思いました。
    しかしながらアプリケーションの実装はもちろんのことテストやサードパーティ製パッケージの導入、アプリのパッケージ化など広範囲のDjangoの技術が1つの教材でカバーされています。
    私は簡単にDjangoを学んだ後に公式チュートリアルを行ったので要所の解説もかろうじて理解できたと感じています。
    初めてのDjangoの学習ではなく軽く学んだ後の教材とするのをオススメします。

    学びになった点

  • 様々なパッケージのインストールして効率よく開発を進めることができる

    Django Webアプリケーションをデバッグするのに有用なツールであるDjango Debug Toolbar をチュートリアルでインストールしました。
    Requestに応じてモデルが裏で実行しているCRUDSQLWebブラウザの画面から簡単に確認できデバックがスムーズに行えました。
    有用なパッケージを知っているかいないかで開発効率が大きく変わってくると感じました。

  • 管理画面のカスタマイズすることで操作性を向上させることができる

    不要なフィールドを非表示にしたり並び順を変更することで操作をシンプルにでき目的のデータを探しやすくすることができることを学びました。
    開発者のための簡易な管理UIだと思っていたのですがログ記録などプロジェクトの運用にも有用な機能を備えておりカスタマイズすることで強力な業務ツールになることがわかりました。

    難しかった点

  • 翻訳された文章を理解するのが難しい

    注釈などの説明でところどころ日本語がおかしいところがありました。
    ただでさえDjangoのことがわかっておらず理解が難しいところに二重で混乱をしました。
    開発のことについて調べごとをしても日本語の記事が見つかるのでそこまで英語で苦労しなかったのですが今回初めて若干の苦労を味わいました。
    自分の英語力を向上させたいと思いますがドキュメントを読めるようになるには時間がかかりそうです。

おわりに

以上Django公式チュートリアルを行っての感想でした。
Djangoについてのアウトプットを行う際には公式チュートリアルに立ち返って様々な機能を駆使しながら進めていきたいと思いました。
ご閲覧いただきありがとうございました。

7月の月報(HappinessChain 入会6ヶ月目)

はじめに

学習をスタートさせてから6ヶ月が経過しました。
本記事では7月に行った学習について振り返ります。

7月の学習時間

7月の学習時間は30時間でした。
6月が33時間だったの先月とほぼほぼ変わらない学習時間となりました。
家庭のことをしっかりとこなしつつ最低30時間の勉強時間を確保することを目標にしたいと思います。

今月の学習内容

Django

3つのインプット課題に取り組みました。
MTV構成やURLルーティング、アプリケーションの独立性などの設計思想を学びました。
アプリケーションの作成を通してクラスベースビュー / 関数ベースビューの実装方法を学びました。
8月からアウトプットのECサイト作成に着手することになります。
完了までどれだけ時間がかかるか想像できませんが自分のレベルを1段階高めることは間違いないのでじっくり取り組んでいきたいと思います。


今月の感想

7月頭のインプットを始めたばかりと比べるとチュートリアルや書籍を通してDjangoに慣れることができたと感じます。
管理画面の自動生成やユーザー管理のなどのデフォルト機能の充実していること。そしてフレームワークを使用することで開発効率が飛躍的に上がることを実感しました。
胸を張ってこれは使えますと言える言語(フレームワーク)がないのでDjangoがそうなるように学習を続けていきたいです。

来月の目標

  • 30h + α 学習する。
  • めげずにアウトプット課題に食らいつく。

上記を目標に8月も学習を進めていきます。

難関のDjangoアウトプット課題に着手します。
ここを乗り越えることで開発者として一皮剥ける気がしているので頑張りたいと思います。