eDocArrangementを使った自動処理入門

仕様書の作成
Creating specifications

eDocArrangementを使った自動処理では、そのほとんどがファイルを扱う処理となります。

フォルダを監視して、ファイルから情報を読み取り、XDW文書の加工を行い、処理済みフォルダに配信するという流れが基本なります。

そのような設定を行うのに、どのような情報が必要となるか考えてみてください。

必要な情報を省略せずに間違いなく記載する

設定を作成する際には、監視するフォルダのパスや、文書の移動先のフォルダパスとファイル名を入力する必要があります。それらが設定に記載されていないと、設計者に確認をすることになります。

その確認にかかる時間を想像してみてください。メールで確認する場合、どの処理のどういった条件で処理される仕様のことについて確認したいかを記載して、ファイル名をどのように変更するかを尋ねないといけません。

設計者もそのメールを読んで仕様を確認し、仕様書に追記を行い、メールの返信をしなければなりません。

そういったことを避けるためには、仕様書にたった一行、「ファイル名は[処理年月日(yyyymmdd) + ".xdw"]とする。」と書いてあれば、メールのやり取りをしないで済むのです。

最低限、以下のような情報を記載する

仕様書には最低限、以下のような情報を記載する必要があります。

  • 監視フォルダや、文書のコピー先、移動先のパスとファイル名。
  • 入力文書からの情報取得方法。(ファイル名、OCR、テキスト抽出、アノテーション読み取り、QRコード読み取り、属性読み取り等)
  • マスタファイルなどの関連ファイルの参照方法。関連ファイルの内容。
  • 文書の加工方法。(属性設定、アノテーション貼り付け等)
  • 処理済みファイルの移動先のパスとファイル名。

上記の情報に加えて、その仕様を決めた経緯や理由等を記載すると、より良くなります。

例えば、

  • 現在は、印刷した書類に人がナンバースタンプで1枚ずつ判を押しています。
  • 既にDocuWorksを利用していて、人が番号のアノテーションを手動で入力して貼り付けています。

のような情報が記載されていれば、設定を作成する人や、何年後かに引き継いだ担当者が、導入時の経緯を知ることができます。

そういった経緯を知れば、「導入前はとても大変な作業をしていたのだな。」と、「この仕組みを導入することで役に立てる」と思うこともあるでしょう。これも、たった一行記載するだけで、設定を作成する人や、後に引き継ぐ担当者のモチベーションを上げることができるのです。

仕様書は現在携わっている人達だけでなく、未来に仕様を理解する人のための資料でもある

仕様書作成のポイント
The points for creating specifications

eDocArrangementはフォルダ監視でファイルを処理する方式で、比較的簡単に自動化を行うことができます。

ここでは、サーバーに用意した共有フォルダに、XDW文書を格納すると、連番アノテーションを貼り付けて、処理済みフォルダに移動する仕組みを例にして、仕様書作成のポイントを説明していきます。

注文書 9 申し込み書 プランA
フォルダ監視
参照/更新
連番ファイル
サーバー
\10_受付\伊藤
文書-1.xdw
連番貼付け
コピー
\20_処理済\伊藤
0001
20190615_0001.xdw
格納
連番貼付け
移動
\50_保管\2019\06
0001
20190615_0001.xdw
PC

フォルダ構成について

フォルダ構成は以下の様に作成します。

この例では、「10_受付」フォルダの担当毎のフォルダにファイルを格納すると、連番を文書に貼り付けて、「20_処理済」フォルダの担当毎のフォルダに移動するという処理を想定しています。

また、同時に「50_保管」フォルダに処理年、処理月のフォルダを自動作成し、コピーを格納します。

フォルダ名について

フォルダ名は、DocuWorks Deskで表示した際に、任意の順番になるようにしたいため、「10_受付」、「20_処理済」のように先頭に番号をつけます。

番号を「10」、「20」としているのは、後から(運用開始後など)「受付」と「処理済」の間にフォルダを挿入できるようにするためです。

