e-Gov 法令ケーススタディ:プロローグ

e-Gov(イーガブ)ポータルは、総務省行政管理局が整備、運営するWebサイトですが、その中の「e-Gov 法令検索」で、XMLファイル形式の法令(憲法・法律・政令・勅令・府令・省令・規則)をダウンロードすることができます。

出典:e-Govポータル(https://www.e-gov.go.jp

その「利用規約」に基づき、ダウンロード・公開できる法令(XML形式)を1つ、例としてブラウザ表示した画像を以下に載せます。

出典:e-Gov 法令検索 XML一括ダウンロード(https://elaws.e-gov.go.jp/download/

f:id:xoblos:20210827072623p:plain

XMLフラット化:外部公開されているXMLデータを活用する https://xoblos.hatenablog.jp/entry/2021/08/13/020135

xoBlos ビューア(xoBlosViewer.exe)のショートカット利用

抽出データ(XMLデータ)を表示させるとき、[実行結果] タブ表示で、表(テーブル)型のアイコンをクリックすると開くのが xoBlos ビューアです。

f:id:xoblos:20210825025329p:plain

xoBlos ビューアは、抽出データ(xoBlos 形式XMLデータ)を表(テーブル)形式で表示するデータビューアです。[実行結果] タブ表示以外から、直接XMLファイルをビューアで開きたいときは、xoBlos ビューアのショートカットを作っておくと便利です。

xoBlos ビューアのプログラムは、クライアント製品をインストールしたフォルダ(例:C:\Program Files (x86)\DIT\xoBot Solo)の下にある、xoBlosViewer.exe です。

f:id:xoblos:20210825025346p:plain

上図のように、デスクトップに作成したxoBlos ビューアのショートカットに、抽出データ(xoBlos 形式XMLデータ)ファイルをドラッグ&ドロップすると開けます。

f:id:xoblos:20210825030925p:plain

 

xobQuery:クエリ(SQL)省略型でデータ形式を変換する

DB処理原型の青写真

f:id:xoblos:20210803001841p:plain

コマンドライン引数のサンプル

-i INPUT\input.csv/work -h -q "SELECT * FROM work;" -o OUTPUT\output.xml

クエリ(SQL)省略型の青写真

f:id:xoblos:20210819033822p:plain

全件(全レコード)を形式変換のみで処理するときは、クエリ(SQL)が省略できます。

コマンドライン引数のサンプル

-i INPUT\input.csv/work -h -o OUTPUT\output.xml/work

出力ファイル指定で「~/work」と、データ投入したテーブル名を指定するのがポイントです。入力ファイル名にワイルドカード(*)を使用できるところが便利です。

Designer:複数のCSVファイルを1個のファイル(CSVXML)に変換する https://xoblos.hatenablog.jp/entry/2017/07/02/003829

f:id:xoblos:20210809200451p:plain

詳しくは、xobQuery のヘルプ(-? オプション)を参照してください。

Designer:xobQuery のヘルプページ
https://xoblos.hatenablog.jp/entry/2019/04/23/151411

xbtrun(ゾボットラン):-s 業務サイトフォルダ名(site_dir_name)

xoBlos コントローラーで xbtrun をサーバー実行する場合は、必ず -s オプションで業務サイトフォルダ名を指定します。


-f 利益分析.xob -s 経営資料

 この例は、「経営資料」という業務サイトフォルダ(corabo で設定)にある「利益分析.xob」という業務定義ファイルを実行するときのオプション設定例です。

この業務は、タスクスケジューラ、RPA、システム運用管理ソフトなどから自動実行(無人運転)されることもあり、Webアプリ(corabo)から利用ユーザーが手動実行することもあるため、セキュリティチェック、排他制御の考えが必要になるからです。

ただし、完全に無人運転(自動実行)のみの運用で、corabo から起動する必要がない場合は、xoBlos のファイルルートの下に業務フォルダを配置するだけで、corabo での業務サイト設定は必要ありません(-s オプションの指定は必要です)。


xbtrun ヘルプ(-? オプションで表示)より抜粋

-s site_dir_name

(サーバー実行用) corabo のサイトフォルダ名。

このオプションを指定すると、xoBlosサーバーで処理を行います。サイトフォルダとは、corabo 環境(corabo Web アプリが導入されている環境)で、「xoBlosFileRoot」以下に作成される、各「サイト」用のフォルダです。

既定の実行サーバーは、構成ファイル(xbtrun.exe.config)で設定されているものです。corabo と同様のセキュリティチェック、排他制御が行われます。ただし、corabo のサイト変数、corabo のログインユーザーに関連する SYS_ 変数の値は引き渡されません。

 

番号付け:指定行数を上限にしてシート分けする

目標(GOAL)

Excelシートにデータを入力する(インポートする)とき、指定された行数上限を超えた場合、別シートにデータを入力してシート分けしていく要件。下図は、100行単位でシート分けしている例です。

f:id:xoblos:20210816004910p:plain

f:id:xoblos:20210816004928p:plain

指定行数単位で「シート番号」を付けておく手法

上図のように100行単位でシート分けしたい場合、1~100行まではシート番号「1」、101~200行まではシート番号「2」、201~300行まではシート番号「3」というように、「シート番号」を抽出レコードに持たせればよさそうです。

f:id:xoblos:20210816005155p:plain

後はこのデータを後続生成手順で、次のような制御シートの「シート分割」キーワードを使ってシート分けします。

f:id:xoblos:20210816005114p:plain

このような「レコード番号」「シート番号」をレコードに振り付けるには、「抽出データの番号付け」手順を使用します。

「抽出データの番号付け」手順

デザイナの [新しい手順]-[抽出データを作成する]-[他の抽出データから(番号を振って)] メニューを選びます。

f:id:xoblos:20210814184723p:plain

f:id:xoblos:20210816004620p:plain

入力ファイルと出力結果の例

xoBlosビューアで表示した 販売データ.xml

f:id:xoblos:20210815101846p:plain

xoBlosビューアで表示した output.xml(出力結果)

f:id:xoblos:20210816004752p:plain

番号付け設定ファイル

「番号付け設定ファイル名」で指定する設定ファイル(XMLファイル)です。文字コードUTF-8で保存してください。<番号タイプ> を「Page」にして、シート番号を振る指定にしています。<容量> が行数上限です。

番号付け_指定行数グループ化.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <Number>
    <OutputItem>
     <項目名>レコード番号</項目名>
  </OutputItem>
  
    <OutputItem>
     <項目名>シート番号</項目名>
     <番号タイプ>Page</番号タイプ>
     <容量>100</容量>
  </OutputItem>
 </Number>
</Root>

番号付け:レコードに連番(通し番号)を振る

「抽出データの番号付け」手順の入門編として、もっとも簡単な設定例を解説します。

レコードに連番(通し番号)を振る必要がある場合、Excel表を生成」手順の制御シートで、予約変数「%Row」を使用することが多いかと思います。

%Row」で振られた行番号(レコード番号)は、「入力した順に1000000を加えて先頭に"R"を付けた文字列が入る」という仕様のため、数字だけの連番にするためには一工夫が必要です。そんなときには、この記事を参考にしてください。

「抽出データの番号付け」手順

デザイナの [新しい手順]-[抽出データを作成する]-[他の抽出データから(番号を振って)] メニューを選びます。

f:id:xoblos:20210814184723p:plain

f:id:xoblos:20210815101732p:plain

入力ファイルと出力結果の例

xoBlosビューアで表示した 販売データ.xml

f:id:xoblos:20210815101846p:plain

xoBlosビューアで表示した output.xml(出力結果)

f:id:xoblos:20210815101907p:plain

番号付け設定ファイル

「番号付け設定ファイル名」で指定する設定ファイル(XMLファイル)です。文字コードUTF-8で保存してください。<項目名> には、「レコード番号」の他に「連番」、「通し番号」などの任意の名前が付けられます。

番号付け_レコード連番.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <Number>
    <OutputItem>
     <項目名>レコード番号</項目名>
  </OutputItem>
 </Number>
</Root>

番号付け:グループ単位で明細行に連番を振る

「抽出データの番号付け」手順

デザイナの [新しい手順]-[抽出データを作成する]-[他の抽出データから(番号を振って)] メニューを選びます。

f:id:xoblos:20210814184723p:plain

f:id:xoblos:20210814184742p:plain

入力ファイルと出力結果の例

input.xml の内容

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <ROWS>
    <伝票番号>125007</伝票番号>
    <商品名>ノートB5</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125007</伝票番号>
    <商品名>ボールペン黒</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125007</伝票番号>
    <商品名>ボールペン赤</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125008</伝票番号>
    <商品名>定規</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125008</伝票番号>
    <商品名>マーカー</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125009</伝票番号>
    <商品名>鉛筆</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125009</伝票番号>
    <商品名>スケッチブック</商品名>
  </ROWS>
  <ROWS>
    <伝票番号>125009</伝票番号>
    <商品名>消しゴム</商品名>
  </ROWS>
</Root>

xoBlosビューアで表示した input.xml

f:id:xoblos:20210814184846p:plain

xoBlosビューアで表示した output.xml(出力結果)

f:id:xoblos:20210814184911p:plain

番号付け設定ファイル

「番号付け設定ファイル名」で指定する設定ファイル(XMLファイル)です。文字コードUTF-8で保存してください。<項目名> には、「明細行番号」の他に「連番」、「レコード番号」などの任意の名前が付けられます。

番号付け_グループ内連番.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <Number>
    <OutputItem>
     <項目名>明細行番号</項目名>
   <変化監視項目>伝票番号</変化監視項目>
  </OutputItem>
 </Number>
</Root>

「グループ単位で明細行に連番を振る」応用

上記の例では、「伝票番号」ごとに「明細行番号」を振り付けていますが、この「伝票」-「明細」のような2階層でのデータ表現は、ビジネスシーンではよく登場します。

明細行を持つ帳票(見積書、納品書、請求書、受領書など)、プロジェクトごとの原価レコード、日別の売上レコード、などです。

業務要件やシステム要件によっては、グループ単位で連番を振ることにより、実装を効率的に行えることもあります。

例えば、OBC 勘定奉行の会計仕訳データ(CSV)では、伝票番号単位で明細1行目(先頭レコード)には、第1項目(A列)に「*」(アスタリスク)を入れるというデータ仕様があります。この場合、「抽出データの番号付け」手順で「伝票番号」ごとに連番を振り、後続手順で連番「1」のレコードに「*」を付けるという手法がとれます。