この記事は「make Advent Calendar 2024」11日目の記事です。
このアドベントカレンダーについて
このアドベントカレンダーは25日間でIPaaS製品の「make」について使い方や、実践を学べる連続ブログ企画です。
「おかしん」「ばるす」「たにあん」の3名がリレー形式でお届けします。
25日間のスケジュールは以下の通りです。
日付 | 内容 | 担当 |
12/1 | 話題のIPaaS製品「make」とは | おかしん |
12/2 | makeで作ってみたScenario紹介 | ばるす |
12/3 | make 基本操作編 機能紹介:Organization | たにあん |
12/4 | make 基本操作編 機能紹介:Scenario、Template | おかしん |
12/5 | make 基本操作編 機能紹介:Connections | ばるす |
12/6 | make 基本操作編 機能紹介:Webhooks | たにあん |
12/7 | make 基本操作編 機能紹介:DataStores、DataStructures | おかしん |
12/8 | make 基本操作編 機能紹介:Devices | ばるす |
12/9 | make 基本操作編 機能紹介:Functions | たにあん |
12/10 | make 基本操作編 機能紹介:CustomApps | おかしん |
12/11 | make 基本操作編 機能紹介:Flow Control,Tools,Text parser | ばるす |
12/12 | make ドキュメント動線の話:ResourceHub | たにあん |
12/13 | make 検証:Make Bridge | おかしん |
12/14 | make 検証:Make REST API | ばるす |
12/15 | make 検証:AI Search | たにあん |
12/16 | make Community Hub:Overview | おかしん |
12/17 | make Community Hub:Academy Courses,Blog Articles | ばるす |
12/18 | make Community Hub:Showcase,CustomApps | たにあん |
12/19 | makeの管理運用の話:Github連携 | おかしん |
12/20 | makeの管理運用の話:実行ログと再実行と停止中リクエスト滞留 | ばるす |
12/21 | makeの管理運用の話:Connection権限管理 | たにあん |
12/22 | makeで作ってみた事例:(未定) | おかしん |
12/23 | makeで作ってみた事例:(未定) | ばるす |
12/24 | makeで作ってみた事例:(未定) | たにあん |
12/25 | makeの総論を語る | ばるす |
はじめに
どーもばるすです。私だけ時間遡行してます。誰がなんと言おうと今日は12/11です。
今日はmakeでScenario作るときの各ユーティリティをご紹介します。
分岐とかエラーハンドリングのための再実行処理とか型変換のためのモジュールとかですね。
iPaaSの優劣はこういったユーティリティの使いやすさや守備範囲の広さで決まると思ってます。
かなり重要な役割を担っている各モジュールですが、やってることはいかんせん地味です。
それらを紹介するこのブログも当然地味なものになります。あと量がすげーことになります。(これでも結構削りました)
紹介する各モジュールの概要
Flow Control
Flow Controlは、シナリオ内でのデータの流れを制御する機能群です。繰り返し処理や配列の分割・結合など、複雑なワークフローを実現するための基本的な機能を提供します。
一覧
(良い感じに並べただけなので、実際に使う場合の配置とは異なります)
Tools
Toolsは、変数の設定や値の集計、遅延実行など、シナリオ作成時に便利な機能を提供するユーティリティモジュール群です。
一覧
(良い感じに並べただけなので、実際に使う場合の配置とは異なります)
Text Parser
Text Parserは、HTMLやテキストからデータを抽出したり、特定のパターンに基づいて文字列を操作したりするための機能を提供します。
一覧
(良い感じに並べただけなので、実際に使う場合の配置とは異なります)
各モジュール詳細
Flow Control
Repeater(繰り返し処理)
- 指定した回数だけタスクを繰り返し実行
- 各繰り返しでカウンター値を利用可能
- ステップ値の設定が可能
Iterator(反復処理)
- 配列を個別のバンドルに分割
- 特殊化された反復子も利用可能(例:メール添付ファイルの反復処理)
Array Aggregator(配列集約)
- 複数のデータを1つの配列にマージ
- グループ化機能付き
- カスタム出力構造の定義が可能
Router
- シンプルな分岐
- 各モジュールとつなぐ線の部分でIF条件が設定できる
Break
- シナリオの実行を即座に停止
- 主な使用場面:
- 重大なエラーの検出時
- 特定の条件を満たした時の処理中断
- デバッグ時の意図的な中断
Commit
- 処理の結果を確定させる
- 使用シーン:
- トランザクション処理の完了時
- データの永続化が必要な場合
- 複数の更新を一括確定
Ignore
- 特定のエラーを無視して処理を継続
- 活用例:
- 軽微なエラーの無視
- オプショナルな処理のスキップ
- 非クリティカルな警告の処理
Resume
- 中断された処理の再開
- 機能:
- エラー後の処理再開
- 中断ポイントからの継続
- 状態の復元
Rollback
- エラー発生時に変更を元に戻す
- 実行できること:
- ポーリングトリガーの時刻を巻き戻し
- データの整合性を保持
- 一連の処理をキャンセル
Tools
Basic Trigger
- カスタムトリガーの作成
- 入力バンドルの定義が可能
いやこれどうやって使うの…?って一番わからんシロモノなので後日これメインで検証予定。
Scenario内に複数トリガーをセットできるっぽいんですけど、動作条件が指定できるわけでもないのでまじ謎。
一旦今は、こういうものがあるんだーふーん。って感じで流して頂けると幸いです。
インクリメント
- 値を1ずつ増加
- リセットタイミングの設定が可能
- ラウンドロビン割り当てに最適
変数操作
- Set Variable:変数の設定
- Set Multiple Variables:複数変数の一括操作
- Get Variables:変数の取得
集計機能
- Table Aggregator:表形式でのデータ集約
- Text Aggregator:テキストの結合
- Numeric Aggregator:数値の集計
Text Parser
Get content from HTML table
- 機能:HTML表からデータを構造化して取得
- 使用場面:
- Webスクレイピング
- 表形式データの抽出
- レポートデータの取得
- 特徴:
- 表構造の自動認識
- データの構造化出力
- Get Elements from HTML
- 機能:HTMLから特定の要素を抽出
- 主な用途:
- 画像要素の取得
- リンクの抽出
- iframeの検出
- オプション:
- Element type:要素タイプの指定
- 実行継続オプション
HTML to text
- 機能:HTMLをプレーンテキストに変換
- メリット:
- フォーマット除去
- 可読性の向上
- データクレンジング
- 活用例:
- メール本文の抽出
- コンテンツの整形
Match elements
- 機能:特定のパターンに一致する要素を検出
- 用途:
- 特定フォーマットの検出
- データ検証
- パターンマッチング
- 設定項目:
- マッチングルール
- 出力形式
- Match pattern(通常)
- 機能:正規表現によるパターン検索
- 基本機能:
- テキストマッチング
- データ抽出
- パターン検証
- オプション:
- グローバルマッチ
- 大文字小文字の区別
- マルチライン処理
Match pattern (Advanced)
- 機能:高度な正規表現処理
- 追加機能:
- 複雑なパターン
- 条件付きマッチング
- 特殊なキャプチャ
- 使用例:
- 複雑なデータ構造の解析
- 高度なテキスト処理
捕捉:TextParserのMatch Pattern(通常)とMatch Pattern(Advanced)は何が違うの?
- 基本的な機能は同じ
- 使用目的や要件によって使い分けると効果的
- 動的にマッチパターンを変更したいか否かで利用を判断すればOK(と思われる)
簡易比較表
機能 | Match Pattern(通常) | Match Pattern(Advanced) |
---|---|---|
パターン指定 | 固定テキスト | マッピング可能 |
Global match | ○ | ○ |
Case sensitive | ○ | ○ |
Multiline | ○ | ○ |
Singleline | ○ | ○ |
実行継続オプション | ○ | ○ |
書いてる私もいまいちピンと来てないので、これは後日検証して使い分けの観点や所感などをブログにします。
おかしいなー、ブログ書いてるのに書くべきブログが増えてく一方なんだよな。
Replace
- 機能:パターンに基づく文字列置換
- オプション:
- 検索パターン指定
- 置換文字列設定
- グローバル置換
- 活用シーン:
- テキストクレンジング
- フォーマット統一化
- 文字列加工
通常、Replaceって関数でやるのが普通というか一般的なんですけど、makeではReplace特化でモジュールが用意されてるみたいですね。
これはこれで便利かもしれん。
使用例
FlowControl、Toolsはmakeのドキュメントに記載されているのでそちらを確認いただくのが良いかなと思います。
TextParserは個別の例がなかったので有志が書いてくれているSampleをご参考ください。
全部のモジュールを使った例を挙げてみようかと思ったんですけど、ボリュームがやべえことになるので諦めました。
Flow Control
参考ドキュメント:フロー制御
Tools
参考ドキュメント:Tools
Text Parser
訳:テキストパーサーを使用してHTMLテーブルのコンテンツを取得し、グループ化を使用してシナリオ全体でデータをより使いやすくするテキストアグリゲーターを使用したテーブル付き電子メールのショーケース
終わりに
以上、makeの各ユーティリティモジュールをご紹介しました。
調べて動作確認する中で色々疑問は出たのですがこのブログに収めるのは無理だったので、後日別途ブログ書きます。
ではでは。