例えば、後からエラーとなったファイルを格納するフォルダを追加したい場合、「15_エラー」とします。

  • C:\Home\富士ゼロックス_20190615
    • 10_受付
      監視フォルダ。配下のフォルダも監視する。
      • 伊藤
        • 文書-1.xdw
          入力ファイル。
      • 山本
      • 西田
    • 20_処理済
      処理済みファイルの移動先。監視フォルダと同名のフォルダを自動作成する。
      • 伊藤
        • 20190615_0001.xdw
          「処理年月日 + "_" + 受付番号(4桁ゼロ埋め) + ".xdw"」にリネームする。
      • 山本
      • 西田
    • 50_保管
      処理済み文書の保管先。年、月のフォルダを自動作成する。
      • 2019
        • 06
          • 20190615_0001.xdw
            「処理年月日 + "_" + 受付番号(4桁ゼロ埋め) + ".xdw"」にリネームする。
    • 90_System
      eDocArrangementが使用するフォルダ。必要なファイルや、ログファイルを出力するフォルダ等を用意する。
      • 10_連番
        • 受付番号.txt
          連番管理ファイル。
      • 90_Log
        ログの出力先。

監視フォルダ

監視フォルダは「10_受付」ですが、担当者毎にフォルダを分けたいとします。eDocArrangementのフォルダ監視は、下位のフォルダを監視する機能があるので、「10_受付」フォルダの下に担当者毎のフォルダを作っても、その中のファイルを処理できます。

仕様書には、「10_受付」の下に担当者毎のフォルダを作成することと、そこに格納する文書の名前は任意の名前とすることを記載して、例として、「\10_受付\伊藤」や、「文書1.xdw」のような例を記載すればよいです。

仕様書記載例:

監視フォルダは「\10_受付」の中に担当者毎のフォルダを作成し、フォルダ配下を監視するようにします。

例えば、「\10_受付\伊藤」に「文書1.xdw」のようなファイルが入る想定です。

情報の取得

この例では、担当者毎のフォルダに入った文書を、「処理済み」フォルダの下の同じ担当者のフォルダに入れる必要があるので、入力文書のパスからフォルダ名を取得します。

また、処理日付をファイル名に付与したいので、システム日時から年月日(yyyymmdd)を取得します。

また、連番をアノテーションとして貼り付けたいので、連番管理ファイルから番号を取得し、貼り付け後に連番ファイルの番号をカウントアップします。

連番管理ファイルについては、下記「 関連ファイルの参照 」をご参照下さい。

仕様書には、入力のフォルダ名から担当者の名前を取得することと、日付をシステム日付から取得すること、連番をテキストファイルを使って管理・取得することを記載します。

仕様書記載例:

「入力フォルダ名から担当者名を取得します」

「連番を、テキストファイルで管理・取得します」

「日付(yyyymmdd)はシステム日付から取得します」

関連ファイルの参照

連番は、テキストファイルで管理します。番号をテキストファイルから読み込んで、アノテーションとして貼り付けたら、カウントアップして書き込みます。

仕様書には、連番はテキストファイルに保存して管理することを記載します。

仕様書記載例:

「連番はテキストファイルに保存して管理します」

文書の加工方法

連番をテキストアノテーションで貼り付けます。入力ファイルが複数ページある場合は、先頭ページだけなのか、全てのページに貼り付けるのかや、貼り付ける位置、フォントや大きさなどの情報が必要になります。サンプルファイルを用意して、実際に貼り付けた後のイメージを用意するとわかりやすいです。

前述した内容を記載しても良いですが、フォントの情報等も記載すると細かくなりすぎるので、サンプルファイルを用意して、仕様書には、貼り付けページや、大体の位置、文字のフォーマットなどを記載します。例えば、以下の様に記載します。

仕様書記載例:

「先頭ページの左上に、取得した連番をゼロ埋め4桁(0001)で文字色黒で貼り付けます」

連番について

桁数について

貼り付ける連番の桁数を考える際に、以下のようなことを考えてみて下さい。

