Power Automate for desktop(PAD)で半角カナを全角カナにする(フローのファイル付き)
はじめに
こんにちは。ケイ・エム・ディ・エス 業務プロセス改善推進グループ(KMDS BPMG)です。
以前、RPAツールのPADで、Javascriptのスクリプト実行アクションを使って全角を半角に変換するという記事👇を書きました。(対象は英数字のみです。)
今回は、そのバリエーションで、半角カナを全角カナに変換するフローを作りました。こっちの方が良く使いそうです。作ったといっても、生成AIにやってもらっただけですが・・・。
やり方の説明とフロー内容
やり方はとっても単純で、参考として前回のJavascriptを貼って、半角カタカナを全角カタカナに変換するバージョンを書いて、と生成AIに頼んだだけです。わざわざ変換テーブルを作ってますが、まあいいでしょう。
フローを共有します。トヨトミ ヒデヨシ が トヨトミ ヒデヨシ になります。
こちら👇は、メモ帳に貼り付けたテキストファイルです。よろしければお使いください。(バージョン 2.51xxxで確認)
ファイルがダウンロード出来ない方へのコピペ用です👇。
SET inputVariable TO $'''トヨトミ ヒデヨシ'''
# 👇改行を一旦置き換える。あとで元に戻す
Text.Replace Text: inputVariable TextToFind: $'''\\r\\n''' IsRegEx: True IgnoreCase: False ReplaceWith: $'''___NEW_LINE___''' ActivateEscapeSequences: False Result=> inputVariable
@@copilotGeneratedAction: 'False'
Scripting.RunJavascript.RunJavascript JavascriptCode: $'''/*
* 半角カタカナを全角カタカナに変換するスクリプト
*
* 変換対象:
* - 基本的な半角カタカナ(ア-ン)
* - 濁点付きの文字(ガギグゲゴ、ザジズゼゾ、ダヂヅデド、バビブベボ)
* - 半濁点付きの文字(パピプペポ)
* - 小文字(ァィゥェォャュョッ)
* - 長音符(ー)
* - 半角スペース → 全角スペース
*
* 使用例:
* var halfWidthStr = \"ガギグゲゴ\" → ガギグゲゴ
* var halfWidthStr = \"パピプペポ\" → パピプペポ
* var halfWidthStr = \"アイウエオ\" → アイウエオ
*/
var halfWidthStr = \"%inputVariable%\"
var conversionTable = {
\'ヲ\': \'ヲ\', \'ァ\': \'ァ\', \'ィ\': \'ィ\', \'ゥ\': \'ゥ\', \'ェ\': \'ェ\', \'ォ\': \'ォ\',
\'ャ\': \'ャ\', \'ュ\': \'ュ\', \'ョ\': \'ョ\', \'ッ\': \'ッ\', \'ー\': \'ー\',
\'ア\': \'ア\', \'イ\': \'イ\', \'ウ\': \'ウ\', \'エ\': \'エ\', \'オ\': \'オ\',
\'カ\': \'カ\', \'キ\': \'キ\', \'ク\': \'ク\', \'ケ\': \'ケ\', \'コ\': \'コ\',
\'サ\': \'サ\', \'シ\': \'シ\', \'ス\': \'ス\', \'セ\': \'セ\', \'ソ\': \'ソ\',
\'タ\': \'タ\', \'チ\': \'チ\', \'ツ\': \'ツ\', \'テ\': \'テ\', \'ト\': \'ト\',
\'ナ\': \'ナ\', \'ニ\': \'ニ\', \'ヌ\': \'ヌ\', \'ネ\': \'ネ\', \'ノ\': \'ノ\',
\'ハ\': \'ハ\', \'ヒ\': \'ヒ\', \'フ\': \'フ\', \'ヘ\': \'ヘ\', \'ホ\': \'ホ\',
\'マ\': \'マ\', \'ミ\': \'ミ\', \'ム\': \'ム\', \'メ\': \'メ\', \'モ\': \'モ\',
\'ヤ\': \'ヤ\', \'ユ\': \'ユ\', \'ヨ\': \'ヨ\',
\'ラ\': \'ラ\', \'リ\': \'リ\', \'ル\': \'ル\', \'レ\': \'レ\', \'ロ\': \'ロ\',
\'ワ\': \'ワ\', \'ン\': \'ン\'
};
var dakutenMap = {
\'カ\': \'ガ\', \'キ\': \'ギ\', \'ク\': \'グ\', \'ケ\': \'ゲ\', \'コ\': \'ゴ\',
\'サ\': \'ザ\', \'シ\': \'ジ\', \'ス\': \'ズ\', \'セ\': \'ゼ\', \'ソ\': \'ゾ\',
\'タ\': \'ダ\', \'チ\': \'ヂ\', \'ツ\': \'ヅ\', \'テ\': \'デ\', \'ト\': \'ド\',
\'ハ\': \'バ\', \'ヒ\': \'ビ\', \'フ\': \'ブ\', \'ヘ\': \'ベ\', \'ホ\': \'ボ\'
};
var hanDakutenMap = {
\'ハ\': \'パ\', \'ヒ\': \'ピ\', \'フ\': \'プ\', \'ヘ\': \'ペ\', \'ホ\': \'ポ\'
};
var fullWidthStr = halfWidthStr.replace(/[\\uFF61-\\uFF9F]/g, function(char) {
return conversionTable[char] || char;
}).replace(/([カキクケコサシスセソタチツテトハヒフヘホ])゙/g, function(match, char) {
return dakutenMap[char] || match;
}).replace(/([ハヒフヘホ])゚/g, function(match, char) {
return hanDakutenMap[char] || match;
}).replace(/ /g, \" \");
WScript.Echo(fullWidthStr);''' ScriptOutput=> JavascriptOutput ScriptError=> ScriptError
Text.Replace Text: JavascriptOutput TextToFind: $'''___NEW_LINE___''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''\\r\\n''' ActivateEscapeSequences: True Result=> ZenkakuOutput
これを使って生成AIに頼めば、逆パターンの全角カナから半角カナへの変換もすぐに作ってくれることでしょう。
ローコードツールと生成AIとの相性
ところで、今回はスクリプトアクション内のJavascriptだからスムーズに行きましたが、PADのようなノーコード/ローコードツールのアクション全体の場合、生成AIはこんなに簡単に書いてくれません。
もちろんPADでも生成AI補助機能は視野に入っていて、米国環境かつプレビュー段階ですが、Copilotによるフロー作成がリリースされています。
しかし、ここまで一発でバチっと決まりません。
・・・このように、生成AIの登場以降、ノーコード・ローコードよりも、コードである方が簡単だし楽、という状況が発生しつつありますね。
ノーコード・ローコードは、画面があってクリック&ドラッグで進むため、ノンプロの一般利用者にとって、コードより分かり易いはずでした。
ですが、テキストを羅列しているだけのコードの方が、生成AIと相性が良いため、手早く・間違いも少なくやってくれる、という実情です。
もう少し補足すると、単純なローコード vs コードというよりも、コードの文法や使用例が、インターネット上に出回っているかどうかというのが、この違いのポイントなんだと思います。
例えば、同じETLツールのPower Query(Excel・Power BI)も、ローコードの一種と言えるでしょう。が、生成AIでかなりうまく行きます。
それは、ベースとなるM言語の例がネットに溢れているため、生成AIが学習ソースに困らないからなのだろうと思います。
この記事のように、画面だけでなくコードも貼るヒトがネット上に増えることで、これから知識カットオフが更新された大規模言語モデルでは、PADをもっと学習してくれないかな、と願っています。
終わりに
いかがだったでしょうか。最後に取り上げた点は、過渡期のものであって、生成AIの推論能力やマルチモーダル性能がさらに進めば、クリアされる話なのかもしれません。
とはいえ、私たち利用者としては、こういう現状の変化を認識しつつ、それぞれの良いところを活用しながら、さらなる業務効率化を進めていきたいところです。
今回は以上です。
最後まで読んでいただき、ありがとうございました。
記事が気に入ったら、スキ・フォローお願いします!
KMDS BPMG