更新情報
アクション実行後にSlackにカスタムメッセージを通知できるようになりました!

ベースマキナの更新情報をお届けします。
アクション実行後のSlack通知機能
アクションの実行後に、実行結果やパラメーターの値を使ってカスタマイズしたメッセージをSlackへ通知できるようになりました。
Slackを連携するだけで、以下の機能が利用できます。
主な機能
-
チャンネル選択: 連携したワークスペースのチャンネル一覧から通知先を選択
-
環境別設定: 本番環境と開発環境で異なる通知先を設定
-
メンション機能: 通知時に特定のユーザーをメンション
-
メッセージのカスタマイズ: 通知内容をSlackのmrkdwn形式で自由にカスタマイズ
成功時・エラー時の通知
アクションごとに、実行成功時やエラー時の通知を個別に設定できます。

メッセージのカスタマイズ
通知メッセージにはアクションのパラメーターや実行結果を使用できます。
基本的な使用例
まずはシンプルな通知の例です。
{{ currentUser.name }} が {{ action.name }} を実行しました。
環境: {{ environment.name }}

パラメーターを含む通知:
アクションにuserNameとnewStatusというパラメーターがある場合の例です。
ユーザー「{{ userName }}」のステータスを「{{ newStatus }}」に更新しました。
実行者: {{ currentUser.name }}

実行結果を使った通知
アクションの実行結果を通知メッセージに埋め込むことができます。
HTTP APIの結果を表示:
HTTP APIアクションで {"user": {"id": 123, "name": "マキナ次郎"}} のようなレスポンスが返る場合の例です。
ユーザー情報を取得しました。
・ID: {{ action.success.user.id }}
・名前: {{ action.success.user.name }}

配列データの表示:
アクションの実行結果が[{"id":1,"name":"チョコレートパン"},{"id":2,"name":"塩パン"}]のような配列データの場合の例です。
最初の商品: {{ action.success.items[0].name }}

エラー時の通知:
エラー時は {{ action.failure }} でエラー内容を表示できます。
アクション「{{ action.name }}」の実行に失敗しました。
エラー内容: {{ action.failure }}
実行者: {{ currentUser.name }}
環境: {{ environment.name }}

JavaScriptアクションとの組み合わせ
より高度な通知をする場合、JavaScriptアクションでデータを加工し、その結果を通知メッセージで使用できます。
売上データを集計して通知する例:
import { executeAction } from "@basemachina/action";
export default async () => {
const result = await executeAction("get-sales-data");
const sales = result[0].success;
const total = sales.reduce((sum, s) => sum + s.amount, 0);
const count = sales.length;
return {
summary: `${count}件の売上、合計${total.toLocaleString()}円`,
topSale: sales.sort((a, b) => b.amount - a.amount)[0],
};
};
通知メッセージ:
本日の売上レポート
{{ action.success.summary }}
最高額: {{ action.success.topSale.amount }}円({{ action.success.topSale.customerName }}様)

エラーハンドリングと通知:
複数のアクションを実行するワークフローで、どのステップで失敗したかを通知する例です。ResultErrorを使って構造化されたエラー情報を返します。
import { executeAction, ResultError } from "@basemachina/action";
export default async ({ userId, imageFile }) => {
const uploadResult = await executeAction("upload-image", { imageFile });
if (uploadResult[0].failure) {
throw new ResultError({
step: "画像アップロード",
message: "画像のアップロードに失敗しました",
detail: uploadResult[0].failure,
});
}
const imagePath = uploadResult[0].success.path;
const updateResult = await executeAction("update-user-image", {
userId,
imagePath,
});
if (updateResult[0].failure) {
throw new ResultError({
step: "ユーザー情報更新",
message: "ユーザー情報の更新に失敗しました",
detail: updateResult[0].failure,
});
}
return { userId, imagePath };
};
エラー時の通知メッセージ:
ワークフローでエラーが発生しました。
失敗したステップ: {{ action.failure.step }}
エラー内容: {{ action.failure.message }}
詳細: {{ action.failure.detail }}

セットアップ手順
-
Slack連携: 企業アカウント設定でSlackワークスペースを連携
-
通知方法の作成: プロジェクト設定で通知先チャンネルを環境ごとに設定
-
アクションの通知設定: 各アクションで成功時・エラー時の通知を有効化
詳細はドキュメントの「通知機能」をご参照ください。
今後の展望
アクション実行後のSlack通知機能のみではなく、レビュー依頼/承認/却下などもSlack連携でより便利にしていく予定です。
-
レビュー依頼時にSlackで承認できるユーザー・グループにメンション付きで通知
-
Slack上でのレビュー依頼の確認、承認、却下
-
承認期限に合わせた自動リマインド通知
機能の設計を進めている段階ですので、ご課題などあればお気軽にご意見いただければ幸いです。
軽微な変更点
CSVダウンロードのオプションに「文字列の値を常にダブルクォーテーションで囲む」を追加
オフの場合は、カンマ・改行・ダブルクォーテーションを含む文字列のみが囲まれます。
詳細は「結果のダウンロード > CSV形式のオプション」をご参照ください。
bridgeのTerraformモジュールを追加
Terraformを使ってbridgeをデプロイする場合にご利用いただけるモジュールを追加しました。
AWS ECS FargateおよびGoogle CloudのCloud Runに対応しています。
詳細は「bridgeとは > Terraformモジュール」をご参照ください。