FrontierStack ユーザマニュアル マニュアル先頭
デスクトップ版マニュアル モバイル版マニュアル English frontierstack.app ↗

第 IV

IV

自動化と AI

スクリプトとスケジュール、AI 管理者、MCP、AI スタック。FrontierStack をコントロールパネルから「ひとりでに働く存在」へと変える 4 つの章。

12

第 12

スクリプト・cron・自動化

毎日使うコマンドを保存し、本物のシステム cron でスケジュール実行し、FrontierStack を Apple ショートカット・Siri・Mac の他の仕組みと連携。ワンクリックのスクリプトから、ハンズフリーの音声コマンドまで。

優れたサーバ管理者は、同じ数種類の作業を何度も繰り返します。バックアップを取る、キャッシュを温める、バックエンドを正しい手順で再起動する、vhost が思った通りのものを実際に配信しているか確認する。FrontierStack はそれぞれを保存済みスクリプトとして取り込み、ワンクリックで実行し、信頼できると判断したら cron に渡して無人で走らせます。そこからさらに外へ — Apple ショートカット、Siri、frontierstack:// URL スキーム、そしてアプリ自身がスケジュールで行うアクションへと広がります。

本章は自動化の機械的な側面 — スクリプト、スケジュール、macOS の自動化の入口 — を扱います。知的な側面、つまりこれらのスクリプトをあなたの代わりに書き・保存し・スケジュールする AI は、第 13 章です。ここで扱うものはすべて、AI 管理者が自身の監査済みツールを通じて操作できるため、両章は同じ仕組みを両端から説明しています。

12.1Scripts & Cron ペイン

サイドバーから Scripts & Cron を開きます。保存済みスクリプトのライブラリとスケジューラが 1 か所にまとまっています。上部の Saved Scripts セクションには保存した全スクリプトが、名前と本文の冒頭行とともに並びます。各スクリプトには 4 つのボタンがあります — Run(今すぐ実行)、Schedule(後述の cron に渡す)、Edit(エディタを開く)、そして削除のゴミ箱アイコン。Add Script… で新規作成します。

保存済みスクリプトは、アプリが解釈する断片ではなく、ディスク上の本物の実行ファイル(シェル・PHP・Python)です。分かりやすい名前と、目的を記したメモを付けておけば、半年後の自分(あるいはライブラリを走査する AI 管理者)が、何をするスクリプトかをひと目で把握し、正しいものを選べます。保存されたファイルそのものが実行されるので、手で試したものが、そのままスケジュール実行されます。

各スクリプトは既定の This Mac、ローカルの Docker コンテナ、または名前を指定した連携サーバを SSH 経由で対象にできます。資格情報が必要な場合、スクリプトはローカルの .env ボールトの名前付きシークレットを環境変数($DB_PASSWORD"$SSH_SUDO_PASS")として参照します。アプリは実行時に実際の値を注入し、その値がクラウドモデルに届くことは決してありません(第 13 章)。

スクリーンショット追加予定
図 12.1. Scripts & Cron ペイン:上部に保存済みスクリプトのライブラリ(Run/Schedule/Edit ボタン付き)、下部に cron ジョブ。撮影手順: capture: 保存済みスクリプトを 3〜4 個、cron ジョブを 1〜2 個表示した状態で Scripts & Cron を開いて撮影
スクリプトパレット
どのスクリプトでも隣の Palette をオンにすると、フローティングの スクリプトパレット — パレットタグを付けたスクリプトだけを並べた、常に最前面の小さなウィンドウ(各行に Run ボタン)— に追加されます。エディタの横に置いて、いつでも開けます。ペインの Open Palette で呼び出します。

12.2cron でのスケジュール実行

Cron Jobs セクションは、本物のシステム crontab への分かりやすいフロントエンドです — アプリが独自に考えた別物のスケジューラではなく、何十年も Unix で無人作業を走らせてきた、まさにその cron です。各行はジョブの名前、スケジュールの平易な説明(FrontierStack が 5 フィールド構文を翻訳します)、実行するコマンドを表示し、有効/無効の切り替えと、Run(今すぐ実行)・Edit・削除のボタンを備えます。

保存済みスクリプトの Schedule、または任意コマンド用の Add Job… を押すとスケジュールビルダーが開きます。頻度(毎時・毎日の指定時刻・毎週)を選ぶと、FrontierStack が crontab エントリを書き込み、自身のジョブには # AC: コメントを付けて後から名前で見つけ・更新できるようにします。AI 管理者でも同様で、list_cron がジョブを読み、schedule_cron が作成・更新します(同名のジョブがあればその場で更新)。

