見出し画像

KNIME - Java 全角半角変換Nodeを作る - Java Snippet

はじめに

こんにちは、まっきーです。今回は、KNIMEで全角半角変換を行いたいと思います。KNIMEってなんなの?って人は、こちらの記事をご覧ください。

やりたいこと - 半角全角変換

そのままですが、下記のような、半角と全角の混ざっているデータを半角に揃える、もしくは全角に揃えることを行います。データに全角・半角が混ざっているということ、あると思います。特に電話番号とか住所とかですかね。自動化を行いたいとき、データの前処理がかなり重要なのは周知の通りかと思います。

画像1

なぜJavaなのか?

今回はJava (Java Snippet)を使ってNodeを作っていきます。KNIMEは日本語を使えますが、日本専用に開発されているわけではないので、全角カタカナ、半角カタカナを変換するNodeがありません。そこでプログラミング言語を使用して変換を行う必要があります。
※もしかすると今後開発されるかもしれませんが、ドイツの会社がまだまだKNIMEが浸透していない日本のためにわざわざ作ってそれをデフォルト設定に組み込むとは思いません、、もちろんインフォコムさんが作ってくださるかもしれませんが。

いろんなプログラミング言語がありますが、KNIMEはJavaを元にして動いているため、追加の環境設定が不要でJavaを使用することができます。環境構築が不要であるということは、他の人に共有が非常にしやすいということです。KNIMEを使われるのは業務改善の一環だという前提でお話ししますが、ある人が作ってその後誰も修正ができないブラックボックスツールは作るべきではありません

そこで、Javaを使ってNodeを作りたいと思います。Javaを使うことで、追加のExtensionをInstallすることなくそのままWorkflowを他の人に共有することができます。

本Nodeの使い方

本Nodeの使い方については下記の記事を参照ください。

関数としては半角変換用の関数と全角変換用の関数、2つ用意しています。変換したい列をあらかじめ文字列型(String)で取り込んでおきます。変換したい列を各関数の(String Column)の部分に入れ込めば、完成です。

半角変換:変換後のコラム=ASC(変換元のコラム);

全角変換:変換後のコラム=JIS(変換元のコラム);

スクリーンショット 2021-01-04 10.57.39

プログラムの方針

JavaにはNormalizer.normalizeという便利な関数があります。しかし、残念ながらこの関数は完全ではないそうです。これを使用してしまうと変に変換される恐れがあります。詳しくは下記のブログをご覧ください。

また、カタカナの半角・全角変換と英数字の半角・全角変換はアプローチが異なるため関数を分けています。本コードは下記の記事を参考に改訂しています。


本記事の公開について

コードの部分のみ有料公開とさせていただきます。サンプルのWorkflowもお付けしているので、サンプルWorkflowをImportしていただければあとはそのNodeをコピペすれば他のWorkflowでも使用可能です。。サンプルワークフローはKNIME v 4.1.2、Windows 版でファイルを作成していますが、使用しているNodeがJava SnippetとTable Creatorのみなので、基本的にはどのOS、バージョンからも開けるかと思います。古いバージョンのKNIMEを使っている方でも、Load Anywayという選択を行えばImportされると思います。

Importだとバージョンが合わずに開けない!という人は、ソースコードをコピペしていただければと思います。

KNIMEの実行環境のInstall等は各自で行ってください。なお、本コードは無料公開ソースコードを参考に多くの変更を加えた内容になっています。自分で作れる方は、そちらの方がいいかと思います。環境によって動かなくなる場合もございますので、検討の上自己責任でご購入いただければと思います。


ここから先は

12,220字 / 4画像 / 1ファイル

¥ 500

この記事が気に入ったらサポートをしてみませんか?