一開発者からみたRPAのメリットとデメリット
はじめに
こんにちは。最近は人工知能(AI)関連の話題が目立ち、業務自動化の一環としてRPA(Robotic Process Automation)についての議論が増えてきたように感じます。しかし、RPAについての記事は主にメリットに焦点を当てており、実際に開発を行っている立場からの視点は少ないように思います。そこで今回は、私が実際にRPAの開発を行っている立場から、RPAとAPIのメリット・デメリットを比較してみたいと思います。
RPAとは
RPAは、ロボティック・プロセス・オートメーションの略で、タスクの自動化を実現するツールやフレームワークです。主にGUI(グラフィカルユーザーインターフェース)を通じてアプリケーションを操作し、ルーチンワークを自動化します。
代表的なサービスは以下の通りです。
- UiPath
- BizRobo!
- WinActor
APIとは
API(Application Programming Interface)は、アプリケーション同士が情報をやり取りするためのインターフェースです。APIを使用することで、プログラムがデータや機能を共有できます。APIは、レストランで注文を取るウェイターのようなものです。あなたがレストランで食事をするとき、メニューから選んだ料理をウェイターに伝えますよね。ウェイターはその注文を厨房に伝え、厨房は注文された料理を作ってウェイターを通じてあなたに届けます。
この例で言うと、
- メニューは、プログラムが利用できる機能やデータのリストです。
- ウェイターはAPIで、注文(リクエスト)を受け取り、正しい場所(サーバー)に伝え、結果(レスポンス)を持ち帰ります。
- 厨房はサーバーで、データを処理し、要求された情報を提供します。
例えば、天気予報アプリは、特定の場所の最新の天気情報を表示したいとします。このアプリは天気予報のAPIに「東京の天気は?」と問い合わせます。APIはこのリクエストを受け取り、天気サービスのサーバーに送信します。サーバーは最新の天気データを処理し、APIを通じてアプリに「東京は晴れ、気温は22度」というレスポンスを返します。そして、アプリはその情報を画面に表示して、あなたに知らせます。
つまり、APIは異なるソフトウェア間で情報を簡単かつ効率的に交換するための仲介者の役割を果たします。これにより、開発者は複雑な内部処理を理解することなく、必要なデータや機能にアクセスできるのです。有名なAPIは下記のものがあります。
- Instagram Graph API: Instagramのビジネスアカウントの情報を取得・更新できます
- LINE Messaging API: LINEで自動返信するbotなどを作ることができます
- Google Cloud Vision API: 画像から文字を抽出したり、様々な分析情報を取得することができます
APIは単独では使えません。使いこなすにはPythonやC++などのプログラミング知識が必須です。
開発者側の視点(RPA編)
私の場合はRPAの開発ツールとしてはUiPathを使うことが多いです。開発はしやすいと感じます。アクティビティをパズルのように並べる形式は使いやすく、プログラミングよりも習得が比較的容易です。一部のツールはプログラミング不要と謳っていますが、ある程度のプログラミング知識は必要だと思います。例外処理や変数の扱い方を理解していれば、開発がスムーズに進みます。また、複数人で開発する際はプログラミング知識が非常に有用になります。
しかし、RPAでブラウザの操作をする際には注意が必要です。例えば、Google ChromeやEdgeを介してGUIを通じてログイン処理を行うことが可能ですが、ログイン画面やホーム画面のデザインが変わると動作しなくなる可能性があります。企業やITサービスのデザインは時代によって変わるため、その点には注意が必要です。
その他にも、インターネット環境やページの運営会社の問題によって、ページが開かない場合やブラウザが起動しない場合、ページの読み込み時間が長すぎる場合など、RPAの動作が妨げられることがあります。私の経験上、これらの問題は再現性が低いため、対処が難しいことがあります。再現性があるエラーならば対処できることが多いのですが、再現性のないエラーは時折対処に困ることがあります。
ただし、デメリットばかりではありません。一部のITサービスではAPIが提供されていない場合もありますので、そのような場合にはRPAが有用です。
開発者側の視点(API編)
APIとプログラミングを組み合わせた開発では、GUIを介する必要がないため、画面の変更に影響されにくいという利点があります。APIのバージョンによっては使えなくなる可能性もありますが、RPAよりも変更が少ない傾向があると感じます。
前述した通り、APIを使用するにはプログラミングが必須です。さらにプログラミングを行う際には、専門的なスキルが必要です。有名な言語であるPythonやC++などのユーザー数が多い言語などを使用することをお勧めします。ドキュメントが豊富であり、インターネット上でも情報を見つけやすいためです。一方で、ユーザーが少ない言語はドキュメントが不足している場合がありますので、避けるべきです。
私自身の経験から言えば、APIを使った開発を一度経験すると、他社のAPIを活用した開発が容易になります。大手ITサービスのAPIに関する情報は、公式ドキュメント以外にも技術系ブログやQiitaなどで入手できるため、開発がしやすいと感じます。まずは比較的ユーザー数が多いAPIを使った開発から進めるのも良いかもしれません。ただし、専門スキルを持った人材の確保や専門的な知識が必須になります。すでに専門スキルを持った人材がいるなら問題ありませんが、そうでない会社は育成や確保が必要になります。
結論
私個人としては、APIが提供されている場合は、APIとプログラミングを組み合わせた開発を推奨します。専門スキルや人材が必要ですが、開発ができれば自由度が高く、応用範囲も広がります。一方、APIが提供されていない場合はRPAを利用するのも良いかもしれません。ただし、私の経験から言えばRPAを使用することは避けたいとは思っています。
なにか参考になれば幸いです。
参考文献
- RPAの日本国内・世界シェアは?市場規模やシェア率の高い製品ランキングも解説 | RPA テクノロジーズ株式会社
- Messaging APIの概要 | LINE Developers
- InstagramグラフAPI – Instagramプラットフォーム – ドキュメンテーション – Meta for Developers
- クイックスタート: Cloud Vision API を使用して画像内のラベルを検出する | Google Cloud
- APIとは? API連携の仕組みや事例をわかりやすく紹介 | NTTコミュニケーションズ 法人のお客さま
- 【NTT西日本】GUI(Graphical User Interface)|ICT用語集|法人・ 企業向け ICT サービス ・ ソリューション
このカテゴリの最新記事
2024.02.09
2024.06.26
2023.04.24
2024.08.22