WeeklyAlteryxTips#52 メッセージツールのメッセージ優先度を使いマクロ内で起きていることをわかりやすくする

Alteryx

今回は、マクロの中で何が起きているのか、ということを知るための方法をご紹介します。

Alteryxのマクロは複数ツールをまとめて一つの機能を新たに作り込める機能で、ワークフロー内の一部機能を使い回すには非常に優れた機能です。また、バッチマクロや反復マクロといった特殊な繰り返し処理を実装する場合にも必須の機能です。

しかしながら、マクロの中で何か想定していないことが起きると、マクロ内にすべて隠蔽されるため、何が起きているのか、という観察をするのは少し難しくなります。それはマクロの利点でもあり欠点でもあります。

マクロの中で何が起きているか知る方法

Designerのオプションには「すべてのマクロメッセージを表示する」というオプションが備えられています。

これをオンにすることで、あるワークフロー内に配置しているマクロが出しているメッセージをすべて見ることができます(通常は最低限の情報しか上位のワークフローには報告されません)。

具体例

以下のように、マクロ内でマスターを読み込むようなマクロを持っているワークフローを考えてみます。

例えば、このオプションのオン・オフで以下のように変化します。

これにより、通常のツールが出力しているログがすべて確認できます。

何か問題が起きている時を見てみる

ここで、マクロ内で読み込んでいるマスターファイルがおかしくなっていて、読み込みができないとします。今回は、データ部分のみ消失していたとし、この場合は明確なエラーは発生しないため気づきにくい問題です。実際のログは以下のようになります。

この場合、出力されるはずのデータが出力されずどうなっているのか?ということになるでしょう。BIなどでデータを見ている人からクレームが来るかもしれません。この時、マクロ内のログも見えれば、マスターファイルがうまく読み込めていないというのが簡単にわかるのですが、そのために「すべてのマクロメッセージを表示する」がオンになっていれば、以下のように赤い部分で確認することができます。

ただ、このオプションを使うと、無駄にメッセージが多くなるので、必要なメッセージのみを表示する方が効率は良いです。この場合、知りたい情報を得るためにいくつかメッセージツールを仕込むことが可能です。例えば、今回のような場合は、データ入力ツールの直後に件数を出力するメッセージツールと、カテゴリと結合後にカテゴリマスターが不足しているかどうかわかるようなメッセージツールを仕込んでおきます。

仕込んでいるツール設定のポイントは以下の通りで、メッセージの優先度を「高」にすることです。

メッセージ式にはワークフロー内の値を使うことができるので、うまくファイル名やデータの件数などを取得し、マクロ呼び出し側のワークフローにわかるように渡しましょう。

今回のポイントとしては、全体のワークフローを止めずにエラーの手がかりだけを入手できるようにしていることでしょうか。エラーとしたいような致命的なポイントであれば過去記事にあるようなエラー検知を行いつつ、質を後々担保したいが今はクリティカルではないような場合は今回のようにメッセージを仕込むのが効果的です。

これにより、以下のようにメッセージを出力することができます。

今回の方法は手間がかかるので、手軽に「すべてのマクロメッセージを表示する」でやるという方法も現実的にはありかと思います。ただ、メッセージが大量になりすぎて埋もれそうな時などはメッセージ優先度「高」を使うのも手かと思います。また、マクロの利用者がかならずしも「すべてのマクロメッセージを表示する」にしているかどうかも確実ではないような場合も、強制的にメッセージを出してくれるという部分では有用かと思います。アプローチとして、マクロ側からアプローチするのか、マクロを呼び出すワークフロー側からアプローチするのか、という考え方も異なるので、いずれからもできるように備えて置くのは良いかと思います。

まとめ

  • マクロの中で何が起きているかわかりやすくする方法を2つご紹介しました。
    • メッセージツールのメッセージ優先度「高」でマクロ内に仕込む
    • ワークフローのランタイムタブ「すべてのマクロメッセージを表示する」をオンにする
  • メッセージツールで仕込む例
    • 様々なファイルを読み込むようなバッチマクロの場合、何を読み込もうとしているか、ファイル名などがわかるようにメッセージツールを仕込んでおく
    • 各種データの読み込み件数を通知するように仕込む(ダウンロードツールなどの場合は特に有効です)
    • 汎用なマクロを作る場合は、利用者へに対する優しさとして知っておくべき情報を出す
  • エラーとして検知するのか、情報として通知するのか、うまく使い分ける

サンプルワークフローダウンロード

次回

未定です。

コメント

タイトルとURLをコピーしました