例えば、現在は、一日に100件程度の注文(ファイル)があり、稼働日20日間ではファイルは2000件程度。つまり、月毎にリセットするなら、4桁あれば良いと考えられます。

ただし、今後長いスパンで考えた場合、売り上げが増えれば、一日に500~1000件単位の注文が発生することもないとも言えない、そうすれば、一か月のファイル数は10000を超えることとなり、桁数は5桁必要となります。

このように、お客様の立場に立って先のことを考えれば、後々困ることのない設計ができます。

日付を含んだ連番について

連番をファイル名に使用する場合、個々の連番は、ユニーク(唯一無二)なものが望ましいのですが、月毎・年毎などでリセットされる設定の場合、その月・年毎に同名のファイルができてしまいます。 また、リセットしない場合は、連番が長くなり、それも不便が生じる場合があります。

そのような問題は、例えば、ファイル名に日付情報を付加すると解決できます。

リセットのタイミングによって、「2019_06_0001」や「2019_0001」などとすれば、見やすく管理しやすい連番となります。

処理済みファイルの移動

この例の様に、ひとつのファイルを2箇所に配信する場合は、コピーと移動を使います。

処理済みのファイルは、「20_処理済」のファイルに格納しますが、その際に、文書が格納されたフォルダより担当者の名前を取得し、その名前のフォルダを作成してからその中に格納します。

また、そのファイルのコピーを作成し、それを「50_保管」フォルダに、「処理年」「処理月」のフォルダを自動作成し、その中へ移動します。

仕様書には、処理済フォルダにコピーして、保管フォルダに移動すると記載します。

仕様書記載例:「処理済フォルダにコピーして、保管フォルダに移動します」

「年」と「年度」の違い

仕様書などに「〇〇年度」と書かれている場合、1月1日から12月31日までの1年間つまり暦年を指す「年」とは異なります。「年度」とは通常、暦年とは異なる区分で定めた期間のことを指します。一般的なのは「4月1日 ~ 翌年3月31日」です。

ですので、例えば、1月~12月までで処理済みのファイルを保存するフォルダ名には「〇〇年」と記載するのが正しい表記です。

もちろん、会計年度などのように、4月~翌年3月までを表す場合は、その限りではありません。

必ず記載すること
Things to be mentioned

仕様を書く際に、必ず書いておきたい事があります。

  • 条件やパターンが複数ある場合は、全組み合わせの列挙

例えばファイルの移動先に「年、月のフォルダを作成します。」と書いてあったとして、その後に、

\50_保管\2019\06\20190615_0001.xdw 等と具体例を書くことにより、

\50_保管\201906\~ と区別でき誤解を防ぐことができます。

同じ「年、月のフォルダ」でも、前者は「年」のフォルダの中に「月」のフォルダがあるのに対して、後者は「年・月」合わせたフォルダ名となっています。

条件やパターンが複数ある場合は、全組み合わせの列挙を

条件やパターンが複数ある場合は、考え得る全組み合わせを書いて下さい。

例として、「受付フォルダ」に「作業指示書_調達」「作業指示書_組み立て」「作業指示書_保管」の3つのファイルが入るとします。

ただし、いつもこの3つのファイル全てが揃うとは限りません。組み立てる必要がないものなら「調達」+「保管」、既に材料はあるものなら「組み立て」+「保管」などのように。

ですので、組み合わせとしては、<3つ揃った場合><2つずつの場合><1つずつの場合>と、組み合わせを表などにして、全て洗い出すことが重要です。また、それに加えて、<一つもない場合>などのイレギュラーなケースも想定しておくことも必要です(0件テスト)。

また、処理の流れを、各段階別に記すだけではなく、一連の処理の流れを、パターン別に全て挙げていただくとわかり易いです。

パターン1 調達・保管
パターン2 調達・組立・保管
パターン3 組立・保管

「パターン1の場合は、〇〇の処理をします。」

「パターン2の場合は、△△の処理をします。」

「パターン3の場合は、~」

