はじめに
先日アソシエイトはクリアしました。
この勢いで、エキスパートもクリアしてしまおうという考えです。
こういうものは時間を空けてもよろしくない(わすれちゃうし……)
WinActor RPA技術者検定 エキスパート試験ってどういうものか
アソシエイトがCBT形式の4択でしたが、エキスパートは実技試験で4問を120分でおこない正答率6割以上を合格とするとのこと。
試験形式 実技試験 出題数 4問 試験時間 120分 受験資格 特になし 受験料 15,000円 試験会場 札幌・仙台・東京・名古屋・大阪・福岡 試験頻度 4回/年(2月、5月、8月、11月) 受験対象 ・WinActorの機能について深く理解し、実際にWinActorを業務上の改善ツールとして活用経験のある方
・WinActorのシナリオ変更やトラブル対応など運用保守、システム管理経験のある方合格基準 原則として、正答率6割以上を合格。
ただし、問題の難易度等により変動する場合あり。合格率 おおむね50%から60% 参考:http://watest.jp/expert.html より作成
採点については、1問につき設問本文の実装15点、追加仕様10点で配点されています。
設問本文の実装が動かなければ、追加仕様は採点されません。
まずは動かすこと、設問本文の実装が重要です。
たぶん、この4問にもかかわらず6割以上の正答率というところがミソで部分点が存在するのでしょう。
もちろん動くようにしなければというのはあるかもしれませんが、部分点が存在する可能性がある以上、よくわからない問題がでても途中までは実装することが重要だと思います。
諦めないで!(真矢みき)
RPA技術者検定 エキスパート試験ってどういうものだろう
この試験は情報の少ない試験です。
そして、アソシエイト以上にエキスパートの情報はさらに少ない……
RPA技術者検定 エキスパートのページにサンプル問題が2問掲載されています。
試験問題をちょっと解いてみよう
問:日次業務の済/未済を管理する処理済チェックシート(Excelファイル)を作成、管理している。
指定日の処理済セルに処理済み「1」を設定するシナリオを以下で作成しなさい。① ノード【インプットボックス】で指定日(yyyy/mm/dd形式)を入力する
② 指定年に該当するフォルダに存在する指定月の処理済チェックシートファイル(Excelファイル)を開く
③ 処理済チェックシートファイルの指定日に該当する行の処理済セルに「1」を設定する
④ 処理済チェックシートファイルを更新し、Excelを閉じる
※ 指定日は、2017/11/01~2018/02/28のいずれかの暦日とし、処理済チェックシートファイルは、
存在する前提とする (上記以外の指定日の入力は考慮しなくてよい)
※ 入力した指定日の処理済みセル以外は更新しないこと処理済チェックシートファイルは、 技術者認定試験¥問1フォルダに以下で作成されている
¥指定年¥処理済チェックシート_指定月.xlsx
・指定年は、【インプットボックス】で指定する指定日の年(yyyy)、指定月は、指定日の月(mm)とする
【例】 指定日が"2018/01/10"の場合、
フォルダ、ファイル名は、¥2018¥処理済チェックシート_01.xlsx
【チェックシートのつくり】
まず初めにグループを作る
部分点が存在するのではないかという話は前述しました。
部分点を狙いに行きつつ、正答するためにグループを作りましょう。
グループを作ることで採点者はここは、問題文のこの処理をしている個所というのがわかり採点しやすくなります。
そしてCBTの試験と異なり、採点者はおそらく人だと思われます。
ごちゃごちゃしている作りより可読性を意識して作ったほうが採点者の心象もよくなると思います。
例えば――
①指定日(yyyy/mm/dd形式)を入力
②指定月の処理済チェックシートファイルを開く
③該当行の処理済セルに「1」を設定
④ファイルを更新し、Excelを閉じる
というように問題文と対応したグループを作っておけば、自分自身も迷子にならないと思います。
①指定日(yyyy/mm/dd形式)を入力
ではまず①から。問題によると――
※ 指定日は、2017/11/01~2018/02/28のいずれかの暦日とし、処理済チェックシートファイルは、
存在する前提とする (上記以外の指定日の入力は考慮しなくてよい)
つまり日付チェックや範囲外の日付が入力されることは無視することができるということです。
ではインプットボックスを作りましょう。
グループ①はこんな感じでいかがでしょう。
たしかに日付のフォーマットチェックもやりたくなるところですが、まずはシナリオ完成を目指します。
枝葉を見すぎると時間切れになります。
② 指定年に該当するフォルダに存在する指定月の処理済チェックシートファイル(Excelファイル)を開く
まずはファイル格納する場所を変数に入れておきましょう。
ノード「変数値設定」で変数にセットするか、変数一覧で初期値として定義するかはお好みですかね。
問題文によると――
処理済チェックシートファイルは、 技術者認定試験¥問1フォルダに以下で作成されている
¥指定年¥処理済チェックシート_指定月.xlsx
・指定年は、【インプットボックス】で指定する指定日の年(yyyy)、指定月は、指定日の月(mm)とする
【例】 指定日が"2018/01/10"の場合、
フォルダ、ファイル名は、¥2018¥処理済チェックシート_01.xlsx
とのことで、年度ごとのフォルダ内に該当月ごとのファイルが作られている想定です。
入力日付を分解しましょう。
そして文字列結合して「¥指定年¥処理済チェックシート_指定月.xlsx」のパスを作ります。
そしてファイルを開きます。
これで②まで仕上がりました。
③ 処理済チェックシートファイルの指定日に該当する行の処理済セルに「1」を設定する
Excelを見てみるとA列に日付、B列に処理済と更新する対象の項目があるのがわかります。
後はどういう風に更新しに行くかですが、いくつかやり方はあると思います。
- 繰り返し処理で、A列の値を総ざらいして該当の日付が見つかったら、その行のB列に1を設定する
- 該当日付でA列にフィルターをかけて、B列の該当行に1を設定し、フィルターを解除
- 入力された日付⁺1行目のB列に1を設定する。
自分が一番慣れている処理で実装するのが一番だと思います。
今回はExcel操作(範囲検索)で実装します。
ここで少し、2点。
まず一つ。開始セルと終了セルが固定になっています。2月のファイルを見ればわかりますが、ファイルの仕様から実際の日付とは異なり固定で31までセルがあります。
問題文の前提として存在しない日付は入力されない、となっているため範囲は固定で置いてます(見返してみるとA2スタートでもいい気が……というかそちらの方がよいかも)
二つ目として、入力ではyyyy/mm/dd形式で取得するため例えば2018年1月1日は2018/01/01となり、変数inDDには01が設定されることになります。
これではExcelのA列の値と一致しないため、Excel操作(範囲検索)でうまく検索できません
注釈)試験問題を確認したところ、スクリプトの変更は不可です。なのでこの方法ではだめです。
なのでスクリプトをいじります。
日付しか入ってこない前提なので下のスクリプトを――
このようにいじります。
こうすることで、01が数字の1として扱われます。ただ、これは数字以外が入力されるようなシナリオでやってしまうとエラーで落ちてしまうので注意。
そして実行してみましょう。部分実行確認時は2018/02/03で実施。
ちゃんと選択できています。
次に該当行が決まったらB列の処理済フラグを立てます。
エミュレーションで実装してみましょう。
キーボードの→をクリックして、1をクリック後、Enterをエミュレート。
しかし、このままではウインドウ名でアンマッチとなる可能性があるため、少し柔軟性を持たせます。
フローチャートの上部にあるウインドウ識別ルールを押下。
そうすると以下の画面が表示されます。
識別方式を「を含む」で曖昧検索の状態にして――
さらに文字列の部分も、固定ファイル名「処理済みチェックシート」のみにして、どの月のファイルが開かれてもウィンドウが識別できるようにしましょう。
では実行してみます。部分実行確認時は2018/02/03で実施。
更新されています。
これで③まで完成。あとは保存するだけです。
④ 処理済チェックシートファイルを更新し、Excelを閉じる
Excel操作(上書きして保存して閉じる)で、処理を終了させましょう。
閉じるときに空のエクセルウインドウが閉じないケースがあります。(仕様なんですかね)
なので、Excel操作(すべて閉じる)を追加して、立つ鳥跡を濁さずでいきましょう。
動作確認
まずは、日付一桁がちゃんと動くか――
行けそうです。
次は別の月のファイルが開けるか――
これも行けそう。
次は前年度(別フォルダ)のファイルが開けるか――
行けそうです。
終わりに
堅牢に作ろうと思えばいくらでもチェックを実装することはできるでしょう。
でも、そこは実際の仕事と一緒で時間と発生確率のトレードオフ。
試験時間で4問を解かなければいけないので、まず最低限正常系が動く実装を心掛けて時間があればチェックを実装する、というほうがよさそうな気がします。