🗃️

ファイル転送アプリ開発.mp2

に公開

こんにちは、投稿者です。
んじゃ早速今週の進捗。

1 開発進捗

念のため技術スタック記載。

  • Golang
  • Next.js
  • PostgreSQL

1.1 機能開発

1.1.1 アップしたファイルの情報をDBに入れる

前回はフロントだけ使って、ブラウザ経由でアップしたファイルをローカルに保存するだけでした。
ここを少し拡張して、保存する際にファイルの情報をDBに保存させるようにしました。
なのでフロントとバックが初めて連携した形になりますね。

フロントがバックにAPIを投げる際の定義はどこに書くのが正しいんですかね。
とりあえず定義をひとまとめにできるようルーティングファイルもどきを作っといた。

あと、ファイル保存する前に内部でいくつか処理をしているんですが禁則事項です(死語)(平成オタク)

1.2 その他

1.2.1 環境変数使いたい

最低限の動作確認でハードコーディングしてたので環境変数導入。
Docker上だとDocker経由で読み込ませるため少し書き方が特殊です。

例えば、DBのホスト名はcompose.ymlで定義したDB名になります。
.envはGoのプロジェクト直下に置かれますが、localhostじゃ接続できません。

.env.local
DB_HOST=db

みたいな感じ。

1.2.2 マイグレーション定義と分離

地味な変更ですが時間かかりました。
コンテナ起動時に発動するプロジェクト直下のmain.goが全てを司っていたので分離させました。
APIサーバー立てる用とマイグレするとき用のmain.goができました。

バッチ処理にも応用できそう。

1.2.3 ソースの変更を即座に反映させたい

Next.jsでは開発サーバーを立てた状態でコンテナを起動させているため即時反映されます。
Goは一工夫必要です。

色々やりようはあるんですが今はコンテナ再起動で済ませてます。
その内時間かかるようになったらまた考えます。

1.2.4 Docker内のタイムゾーンについて

デフォでUTCになってます。
DBに保存される情報までUTCになってしまうのでJSTに変える必要があります。

以下を追加したらいいらしいけど変化なし

compose.yml
environment:
      TZ: Asia/Tokyo

コンテナ内で無理やり変える方法もあるみたいですが推奨されていなかったので、王道なやり方を模索したいですね。

2 まとめ

2.1 俺は悪くない、社会が悪い

今週を振り返ると機能一個しか作れてなくない……?
というのも今週は本当に仕事が忙しく、全然時間が取れませんでした。
これを言い訳にしてると全然作業が進まないので、これからは言い訳の最終手段として取っておくことにします。

今週の土日は両方出なきゃいけないぐらい怪しかったんですが、金曜にフルパワー発揮してなんとか破壊しました。
そのおかげで今はこたつでぬくぬくしながら記事を書けています。

忙しいながらも毎日帰宅してからPCでコーディングすることだけは続けました。
毎日無理矢理にでも触るのが長続きするコツかもしれないですね。

2.2 座学

話は変わって、最近Progateというサイトを知ってそこで少しReactを勉強しました。
各言語、フレームワークの構文を覚えるにはかなり優しいサイトだと思いました。
ローカルで環境構築することなくブラウザで実践できるのはすごい。

このサイトではある程度コース学習が進むと課金を促されます。
一ヶ月、半年、一年となかなかステップが大きい刻み方をしていたので、一ヶ月で様子見。

2.3 終わり

質問等ありましたら、よろしくお願いします。

Discussion