リファクタリング後のフォルダ構成とバッチファイル を確認しよう
本記事では東京都コロナウイルス発症者に関連した3種類の発症者推移グラフ を作成することを目的として 記事#25で実施したリファクタリングへの理解をさらに深めるために、これらのツール開発環境のフォルダ構成、バッチファイルの内容について簡単に紹介します。
フォルダ構成の詳細
このリファクタリングの前提として
の中で紹介されているバッチファイルを適用し、作成されたツールのフォルダ構成は以下のようになっています。
%USERPROFILE%
%USERPROFILE% 配下には以下のようにツール開発に必要なツールそのもの(Tools)、ツールに関連したログ(Tools_Data_Logs)、テンプレート等の静的データ(Tools_Data_Static)、ツールの実行の都度テンポラリ情報として内容の書き換えが行われる動的データ(Tools_Data_Temp)を格納するフォルダ類が配置されます。
%USERPROFILE%\Tools
%USERPROFILE%\Tools 配下には業務開発を目的としてユーザーが作成した Access ツール(accdb)、バッチファイル(bat) 等が保存されるフォルダが配置されます。
%USERPROFILE%\Tools\accdb
%USERPROFILE%\Tools\accdb 配下には各種 Access ツール群が配置されます。
%USERPROFILE%\Tools\bat
%USERPROFILE%\Tools\bat 配下には各種バッチファイル群が配置されます。
MakeMyToolsEnvironment.bat はこのツール環境を作成するバッチファイル、MakeTodaysFolder.bat は 記事 【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する で利用しているバッチファイルです。
%USERPROFILE%\Tools_Data_Static\xlsx
%USERPROFILE%\Tools_Data_Static\xlsx 配下には Excel で作成されたグラフ描画等の各種テンプレートファイル群が配置されます。これらのファイルは利用にあたり事前に
%USERPROFILE%\Tools_Data_Temp\xlsx 配下にコピーして使用します。
これは不慮のアクシデント等によりグラフ描画等のテンプレートファイルが破壊されツールが機能不全になることを防ぐためのバックアップと位置づけています。
%USERPROFILE%\Tools_Data_Temp¥xlsx
%USERPROFILE%\Tools_Data_Temp\xlsx 配下には各種ツールが一時的に利用する各種 Excel シートを配置します。これらのフォルダ内のファイルは利用に先立ち事前に削除される前提で利用します。
yyyymmdd で代表されるフォルダは 記事 【Windows業務効率化】バッチファイルを使って年月日名のフォルダを自動生成する がタスクスケジューラ経由で起動されたことで生成されたフォルダです。
バッチファイルの詳細
作成_東京都コロナウイルス_発症者推移グラフ.bat の全体像を確認する
記事#25 で紹介したリファクタリング後のバッチファイル
作成_東京都コロナウイルス_発症者推移グラフ.bat
は以下のようなものでした。
@echo off
setlocal
rem スリープタイマ値を設定する
set wait_time=2
echo 01.%USERPROFILE%\Downloadsに移動
timeout /t %wait_time% > nul
cd %USERPROFILE%\Downloads
if exist 130001_tokyo_covid19_patients.csv (
echo 02.旧 130001_tokyo_covid19_patients.csv ファイルを削除
timeout /t %wait_time% > nul
del 130001_tokyo_covid19_patients*.*
del /Q %USERPROFILE%\Tools_Data_Temp\xlsx\*.*
)
echo 03.新 130001_tokyo_covid19_patients.csv ファイルをダウンロード
timeout /t %wait_time% > nul
cd %USERPROFILE%\Tools\accdb
入手_130001_tokyo_covid19_patients_csv.accdb
echo 04.%USERPROFILE%\Tools\accdbに移動
timeout /t %wait_time% > nul
cd %USERPROFILE%\Tools\accdb
echo 05.130001_tokyo_covid19_patients.csv から T0000_東京都コロナ発症状況_マスタ を作成
timeout /t %wait_time% > nul
作成_T0000_東京都コロナ発症状況_マスタ.accdb
echo 06.T0000_東京都コロナ発症状況_マスタ から T1040_日付_退院者数_入院者数_退院率.xlsx を作成
timeout /t %wait_time% > nul
作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb
echo 07.T0000_東京都コロナ発症状況_マスタ から T2040_日付_女性入院者数_男性入院者数.xlsx を作成
timeout /t %wait_time% > nul
作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb
echo 08.T0000_東京都コロナ発症状況_マスタ から T3200_日付_年代別入院者数.xlsx を作成
timeout /t %wait_time% > nul
作成_T3200_日付_年代別入院者数_xlsx.accdb
echo 09.3つのグラフ描画用データをそれぞれのグラフ描画用テンプレートにコピー
timeout /t %wait_time% > nul
copy %USERPROFILE%\Tools_Data_Static\xlsx\*_グラフ.xlsx %USERPROFILE%\Tools_Data_Temp\xlsx
更新_東京都コロナ感染者分析グラフ_xlsx.accdb
echo 10.T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
echo 11.T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
echo 12.T3200_日付_年代別入院者数_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数_グラフ.xlsx
endlocal
pause
explorer /e ./root,%USERPROFILE%\Tools_Data_Temp\xlsx
このバッチファイルの中には 記事#23 同様
- バッチファイルとして共通的に使用される基本テクニック部分
- この処理のために個別に定義されている部分
がありますが、この基本テクニック部分については
で詳しく紹介してますので、こちらを参照してください。
以降ではこのバッチファイルの目的にそった個別部分について紹介します。
タイマー付メッセージを出力する
このバッチファイルには
rem スリープタイマ値を設定する
set wait_time=2
で変数 %wait_time% に 2 に設定(=待ち時間を2秒に設定)したうえで各パート毎に
echo 01.ダウンロードフォルダに移動
timeout /t %wait_time% > nul
といった記述で 記事#23 同様
- 動画で処理がどこまで実行されたかを確認しやすくする
- バッチファイルの実行を適度に遅くして動画で確認しやすくする
という目的で意識的に待ち時間を入れています。
ダウンロードフォルダ配下を初期化する
このバッチファイルの以下の部分
cd %USERPROFILE%\Downloads
if exist 130001_tokyo_covid19_patients.csv (
echo 02.旧 130001_tokyo_covid19_patients.csv ファイルを削除
timeout /t %wait_time% > nul
del 130001_tokyo_covid19_patients*.*
del /Q %USERPROFILE%\Tools_Data_Temp\xlsx\*.*
)
は 記事#23 同様このバッチファイルの実行フォルダをダウンロード フォルダ %USERPROFILE%\Downloads 配下に移動し
以前ダウンロードした 130001_tokyo_covid19_patients.csv の有無をチェックし、もし残っていたらそれを削除するためのものです。
またあわせて作業用フォルダ
%USERPROFILE%\Tools_Data_Temp\xlsx
をその使用用途に従い配下の全てのファイルを削除しています。
CSV ファイルをダウンロードする
このバッチファイルの次の部分
echo 03.新 130001_tokyo_covid19_patients.csv ファイルをダウンロード
timeout /t %wait_time% > nul
cd %USERPROFILE%\Tools\accdb
入手_130001_tokyo_covid19_patients_csv.accdb
は %USERPROFILE%\Tools\accdb 配下の
入手_130001_tokyo_covid19_patients_csv.accdb
を起動し、東京都_新型コロナウイルス陽性患者発表詳細 のサイトから
130001_tokyo_covid19_patients.csv を直接ユーザーの
%USERPROFILE%\Downlords フォルダ配下にダウンロードしています。
この 入手_130001_tokyo_covid19_patients_csv.accdb の詳細については次の記事を参照ください。
T0000_東京都コロナ発症状況_マスタ を作成する
このバッチファイルの次の部分
echo 04.%USERPROFILE%Tools\accdbに移動
timeout /t %wait_time% > nul
cd %USERPROFILE%\Tools\accdb
echo 05.130001_tokyo_covid19_patients.csv から T0000_東京都コロナ発症状況_マスタ を作成
timeout /t %wait_time% > nul
作成_T0000_東京都コロナ発症状況_マスタ.accdb
は %USERPROFILE%\Tools\accdb
に移動後
作成_T0000_東京都コロナ発症状況_マスタ.accdb
を起動し、
作成_T0000_東京都コロナ発症状況_マスタ.accdb 内に
T0000_東京都コロナ発症状況_マスタ テーブルを作成します。
この 作成_T0000_東京都コロナ発症状況_マスタ.accdb の詳細については次の記事を参照下さい。
T1040_日付_退院者数_入院者数_退院率.xlsx を作成する
このバッチファイルの次の部分
echo 06.T0000_東京都コロナ発症状況_マスタ から T1040_日付_退院者数_入院者数_退院率.xlsx を作成
timeout /t %wait_time% > nul
作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb
は %USERPROFILE%\Tools\accdb 配下の 作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdb
を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル
を参照して
%USERPROFILE%\Tools_Data_Temp\xlsx
配下に T1040_日付_退院者数_入院者数_退院率.xlsx を作成します。
この作成_T1040_日付_退院者数_入院者数_退院率_xlsx.accdbの詳細については次の記事を参照下さい。
T2040_日付_女性入院者数_男性入院者数.xlsx を作成する
このバッチファイルの次の部分
echo 07.T0000_東京都コロナ発症状況_マスタ から T2040_日付_女性入院者数_男性入院者数.xlsx を作成
timeout /t %wait_time% > nul
作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb
は %USERPROFILE%\Tools\accdb 配下の 作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb
を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル
を参照して
%USERPROFILE%\Tools_Data_Temp\xlsx
配下に T2040_日付_女性入院者数_男性入院者数.xlsx を作成します。
この 作成_T2040_日付_女性入院者数_男性入院者数_xlsx.accdb の詳細については次の記事を参照ください。
T3200_日付_年代別入院者数.xlsx を作成する
このバッチファイルの次の部分
echo 08.T0000_東京都コロナ発症状況_マスタ から T3200_日付_年代別入院者数.xlsx を作成
timeout /t %wait_time% > nul
作成_T3200_日付_年代別入院者数_xlsx.accdb
は %USERPROFILE%\Tools\accdb 配下の 作成_T3200_日付_年代別入院者数_xlsx.accdb
を起動し、作成_T0000_東京都コロナ発症状況_マスタ.accdb 内の東京都コロナ発症状況_マスタ テーブル
を参照して
%USERPROFILE%\Tools_Data_Temp\xlsx
配下に T3200_日付_年代別入院者数.xlsx を作成します。
この 作成_T3200_日付_年代別入院者数_xlsx.accdbの詳細については次の記事を参照ください。
グラフ描画用データをそれぞれのグラフ描画用テンプレートにコピーする
このバッチファイルの次の部分
echo 09.3つのグラフ描画用データをそれぞれのグラフ描画用テンプレートにコピー
timeout /t %wait_time% > nul
copy %USERPROFILE%\Tools_Data_Static\xlsx\*_グラフ.xlsx %USERPROFILE%Tools_Data_Temp\xlsx
更新_東京都コロナ感染者分析グラフ_xlsx.accdb
は %USERPROFILE%\Tools\accdb 配下の 更新_東京都コロナ感染者分析グラフ_xlsx.accdb
を起動し、
%USERPROFILE%\Tools_Data_Temp\xlsx
配下に作成された
T1040_日付_退院者数_入院者数_退院率.xlsx
T2040_日付_女性入院者数_男性入院者数.xlsx
T3200_日付_年代別入院者数.xlsx
のデータ領域をそれぞれ
T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
T3200_日付_年代別入院者数_グラフ.xlsx
のデータ領域へコピーしています。
この 更新_東京都コロナ感染者分析グラフ_xlsx.accdb の詳細については次の記事を参照ください。
グラフを順番に描画する
このバッチファイルの次の部分
echo 10.T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
echo 11.T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
echo 12.T3200_日付_年代別入院者数_グラフ.xlsx を起動
timeout /t %wait_time% > nul
%USERPROFILE%\Tools_Data_Temp\xlsx\T3200_日付_年代別入院者数_グラフ.xlsx
を起動し、
%USERPROFILE%\Tools_Data_Temp\xlsx
配下の
T1040_日付_退院者数_入院者数_退院率_グラフ.xlsx
T2040_日付_女性入院者数_男性入院者数_グラフ.xlsx
T3200_日付_年代別入院者数_グラフ.xlsx
を順に起動してグラフ描画および表示させています。
作業用テンポラリフォルダ表示する
このバッチファイルの次の部分
explorer /e ./root,%USERPROFILE%\Tools_Data_Temp\xlsx
では作成された Excel ブックヘ簡単にアクセスが可能なように Microsoft のエクスプローラで作業フォルダ
%USERPROFILE%\Tools_Data_Temp\xlsx
を開いています。
まとめ
本記事では記事#25で実施したリファクタリングの内容と新たなツール開発環境への理解を深めることを目的として
- これらのツール開発環境のフォルダ構成
- バッチファイルの内容
についてご紹介しました。
次回以降は本記事の中で紹介した変更内容について順に紹介していきます。
さてこの記事全体の目標は
- 今の状況から抜け出してもっと前向きな仕事に取り組みたい
- さっさと仕事を切り上げて充実したアフターファイブを過ごしたい
でしたよね。
あなたの解決したい問題は何ですか?
次回はまた
で Access VBA の新しい窓を開きましょう。
いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?