RobotFrameworkの代替になり得るRobocorpLibraryとは

2024.03.06

渡部 友也 渡部 友也

目次

本記事公開の背景

ネットワークテクノロジー課の渡部です。  

本ブログでは、NW自動化に関連するトピックとして、Robot FrameworkやRobocorpについての記事を今まで公開してきました。

今までの記事では、NW自動化におけるRobot Frameworkとの高い親和性や、内部の構造、開発の効率化であったり、Robot Frameworkの運用管理を高度化・一元化するRobocorp Control Roomなどのご紹介をしてきました。

そうした中、Robocorp社の今後の動向およびRobot Frameworkを用いたNW自動化に関連する我々の開発に大きな影響を与える情報が、Robocorp社より公開されました。
本記事ではその情報の内容の要約と、今後に与える影響についてお話させていただきます。

Robocorp社の方針転換の発表と内容、その影響

2024/2/12にRobocorp社よりRobot Framekworkのサポートの終了と今後の対応についてが公開されました。

記事を要約すると

  • RobocorpはRobot FrameworkからPythonへと移行する
  • RobocorpにおけるRobot FrameworkのSupportを2025年2月15日で終了する
  • 2025年2月15日以降も、Robot FrameworkのコードはSupport外とはなるが継続利用は可能

という内容になっています。

最初に記事を読んだ時は、我々のチーム内でもRobot Frameworkのサポートが終了する判断の意図が全くわからずに混乱が発生しました。

内容と関連記事を詳細に確認していくと、Robot FrameworkからRobocorp Libraryに移行していくという趣旨になっています。
Robocorp Libraryは、今までRobot Frameworkで実現されていた機能をPythonで実現可能というコンセプトのLibraryになっています。

robocorp-tasksというLibraryが、Robot Frameworkに相当する中枢のFrameworkになっています。

image

Robot FrameworkではTest Item/Taskと呼ばれていたものがrobocorp-tasksでは1つの関数で表現されており、デコレータを利用することで関数が1つのTest Item/Taskであることを示しています。
Setup/Teardown等のRobot Frameworkの制御において必須である機能も、robocorp-tasksに実装されています。
※詳細はrobocorp-tasksのDocをご確認ください。

Robot Frameworkにおいて重要な機能であったlog.htmlの生成も可能であり、見た目は少し変わっていますが同等の機能が提供されています。

image-1

つまり、Robocorp社の発表は「Robot Frameworkと同じことができるRobocorp LibraryというPython Libraryに今後は移行していくため、Robot Frameworkは使う必要がなくなった」という方針転換であるともいえます。

Robot Framework利用者に与える影響

Robocorp社の方針転換はRobocorp利用者にはもちろんのこと、Robot Frameworkユーザー全体に大きな影響があることが想定されます。これらの影響は、既存のRobot Frameworkに与える影響と、これからのRobot Framework開発に与える影響という軸で分けて考えていくで整理がしやすくなると考えています。

既存のRobot Frameworkコードに与える影響

既にRobot Frameworkを使って開発物が作られている場合、既存のコードの修正をする必要性が出てくる可能性があります。
ただし、その場合はRobocorpを利用している場合としていない場合で大きく対応の方針が異なります。

Robocorpを利用している場合

Robocorpを利用しているユーザーは、2025年2月までに既存のコードをRobocorp Libraryに置き換えていくことが推奨されます。Securityに対する修正パッチ等が提供されないため、Robot Frameworkの実行環境をupgradeする必要性が出た場合に、Robocorp社よりSupportが提供されません。脆弱性が発生したタイミングでRobot FrameworkからRobocorp Libraryに置き換えることは、開発のスピード等を考慮すると現実的ではないため、今の段階から移行開発を計画する必要があります。

Robocorpを利用していない場合

OSSのRobot Frameworkで利用しておりRobocorpを利用していないユーザーは、既存コードの改修をする必要はありません。Robot Framework自体はSupportが提供され続けるため、引き続きRobot Frameworkでの開発をすることは可能です。

ただし、後述するRobot Frameworkへの影響から、チームとしてRobocorp Libraryへの移行を考える場合や、将来的なRobot FrameworkのRoadmapにおいてもPythonへの方針転換等の可能性は否定できないため、継続的に今後の動向は観察する必要があります。

また、既存のコードに追加開発が入る場合には慎重な判断が必要になるケースがあります。
Robot Frameworkのまま.robotを拡張することはもちろん可能ですが、今後の追加開発の頻度やチーム方針やOSS Communityの状況によっては、Robocorp Libraryへの戦略的な移行は必要になることが想定されます。

