主要コンテンツへスキップ
ENGINEERING IDEAS INTO REALITY
プロトタイプ · 実際のワークで試験

ソフトウェア開発チームの繰り返しの手作業を減らす社内ツール:表形式ファイルのデータ秘匿、Webページとプログラム上の手順を実行するスクリプト、会議の記録、見積書のプロトタイプ

この5点の社内ツール群は、ソフトウェア開発チームの繰り返しの手作業を減らすものです。当社が2020–2024年に自社利用のために開発しました。表形式ファイルのデータを秘匿するAnonymizationプログラム、Webページ上の手順を実行するSeleniumスクリプト、マウスとキーボードの操作を記録して再生するRPAレコーダー、会議の録画を指示するInMeetアプリ、見積書作成用のDoQuot画面プロトタイプで構成されています。すべて当社チーム内で構築し、テストしました。

DoQuotのプロトタイプ画面。データがまだ入っていない見積書ステータス表
業界
サービス
年
2020–2024
業務範囲
当社がチーム内で構築、テストした社内ツール5点:Anonymizationプログラム(Python)はCSV、XLSX、XLSファイルを読み込み、設定ファイルに基づいてデータを秘匿し、出力ファイルと復元用の対応付けファイル(mapping)を作成します(2024年1月–3月、5週間) · Selenium + ChromeDriverスクリプトはメニューの値を選択し、Excelファイルを添付して、Webページ上で送信を押します。マニュアル付きです(2024年1月–3月、8週間) · RPAレコーダー(PyAutoGUI + pynput)はマウスのクリックとキー入力を画面録画とともにログとして記録し、再生します。Notepadでの文字入力のケースでテストしました(テストファイルの日付:2023年4月) · InMeetアプリはControllerモードからClientモードの端末に録画の開始と停止を指示し、サーバーにアップロードします(2020年のマニュアルに基づく) · DoQuotの画面プロトタイプはステータス表画面と見積書作成画面で、Androidインストールファイル付きです(2024年10月、2日間)

要約

  • この5点の社内ツール群は、ソフトウェア開発チームの繰り返しの手作業を減らすものです。当社は2020–2024年に、社内ツールおよびプロトタイプとして構築し、テストしました。
  • Anonymizationプログラムは、設定ファイルに基づいてCSV、XLSX、XLSファイルのデータを秘匿し、対応付けファイル(mapping)で元に戻せます。当社は2024年1月–3月の間に5週間で完成させました。
  • 自動化は2種類に分かれます。Webページのコードからボタンを参照できるWebページ向けのSeleniumと、PC上のプログラム向けに画面上の位置に基づいて再生するRPAレコーダーです。
  • InMeetでは、2020年のマニュアルに基づき、Controllerモードの端末がClientモードの端末に会議の録画の開始と停止を指示し、サーバーにアップロードします。
  • DoQuotは、ステータス表画面と見積書作成画面のプロトタイプで、当社が2024年10月にAndroidインストールファイルとともに作成しました。
01

現場の課題

当社の開発チームには、毎回手作業で繰り返す業務がありました。Excelファイルのデータを次の用途に使う前に秘匿する、同じWebページでメニューの選択、ファイルの添付、送信を何度も行う、会議を録画する、作業項目と作業日数(Manday)から見積書を作成する、といった業務です。これらは時間がかかり、何度も繰り返すとミスが起きやすくなります。

02

当社の取り組み

当社は業務ごとに小さなツールを作成しました。CSV、XLSX、XLSファイルのデータを元に戻せる形で秘匿するPythonプログラム、Webページ上の手順向けのSeleniumスクリプト、PC上のプログラム向けのRPAレコーダー(Robotic Process Automation:決められた順序でソフトウェアにコンピューター上の同じ手順を実行させること)、単一の端末から他の端末に会議の録画を指示するInMeetアプリ、DoQuotの画面プロトタイプです。

03

実ワークでの試験結果

