ターミナル風の計算機アプリをGoogle Cloud Runで作ってみた

2026/1/28

Google Cloud Run を使ったことがなく、ちょっと経験を積みたくて簡単な計算機アプリを作りました。

Cloud Run以外については、なじみ深いNext.js 15 と Tailwind CSS 4 を採用しました。作成したアプリはこちらです。

Tiny Calc

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はよく知らない)


Recent Posts