ターミナル風の計算機アプリをGoogle Cloud Runで作ってみた
Google Cloud Run を使ったことがなく、ちょっと経験を積みたくて簡単な計算機アプリを作りました。
Cloud Run以外については、なじみ深いNext.js 15 と Tailwind CSS 4 を採用しました。作成したアプリはこちらです。
Google Cloud Run
Google Cloud Runは、Google Cloudが提供するサーバーレスコンテナプラットフォームです。Dockerコンテナをアップロードするだけで自動的にスケーリングしてくれるため、インフラの管理負担が少なく、使用した分だけ課金されます。
非常に効率的で、ありがたい実行環境です。
またCloud Runは日本(asia-northeast1)を含む複数のリージョンをサポートしており、低レイテンシーでのアクセスが実現できます。
Cloud Runは最大インスタンス数の制限とアラート機能の両方が設定できます。
- スケーリング制限: gcloud run deploy で
--max-instancesフラグを設定して、同時実行インスタンス数の上限を指定できます - アラート: Google Cloud Monitoringを使用して、CPU使用率やメモリ使用率が閾値を超えた場合にアラートを設定できます
1. Dockerfile の最適化
Next.js 15 のスタンドアロンモードを利用しました。
このモードでは、ビルド時に必要な依存関係とソースコードを分離し、最終的なイメージサイズを大幅に削減できるそうです。具体的には、1つ目のステージで依存関係をインストール、2つ目のステージでアプリケーションをビルド、そして最後のステージで本番用イメージを生成します。
これにより、コンテナイメージは必要最小限のサイズとなり、Cloud Runへのデプロイが高速化され、コールドスタート時間も短縮されます。
2. Google Cloud Run への展開
gcloud run deploy コマンド一つで、ソースコードからコンテナイメージのビルド、レジストリへの登録、そしてデプロイまでを完結します。有名な他のインフラサービスもデプロイコマンド1発で完了できるところが多く、良い時代ですね。
技術スタックとUIのこだわり
ターミナル UI の再現
これはただの好みなのですが、ターミナル風のUIを実装するために、CSSで効果を追加しました。
/* CSS グラデーションで実装 */
.terminal-overlay {
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
background-size: 100% 4px;
}
リポジトリ
大したものではないですが、githubはこちら。
poko8nada/tiny-calc-v1: A minimalist, terminal-style calculator
まとめ
Google Cloud Run、とても使いやすくて簡単です。Dockerfileの最適化も効果的で、ターミナル風な見た目もそこそこ満足しています。スケーラビリティを考える必要があるときはCloud Runを選択肢に入れるのが良さそうですね。(AWSはよく知らない)
