2020.05.27
サンプルシナリオ 変数
辞書の作成と検索を行うサンプルシナリオ

辞書操作関連ライブラリを使用して、CSVデータをもとに辞書を作成し、その辞書の情報を検索取得するサンプルシナリオとなります。

辞書操作ライブラリの使用例として利用することができます。

本サンプルシナリオをダウンロードする前にこちらの注意事項を必ずご確認ください。

サンプルシナリオ概要

はじめに

辞書操作関連ライブラリを使用して、CSVデータをもとに辞書を作成し、その辞書の情報を検索取得するサンプルシナリオ(以降、本サンプルシナリオ)について説明します。

注意事項

本サンプルシナリオ利用時の注意事項はこちらです。

本サンプルシナリオの概要

本サンプルシナリオは、以下の処理を行います。

  • 辞書作成用データ(CSVファイル)をもとに、「辞書」を作成します。
  • 検索用データファイル(Excelファイル)で指定された値を「キー」として、作成した「辞書」を引き(検索)、紐づけられた「情報」を取得します。
  • 取得した「情報」を、検索用データファイルに書き込みます。

使用するWinActorモジュール

本サンプルシナリオでは、以下のWinActorモジュールを使用します。

  • 03_変数/02_辞書と配列/辞書操作(初期化).ums6
  • 03_変数/02_辞書と配列/辞書操作(情報更新).ums6
  • 03_変数/02_辞書と配列/辞書操作(情報取得).ums6
  • 07_文字列操作/03_連結/文字列の連結(2つ).ums6
  • 07_文字列操作/03_連結/文字列の連結(3つ).ums6
  • 18_Excel関連/01_ファイル操作/Excel操作(上書き保存).ums6
  • 18_Excel関連/01_ファイル操作/Excel操作(保存なしで閉じる).ums6
  • 18_Excel関連/03_行列操作/Excel操作(最終行取得 その4).ums6
  • 18_Excel関連/Excel操作(値の取得2).ums6
  • プチライブラリ/変数/辞書から指定したキーと情報を削除するライブラリ

(プチライブラリはこちらからダウンロードできます)

動作確認環境

本サンプルシナリオは以下の環境で動作確認しています。

    • Windows 10
    • WinActor 6.3.0、7.0.2
    • Microsoft Excel 2019

本サンプルシナリオの使い方

本サンプルシナリオの実施方法は以下の通りです。

Step 1. サンプルシナリオの読み込み

ダウンロードしたZIPファイルを展開し、展開したフォルダに含まれている本サンプルシナリオをWinActorで読み込みます。

Step 2. 動作に必要な変数を設定(必須)

事前の設定が必須な変数は下記のとおりです。(実線赤枠内)

  • 辞書作成用データファイル
    • 辞書にするデータが入力されているCSVファイルを指定します。
      例)辞書作成用データファイル.csv

  • 検索用データファイル
    • 検索対象となる郵便番号が記載されているExcelファイルを指定します。
      例) 検索用データファイル.xlsx

Step 3. 動作に必要な変数を設定・変更(任意)

以下の変数は必要に応じて設定・変更してください。(点線赤枠内)

  • 操作対象シート
    辞書作成用データファイル内のデータのあるシート名を指定します。空白のままであればアクティブシートが対象となります。

  • 辞書作成用データの各値の列番号(キー値(郵便番号)列、情報値a(都道府県)列、情報値b(市区)列、情報値c(町村)列)
    本サンプルシナリオでは同フォルダ内のサンプルデータ(CSVファイル「辞書作成用データファイル.CSV」)を使用する前提で各列番号を指定しています。違う形式のデータを使用する場合は適宜変更してください。

  • 連結対象外文字列
    本サンプルシナリオでは、辞書作成用データI列の値が「以下に掲載がない場合」であった場合は、分岐により変数「登録情報値」の値を形成する文字列連結の対象外としています。他の文字列を連結対象外とする場合は変更してください。

  • 検索対象シート
    検索用データファイル内のデータのあるシート名を指定します。空白のままであればアクティブシートが対象となります。

  • 検索対象値列、検索結果列、取得情報列
    本サンプルシナリオでは同フォルダ内の検索用サンプルデータ(Excelファイル「検索用データファイル.xlsx」)を使用する前提で各列番号を指定しています。違う形式のデータを使用する場合は適宜変更してください。

  • 検索対象行
    本サンプルシナリオで使用する検索用サンプルデータは,見出し行を1行目とし,検索対象データは2行目から開始します。違う形式のデータを使用する場合は適宜変更してください。

  • 辞書名
    任意の辞書名に変更可能です。(ただし空白は不可)

  • Msg_「登録あり」,Msg_「登録なし」
    検索用データファイルの,検索結果列に設置する文言です。辞書検索の結果,取得情報があれば「登録あり」を,キーに該当なく取得情報として空白が返された場合は「登録なし」とします。他の文言を使用したい場合は適宜変更してください。

