Skip to main content
Square Cloud における ランタイム とは、アプリケーションが実行される完全に隔離された環境のことです。言語のインタープリターや仮想マシン、リンクするシステムライブラリ、シェル経由で呼び出せるツール群、そしてホスト上の他のすべてのアプリケーションから分離しておくためのセキュリティ境界が含まれます。 その環境をあなたがビルドしたり保守したりすることはありません。ソースコードと小さな 設定ファイル を送るだけで、Square Cloud が言語を検出し、依存関係を解決し、隔離されたコンテナをプロビジョニングして実行します。同じパイプラインが、Discord/WhatsApp/Telegram のボット、ウェブサイトや API、バックグラウンドワーカーや長時間稼働のサービスを、同一の高速で堅牢なインフラ上で動かします。

サポートされている言語

JavaScript

Bun

Deno

Python

Java

Rust

Elixir

PHP

Go

C#

Ruby

HTML/CSS

上記の言語以外にも、ほとんどのスタックやライブラリがそのまま動作します。ランタイムイメージは寛容に作られており、Linux にインストールできる言語であれば、Square Cloud でも動作する可能性が非常に高いです。

バージョン

すべてのランタイムには 2 つの更新チャネルが用意されており、設定ファイルの VERSION フィールドで選択できます:
  • recommended: 大多数のアプリケーション向けに、私たちが堅牢化して本番環境で運用しているバージョンです。特別な理由がない限り、こちらを選択してください。
  • latest: 最新のリリースで、出たばかりの言語機能を必要とするチーム向けです。
VERSION に指定できるのはこの 2 つの値だけです。正確なバージョン番号を含め、それ以外の値を指定するとデプロイは INVALID_VERSION で失敗します。
latest にしかない機能が必要な場合を除き、recommended を選択してください。RUNTIME と VERSION フィールドについては 設定ファイル のリファレンスを参照してください。

デプロイの仕組み

アップロードから稼働中のプロセスに至るまで、すべてのデプロイは同じ決定論的なパイプラインを通ります:

言語検出

Square Cloud は設定ファイルの RUNTIME フィールドから言語を判断し、設定されていない場合は MAIN ファイルの拡張子から判断します。Node.js なら .js、TypeScript なら .ts、Python なら .py、Go なら .go、Java なら .jar、といった具合です。次に、その言語の依存関係ファイルがアップロードのルートにあるかを確認します。Node.js と TypeScript なら package.json、Python なら requirements.txt または pyproject.toml、Go なら go.mod または go.work、Rust なら Cargo.toml、Ruby なら Gemfile、Elixir なら mix.exs です。このファイルがない場合や空の場合、デプロイは INVALID_DEPENDENCY で失敗します。

依存関係の解決

依存関係は、アプリが起動する前にコンテナ内の サーバー側 でインストールされます。node_modules フォルダがない場合は npm install (アップロードのルートにある node_modules フォルダは破棄されます)、Python では pip install、Ruby では bundle install、Elixir では mix deps.get が実行され、Go、Rust、.NET はコードのビルド時にパッケージをダウンロードします。node_modules や virtualenv を .zip に含めて送る必要はありません。例外は Java です。デフォルトのコマンドはビルド済みの JAR を実行する (java -jar MAIN) ため、コンパイルした .jar をアップロードしてください。

プロビジョニング

設定ファイルで宣言された CPU とメモリを持つ、隔離されたコンテナが作成されます。リソースはカーネルレベルで強制されるため、あるアプリケーションが同じホスト上の別のアプリケーションのリソースを枯渇させることは決してありません。

起動

START がない場合、Square Cloud は node MAIN、python MAIN、go run MAIN、java -jar MAIN など、その言語のデフォルトのコマンドを実行します (Rust と Elixir は cargo run --release と mix run --no-halt でプロジェクト全体をビルドして実行します)。ビルドステップやカスタムコマンドが必要ですか? START を設定すれば、そのまま実行されます。

すべてのランタイムイメージの中身

各イメージはその言語の公式イメージをベースに、アプリケーションがよく必要とするシステムツールを追加しています:

Node.js と Python を同じイメージで

Node.js と Python のアプリは同じイメージで動作し、そのイメージには Node.js と Python 3.14 の両方が含まれているため、ボットからもう一方の言語で書かれたスクリプトを呼び出せます。PHP のイメージにも、アセットのビルド用に Node.js 24 と npm が含まれています。

ffmpeg と Chromium

ffmpeg は Node.js、Python、Java、Go、Rust、Ruby、Elixir、.NET のイメージにプリインストールされており、Node.js と Python のイメージにはヘッドレスの Chromium も含まれています。追加のセットアップなしに、メディアボット、ウェブスクレイピング、PDF やスクリーンショットの生成にすぐ使えます。

デフォルトで非特権

アプリケーションは隔離されたコンテナ内で非 root ユーザーとして実行されます。侵害された依存関係も封じ込められたままとなり、ホストへの特権的なアクセスを持ちません。

静的サイト、ランタイム不要

インタープリターが不要ですか? RUNTIME=static を設定すれば、他のアプリケーションと同じ CDN と TLS を備えたプレーンな HTML/CSS/JS サイトを直接配信できます。

隔離とセキュリティ

すべてのアプリケーションは、カーネルによって強制される CPU とメモリの制限を持つ、完全に隔離されたコンテナであり、共有プロセスではありません。非特権で実行されるということは、アプリケーションがホストや隣接するアプリケーションに到達できないことを意味し、リソースの上限によって、あるプロジェクトのスパイクが別のプロジェクトのパフォーマンスに影響を与えないことが保証されます。これは、Square Cloud が共有クラスタ上で数万ものワークロードを互いに干渉させることなくホストできる、まさにそのモデルです。

次のステップ

設定ファイル

ランタイムを制御するフィールド、MAIN、START、RUNTIME、VERSION、MEMORY をマスターしましょう。

言語ガイド

Node.js、Bun、Deno、Python、Go、Rust、Java、静的 HTML などのステップバイステップのセットアップ。