注意スケジュールされた cron ジョブは、それ以上の承認なしに自動で実行されます。対話的なスクリプトや AI のツール呼び出し(実行前に承認カードを表示)とは異なり、いったんスケジュールに載ると、毎回ひとりでに、無人で実行されます。テスト済みで信頼できるコマンドだけをスケジュールし、Cron Jobs 一覧を定期的に見直して、忘れたまま走り続けるものがないようにしてください。

完全に制御したい場合は、ペイン下部の Edit raw crontab を展開します。これはテキストエディタで開いた標準の crontab で、FrontierStack 管理のジョブは # AC: コメントとして現れるため、どの行がアプリの所有かが分かります。手で編集して Apply を押します。

スクリプトトリガー
スクリプトライブラリの下にある Script Triggers は、時刻ではなくイベントが起きたときに保存済みスクリプトを実行します — ロケーションに到着/離脱した、デバイスがネットワークに現れた/消えた、ディスクがマウント/アンマウントされた。これらはアプリ起動中にのみ発火し、スクリプトはコンテキスト(FS_TRIGGERFS_LOCATIONFS_DEVICEFS_DISK…)を環境変数として受け取ります。時刻は cron、イベントはトリガーが担当します。

12.3同梱のサンプルスクリプト

FrontierStack は、実績ある定番の管理スクリプトを小さな読み取り専用ライブラリとして同梱しています。あなたのスクリプトではなく — その場で編集はできません — が、どれも全ソースを読んで学び、自分のライブラリにコピーして手を加えられます。Mac の Web スタック(とくに旧 macOS Server バックエンド)の実地の癖を踏まえているため、自作の前に 1 つ読んでおくと不意打ちを避けられます。AI 管理者も list_sample_scriptsread_sample_script でまず読むので、その生成スクリプトも同じ苦労から得た知見を受け継ぎます。

スクリプト機能
apache_real_docrootvhost が実際に配信しているドキュメントルートを特定 — 設定が主張する場所ではなく、Apache が実行時に解決する場所。
apache_url_matrixvhost 上のパス一覧の HTTP ステータスを、本物のホストヘッダーで検査して報告 — どの URL が健全かをひと目で確認。
fleet_file_diff1 つのファイルのチェックサムをフリート全体で比較し、設定ドリフト — ある 1 台が静かに他と食い違った箇所 — を発見。
macos_httpd_vhostsmacOS Server バックエンドの vhost → docroot マップをダンプ — その旧スタックが何を配信しているかを正確に把握。
macos_web_restartmacOS Server の Web バックエンドを正しい手順で再起動 — 雑な apachectl ではなく、正しい順序で。
node_healthcheck1 つの vhost のフリートドリフト/ヘルスチェックをノード横断で実施。
php_opcache_checkOPcache の状態を CLI と Web SAPI の両方について報告 — これらは別々に設定され、ずれやすい。

12.4Apple ショートカット・App Intents・Siri

FrontierStack はネイティブの App Intents を備えます — macOS の ショートカットアプリ、Spotlight、そして(いくつかは)話せる組み込み Siri フレーズとして現れるアクションです。ホットキー・メニューバー・フォルダアクションから起動するショートカットに組み込めます。Automator からも利用可能で(Automator はショートカットや AppleScript を実行できるため)。出荷時のアクション:

アクション機能組み込み Siri フレーズ
Run Server Script保存済みスクリプトを名前で実行。
Start / Stop Service Groupグループ内の全サービスを一括で起動/停止。“Start my servers with FrontierStack”
Restart ServiceApache・Nginx・MySQL・PostgreSQL を再起動。“Restart a service with FrontierStack”
Restart Docker Container名前指定したコンテナを再起動。
Get Local Healthローカルヘルスの要約(サービスの up/down)を返す。“Check server health with FrontierStack”
Apply Sidebar Presetサイドバーを保存済みプリセットに切り替える。
Flush DNS CachemacOS の DNS リゾルバキャッシュをフラッシュ。
Send Notificationアラートチャネル経由で通知を送信。
Ask Server AssistantAI 管理者に普通の言葉で質問し、回答をワークフローに返す。“Ask FrontierStack…”

カタログはさらに広く — Get Server Status、List Servers、List Docker Containers、Check a Website などもショートカット作成に利用でき、組み込みの Siri フレーズを持たないものも含めて使えます。

ヒント音声派ですか? 組み込みフレーズで、iCloud にサインインした Apple デバイスから 「Check server health with FrontierStack」「Start my servers with FrontierStack」「Ask FrontierStack…」と話すだけで、スタックがハンズフリーで応答します。

12.5スクリプトからアプリを操作する