9418_input1.png

変数一覧

Step 4. サンプルシナリオの実行

WinActorで本サンプルシナリオを実行します。
検索結果と取得情報を検索用データファイルへ書き込み、保存後に閉じ、本サンプルシナリオは終了します。

Step 5. サンプルシナリオの終了後の確認

検索結果及び辞書からの取得情報が、検索用データファイルの「検索結果列」「取得情報列」の各セルに書き込まれています。

トラブルシューティング

本サンプルシナリオでは、変数が正しく指定されなかった場合、エラーメッセージが出力されます。
詳細については、エラーメッセージ一覧を参照してください。

サンプルシナリオ解説

本サンプルシナリオで使用している実装テクニックについて解説します。

1.本サンプルシナリオで使用する「辞書作成用データファイル」について

  • 本サンプルシナリオで使用する辞書作成用データは、日本郵便Webページよりダウンロードした郵便番号データCSVファイルを使用して作成しています。
  • ダウンロードした郵便番号データは、各ファイルとも非常に行数の多いデータです。本サンプルシナリオで使用している辞書作成用データは、処理時間短縮のため、30行に調整しています。新たにダウンロードしたデータでテストを行う際は、行数を適宜減じて使用することをお勧めします。
  • データの開始行は1行目からです。見出し行はありません。
  • C列を「郵便番号」列、G列を「都道府県」列、H列を「市区」列、I列を「町村」列としています。
  • 本サンプルシナリオでは同じ行の郵便番号と地名の組み合わせを辞書に登録します。

    9418_input2.png

辞書作成用データ

2.本サンプルシナリオで使用する「検索用データファイル」について

  • 1行目は見出し行とし、データは2行目から始めます。
  • A列は「検索対象値」列、B列は「検索結果」列、C列は「取得情報」列とします。
  • データ範囲内のA列「検索対象値」列には、途中空白セルはないものとします。
  • 「検索対象値」列の値を「キー」として辞書を検索します。サンプルとして「辞書作成用データ」の郵便番号列に存在する値と、存在しない値の両方を設置しています。
  • 「検索結果」列には、辞書検索の結果、情報が得られた場合は「登録あり」、情報がなかった(辞書内のキーに検索対象値に該当するがものなく、結果として空白が返された)場合、「登録なし」と書き込まれます。
  • 「取得情報」列には、辞書検索の結果、取得した情報が書き込まれます。

9418_input3.png

検索用データ

3.本サンプルシナリオの流れ

本サンプルシナリオは以下の順で動作します。
【1】辞書作成用データの最終行取得
辞書作成用データの最終行を取得します。本サンプルシナリオでは、都道府県の列(変数:データ_情報a(都道府県)列)で取得しています。辞書操作(情報更新)の繰り返し条件として使用します。

【2】辞書作成
辞書作成用データの各行の「郵便番号」を「キー」、地名(「都道府県」「市区」「町村」を連結)を「情報」とした「辞書」の作成(辞書操作(情報更新))を行います。詳細は「4.(詳細)【2】辞書作成について」にて説明します。

【3】辞書情報取得
本サンプルシナリオで作成した「辞書」から「情報」を検索します。検索用データファイル内の検索対象値(郵便番号)を「キー」として、紐づけられた「情報」(地名)を検索します。検索結果と取得情報は、検索用データファイルに書き込みます。 詳細は「5.(詳細)【3】辞書情報取得について」にて説明します。

【4】検索用データファイルを上書きして閉じる
検索結果と取得情報が書き込まれた検索用データファイルを上書きして閉じます。

9418_input4.png

インフローチャート

4.(詳細)【2】辞書作成について

サブルーチン「辞書作成」は大きく以下のグループに分かれます。
① 辞書初期化(操作前準備)
② 繰り返しグループ 辞書作成用データ最終行まで繰り返す
③ 現在の読取対象行の「登録キー値」と「登録情報値」取得
④ キー重複の調査と重複時の処理
⑤ 辞書作成(辞書へキーと情報の登録)
⑥ 辞書作成用データファイルを保存せず閉じる