というように、パターン毎に説明を加えて下さい。

フル桁・マイナス

連番などの数字を扱う場合、フル桁を考慮した仕様や、番号がマイナスになる可能性がある場合は、それを考慮した仕様が必要です。

気をつけること
Precautions

仕様書の作成では、以下のことに注意します。要件定義の「気をつけること」と重複する部分もありますが、仕様書はより細かく記載します。

  • 用語の統一
  • 資料の誤り、漏れ、表記揺れのチェック
  • 仕様変更や、仕様書に誤りを見つけた場合に仕様書を更新する

用語の統一

要件定義や、システム設計の工程では、ユーザー様の業務で使用している用語や帳票の名前等を扱うことになります。

仕様書を基にプログラム設計を行うため、用語に表記揺れ等があると、関係者間での情報共有に支障がでます。

一つの物を表現する用語は必ずユニークになるように、定義、命名するようにすることが重要です。

例えば、ユーザー様で扱っている、ある帳票を「申請書」と呼んだり、「申請用紙」と呼んだりしていたとします。この2つの帳票は同じものなのか、それとも違うのかを明らかにして、同じものであれば、「申請書」のみを使うようにしていく提案をします。(少なくとも要件定義書、仕様書等では、「申請書」と表記するように統一します。)

別の例では、「見積もり番号」と「見積番号」のような表記ゆれがあると、自動処理の過程で、文書属性に見積番号を登録したい場合、どちらの表記で登録すればいいのか、曖昧になります。

資料の誤り、漏れ、表記揺れのチェック

これは当たり前のことかもしれませんが、作成する要件定義書や、仕様書、または関係者間でやりとりするメールの内容は、必ず見直しを行い、誤字脱字、表記揺れ等をなくすように心がけます。

システム開発で扱うドキュメントは、複数の人で共有して、意思疎通を行うための重要なものです。そのドキュメントに不備があると、仕様の再確認や、誤解、設定の作り直しや、修正等の様々な問題が発生することになります。

完璧でなくても、少し気を遣い、作成後にセルフチェックを行うだけでも、大きな効果が期待できます。

良くある誤りや表記揺れ

  • コピペして一部を変更した場合

    よく似た文章を複数書く場合に、一つ目に書いた文章をコピーして、違う部分のみを書き換えるような作り方をした場合、かなりの確率で書き換え忘れが起こりますので、ご注意ください。

    よくある書き換え忘れの例:

    コピー元

    「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」

    コピー先

    「先頭が「発注番号:」で始まるアノテーションを検索し、「発注番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。 見積番号 は数字のみです。」

    上記の例の場合、コピー先の最後の「見積番号」を「発注番号」に書き換え忘れています。

    このように複数箇所を書き換える場合は、アプリケーションの置換の機能を使うとミスを防ぐことができます。

    また、同じ様な処理の仕様を記述する場合に、一つの処理内容をコピーして、その中の一部分のみを変更するだけの記述ですと、変更箇所を認識するのに時間がかかる場合があります。

    その場合は、以下の様に記載すると良いです。

    悪い例:

    処理A「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」

    処理B「先頭が「発注番号:」で始まるアノテーションを検索し、「発注番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。発注番号は数字のみです。」

    良い例:

    処理A「先頭が「見積番号:」で始まるアノテーションを検索し、「見積番号:」の後ろの番号を取得後、ファイル名の先頭に番号を付与します。見積番号は数字のみです。」

    処理B「処理内容は、処理Aの「見積番号」の記載を、「発注番号」に置き換えた内容となります。」

    「同上。ただし、”○○”は”△△”とする。」などと書いて頂いても、わかり易いです。

  • 仕様変更時の仕様書の更新忘れ

    前述の「コピペして一部を変更」とよく似ていますが、最初に作成した仕様書の一部が変更になった場合、仕様書内の全ての箇所を変更する必要がありますが、多くの場合で、変更忘れが発生します。

    これもアプリケーションの検索や置換の機能を使って、変更するとミスが減ります。また、フォルダ構成などのキャプチャ画像では、フォルダの名前が変わった場合に、差し替える必要があります。

  • 全角と半角(住所1 or 住所1)、大文字と小文字(受付NO or 受付No)は、それぞれ異なった文字として認識されますので、統一して表記して下さい。特に、属性やマクロで使用する変数で用いる場合は、特にゆれがないよう注意が必要です。
  • 処理の流れを記述する際に、先にあったとある工程が、次の段階では不要、という場合、不要だからと記述を省略しただけだと、「不要だから書いてない」のか、「書き忘れ(ミス)」なのか、の判断ができません。そのような場合は、「省略した」ことがわかるような一言を書き加えて下さい。例えば、ファイルの移動処理においてファイル名の変更がない場合は、「ファイル名の変更なし」と明記して下さい。

