コンピュータ科学において、ソフトウェアエージェントとは、ユーザーまたは他のプログラムのために代理関係において動作するコンピュータプログラムのことである。
エージェントという用語は、ラテン語のagere (行う)に由来し、他者の代理として行動するという合意を意味します。このような「代理での行動」は、適切な行動があるかどうかを決定する権限を意味します。 [ 1 ] [ 2 ]エージェントの中には、ロボットから派生したボットと呼ばれるものもあります。実行がロボットの身体とペアになっている場合のように、具現化されている場合もあれば、モバイル デバイスなどのコンピュータ上で実行されるチャットボットなどのソフトウェアである場合もあります(例: Siri )。ソフトウェア エージェントは自律的である場合もあれば、他のエージェントや人々と連携して動作している場合もあります。人々と対話するソフトウェア エージェント (例:チャットボット、人間とロボットのインタラクション環境) は、自然言語の理解や発話、人格などの人間のような特性を持つ場合や、人型形態を具現化している場合があります( Asimo を参照)。
関連概念や派生概念には、インテリジェントエージェント(特に推論などの人工知能の側面を示すもの)、自律エージェント(目的達成の方法を変更できるもの)、分散エージェント(物理的に異なるコンピュータ上で実行されるもの)、マルチエージェントシステム(単一のエージェントだけでは達成できない目的を達成するために連携して動作する分散エージェント)、モバイルエージェント(実行を異なるプロセッサに移動できるエージェント)などがある。
自律型ソフトウェアエージェントの基本的な属性は、エージェントが以下のことを行うことです。

エージェントの概念は、ホストに代わってタスクを実行するために、ある程度の自律性を持って動作できる複雑なソフトウェアエンティティを記述する方法を提供する。しかし、メソッドと属性によって定義されるオブジェクトとは異なり、エージェントはその動作によって定義される。[ 3 ]
様々な著者がエージェントの異なる定義を提案しており、それらには一般的に次のような概念が含まれる。
すべてのエージェントはプログラムですが、すべてのプログラムがエージェントであるとは限りません。この用語を関連する概念と比較することで、その意味を明確にすることができます。Franklin & Graesser (1997) [ 4 ]は、エージェントを任意のプログラムから区別する 4 つの重要な概念、すなわち環境への反応、自律性、目標指向性、および持続性について論じています。
ソフトウェアエージェントは、複雑なタスクや反復的なタスクを自動化することで、エンドユーザーにさまざまなメリットをもたらす可能性があります。[ 6 ]しかし、ソフトウェアエージェントを導入する前に、このテクノロジーが組織や文化に及ぼす影響を考慮する必要があります。
人は、単純な作業の繰り返しが全体の成果に影響を与えない限り、成功感をもたらす簡単な作業を行うことを好みます。一般的に、管理要件を実行するためにソフトウェア エージェントを導入すると、作業満足度が大幅に向上します。なぜなら、自分の作業を管理することは決して作業者を満足させないからです。解放された労力は、個々の作業の重要なタスクへのより高いレベルの関与に役立ちます。したがって、ソフトウェア エージェントは、階層的な制御や干渉から解放された自己制御作業を実行するための基盤を提供する可能性があります。[ 7 ]必要な正式なサポートにソフトウェア エージェントを適用することで、このような条件を確保できます。
ソフトウェアエージェントの導入による文化的影響には、信頼の低下、スキルの喪失、プライバシーの侵害、社会的孤立などが含まれます。一部のユーザーは、重要なタスクをソフトウェアアプリケーションに完全に委任することに完全には抵抗を感じるかもしれません。インテリジェントエージェントにのみ依存し始めると、情報リテラシーなど、重要なスキルを失う可能性があります。ユーザーに代わって行動するためには、ソフトウェアエージェントは、ユーザーの個人的な好みを含む、ユーザーのプロファイルを完全に理解する必要があります。これは、予期せぬプライバシーの問題につながる可能性があります。ユーザーがソフトウェアエージェントに、特にコミュニケーション活動においてより依存し始めると、他の人間のユーザーとの接触を失い、エージェントの視点で世界を見るようになるかもしれません。これらの結果は、インテリジェントエージェント技術を扱う際に、エージェントの研究者とユーザーが考慮しなければならないものです。[ 8 ]
エージェントの概念は、ヒューイットのアクターモデル(Hewitt、1977)に遡ることができる。「自己完結型で、対話型かつ同時実行型のオブジェクトであり、内部状態と通信機能を備えている。」
より学術的に言えば、ソフトウェアエージェントシステムはマルチエージェントシステム(MAS)の直接的な進化形です。MASは分散型人工知能(DAI)、分散型問題解決(DPS)、並列AI(PAI)から発展したため、DAIとAIのすべての特性(良い点も悪い点も)を受け継いでいます。
ジョン・スカリーが1987年に制作したビデオ「ナレッジナビゲーター」は、エンドユーザーとエージェントの関係性をイメージして描いた。当初は理想論であったため、この分野では段階的なボトムアップのアプローチではなく、一連のトップダウン型の実装が失敗に終わった。現在(1990年以降)、エージェントの種類はWWWや検索エンジンなど多岐にわたる。
バイヤーエージェント[ 9 ]は、ネットワーク(インターネットなど)を巡回し、商品やサービスに関する情報を取得します。これらのエージェントは「ショッピングボット」とも呼ばれ、CD、書籍、電子部品、その他汎用的な商品などのコモディティ製品に対して非常に効率的に機能します。バイヤーエージェントは通常、eコマースや従来のビジネスで使用されるデジタル決済サービスに対応できるように最適化されています。[ 10 ]
ユーザーエージェント、またはパーソナルエージェントとは、ユーザーに代わって行動するインテリジェントエージェントのことです。このカテゴリには、既に以下のタスクを実行している、または間もなく実行するインテリジェントエージェントが含まれます。
監視エージェントは、機器(通常はコンピュータシステム)を監視し、報告するために使用されます。エージェントは、企業の在庫レベルを追跡したり、競合他社の価格を監視して企業に報告したり、インサイダー取引や噂による株価操作を監視したりするなど、さまざまな役割を担います。