2024年のプロジェクト総括文書には、AnonymizationプログラムとSeleniumスクリプトが完成したと記載されています。Seleniumはcanvas上に描画された要素(グラフなど)を取得できません。RPAレコーダーにはログと動画付きのテストケース実行結果があります。InMeetは2020年のマニュアルどおり録画の指示とアップロードが可能です。DoQuotにはステータス表画面と見積書作成画面のプロトタイプがあります。

課題の背景

本事例の課題は、当社の開発チーム自身の業務から生まれました。毎回手作業で繰り返す必要があった業務は、Excelファイルのデータを次の用途に使う前に秘匿する、Webページ上で同じ手順をクリックして実行する、会議を録画する、作業項目とMandayから見積書を作成する、というものです。

これらの業務は手作業でも可能ですが、時間がかかり、何度も繰り返すとミスが起きやすくなります。たとえば、プログラムを修正するたびに同じWebページをクリックしてテストする作業です。そこで当社は業務ごとに小さなツールを作成しました。各ツールは2020–2024年の間に、それぞれ異なる年に開発しました。

RPAとは

RPA(Robotic Process Automation)とは、クリック、入力、ファイルの添付、送信など、コンピューター上の手順をあらかじめ決めた順序でソフトウェアに実行させることです。毎回同じ手順の業務に適しています。

要件と制約

各ツールには、当社が作成した要件文書、マニュアル、作業範囲に基づく独自の要件があります。主な要件は次のとおりです。

  • Anonymization:CSV、XLSX、XLSファイルを読み込み、秘匿するデータを設定ファイル(file_config)で指定します。元のデータに戻せる必要があります。
  • Selenium:プルダウンメニュー(dropdown)の値を選択し、Excelファイルを添付して、Webページ上の送信またはダウンロードボタンを押します。
  • RPAレコーダー:マウスのクリックとキー入力を画面録画とともにログとして記録し、記録時と再生時の両方を後から確認できるようにします。
  • InMeet:単一の端末から他の端末の録画の開始と停止を指示し、動画ファイルをサーバーにアップロードします。
  • DoQuot:作業項目とMandayから見積書を作成するための画面で、まずステータス表画面と見積書作成画面から始めました。

主な制約は、ツールが画面を参照する方法に起因します。SeleniumはWebページのコードからボタンや入力欄を読み取るため、グラフなどcanvas上に描画された要素を取得できません。一方、RPAレコーダーは画面上の位置に基づいて再生するため、ウィンドウの位置と画面解像度に左右されます。

Seleniumとマウス・キーボードレコーダーのどちらを使うべきか

業務がWebページ上にある場合はSeleniumを、PC上のプログラムにある場合はレコーダーを使います。SeleniumはID、NAME、XPATH、CSS selectorなど、Webページのコードからボタンや入力欄を参照するため、画面上の位置に左右されません。レコーダーはPyAutoGUI/pynputを使い、記録した位置に基づいてマウスとキーボードを操作します。

そのためレコーダーは、参照できるWebページのコードがないプログラムにも使えます。当社のテストケースは、Notepadプログラムでの文字入力です。

  1. 1

    Anonymization:表形式ファイルのデータ秘匿

    ユーザーが設定ファイル(file_config)を用意し、元のCSV、XLSX、またはXLSファイルに対してコマンドウィンドウ(Terminal)からencodeコマンドを実行します。プログラムは、データを秘匿したファイルと対応付けファイル(mapping)をoutputフォルダーに作成します。元のデータが必要なときは、対応付けファイルを指定してdecodeコマンドを実行します。

  2. 2

    Selenium:ブラウザにWebページ上の手順を実行させる

    PythonスクリプトがChromeDriver経由でWebページを開き、メニューの値を選択し、Excelファイルを添付して、送信またはダウンロードボタンを押します。当社のマニュアルでは、Webページのコードからボタンや入力欄の位置を特定する方法を説明しています。

  3. 3

    RPAレコーダー:記録して再生

    ユーザーが通常どおり作業している間、プログラムはマウスのクリックとキー入力を画面録画とともにログとして記録します。その後、ログをPyAutoGUI/pynputスクリプトに変換して再生し、再生時のログと動画も後から確認できるよう記録します。

  4. 4

    InMeet:単一の端末から会議の録画を指示

    Controllerモードを選択した端末が、Joinを押してClientモードで参加した端末に録画の開始または停止を指示し、その後、動画ファイルがサーバーにアップロードされます。

  5. 5

    DoQuot:見積書画面のプロトタイプ

    プロトタイプには見積書ステータス表画面と見積書作成画面があり、静的な画面です。端末で画面を確認するためのAndroidインストールファイル(APK)もあります。

