1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!全角半角変換やってみた

Last updated at Posted at 2025-11-28

はじめに

DataMagic は、色々な機能を備えています。

機能・概要一覧
機能  概要
マッチング 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する
マージ 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする
出力先振り分け 抽出条件に沿って、出力ファイルを振り分ける
数値項目演算 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する
データ抽出 入力データから、指定した条件に合致したデータのみを抽出する
項目入替 入力データの項目を入れ替えて、別のフォーマットで出力する
項目結合 複数の項目を結合して、1つの項目として出力する
項目分割 単一項目を分割して、複数の項目として出力する
全角半角 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する
出力フォーマット指定 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する
入力ソート 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする
属性変換 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する
日付項目演算 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する
関数 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する
マッピング 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する
動的指定 データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる
ユーザ出口変換 データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる
データ挿入 レコード内の任意の項目にユーザ指定の任意の値を挿入できる
仕様書出力 データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる
チュートリアル データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる
カスタムエラー カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる
ステップ実行 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする
コード変換 1バイトコード間、または2バイトコード間で、文字コードを変換する

今回の課題

DataMagic は、その機能を使って色々なデータ加工ができます。
その中で、今回は 全角半角変換 にチャレンジ!
例えば〝印字する場合は全角〟〝ファイルに格納する場合は半角〟にする等。
それぞれの場面によって、文字や数字を全角や半角に変えて出力できれば便利だと思いませんか。

入力データ

今回は以下の入力ファイル(都道府県庁情報のCSVデータ)を使って検証します。
ちなみにこの入力ファイルは、「都道府県名」「所在地」「郵便番号」「代表電話番号」「ホームページURL」の5項目で構成されています。
また「代表電話番号」の括弧()記号と「ホームページURL」は半角で、それ以外は全角です。

入力ファイル
都道府県庁情報
"都道府県名","都道府県庁所在地","郵便番号","代表電話番号","ホームページURL"
"北海道","北海道札幌市中央区北三条西6丁目","060-8588","011(231)4111","http://www.pref.hokkaido.lg.jp/"
"青森県","青森県青森市長島1-1-1","030-8570","017(722)1111","http://www.pref.aomori.lg.jp/"
"岩手県","岩手県盛岡市内丸10-1","020-8570","019(651)3111","http://www.pref.iwate.jp/"
"宮城県","宮城県仙台市青葉区本町3-8-1","980-8570","022(211)2111","http://www.pref.miyagi.jp/"
"秋田県","秋田県秋田市山王4-1-1","010-8570","018(860)1111","http://www.pref.akita.lg.jp/"
"山形県","山形県山形市松波2-8-1","990-8570","023(630)2211","http://www.pref.yamagata.jp/"
"福島県","福島県福島市杉妻町2-16","960-8670","024(521)1111","http://www.pref.fukushima.jp/"
"茨城県","茨城県水戸市笠原町978-6","310-8555","029(301)1111","http://www.pref.ibaraki.jp/"
"栃木県","栃木県宇都宮市塙田1-1-20","320-8501","028(623)2323","http://www.pref.tochigi.lg.jp/"
"群馬県","群馬県前橋市大手町1-1-1","371-8570","027(223)1111","http://www.pref.gunma.jp/index.html"
"埼玉県","埼玉県さいたま市浦和区高砂3-15-1","330-9301","048(824)2111","http://www.pref.saitama.lg.jp/"
"千葉県","千葉県千葉市中央区市場町1-1","260-8667","043(223)2110","http://www.pref.chiba.lg.jp/"
"東京都","東京都新宿区西新宿2-8-1","163-8001","03(5321)1111","https://www.metro.tokyo.lg.jp/index.html"
"神奈川県","神奈川県横浜市中区日本大通1","231-8588","045(210)1111","http://www.pref.kanagawa.jp/"
"新潟県","新潟県新潟市中央区新光町4-1","950-8570","025(285)5511","http://www.pref.niigata.lg.jp/"
"富山県","富山県富山市新総曲輪1-7","930-8501","076(431)4111","http://www.pref.toyama.jp/"
"石川県","石川県金沢市鞍月1-1","920-8580","076(225)1111","http://www.pref.ishikawa.jp/"
"福井県","福井県福井市大手3-17-1","910-8580","0776(21)1111","http://www.pref.fukui.jp/index.html"
"山梨県","山梨県甲府市丸の内1-6-1","400-8501","055(237)1111","http://www.pref.yamanashi.jp/"
"長野県","長野県長野市大字南長野字幅下692-2","380-8570","026(232)0111","http://www.pref.nagano.lg.jp/"
"岐阜県","岐阜県岐阜市藪田南2-1-1","500-8570","058(272)1111","http://www.pref.gifu.lg.jp/"
"静岡県","静岡県静岡市葵区追手町9-6","420-8601","054(221)2455","http://www.pref.shizuoka.jp/"
"愛知県","愛知県名古屋市中区三の丸3-1-2","460-8501","052(961)2111","http://www.pref.aichi.jp/"
"三重県","三重県津市広明町13番地","514-8570","059(224)3070","http://www.pref.mie.lg.jp/"
"滋賀県","滋賀県大津市京町4-1-1","520-8577","077(528)3993","http://www.pref.shiga.lg.jp/"
"京都府","京都府京都市上京区下立売通新町西入藪ノ内町","602-8570","075(451)8111","http://www.pref.kyoto.jp/"
"大阪府","大阪府大阪市中央区大手前2丁目","540-8570","06(6941)0351","http://www.pref.osaka.jp/"
"兵庫県","兵庫県神戸市中央区下山手通5-10-1","650-8567","078(341)7711","http://web.pref.hyogo.jp/"
"奈良県","奈良県奈良市登大路町30番地","630-8501","0742(22)1101","http://www.pref.nara.jp/"
"和歌山県","和歌山県和歌山市小松原通1-1","640-8585","073(432)4111","http://www.pref.wakayama.lg.jp/"
"鳥取県","鳥取県鳥取市東町1-220","680-8570","0857(26)7111","http://www.pref.tottori.lg.jp/"
"島根県","島根県松江市殿町1番地","690-8501","0852(22)5111","http://www.pref.shimane.lg.jp/"
"岡山県","岡山県岡山市北区内山下2-4-6","700-8570","086(224)2111","http://www.pref.okayama.jp/"
"広島県","広島県広島市中区基町10-52","730-8511","082(228)2111","http://www.pref.hiroshima.lg.jp/"
"山口県","山口県山口市滝町1-1","753-8501","083(922)3111","https://www.pref.yamaguchi.lg.jp/"
"徳島県","徳島県徳島市万代町1-1","770-8570","088(621)2500","https://www.pref.tokushima.lg.jp/"
"香川県","香川県高松市番町4-1-10","760-8570","087(831)1111","https://www.pref.kagawa.lg.jp/"
"愛媛県","愛媛県松山市一番町4-4-2","790-8570","089(941)2111","http://www.pref.ehime.jp/"
"高知県","高知県高知市丸の内1-2-20","780-8570","088(823)1111","http://www.pref.kochi.lg.jp/"
"福岡県","福岡県福岡市博多区東公園7-7","812-8577","092(651)1111","http://www.pref.fukuoka.lg.jp/"
"佐賀県","佐賀県佐賀市城内1-1-59","840-8570","0952(24)2111","http://www.pref.saga.lg.jp/"
"長崎県","長崎県長崎市尾上町3-1","850-8570","095(824)1111","http://www.pref.nagasaki.jp/"
"熊本県","熊本県熊本市中央区水前寺6-18-1","862-8570","096(383)1111","http://www.pref.kumamoto.jp/"
"大分県","大分県大分市大手町3-1-1","870-8501","097(536)1111","http://www.pref.oita.jp/"
"宮崎県","宮崎県宮崎市橘通東2-10-1","880-8501","0985(26)7111","http://www.pref.miyazaki.lg.jp/"
"鹿児島県","鹿児島県鹿児島市鴨池新町10-1","890-8577","099(286)2111","http://www.pref.kagoshima.jp/"
"沖縄県","沖縄県那覇市泉崎1-2-2","900-8570","098(866)2333","http://www.pref.okinawa.jp/"

