14
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ブラウザをAIエージェントが操作!?】Amazon Nova Actを体験してみた

Last updated at Posted at 2025-12-17

はじめに

先日のAWS re:Invent では多くの AI 系アップデートが発表されましたが、個人的に気になったのが Amazon Nova Actです。
Amazon Nova ActはWebブラウザで動作するAIエージェントであり、自然言語による指示でWebブラウザ内での操作を実行することができます。
2025年3月からリサーチプレビュー版として提供されていましたが、re:Inventにて一般提供(GA)が発表されました。

スクリーンショット 2025-12-17 11.51.31.png
AWS re:Invent 2025 - Keynote with Dr. Swami Sivasubramanian

個人的にハードコーディングでのWEBスクレイピングに苦労した経験があるため、AIエージェントが柔軟にWebブラウザを操作できる可能性に興味があり、
本記事で実際にNova Actを触ってみてその将来性を体験してみたいと思います。
今回のブログでは、Nova Actがどのような挙動で動作するのかをAWS提供のWebページで確認できるPlaygroundと、Nova Actを実際にローカルPCで動作させる手順を紹介していきたいと思います。

Nova Actとは

前述した通り、Nova ActはUIを自然言語で操作できるAIエージェントになります。プレビュー版ではモデルへのアクセスしかできませんでしたが、一般提供版では、開発者が本番環境のUIワークフローを自動化するためのAIエージェントの構築、デプロイ、管理する機能が提供されるようになりました。1

すでにユーザーガイド2も提供されており、Nova Actについての詳しい説明、導入方法などを確認することができます。

Nova Actはエージェントのエンドツーエンドのタスクを自然言語とPythonのコードの組み合わせで定義したワークフローによって実行されます。実行させるとエージェントは定義した目的のために、反復してUIワークフローを実行します。また、Human-in-the-Loopの設計思想が取り入れられており、適切なタイミングで人間にエスカレーションを行う設定を入れることが推奨されています。

特徴として、API・リモートMCP・Strand Agent等のエージェントフレームワークを介した外部ツールの連携が前提とされており、これらを統合することでAgentic AIを構築することができます。

Nova Actの紹介ページでは、Nova Actによってブラウザ上でのデータのピックアップ・検索やフィルター・ドロップダウンの選択など、今までWebブラウザのサイズやデザインが環境によって異なるために自動化が難しかったタスクをNova Actによって実現できることがわかります。

スクリーンショット 2025-12-16 7.59.13.png
(出典:Introducing Amazon Nova Act)

具体的なユースケース

具体的なユースケースとしては、人間が普段ブラウザ上で実施している日常業務・定型作業の自動化が考えられます。
APIのないSaaSサービスへのログインおよび結果の確認や請求書・レポートの取得、ショッピングサイトでの定期購入などが考えられます。

AWSでのAgentic AIの実践的な構築方法について解説した、Building Agentic AI: Amazon Nova Act and Strands Agents in Practice (DEV327)の講演では、Nova Act + MCP を利用し、香港天文台のWebサイトを「自然言語で操作」し、「必要な情報を自律的に抽出し」「スクリーンショットを取得」するデモが紹介されました。

スクリーンショット 2025-12-17 12.35.10.png

学習方法について

Dr. Swami氏によるKeynote(Keynote with Dr. Swami Sivasubramanian)のNova Actについての解説でも述べられていますが、Nova ActはこれまでAIエージェントの学習でよく用いられてきた模倣学習(imitation learning)ではなく、強化学習(reinforcement learning)を採用しています。
Nova Actが自らトレーニングして改善できる実際のUIを再現した強化学習ジム(Nova Act Gym)を使って数千のワークフローの試行を重ねることで、タスクを実行するオーケストレーター・アクチュエーターとは独立して個別に学習される信頼性が低下してしまうという従来の模倣学習を使用した際の課題を解決しています。