当社が構築し検証したもの

当社は次のプログラム、スクリプト、マニュアル、プロトタイプを作成し、チーム内で使用しました。

  • Anonymizationプログラム、要件文書、設定ファイルの作成・encode・decodeのマニュアル
  • Selenium + ChromeDriverスクリプト、ボタンと入力欄の位置特定マニュアル
  • RPAレコーダー:記録スクリプト、再生スクリプト、ログと動画付きのテストケース
  • InMeetアプリ、ControllerモードとClientモードの2020年版利用マニュアル
  • DoQuotプロトタイプ:見積書ステータス表画面、見積書作成画面、Androidインストールファイル(APK)

ツールごとのテスト結果

AnonymizationプログラムとSeleniumスクリプトは2024年に完成しました。RPAレコーダーにはテストケースの実行結果があり、InMeetは録画の指示とアップロードが可能で、DoQuotには画面プロトタイプがあります。当社の2024年のプロジェクト総括文書には、Anonymizationプログラムは5週間、Seleniumスクリプトは8週間で完成したと記載されています。いずれも2024年1月–3月に作成しました。下の表の結果は、プロジェクト総括文書、マニュアル、テストのログファイルと動画に基づいています。

各ツールでできることと技術的な制約

ツール実行でき、テスト済みの内容技術的な制約
Anonymization2024年に完成。CSV、XLSX、XLSファイルを対応付けファイルで秘匿、復元対応付けファイルは、受け渡すファイルとは別に保管する必要があります
Selenium2024年に完成canvas上に描画された要素は取得できません
RPAレコーダーログと動画付きのテストケース実行結果あり。ファイルの日付は2023年4月画面上の位置に基づいて再生
InMeet2020年のマニュアルどおり、録画の指示とアップロードが可能録画とアップロードを担当し、音声の文字起こし機能はありません
DoQuotステータス表画面と見積書作成画面のプロトタイプ、Androidインストールファイル付き、2024年10月静的な画面で、価格計算機能はありません

2024年、当社はRPAのコードを当社の再利用コード集(Code Reuse)に保管しました。

私たちが学んだこと

本件から、チーム内の小規模な自動化に向けて次の原則が得られました。

  • プログラムが参照を許すものに応じて方法を選びます。ボタンや入力欄を参照できるWebページのコードがあれば、まずSelenium方式を使い、なければ画面上の位置の記録を使います。canvas上に描画された部分は、別の確認方法を最初から用意しておく必要があります。
  • 自動化は後から確認できなければなりません。RPAレコーダーは記録時と再生時の両方のログと動画を保存するため、結果が一致しないときに、どの手順が異なったかを比較できます。
  • 元に戻せるデータ秘匿では、リスクが対応付けファイルに移ります。このファイルは受け渡すファイルとは別に保管し、アクセスできる人を制限する必要があります。

この手法をお客様の業務に適用する方法

貴社のチームに、クリック、入力、ファイル添付、データの秘匿など、毎回同じ手順で行う作業があれば、この事例と同じ進め方を利用できます。作業を個別に分け、プログラムの種類に応じてツールを選び、後から確認できるようログを保存する方法です。お使いのプログラムがこの事例と異なる場合に調整が必要なのは、ボタンや入力欄の参照方法です。