レイアウト情報

項目数は少ないので省略でもOKですが、入力ファイルにタイトル行が付いているので、久々にレイアウト情報を登録しました。

レイアウト情報の登録方法は、以下の 説明動画 か、【DataMagic】登録してみた!レイアウト定義_CSV形式 編 を参照してください

説明動画 操作がぐるぐる回っているので、酔わないように閉じています。

Qiita_015-CSV.gif

データ加工

1.入力ファイルエリアの編集

入力形式=CSV、フォーマット=あり(省略でも大丈夫です)

今回は出力側やマッピング段階での設定になるので、入力側はシンプルな設定になります。
以下で説明する項目以外の設定は、初期値を採用します。

レイアウト

ID:
該当する(新たに登録した) ID を直接入力、もしくは :mag_right: でCSV情報一覧画面を表示し、該当する ID を選択
IDを省略する場合は、区切り文字、囲み文字 は共に初期値 で設定

ファイル名:
入力ファイルをコピペして作った都道府県庁情報のファイルを指定

ヘッダレコード設定:
チェック :heavy_check_mark: を入れて、1 ~ 1 行に設定

Qiita_015-01.jpg

2.出力ファイルエリアの編集

出力形式=CSV、フォーマット=あり(入力ファイルと同じID。省略でも大丈夫です)

以下で説明する項目以外の設定は、初期値を採用します。

レイアウト

ID:
入力設定で指定したID を設定。
IDを省略する場合は、区切り文字、囲み文字 は共に初期値 で設定

ファイル名:
出力ファイル名を指定

タイトル行を出力する:
チェック :heavy_check_mark: を入れる

コード変換

英数字変換:
全角⇒半角 を設定

Qiita_015-02.jpg

3.抽出条件の設定

初期設定のまま使用

4.関係線の設定1〔抽出条件と出力ファイル〕

抽出条件のアイコンを選んで、出力ファイルのアイコンの上にドラッグ&ドロップし、アイコン間の関係線をつなぎます。

5.関係線の設定2〔入力項目と出力項目をマッピング〕

入出力で項目数や配列に違いは無いので、上から順に関係線をつなぎます。

Qiita_015-03.jpg

6.データ加工処理

すべての設定が終わったので、 最後にIDを登録して、現在表示されている内容で、データ加工を実行します。

上記の設定により、数字をすべて半角に変換して出力されました。

Qiita_015-04.jpg

項目別に異なる設定 をした後の出力結果と比較する場合は閉じてみてください。

項目別に異なる設定

上記の結果を確認して、

  • 所在地の番地は全角のまま がいいな~
  • 郵便区番号 と 町域番号 の間は、半角のハイフン がいいな~

なんて思ったら、マッピング設定の画面で項目別に設定します。

所在地の番地は全角のまま

全角のまま = 入力ファイルの値のまま出力したい! なら
以下の図のように、全角半角英数字変換を「何もしない」に変更

Qiita_015-05.jpg

郵便区番号 と 町域番号 の間は、半角のハイフン

記号を半角にしたいのなら
以下の図のように、全角半角記号変換を「全角⇒半角」に変更

Qiita_015-06.jpg

項目別にカスタマイズした結果

上記2つの追加設定をした結果が :arrow_heading_down:

Qiita_015-07.jpg

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?