コンテンツにスキップ
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブモバイルで開発
対象開発チーム
対象ソロ起業家
サービスCron
サービスターミナル
Hoody の利点HTTP ネイティブ
Hoody の利点デフォルトでマルチプレイヤー
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブモバイルで開発
対象開発チーム
対象ソロ起業家
サービスCron
サービスターミナル
Hoody の利点HTTP ネイティブ
Hoody の利点デフォルトでマルチプレイヤー
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブモバイルで開発
対象開発チーム
対象ソロ起業家
サービスCron
サービスターミナル
Hoody の利点HTTP ネイティブ
Hoody の利点デフォルトでマルチプレイヤー
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブモバイルで開発
対象開発チーム
対象ソロ起業家
サービスCron
サービスターミナル
Hoody の利点HTTP ネイティブ
Hoody の利点デフォルトでマルチプレイヤー
CRON · PATCH · GATE 47B

空港のスマホから crontab を編集

搭乗アナウンスが流れます。日次レポートのジョブは UTC の 7 時に設定されていますが、受信者は東京にいて、時刻が合っていません。スマホで crontab URL を開き、行をタップし、2 フィールドを変更し、保存をタップします。PATCH が通ります。ジョブは新しいスケジュールで今夜実行されます。SSH も踏み台もノート PC も不要です。

cron ドキュメントを読む

スマホから 1 回の PATCH、スケジュール上の 1 エントリ

cron サービスは HTTPS 上の JSON を話します。スマホのブラウザは、新しい schedule フィールドを乗せて、エントリの UUID に対して PATCH を送ります。システムの crontab はサービスによって再注入されます。次回発火時刻はレスポンスボディに入ります。

patch.from-phone.sh
PATCH · 送信側
# 6 インチ画面での 2 行編集curl -X PATCH \\"https://cron.containers.hoody.com/users/me/entries/0a3c8" \\-H "Content-Type: application/json" \\-d ["schedule":"30 4 * * 1-5"]# 平日の 04:30 — 受信者がいる東京の現地時間
200 OK · cron.containers.hoody.com
GET · echo
HTTP/1.1 200 OK// エントリは新しいスケジュールと次回発火時刻つきで返ります{"id": "0a3c8","schedule": "30 4 * * 1-5","next_run": "2026-05-05T04:30:00+09:00","enabled": true}

PATCH は変更したフィールドだけを運びます。サービスは既存エントリへマージし、next_run を再計算し、行をシステム crontab に再注入します。SSH セッションも踏み台ホストもノート PC もありません。

アナウンスからゲートまで 3 タップ

編集の全体は、搭乗呼び出しと優先キューの間に収まります。URL を開く。フィールドを変える。機内へ歩く。

OPEN

crontab URL を開く

cron サービスには独自の URL があります。cron.containers.hoody.com/users/me/crontab です。同じページが、スマホのブラウザを含む任意のブラウザで開きます。認証は URL です。踏み台も AnyConnect プロンプトもノート PC の鍵の儀式もありません。

EDIT

行をタップして 1 フィールドを変える

各管理エントリは schedule、command、comment、enabled を持つ JSON オブジェクトです。行をタップすると schedule フィールドが編集可能になり、0 7 * * * を 30 4 * * 1-5 に置き換えます。他のフィールドには触れません。

SAVE

PATCH が通り、ゲートへ歩きます

保存すると /users/me/entries/[id] に対する PATCH が発火します。レスポンスは 200 OK と新しい next_run を返します。システム crontab は 1 秒以内に更新されます。タブを閉じて歩き出すだけです。

スマホから叩ける 4 つのルート

Hoody Cron は crontab に対して小さな CRUD を公開します。各管理エントリには UUID があり、各エントリは個別に PATCH できます。以下は、スマホがジョブを編集、ミュート、一覧、削除するために使う 4 つのエンドポイントです。

MANAGED ENTRIES · /users/me/entries
ユーザー単位の分離
  • GET/users/me/entries現在のユーザーの管理エントリを一覧します。各行は id、schedule、command、comment、enabled、next_run を保持します。
  • PATCH/users/me/entries/[id]部分更新です。変更したフィールドだけを送ります。schedule、command、comment、enabled、expires_at はそれぞれ単独で PATCH できます。
  • POST/users/me/entriesJSON から新しい管理エントリを作成します。標準の 5 フィールドスケジュールに加え、マクロ (@hourly、@daily、@weekly、@monthly、@yearly) を受け付けます。
  • DELETE/users/me/entries/[id]エントリを削除します。サービスはそのエントリを除いてシステム crontab を再注入します。空港での編集が誤った修正で、当面ジョブを止めたいときに便利です。

Hoody Cron サービスのエンドポイントです。パスは https://PROJECT-CONTAINER-cron-1.SERVER.containers.hoody.com からの相対です。

スマホ編集が与えてくれるもの

6 インチ画面を持ってゲートに立つ人にとって、本当に意味のある数字です。

  1. FIELDS PATCHABLE5

    schedule、command、comment、enabled、expires_at。それぞれ単独で送れます。他のフィールドは触れられないので、昨日 9 時に書いたコメントは空港での編集を生き延びます。

  2. ROUND-TRIP

    スマホからの PATCH が 1 回、新しい next_run を返す 200 レスポンスが 1 回。同じ呼び出しの中でサービスがシステム crontab を再注入します。2 度目のリクエストもポーリングも要りません。

  3. SHELL SESSIONS0

    SSH も踏み台も AnyConnect もありません。crontab は URL であり、認証は URL です。ノート PC のハードウェアキーはバッグの中で待機です。

crontab が URL なら、その編集も URL です。

スケジュールがブラウザから届く場所になれば、自分が立っている場所が問題ではなくなります。搭乗ゲートは立派なオフィスです。スマホは立派なターミナルです。PATCH こそが変更そのものです。

変更前 · ノート PC でしか編集できないssh prod-bastion → sudo crontab -eノート PC を開く · VPN · 踏み台 · vi
変更後 · URL ひとつPATCH /users/me/entries/0a3c8行をタップ · フィールドを変える · ゲートへ歩く
  • SSH なし
  • ノート PC なし
  • 次回発火は今
cron API を読む

これが置き換えるもの

ここに並ぶものの多くは、crontab がスマホから届かなかったから存在しているにすぎません。スケジュールが URL になれば、そこへたどり着くまでの儀式も一緒に消えます。

  • ノート PC からの SSH1 打鍵に意味が出るまでの 20 分の摩擦
  • ssh-bastion アクセス独自の認証情報とタイムアウトを持つ追加のホップ
  • 「家に帰ったらやる」ノート PC が別の時間帯にあるための 6 時間遅延
  • PagerDuty 経由の手動 cron 編集2 行のスケジュール変更のためにオンコールへページ
  • ハードウェアキー + 踏み台 + crontab の曲芸1 フィールドのために 3 つのシークレットと vi セッション
  • Slack でシニアエンジニアに頼むあなたが既に持っている URL を共有するために、別の人間を起こす

ゲートに立ったまま、今夜のジョブの発火時刻を変えました。

cron ドキュメントを読む

他のユースケースを読む