再利用できる部分と調整が必要な部分

仕事再利用可能調整が必要になる場合
Webページ上の手順Selenium + ChromeDriver、およびID、NAME、XPATHまたはCSS selectorによる位置の指定Webページにグラフやcanvas上に描画された部分がある場合、またはページ構造が頻繁に変わる場合
端末上のプログラムでの手順ログと動画として記録し、再生用スクリプトに変換する方法ウィンドウの位置や画面解像度が記録時と異なる場合は、再記録またはスクリプトの調整が必要です
表形式ファイル内のデータの秘匿設定ファイル、および対応表ファイルを使ったencode/decodeファイルがCSV、XLSX、XLSのいずれでもない場合、または元に戻せる形にしたくない場合
会議の記録単一の端末から録画を指示し、サーバーへアップロードする方法文字起こしテキストも必要な場合は、文字起こし部分を別作業として追加する必要があります
見積もりステータス表画面と見積書作成画面のドラフトMandayからの計算や自動見積が必要な場合は、この部分を新たに開発する必要があります
  • 毎回同じ手順の作業と、頻繁に変わる作業を分けます。頻繁に変わる作業は、記録して再生する方式に向いていません。
  • お使いのWebページやプログラムが、ボタンや入力欄を参照できる形になっているかを確認します。
  • 実際にデータの秘匿を始める前に、対応表ファイルの保管者と保管場所を決めます。
  • 求める成果と各ツールの範囲を、最初に明確にします。

使用する技術

PythonAnonymization(CSV、XLSX、XLSファイルのencode/decode)Selenium + ChromeDriverPyAutoGUI + pynputInMeet(会議録画を指示するアプリ)DoQuot(画面プロトタイプ)

よくある質問

このようなツールを貴社のチームで利用したい場合、どこから始めればよいですか

このツール群は当社のチーム内で使用しているものです。同様のシステムをご希望の場合は、貴社の作業範囲に合わせて当社が開発できます。まず毎回同じ手順の作業を切り分け、次にお使いのWebページやプログラムがボタンや入力欄を参照できる形になっているかを確認し、Seleniumとマウス・キーボード記録ツールのどちらを使うかを選びます。

Seleniumとマウス・キーボード記録ツールの違いは何ですか

Seleniumは、Webページのコードからボタンや入力欄を参照してブラウザを操作するため、Webアプリに適しています。一方、記録ツールはPyAutoGUI/pynputを使い、記録した内容のとおりにマウスとキーボードを操作します。端末上のプログラムにも使えますが、画面上の位置に依存します。

秘匿したデータは元に戻せますか

はい。encodeを実行すると、プログラムは対応表ファイル(mapping)も作成します。この対応表ファイルを指定してdecodeを実行すると、元のデータが復元されます。そのため、対応表ファイルは受け渡しするファイルとは分けて保管し、アクセスできる人を制限する必要があります。

InMeetでは、単一の端末からどのように会議の録画を指示しますか

2020年のマニュアルによると、Controllerモードを選択した端末が、Joinを押してClientモードで参加した端末に録画の開始と停止を指示し、その後、動画ファイルがサーバーにアップロードされます。InMeetが担うのは録画です。文字起こしテキストも必要な場合は、文字起こし部分を別作業として追加する必要があります。

SeleniumスクリプトはグラフのあるWebページでも使えますか

そのWebページのボタン、メニュー、入力欄には使えます。ただし、当社のSeleniumスクリプトでは、グラフなどcanvas上に描画された要素は取得できません。SeleniumはID、NAME、XPATHまたはCSS selectorを使い、Webページのコードから要素を参照するためです。canvas上に描画された部分の確認が必要な場合は、別の確認方法を最初から計画しておく必要があります。

このようなシステムをお客様の業務に導入したいとお考えですか?