仕様変更や、仕様書に誤りを見つけた場合に仕様書を更新する

導入までに、一度決めた仕様が変更になる場合があります。その場合は、必ず仕様書を更新してください。仕様書は後に残すためのものでもあります。できる限り更新して、常に最新の状態にしておくことが望ましいです。

必要なことが書いてあればよい
Writing only what is necessary

仕様書に必要なことは、「必要なことが漏れなく記載されていること」です。それに加え見栄えが良いとより良いですが、テキストだけのシンプルな仕様書でも、必要なことが漏れなく記載されていれば、それで良いのです。

良くない例

  • ファイルについての記載がない。
  • 余分な装飾(吹き出しなど)でかえって図が見にくくなっている。
  • 「連番を指定箇所に」とあるが、具体的な貼り付け箇所の記載がない。
  • 「担当フォルダ」とあるが、担当の名前をどのように参照するのかが不明。
  • 「処理済フォルダ」と「保管フォルダ」には、文書がコピーされるのか、移動なのかや、それぞれのフォルダの違いが不明。
  • スケール感について。A4の仕様書に対してイラストとか文字が大きすぎると、細かいことを書くスペースがなくなる。

例えば、上記の「 仕様書作成のポイント 」で挙げた例をテキストだけでまとめた仕様は、以下のようになります。

  1. 監視フォルダ:サーバーに監視フォルダ「10_受付」を作成し、更にその下に担当者毎のフォルダを用意する。そこに格納する文書ファイルは、任意の名前とする。

    例)\10_受付\伊藤(担当者ごとのフォルダ)¥文書1.xdw

  2. 文書の加工:上記フォルダに文書が格納されたら、連番管理ファイルを参照し連番を取得し、先頭ページに、ゼロ埋め4桁(例:0001)で貼り付けする。貼り付け位置は左上、文字色は黒色とする。また、文書のファイル名を、「yyyy㎜dd(システム日付)_連番.xdw」と変更する。

    例)ファイル名:20190615_0001.xdw

  3. 連番の管理:連番は、テキストファイルにて管理する。上記の処理で連番が取得されたら、カウントアップして保存。連番管理ファイルは、「90_System」フォルダ下「10_連番」 に作成する。

    例)\90_System\10_連番\受付番号.txt

    この仕様はeDocArrangementでの実装方法なので、記載がなくても良いと思います。ですが、記載しておけば、連番はテキストで管理しているという仕様が読み取れるようになります。

  4. 処理済みファイルの移動:処理済みのファイルは、「20_処理済」フォルダ下に、文書格納時のフォルダの担当者名のフォルダを自動作成して、そこに移動する。またファイルのコピーを作成し、そちらは、「50_保管」フォルダに、「処理年」「処理月」のフォルダを自動作成し、その中へ移動する。

    例)\20_処理済み\伊藤\20190615_0001.xdw

    例)\50_保管\2019¥06\20190615_0001.xdw

  5. ログの管理:処理のログは、「90_System」下の「90_Log」に出力する。

    この仕様はeDocArrangementでの実装方法なので、記載がなくても良いと思います。ですが、記載しておけば、ログファイルがどの場所に保存されているか読み取れるようになります。