9418_input5.png

サブルーチングループ「辞書作成」

① 辞書初期化(操作前準備)
辞書操作(情報更新)を行う前に、ライブラリ「辞書操作(初期化)」を設置し、辞書情報を初期化します。本サンプルシナリオではサブルーチン「辞書作成」の「繰り返しグループ 辞書作成用データ最終行まで繰り返す」内に「辞書操作(情報更新)」がありますので、ループに入る前に配置しています。



9418_input6.png

「辞書操作(初期化)」の注釈


② 繰り返しグループ 辞書作成用データ最終行まで繰り返す
プロパティにて、繰り返しの「回数」を変数「データ最終行」(行番号)にします。「カウンタ」に変数「読取対象行」を設置します。(本サンプルシナリオで使用している辞書作成用データの開始行の行番号(読取対象行の開始値)は「1」)

9418_input7.png

繰り返し_最終行まで


③ 現在の読取対象行の「登録キー値」と「登録情報値」取得
現在の「読取対象行」のデータから「登録キー値」(郵便番号)と「登録情報値」(地名)を取得します。
 (1)郵便番号列(C列)の値を取得(値の格納先変数名:「登録キー値」)
 (2)都道府県列(G列)、市区列(H列)、町村列(I列)の値を取得(各値の格納先変数名:「情報値a(都道府県)」、「情報値b(市区)」、「情報値c(町村)」)
 (3)地名(情報)の作成(文字列連結)を行う
  町村列(I列)の値で分岐
  ・連結対象外文字列(「以下に記載のない場合」)であった場合
  ⇒(4)変数「情報値a(都道府県)」、「情報値b(市区)」の各値を文字列連結して「地名」を作成(連結した値の格納先変数:「登録情報値」)
  ・連結対象外文字列(「以下に記載のない場合」)でない場合
  ⇒(5)変数「情報値a(都道府県)」、「情報値b(市区)」、「情報値c(町村)」の各値を文字列連結して「地名」を作成(連結した値の格納先変数:「登録情報値」)

9418_input8.png

読取対象行の各値の取得


④ キー重複の調査と重複時の処理
1つの辞書の中に重複したキーは使えません。本サンプルシナリオでは、辞書作成用データの郵便番号に重複があった場合は、対応する情報(地名)を半角カンマ区切りで連結し、1つのキーに紐づけます。
キーの重複の調査と処理は、次のように行います。
 (1)現在の読取対象行の「登録キー値」を、辞書から検索(「辞書操作(情報取得)」)
 (取得した「情報」の格納先変数:「登録対象存在チェック」)
   この時点で辞書未作成(指定した辞書が存在しない)の場合、取得情報は「空白」となる
 (2)検索の結果で分岐
  (2-1)情報が取得された場合(その「登録キー値」は、すでに登録されている(重複している))
   ⇒同じキーで登録しなおす準備((3)(4))を行う
  (2-2)情報が取得されなかった(空白が返された)場合(その「登録キー値」は、まだ登録されていない(重複していない))
   ⇒そのまま 「⑤ 辞書作成(辞書へキーと情報の登録)」へ進む

 (3)辞書から既存のキーを削除
   現在の「登録キー値」と同じキー(重複するキー)を辞書から削除
   ・プロパティ設定
     辞書名:変数「辞書名」(「Dic_郵便番号から地名」)
     キー:変数「登録キー値」
     辞書有無:「辞書有無」
     削除結果:「削除結果」
 (4)既存の情報と現在の「登録情報値」を連結
   (1)で取得した既存の情報(変数:登録対象存在チェック)と、現在の「登録情報値」を半角カンマ区切りで連結

9418_input9.png

キー重複調査と解消


⑤ 辞書作成(辞書へキーと情報の登録)
以下の変数を使用して辞書の作成(辞書操作(情報更新))を行います。
・変数「登録キー値」(「③ 現在の読取対象行の「登録キー値」と「登録情報値」取得」にて取得)
・変数「登録情報値」(「④ キー重複の調査と重複時の処理」にて取得)
「辞書操作(情報更新)」(辞書「Dic_郵便番号から地名」へのキーと情報の登録)は1件(1キー1情報)ずつ行われます。
・プロパティ設定
  辞書名:変数「辞書名」(変数値一覧で初期値設定「Dic_郵便番号から地名」)
  キー:変数「登録キー値」
  情報:変数「登録情報値」

9418_input10.png