Robot Frameworkの開発全体に与える影響

Robocorp社はRobot Framework自体の開発に対しても大きな影響を与えています。

VSCodeにおける最もユーザーの多いExtensionであるRobot Framework Language ServerはRobocorp社より提供されており、我々のチームでも標準のツールとして利用しています。
しかし、Robocorp社のRobot FrameworkからPythonへの方針転換に伴い、引き続き利用は可能となりますが、Robot Frameworkの新機能や新versionのサポートの終了がアナウンスされています。
すなわち、今後もRobot Frameworkで開発を続ける限り、新しいRobot Frameworkを利用した開発が発生することは避けられないため、Robot Framework Language Serverは利用ができないことを意味しています。

Robot Codeと呼ばれるRobot Framework Language Serverの代替の位置付けであるExtensionは存在しています。Robot CodeはRobot Frameworkの新versionへの対応の停止はアナウンスされていないため、こちらを利用し続けることでRobot Frameworkの開発は継続することが可能です。しかし、「Robot Code」ではこちらの記事でも紹介したRobot Framework Interactive ConsoleというiPythonに相当する対話型の開発環境は現在では利用できません。対話式の開発環境が利用できるかどうかは、開発効率に大きく依存するためRobot Framework Language Serverの開発終了がRobot Frameworkに与える影響は大きいです。

Robocorp Libraryの今後の可能性

Robocorp社がRobot FrameworkからRobocorp Libraryへの転換を発表に伴い、Robocorp LibraryがOSSとして公開および開発が継続されるようになります。
これにより、既存のRobot Frameworkとは分離したCommunityとして機能実装がされていくことになるため、Robot Frameworkユーザーとしては、今後の可能性を見極める必要があります。

Pythonベースであることによるメリット

Robot言語を利用しなくなることにより、大きなメリットが複数存在しています。

習熟の容易さの向上

Pythonベースであるため、Robot Framework特有言語であるRobot言語を習熟する必要はなくなります。Robot Frmaeworkの習熟はPythonの開発者であれば比較的容易ではありますが、習熟コストは0ではありません。また、Robot言語には汎用性がないため、Robot言語の存在はRobot Framework利用における制約のひとつであることは否定できませんでした。PythonベースのLibraryが公開されることにより、一般的なPython開発者のプロジェクト参画や引き継ぎが容易になることは非常に大きなメリットです。

Robot用LibraryおよびKeywordが不要

Robot FrameworkではPythonの関数をKeywordとして利用することが可能でしたが、Robot Frameworkの仕様にあわせてLibraryを開発する必要や、Robot言語でKeywordを作成するケースが多く発生していました。Pythonベースになることで、Robot用に特化したLibraryの開発必要はなくなり、NativeなPython LibraryやClassを利用することが可能になります。

Robocorpから公開されていたRobot Framework用のRPA Frameworkも開発が終了となり、Native Pythonに置き換わることになります。これらのRPA FrameworkはPythonのWrapper位置付けに近いものはNativeなPython Libraryに置き換えることが可能になり、Python Libraryの機能追加・改善の恩恵を直接受けられるようなアーキテクチャになりました。

各種Pythonツール・機能の利用

NativeなPythonLibraryになるため、一般的なPythonツール・機能の利用が可能になります。前述のRobot Freamework Interactive consoleが開発効率に大きく依存することについて言及しましたが、対話式の開発はiPythonで代替することが可能です。これは大きな恩恵であり、現状では本格的な開発を実施していないので推測の域を出てはいませんが、他にも利用可能なツール・機能は存在すると考えています。
さらに、Robot Framework Language ServerのようなExtensionは不要になることで、特定のツールやLSPに依存した制約が撤廃されることもプラスの要素となります。

Robocorp Action Server

Robocorp LibraryにはRobot Frameworkに類似した実行環境であるrobocorp-tasksだけでなく、Robocorp Action Serverというツールも提供されています。

・Robocorp Action Server
 
https://robocorp.com/docs/action-server

Robocorp Action ServerではRobocorpがCloudとして提供していたControl Roomに似たような機能が提供されています。Robot FrameworkはCLIの実行環境のみ提供されていたため、GUIでの実行やlog管理の機能が乏しいことは自動化ツールを一元管理する|Robocorp Control Roomでも紹介していますが、Robocorp Action Serverはそれらの機能を具備しているため、OSSでも運用の一元管理が可能になる可能性があります。