スクリーンショット 2025-12-16 7.55.18.png
(出典:Nova Act Gym

動作環境

以下の情報は2025年12月時点での情報です。
最新の情報につきましては別途公式サイトをご確認ください。

Amazon Nova Act SDKの提供は2025年12月時点で米国東部 (バージニア北部) の AWS リージョンのみとなります。
下記サイトにアクセスすることで利用可能となります。

筆者はUS-EAST-1にEC2を立ててアクセスしましたが、後述する方法で日本からでも一部機能を使用することができます。

次の項目から公式のドキュメンテーションに沿ってNova Actを体験していきます。2

Playground

Novaのページにアクセスすることで、Playgroundを使用することができ、Nova Actの機能を体験することができます。自然言語を入力することで実際にNova Actがどのような挙動で動作するのかをデモのような形で確認できます。

スクリーンショット 2025-12-16 13.14.15.png

右上のUIスクリーンショット上ではマウスポインターが表示され実際にどこにAIエージェントが注目し動作しているのかが可視化されています。
右下のAgent Output Windowでは実際のエージェントの思考が自然言語で出力されているのを確認できます。

上記の結果ではLINE占いを開き、ページ遷移後にてんびん座の占い結果を出力させるUI Agentを作成しました。今回の例では、①エージェントがLINE占いのTOPページにアクセスし、②左側のサイドバーの中で「12星座占い」を選択して遷移後、③数ある選択肢の中からてんびん座を選択してページにアクセスできることを確認できました。

スクリーンショット 2025-12-17 12.47.18.png

上記結果はうまくいきましたが、「かに座」を対象とすると誤って「みずがめ座」を検索してしまったりと、プロンプトを明確に定義しないと上手く動作しないこともあるようです。

Nova Actの動作検証

次にNova Actを実際にローカルPCで動作させる手順を紹介していきたいと思います。
Nova Actをローカルで開発するための認証方法として、APIキー認証およびAWS IAM認証があります。本記事ではIAM認証を使用して、ローカルにて開発を検討します。

ローカルでのAWS認証設定については、別途詳しく記載された公式ページ・ブログ等を参照していただければと思いますが、
AWS CLIでaws configureにて認証情報を入力し、~/.aws/credentialsファイルで環境変数を入力する手順で設定できます。
資格情報が機能しているかは以下コマンドでご確認ください。

aws sts get-caller-identity

また、IAMロールと権限については、Nova ActのユーザーガイドのAWS管理ポリシーを参照してください。

Nova Act ワークフロー定義の作成

Nova Act AWSコンソールまたはCLIでNova Actワークフローを定義します。

AWSコンソールの場合は、検索バーから「Amazon Nova Act」を検索すると新しくNova Actのサービスが選択できるようになっています。
リージョンは米国(バージニア北部)にする必要があることに注意してください。
スクリーンショット 2025-12-17 12.56.00.png

下記が実際のNova Actの画面です。
「ワークフロー定義を作成」をクリックすることでワークフロー定義を設定する画面に遷移することができます。

スクリーンショット 2025-12-17 1.58.01.png

ワークフロー定義の設定画面では、ワークフローの定義名、S3バケットの設定を入力します。
S3バケットの設定は省くこともできますが、バケットを選択することで、ワークフロー実行によって作成されるアーティファクトを保存することができます。
入力後、「ワークフロー定義を作成」に進むことでワークフロー定義が作成されます。

スクリーンショット 2025-12-17 1.59.17.png

作成後のワークフロー定義が以下となります。
「ワークフローを呼び出す」のセクションでは実際にワークフロー定義を呼び出せるPythonのコードスニペットが提供されています。
また、「ワークフロー実行」では、実行されたワークフローの結果を確認することができます。実行結果の確認については後述します。

スクリーンショット 2025-12-17 2.01.02.png

Nova Actにおけるワークフローは、エージェントのエンドツーエンドのタスクを定義しています。ワークフローは、自動化ロジックをオーケストレーションするact()ステートメントとPythonコードで構成されます。2

「ワークフローを呼び出す」のセクションで提供されているコードが下記になります。
@workflow デコレータにて、ワークフロー定義名を先ほど設定した定義名とし、model_idを任意の値に設定することで、AWSコンソールで設定したワークフロー定義と紐付けを行います。

from nova_act import NovaAct, workflow            

@workflow(workflow_definition_name="myTestWorkflow", model_id="nova-act-latest")
def my_workflow(prompt):
    with NovaAct(starting_page="https://nova.amazon.com/act/gym"):
         nova.act("your prompt")

my_workflowの関数では、with NovaAct(starting_page="https://nova.amazon.com/act/gym"):で、指定したURLをスタートページとして、ブラウザセッションが起動する処理が行われます。
そしてact()ステートメント内の"your prompt"を任意のプロンプトに置き換えると、プロンプトに従ってエージェントが動きます。

ローカル環境での検証

実際に、ローカル環境でプロンプトを設定し、エージェントの挙動を確認したいと思います。
Playgroundで検証した「LINE占いの結果確認」のタスクでもよいですが、せっかくなので別のタスクを設定してみます。
想定するストーリーとしては、「Amazonのショッピングサイトにアクセスし、予算に近いクリスマスプレゼントを選ぶ」というものを想定します。
以下のスクリプトのような形でプロンプトを設定します。

from nova_act import NovaAct, workflow

@workflow(workflow_definition_name="myTestWorkflow", model_id="nova-act-latest")
def my_workflow(prompt):
    with NovaAct(starting_page="https://www.amazon.co.jp/") as nova:
        result = nova.act(prompt)
        return result
    
if __name__ == "__main__":
    prompt = """
        クリスマスプレゼントを探して。
        1.「クリスマスプレゼント」で検索して
        2. スクロールして
        3. ¥2000〜¥3000の商品があったら選択して
        4. 選択した商品を教えて
    """
    my_workflow(prompt)

実際にPythonスクリプトを動かすと、ローカル環境上では新規のWebブラウザが起動され、人間の手を介さずにエージェントがローカル環境上でAmazonのサイトを検索して目的を達成しようと反復的に行動していることが確認できます。
また、以下のようなログが出力され、エージェントの挙動を確認できます。

Running on Nova Act AWS Service.

2025-12-17 01:01:26,495 - nova_act.types.workflow - INFO - Created workflow run xxxxxxxxxxxxx with model nova-act-latest.

start session xxxxxxxxxxxxx on https://www.amazon.co.jp/ logs dir /var/folders/44/xxxxxxxxxxxxx/T/tmpl05wv6bb_nova_act_logs/xxxxxxxx

036a> act("
036a>         クリスマスプレゼントを探して。
036a>         1.「クリスマスプレゼント」で検索して
036a>         2. スクロールして
036a>         3. ¥2000〜¥3000の商品があったら選択して
036a>         4. 選択した商品を教えて
036a>     ")
036a> 💭 ...
036a> think("I am on the Amazon homepage. My task is to search for Christmas presents, scroll down, and select a product priced between ¥2000 and ¥3000. I should start by searching for "Christmas presents". I see a search bar at the top of the page. I should click on the search bar and type "Christmas presents" and press enter to initiate the search.");
036a> agentType("クリスマスプレゼント", "<box>13,429,42,981</box>", "{"pressEnter": true}");
036a> 👀 ...
036a> 💭 ...
036a> think("The page now shows search results for "Christmas presents", which means my last action was successful. The search results are now displayed, but I need to scroll down to find products in the price range of ¥2000 to ¥3000. I should scroll down the page to view more products.");
036a> agentScroll("down", "<box>0,0,773,1470</box>");
036a> 👀 ...
036a> 💭 ...
036a> think("The page now shows more products, which means my previous action of scrolling down was successful. I can see a product on the right side with the price of ¥2,980, which is within the desired range of ¥2000 to ¥3000. I should click on the product to select it.");
036a> agentClick("<box>307,1193,363,1444</box>");
036a> 👀 ...
036a> 💭 ...
036a> think("I am now on the product page for the GODIVA Chocolate Masterpiece, which means my last action was successful. I have found a Christmas present priced between ¥2000 and ¥3000. The task is complete, and I need to return the name of the selected product.");
036a> return("クリスマス GODIVA ゴディバ マスターピース スクエア チョコレート パチキフト ラッピング済み");
036a> 🎬 ...
036a> ⏱️  Approx. Time Worked: 33.6s

036a> ** View your act run here: /var/folders/44/2zxc2gb506lchzv602ydkhw80000gn/T/tmpl05wv6bb_nova_act_logs/019b27e5-241c-xxxxxxxxxxxxx/act_019b27e5-37d3-72c3-8fbf-7354cf57a487_クリスマスプレゼントを探して。_________1.「クリス.html

036a> ⏱️  Approx. Total Time Worked in Session: 33.6s across 1 act call

end session: xxxxxxxxxxxxxx

2025-12-17 01:02:13,920 - nova_act.types.workflow - INFO - Updated workflow run 019b27e5-2200-7959-xxxxxxxxxx status to 'SUCCEEDED'

think()の中で思考が記述されています。
以下日本語にAI翻訳した内容です。

「私はAmazonのホームページにいます。私のタスクは、クリスマスプレゼントを検索し、ページを下にスクロールして、価格が2,000円から3,000円の間の商品を選ぶことです。まずは『クリスマスプレゼント』を検索する必要があります。ページの上部に検索バーが見えます。検索バーをクリックして『クリスマスプレゼント』と入力し、Enterキーを押して検索を開始します。」
「ページには『クリスマスプレゼント』の検索結果が表示されており、これは直前の操作が成功したことを意味します。検索結果は表示されていますが、価格が2,000円から3,000円の範囲の商品を見つけるために、ページを下にスクロールする必要があります。より多くの商品を確認するために、ページを下にスクロールします。」
「ページにさらに多くの商品が表示され、先ほどのスクロール操作が成功したことが分かります。右側に価格が2,980円の商品が見えており、これは希望している2,000円〜3,000円の範囲内です。この商品を選択するためにクリックします。」
「現在、GODIVA チョコレート マスターピースの商品ページにいます。これは直前の操作が成功したことを意味します。2,000円から3,000円の価格帯のクリスマスプレゼントを見つけることができました。タスクは完了したため、選択した商品の名前を返します。」

エージェントが自律的に動き、Amazonのサイトの検索バーから「クリスマスプレゼント」を検索・スクロールし条件にあった商品を選択できていることがわかります。
出力の最後には、結果をまとめたhtmlが提供されており、アクセスすると、Stepごとに、どこに注目しているかがわかります。例えば、検索結果から2,000円〜3,000円の条件にあう商品を選ぶStepでは、赤枠で対象商品に注目できていることが可視化されています。

スクリーンショット 2025-12-17 1.42.09.png

実行結果の確認

先ほど作成したAWSコンソール上のワークフロー定義でもワークフローの実行結果を確認することができます。
結果自体はローカルで保存されるhtmlファイルと同じ内容ですが、AWSコンソールのUI上でセッションの選択・アクトの選択やエラーが発生しているステップのみを表示することが可能となります。

スクリーンショット 2025-12-17 1.53.45.png

最後に

今回はre:Invent2025にて一般提供(GA)されたNova ActについてPlaygroundとローカル環境で検証してみました。検証の中でエージェントに自然言語で指示を与えることで、自律的にWebブラウザを操作し必要な操作をした上で必要な情報を抽出できることが確認できました。
今回の検証ではローカル環境での実行に留まり、ワークフローのデプロイまでは検証できていません。今後デプロイも含めて検証できたらと考えています。
さらに、Human-in-the-Loop機能についてもNova Act SDKで提供されているので、今後試していけたらと思います。
Nova Actは一般提供されたばかりのサービスであり、これから進化(機能追加)していくと予想されます。筆者自身もまだキャッチアップができていない部分もあり、今後本記事を適宜修正する可能性もありますのでご容赦ください。

参照

  1. https://aws.amazon.com/jp/blogs/aws/build-reliable-ai-agents-for-ui-workflow-automation-with-amazon-nova-act-now-generally-available/

  2. https://docs.aws.amazon.com/nova-act/latest/userguide/what-is-nova-act.html 2 3

14
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?