Journalを支える技術

Journalというジャーナリングをするアプリをリリースしました。 ジャーナリングとは自分が思っていることを書き出すことで自分について理解を深めたり、自分がやりたいことを見つけるのに役立ったりします。 日記をイメージしてもらうのがわかりやすいと思います。 今回はJournalを支えている技術について紹介します。 フロントエンド Next.js フロントエンドはNext.js(React)とTypeScriptを使っています。 なるべくシンプルに作りたかったので全ページをSPAで作っていますが、SSGできそうなところはSSGを使って静的ファイルにしたいと思ってます。 Tailwind CSS CSSにはTailwind CSSを使っています。Next.jsとの相性が良さそうだったのとシンプルで使いやすそうだと思って選びました。CSSの知識が乏しいのでネットの有識者を参考にした結果、Tailwind CSSにしました。 Vercel フロントエンドの本番環境のデプロイ先にはVercelを使っています。 VercelはNext.jsの運営元でデプロイがとても簡単で使いやすかったので選びました。 GitHubのリポジトリを指定すれば自動でデプロイをしてくれますし、設定も少なめで本当に簡単です。 Vectr サイトのロゴやファビコンを作るのにVectrを使っています。Vectrはsvg形式のファイルを無料で作れるので利用しました。 バックエンド Echo バックエンドはGoのフレームワークであるEchoを使っています。 GoでAPIを作るのにEchoはとてもお手軽とのことだったので選びました。 アーキテクチャにはクリーンアーキテクチャを選んでいます。クリーンアーキテクチャでコードを書いたことがありませんでしたが、テストコードが書きやすかったり、外部のライブラリなどの依存が減るので採用してよかったなと思っています。 また、コード量が増えたことはデメリットかなと思います。 Cloud Run バックエンドの本番環境のデプロイ先はCloud Runを使っています。 ローカルの開発環境でDockerを利用していて同じようなDockerfileでCloud Runにデプロイができ、Cloud Runがいい感じにリクエストをさばいてくれます。 ただ、アプリが起動するまでに10秒弱ぐらい時間がかかってしまいAPIのレスポンス待ちになってしまうのがデメリットかなと思います。Cloud RunはフルマネージドでAPIを叩かれていないときはコンテナが起動していないのでレスポンスに少し時間がかかってしまうのは仕方ないですね。 Cloud SQL データベースの本番環境はCloud SQL(PostgreSQL)を使っています。 普段の仕事でも使っているRDBが自分としては使いやすいの選びました。 その他に利用しているサービス GitHub Actions CI/CDツール。バックエンドのデプロイに使っています。 Firebase Authentication ログイン認証のため。 Google Domains ドメイン取得のため。なるべくGCPにサービスを寄せている。

April 20, 2021 · 1 min · 49 words · Yu