「辞書操作(情報更新)」注釈


⑥ 辞書作成用データファイルを保存せず閉じる
繰り返しループを抜けた後、辞書作成用データファイルを保存せずに閉じます。

5.(詳細)【3】辞書情報取得について

本サンプルシナリオで作成した「辞書」から「情報」を取得します。
検索用データファイルに記載されている郵便番号(検索対象値)を「キー」として、紐づけられた地名(情報)を取得します。
① 検索対象値の取得
② 後判定繰り返しグループ 検索対象値が空白でなければ繰り返す
③ 分岐グループ 検索対象値があれば検索する(検索対象値が空白なら辞書検索はしない)
④ 辞書情報取得
⑤ 検索対象行を+1進める

9418_input11.png

辞書情報取得

① 検索対象値の取得
検索用データファイルの「検索対象値列」の各行の値を取得し、変数「検索対象値」に格納します。

② 後判定繰り返しグループ 検索対象値が空白でなければ繰り返す
現在の「検索対象行」の「検索対象値」が空白でないことを繰り返し条件とします。
「検索用データファイル」のデータ開始行の行番号は「2」です。「検索対象行」のカウントアップは、ループ内に置いたノード「カウントアップ」で行います。

9418_input12.png

後判定繰返プロパティ

③ 分岐グループ 検索対象値があれば検索する(検索対象値が空白なら辞書検索はしない)
「検索対象値」があれば(空白でなければ)辞書情報取得(検索)を行います。「検索対象値」が空白だった場合、辞書の検索(情報取得)は行わず、検査対象行のカウントアップへ進みます。

9418_input13.png

分岐条件_検索対象値がある(空白でない)場合

④ 辞書情報取得
「検索対象値」をキーとして、作成した辞書の検索を行います。

取得した情報は、検索用データファイルの「取得情報列」の各行に書き込みます。
 (1)入力した検索対象値をキーにして辞書の情報取得
  ・「辞書操作(情報取得)」プロパティ設定
    辞書名:変数「辞書名」(変数値一覧で初期値設定「Dic_郵便番号から地名」)
    キー:変数「検索対象値」
    情報:変数「取得情報」

 (2)取得情報の有無で分岐
    検索用データファイルの現在の「検索対象行」の「検索結果列」「取得情報列」のセルに、検索結果、取得情報を書き込む(辞書内に該当するキーがなければ、取得情報は空白)
    (2-1)情報が取得された場合
      ⇒検索結果と取得情報を各セルに書き込む((3)(4)を行う)
    (2-2)情報が取得されなかった(空白が返された)場合
      ⇒検索結果のみを各セルに書き込む((5)を行う)
 (3)取得情報がある場合は、検索結果列に「登録あり」と書き込む
 (4)取得した情報を、取得情報列に書き込む
 (5)取得情報がない(空白)場合は、検索結果列に「登録なし」と書き込む(取得情報列への書き込みはなし)

9418_input14.png

辞書情報取得


⑤ 検索対象行を+1進める
「検索対象行」を加算値「1」でカウントアップし、行を進めます。

6.【参考】「情報」の重複について

辞書操作(情報更新)では、キーが異なれば、同じ「情報」の登録はできます。
下記の表データをもとに、辞書「サンプル辞書」を作成(辞書操作(情報更新))するとします。
このデータでは、キーの重複はありませんが、情報は2行目と4行目の「ぶどう」が重複しています。
この場合、キー「grape」に情報「ぶどう」、キー「raisin」に情報「ぶどう」を、それぞれ紐づけることができます。

9418_input15.png

「サンプル辞書」データ

7.【参考】辞書操作(ダンプ)

辞書の登録内容を確認したい場合は、「辞書操作(ダンプ)」を使います。(本サンプルシナリオでは設置していません。)
辞書作成終了以降のシナリオフローチャート内に設置してください。
辞書の内容が記載されたテキストファイルが作成されます。

9418_input16.png

参考_辞書ダンプ

変更履歴

版数日付修正内容
版数
1.0版
日付
2020/5/27
修正内容
初版

本サンプルシナリオをダウンロードする前にこちらの注意事項を必ずご確認ください。

サンプルシナリオ一覧へ戻る
このウェブサイトでは、お客様に最適なユーザー体験を向上するためにCookieを使用しています。
本サイトをご利用いただくことにより、お客様がCookieの使用に同意されたものとみなします。
弊社のCookieの使用に関する方針の詳細は、
「プライバシーポリシー」をご確認ください。