App Intents は本物のショートカットアクションなので、macOS の shortcuts コマンドラインツールでシェルから呼び出せます — 保存済みスクリプト、cron ジョブ、Automator の「シェルスクリプトを実行」、あらゆるランチャの中で便利です。FrontierStack のアクションを一行のショートカットに包み、shortcuts run "My Shortcut" で呼び出して、スクリプトの他の処理と連鎖させます。

この組み立ては AI 管理者に任せられます。ショートカット経由でアプリを操作する自動化スクリプトを頼むと、list_app_intents を呼んで利用可能なアクションと各々の正確な shortcuts run 呼び出しを把握し、save_script でスクリプトを作成(または schedule_cron でスケジュール)します。ヒントではなく、完成して実行可能なスクリプトが手に入ります。

12.6スケジュールされたアプリアクション

cron ジョブはシェルコマンドを実行します。スケジュールされたアプリアクションはそれとは異なり、アプリ自身がスケジュールで行うタスクで、保存した資格情報と、あなたや AI 管理者が使うのと同じ監査済みツールを用います — 生のシェルコマンドではありません。連携サーバの再起動、アプリが制御するローカルサービスの開始・停止・再起動DNS のフラッシュを時間割で行うのに使います。schedule_app_action で管理し、list_app_actions で一覧でき、ペインの Scheduled App Actions に現れます。作成の自然な方法は AI 管理者に頼むこと — 「web-03 を毎晩 3 時に再起動」— そして承認することです。

cron との重要な違いが 1 つあります。アプリアクションは FrontierStack が起動している間だけ実行されます。アプリを通じて動作するため、アプリが閉じている間に期限を迎えたものは取りこぼします。一方 cron は、アプリが開いていようといまいと、システムレベルで実行されます。何があっても起こさねばならないことは cron を、アプリ自身の資格情報とツールで行わせたいことはアプリアクションを選んでください。

メモ一定時間だけ何かを止めるには、1 つではなく 2 つのアクションを使います。午前 2 時から 5 時までサービスを止めるなら、2 時に停止アクション、5 時に開始アクションをスケジュールします。アプリアクションは時点トリガーなので、「期間」とは単にその両端のことです。
注意スケジュールされたアプリアクションは、再起動やサービス停止といった実際の変更を、cron とまったく同様に、発火時の承認プロンプトなしにスケジュールで実行します。作成時に「変更を許可」が有効になっている必要があります。crontab と同じように、Scheduled App Actions 一覧を見直してください。

12.7frontierstack:// URL スキーム

すべてのペイン・サーバ・サイト・コンテナ・Cloudflare ゾーンに frontierstack:// のディープリンクがあります。AppleScript、Automator のシェルステップ、ランチャ、あらゆるスクリプトランナーから、open frontierstack://pane/Security のような一行で、アプリを前面に出して目的のペインへ直行します。ヘッドレスでアクションを実行するのではなく、特定の場所でアプリを画面に出したいときに、FrontierStack を既存のワークフローへ組み込む最速の方法です。URL スキームの完全なリファレンスは第 18 章にあります。

12.8バックアップ・ログ・変更ログの自動エクスポート

定型自動化の最後のピースは、FrontierStack 自身が生成したファイルをスケジュールで Mac のへ出すことです。Backups の概要にある Auto-export to a folder セクションは、生成された成果物を選んだ任意のフォルダへコピーします — オフサイト保全のための Dropbox フォルダ、または独自の後続ルールを駆動する Hazel 監視フォルダへ。3 つのフィードが組み込まれています:

  • 設定バックアップ — 構成バックアップの zip。
  • 変更ログ — アプリを通じて行われた変更の記録。
  • アプリログ — FrontierStack 自身のログの zip。

各フィードに間隔(毎時・6 時間・12 時間・毎日・毎週)を設定し、保存先フォルダを選び、必要なら Empty after export をオンにして、コピー後にソースをローテートできます(変更ログとアプリログに便利。際限なく肥大しません)。Export now はフィードを即時実行し、各フィードは前回の結果を表示します。ファイルは選んだフォルダに FrontierStack-<feed>-<timestamp> として置かれます。

メモ自動エクスポートはアプリ起動中に動作し、おおむね数分ごとに確認して、間隔が来たフィードをエクスポートします。アプリアクションと同様にアプリ内スケジュールなので、終日動かしたい場合はスリープしない Mac と組み合わせてください(ヘッドレス Mac のスリープ抑止は第 17 章)。

これで機械的な道具一式がそろいました。保存して実行するスクリプト、それをスケジュール実行する cron とアプリアクション、ホットキーや音声で起動するショートカットと Siri、どこへでも飛べる URL スキーム、結果を箱の外へ送り出す自動エクスポート。次章では、これらすべてをあなたの代わりに書き・配線できるオペレータを紹介します — AI 管理者です。

FrontierStack ユーザマニュアル · バージョン 1.0.0 · 第 12