Nuxtでのフロントエンドのコーディングと、Pythonを使用したクローラーの実装を主に進めました。
フロントエンドの方はまだまだ理解が浅く実装のスピードが遅い感がありますが、画面周りのタスクは久しぶりなので楽しく進められています。
クローラーの方はPython + Seleniumで実装されているものを引き継いで機能追加を行なっている状態で、経験したことのない分野なので急ぎキャッチアップしたいところです。
今週学んだこと
Gitのサブモジュールについて
「ふたつのプロジェクトはそれぞれ別のものとして管理したい。だけど、一方を他方の一部としても使いたい」という場合にGitのサブモジュールという機能が使えるということを知りました。 git-scm.com
公式ドキュメントにあった例を引用すると、 以下のコマンドでサブモジュールを追加し
git submodule add https://github.com/chaconinc/DbConnector Cloning into 'DbConnector'... remote: Counting objects: 11, done. remote: Compressing objects: 100% (10/10), done. remote: Total 11 (delta 0), reused 11 (delta 0) Unpacking objects: 100% (11/11), done. Checking connectivity... done.
.gitmodules
が新たに生成され、プロジェクトの URL とそれを取り込んだローカルサブディレクトリの情報が記載されているとのことです。
submodule "DbConnector"] path = DbConnector url = https://github.com/chaconinc/DbConnector
RustにはCargoというビルドマネージャーがあるらしい
案件のリポジトリにRustのコードも入っていて、その中にあったCargoについて少しだけ調べました。
まだRustについては何もわからない状態ですが、記事の冒頭だけ引用すると
Rustのビルドシステムであり、パッケージマネージャです。 コードのビルドやコードが依存しているライブラリのダウンロードや、それらのライブラリのビルドを行ってくれます。
ということらしいです。
ちょっと今は余裕がないですが、後々Rustも勉強してみたいと思います。
Seleniumのdriver.findElementについて
ちょっとずつSeleniumを使ったコードを書いていて、driver.findElementメソッドを使ってHTMLの要素の情報を取得できることがわかりました。
フロントエンド実装時のキャッシュ周りのエラーへの対応
ローカルでコーディング中にフロントエンドのNuxtからDjangoのAPIサーバーへPUTリクエストを送ったところ403エラーになり、レスポンスにはcsrf token missing
とあったのでDjangoの設定に問題があるかと思い、2~3時間かけて調査していました。
しかし、最終的にわかったのは、どうやら私のブラウザのキャッシュの問題だったようで、キャッシュクリアしたところ正常にPUTリクエストもAPIサーバーが受け取れるようになりました。
キャッシュの問題であるかどうかを最初の段階で切り分けておくべきだったと思いますが、今回は完全にその可能性を見落としていたので次回以降はフロントエンドで問題が発生した際の最初に試すこととしてキャッシュクリア(もしくはブラウザをシークレットモードにして動作確認)を忘れずにやりたいと思います。
課題と対応策
課題1: Nuxt+Composition APIでのコードの書き方がよくわかっていない
Composition APIは今回初めて使うということもあり、まだコーディングスタイルがしっくりきていなかったり、画面の初期表示時の処理や非同期の処理の方法がいまいちわかっていません。
対応策1:
まずは仕様に沿って動くものを作ることに注力し、コードの綺麗さやNuxtのスタイルに沿っているかは一旦深く考えないでおく。
仕様通りに動くようになったら、その後でプルリクエスト出す前にできる限りコードを整える。
来週の目標
- クローリング関連のブログ記事を書く
- Nuxt関連のブログ記事を書く