コードアクション
グラフだけでは足りないとき、Code ボックスがスクリプトを実行します。
7 つの言語が使えます。 いずれも 組み込みの WebAssembly サンドボックス内 で実行されるため、 お使いのマシンにインタープリターは不要で、スクリプトがファイルシステムにアクセスすることもありません。
| 言語 | エンジン |
|---|---|
| TypeScript | QuickJS(型はコンパイル時に除去されます) |
| JavaScript | QuickJS |
| Python | Pyodide(WebAssembly にコンパイルされた CPython) |
| Lua | WebAssembly 上の Lua 5.4 |
| Ruby | WebAssembly 上の CRuby |
| R | WebR |
| C# | Roslyn を備えた WebAssembly 上の .NET |
デフォルトの言語は TypeScript です。
言語が何であれ、ボックスが公開するものは同じです。
| 入力 | value(input という名前)、code(文字列) |
| 出力 | result |
| 設定 | language、code、timeout、packages |
input— 入力ポートで受け取った値です。vars— 実行変数 です。- 各言語の 標準出力(
console.log、print、puts、cat、Console.WriteLine)は 実行ログ に流れます。 - 戻り値 は
resultポートに送られます。エラーやタイムアウトはerrorポートに送られます。
タイムアウト
Section titled “タイムアウト”timeout は秒単位で、デフォルトは 5、最大は 60 です。
これを超えたスクリプトは中断され、実行は error ポートへ進みます。
外部パッケージ
Section titled “外部パッケージ”packages フィールドは { nom, version } のリストを受け取ります。
正確なバージョンがキャッシュのキーになります。依存関係は 初回実行時 に解決されてキャッシュされ、
以降の実行では毎回 オフライン でマウントされます(CI でも同じです)。
| 言語 | 取得元 |
|---|---|
| TypeScript / JavaScript | npm(全体がまとめてバンドルされます) |
| Python | PyPI の ピュア Python ホイール |
| Lua | LuaRocks(ピュア Lua のソース) |
| Ruby | ピュア Ruby の gem |
| R | CRAN(WebR の WebAssembly リポジトリ経由) |
| C# | なし — .NET 標準ライブラリのみ |
コードを書かないほうがよい場合
Section titled “コードを書かないほうがよい場合”多くの用途はすでに専用のボックスでカバーされており、そのほうが読みやすく、動作も速くなります。
| 用途 | ボックス |
|---|---|
| レスポンスから値を取り出す | 接続セレクター |
| 文字列を整形する | テンプレート変換 |
| リストをフィルター、ソート、集計する | リスト |
| ハッシュ化、エンコード、署名する | エンコード |
| 構造を検証する | Schema validate |
Code ボックスは、本当に固有のロジックのために取っておいてください。