現在は同一のOSS Projectとして公開されていると記載されているので、将来的にはAction Serverのみ分離する計画もあるのかもしれません。

NW自動化開発チームにおける今後の対応

今後はRobocorp Libraryへのチーム全体としての移行を検討しています。

NW自動化でのRobotFrameworkの適用領域では、NW自動化開発におけるRobot Frameworkの位置付けを下記のように紹介していました。

Robot Frameworkの主要な機能は下記の3つです。

  • Robotシナリオを記述することで、試験の自動実行が可能
  • Assertionを利用することで、合否の自動判定が可能
  • HTMLベースの試験結果レポートの自動生成が可能

上述の機能は試験や作業においては非常に重要であり、これらが自動で実行できるRobot Frameworkはとても有用なツールであると言えます。

しかし、Robot Frameworkも万能ではなく、本格的に利用するには以下のコストが発生します。

  • Robot言語を習熟する必要がある
  • Driverは一部しか用意されていないため、試験対象によってはPythonのDriverを作成する必要がある

あえてコストと述べましたが、これらの学習コストが小さいのもRobot Frameworkの特徴です。Robot言語は簡潔でわかりやすいものであり、Driverを作成する必要があるといってもPythonで記載できるためPythonベースのチームにおける習熟はそこまで高いものではありません。
また、NW自動化開発のLibraryはPythonであることが多いため、NW自動化開発チームにとってRobot Frameworkは習熟のしやすいOSSであるといえます。

Robocorp LibraryではRobot Frameworkの主要な機能としてあげたものは網羅されており、さらにコストとして認識していたRobot言語の習熟が必要とされなくなるため、チームとしては移行するメリットが大きいです。現状での課題がRobocorp社が方針転換をした理由と同じ環境であったと推測できるため、今後の課題感も共通していることが可能性が高く、Robocorp Libraryの追加開発の恩恵を受け続けられる見込みも高いです。

RPA FrameworkからPython Robocorp Libraryへの移行対応

既存のRobocorpで動作しているコードにおいて、Robocorpから提供されているRPA Frameworkを利用している場合は、Robocorpのコードを改修しPython Robocorp Libraryに移行する必要があります。RPA FrameworkからPython Libraryへの移行については下記の記事が参考になります。
https://robocorp.com/docs-robot-framework/switch

チーム内部・運営に関連する対応

まずは現状のRobot Frameworkにおける用件をRobocorp Libraryで満たせるかのFit&Gapを実施する予定です。技術要件として問題なければ、まずは我々の内部開発で利用しているRobot Frameworkにおける開発への適用や、既存のRobot Framework案件のRobocorp Libraryへの置き換え検証等を実施することになると思います。
その後、NW自動化開発チームではオンボーディングの内容にRobot Frameworkの教育を取り入れているのですが、これらに相当するRobocorp Libraryの教育の立て付けをする必要があります。

対応には1〜2ヶ月の期間および数人月の工数が必要になることが想定されますが、後述の既存のお客様への対応も必要になるため、最優先事項として対応を進めていく予定です。

関連するお客様への対応

現在Robocorpをご利用しているお客様へは既存コードの改修をご提案する形になります。ご案内する際には、理由およびメリット、必要な費用等の詳細をご説明させていただき、合意いただいた上で進め方を協議させていただきたいと考えております。

今後Robot Framework/Robocorpの利用をご案内・ご提案しているお客様へは、Robocorp Libraryでの開発をご提案させていただく可能性がございます。この場合は、既存のRobot Frameworkのコードの量や性質であったり、今後のRobocorp利用の展望や、お客様チーム内部の言語の習熟状況や方針により様々な形があるため、担当者と相談の上ベストな形をお客様と模索させていただければと考えております。

まとめ

本記事ではRobocorp社の方針転換およびRobocorp LibraryがRobot Frameworkに与える影響、我々NW自動化開発チームとしての方針について記載しました。

引き続きNWの自動化においてRobot Framework/Robocorp Libraryを利用した開発需要は存在しているため、今後も技術的な最適な環境での開発を継続することで、開発チームとしての価値を最大化するために動向を追い続けようと思います。また、数ヶ月後にRobocorp Libraryの実践投入から得られた知見を公開できるように、チーム全体で頑張っていきますので宜しくお願いします!

 

この記事をシェア

渡部 友也 渡部 友也

2010年CTC新卒入社。NW自動化開発のプロダクトオーナー兼開発者としてSOシステムやWeb開発系をメインとして活動中。趣味は競馬だが回収率は毎年100%を下回っている。