2023年5月3週目振り返り

5月から入った現場にもだいぶ慣れてきて、いくつかプルリクエストも承認されました。 まだまだ技術的に理解が浅いところは多々あるのですが、最低限現場にキャッチアップできて仕事が軌道に乗った感はあります。 より効果的な設計とコーディングをスピード上げていくことと、自分が担当できるタスクの幅を広げていけるようにしてきたいと思います。

できれば現場で使っている技術でいまいち自分が使いこなせてないものはブログに書いて勉強したいのですが、もうしばらくは時間が空いたら現場のコードやドキュメントを読むことに注力したいと思います。

課題とその対応策

課題

DB設計の理解が浅い。 自分が参画した時点で一通りのDB設計は完了していたこともあり、まだどういう使われ方をするのかがわかっていないテーブルが多い。

対応策

理解を深めるために、figmaですでに作成されているぷろとプロトタイプを見ながら、どの画面でどのAPIが呼び出されているかを確認し、APIがどのテーブルからデータを取得しているか調べる。

今週の成果

  • GET系のAPIの実装とテストコードを書いてプルリクエスト承認された

    • Pytestでadapter層、usecase層、infrasturucture層のテストの書き方がわかってきた
    • DjangoのORMでDBから取得した値を、dataclassで保持する方法がわかってきた
  • PUT系のAPIの実装とテストコードを書いてプルリクエスト承認された

    • Djangoにおける更新処理の方法がわかってきた

メモ

DjangoのモデルにFileFieldを定義し、upload_toオプションをつけるとファイルが保存されるパスを指定できるっぽい

docs.djangoproject.com

django-storagesを組み合わせることでファイルがアップロードされるS3のパスを指定できるはず

django-storages.readthedocs.io

まだ、upload_toは関数としても呼び出されるので、公式ドキュメントにあるような関数を定義することで動的にパスを生成できる。

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return "user_{0}/{1}".format(instance.user.id, filename)


class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)