2023年9月4週目振り返り

今週やったこと

DB構成の変更とAPIのrepository層の実装

先週設計したAPIの実装を進めました。

今回のAPIの実装にあたってDBにカラムが追加されるため、Djangoのmodels.pyに変更を加えて既存のテストコードを修正しました。
この時点で変更業が80~100行ほどあったので、プルリクエストを作成してapproveされマージできました。
その後repository層の実装に入っており、DBアクセスを行うメソッドとそのテストコードを書いています。
repository層はなるべくロジックが複雑にならないように必要なSQLクエリを発行するDjangoのメソッドと、fetch系であれば取得したQuerySetをusecase層で使いやすくなるようにPythonのdataclassに変換する処理のみを行なっています。
それ以外のレスポンスの整形処理やロジックはusecase層で行うようにしています。

ローカル環境のPythonのバージョンアップを試みた

ライブラリを更新した後からテストが失敗するようになり、ログを見るとredisライブラリ内でNo module named 'async_timeout'のエラーが発生していました。
Pythonのバージョンは3.11.2を使っていましたが、3.11.4にバージョンアップすると解決することがわかったのでバージョンアップを試みました。
しかし、以下を手順を実行しましたが想定通りバージョンアップできませんでした。

  • pyenv install 3.11.4Python 3.11.4をインストール
  • pyenv versionで3.11.4も含まれていることを確認
  • pyenv global 3.11.4でグローバルに3.11.4を適用
  • 開発環境のルートディレクトリでpython --versionを実行すると3.11.2のままだった

この辺りのPythonの環境設定についてまだ知識が浅いので勉強していきます。
暫定対策としてpipenv install async_timeoutで必要なモジュールをインストールすることでテストは成功するようになったので、タスクを進めることはできる状態になったので、タスクが落ち着いてから再度環境は直したいと思います。

今週学んだこと

Gitリポジトリの過去のコミットのコードをエディタで確認する方法

2ヶ月ぐらい前のコードをちょっと確認したい時があり、Gitコマンドで簡単に過去のコードまで戻せないかなと思って調べたところ、以下の記事が見つかりました。

qiita.com

GitHubのコミット履歴からSHAを取得して、git checkout SHAの値を実行することですぐエディタから過去のコードを確認することができました。
まだ仕組みはよくわかっていませんが、git statusするとDETACHED HEAD状態になっていて、git checkout feature/task1などで作業ブランチに戻ると特に問題なく元の状態に戻っていました。

re_pathを使ってDjangoのURLに正規表現を使うことができる

他の開発メンバーのプルリクエストで初めて知りましたが、Djangoのurls.pyに書くURLで正規表現を使って、特定の値以外が含まれている場合はリクエストがviewまで届かないようにできることを知りました。

記事としては以下が参考になりました。

itc.tokyo

勉強になった記事など

ワーケーション用の持ち物について

今週は旅行に行って昼はコワーキングスペースで働いてみました。
macがあってwifiが繋がってればどこでも仕事できることを確認できたので、今後は自宅以外の場所での作業効率を上げるための持ち物も整えていきたいと思いました。

www.sanwa.co.jp 外部ディスプレイがなくてmacの画面一つで作業したのがけっこうやりにくかったので、こちらの記事にあるような外部ディスプレイはそのうち買いたいと思いました。

GitHubのプルリクエストについて

qiita.com

通知の設定やプルリクエストのコメントに書く内容が参考になりました。
仕組みで自動化できる部分と気配りで効率を上げれる部分両方意識してみたいと思います。