例えば、NASAのジェット推進研究所には、在庫管理、計画立案、コスト削減のための機器発注スケジュール調整、食料保管施設の管理などを行うエージェントが存在する。これらのエージェントは通常、複雑なコンピュータネットワークを監視し、ネットワークに接続された各コンピュータの構成を追跡することができる。
監視エージェントの特殊な例として、戦術作戦中の意思決定プロセスを自動化するために使用されるエージェント組織が挙げられる。これらのエージェントは、資産(弾薬、使用可能な武器、輸送プラットフォームなど)の状態を監視し、上位エージェントから目標を受け取る。そして、手持ちの資産を用いて目標を追求し、資産の消費を最小限に抑えつつ、目標達成を最大化する。
このエージェントは情報技術を用いて、多様な情報源から得られる膨大な情報の中から傾向やパターンを見つけ出します。ユーザーはこの情報を整理し、必要な情報を見つけることができます。
データマイニングエージェントは、データウェアハウス内で情報を発見する働きをします。「データウェアハウス」とは、さまざまな情報源から集められた情報を集約するものです。「データマイニング」とは、データウェアハウス内を検索し、売上増加策や離脱を検討している顧客の維持など、行動を起こすために活用できる情報を見つけるプロセスです。
「分類」は、データマイニングの中でも最も一般的な手法の一つで、情報の中からパターンを見つけ出し、異なるクラスに分類します。データマイニングエージェントは、トレンドや重要な指標の大きな変化を検出したり、新しい情報の存在を検知して警告を発したりすることもできます。例えば、エージェントが経済における建設業界の衰退を検知した場合、建設会社はこの情報に基づいて、従業員の採用・解雇や設備の購入・リースなど、自社に最適な意思決定を行うことができます。
現在利用可能なインテリジェントエージェントの他の例としては、スパムフィルター、ゲームボット、サーバー監視ツールなどが挙げられます。検索エンジンのインデックス作成ボットもインテリジェントエージェントに分類されます。
ソフトウェアボットはソフトウェアエンジニアリングにおいて重要になりつつある。[ 14 ]
エージェントは、ソフトウェアセキュリティアプリケーションにおいて、さまざまな種類のコンテンツを傍受、検査、処理するためにも使用されます。例としては、以下のようなものがあります。
エージェントベースシステムの開発において考慮すべき事項には、以下のようなものがある。
ソフトウェアエージェントが効率的に連携するためには、データ要素の意味論を共有する必要があります。これは、コンピュータシステムがメタデータを公開することで実現できます。
エージェント処理の定義は、相互に関連する2つの方向からアプローチできる。
エージェントシステムは、並行処理や並列処理を伴う現実世界のシステムをモデル化するために使用される。
エージェントは、アクセス方法を用いてローカルおよびリモートのデータベースにアクセスし、コンテンツを検索します。これらのアクセス方法には、エージェントへのニュースストリーム配信の設定、掲示板からの取得、またはスパイダーを使用したWeb巡回などが含まれます。このようにして取得されるコンテンツは、 ニュースフィードや検索対象のデータベースの選択によって、既に部分的にフィルタリングされている可能性があります。次に、エージェントは、詳細検索または言語処理機構を用いて、受信または取得したコンテンツ本文からキーワードやシグネチャを抽出します。この抽象化されたコンテンツ(またはイベント)は、エージェントの推論機構に渡され、新しいコンテンツに対してどのような処理を行うかが決定されます。このプロセスでは、イベントコンテンツと、ユーザーが提供するルールベースまたは知識コンテンツが組み合わされます。このプロセスで新しいコンテンツに適切なヒットまたは一致が見つかった場合、エージェントは別の機構を用いて、コンテンツに対してより詳細な検索を実行する場合があります。最後に、エージェントは新しいコンテンツに基づいてアクションを実行することを決定します。たとえば、重要なイベントが発生したことをユーザーに通知するなどです。この操作はセキュリティ機能によって検証され、ユーザーに権限が付与されます。エージェントはユーザーアクセス方式を用いて、そのメッセージをユーザーに配信します。ユーザーが通知に対して迅速に対応することで、そのイベントが重要であると判断した場合、エージェントは学習メカニズムを用いて、この種のイベントに対する重要度を高めることもあります。
ボットは、作成者の意図に従って、善行にも悪行にも利用できます。サイト所有者の透明性を高め、ウェブサイトへの影響を軽減するようにボットを設計する方法はいくつかあります。まず、サイトと通信する際に、ユーザーエージェントHTTPヘッダーでボット自身を識別するようにします。また、正当なボットであることを証明するために、送信元IPアドレスも検証する必要があります。次に、ボットは、ほとんどのウェブで標準となっているrobots.txtファイルを常に尊重する必要があります。最後に、ボットは攻撃的になりすぎないようにし、クロール遅延指示を尊重する必要があります。[ 16 ]