Amazon Nova Act を体験してみた！自動ブラウザ操作の新時代

Amazonが研究プレビューとして公開している「Nova Act」を実際に試してみました。この記事では、Nova Actの特徴と実際の動作について紹介します。

## Nova Actとは？

Nova Actは、ウェブブラウザ上で信頼性の高いアクション実行を目的としたSDK+モデルです。複雑なワークフローを小さく信頼性の高いコマンドに分解し、必要に応じて詳細を追加したり、APIを呼び出したり、ブラウザ操作を直接挿入したりできます。また、テスト、ブレークポイント、アサーション、並列処理のためのスレッドプーリングなど、Pythonコードを織り交ぜることも可能です。

## デモ動画

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">ブラウザ内での自動操作に特化した基盤モデル「Amazon Nova Act」を使ってみた！！！<br>普通に良さそうなのでもうちょっと触ってみます！ <a href="https://t.co/tQHKGUsBef">https://t.co/tQHKGUsBef</a> <a href="https://t.co/w3rMo4OXxX">pic.twitter.com/w3rMo4OXxX</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1911275864857465068?ref_src=twsrc%5Etfw">April 13, 2025</a></blockquote> 

## 環境構築

Nova Actを利用するためには、以下の前提条件が必要です：
- MacOSまたはUbuntu（※今回はWindows環境で試してみました）
- Python 3.10以上

環境構築の手順：

```powershell
# 仮想環境の作成
uv venv 

# 仮想環境のアクティベート
.venv\Scripts\activate

# Nova Actのインストール
uv pip install nova-act
```

## APIキーの取得

Nova Actを利用するには、APIキーが必要です。https://nova.amazon.com/act からAPIキーを生成し、環境変数として設定します：

```powershell
$env:NOVA_ACT_API_KEY="your_api_key"
```

## 実際にサンプルを動かしてみる

Nova Actには便利なサンプルが含まれています。今回は `apartments_caltrain.py` を実行してみました。このサンプルは:

1. Zumperという不動産サイトで特定の条件のアパートを検索
2. 見つかったアパートから最寄りのCaltrainの駅までの自転車での所要時間と距離を調査
3. その結果を整理して表示

というワークフローを自動化します。

```powershell
python -m nova_act.samples.apartments_caltrain
```

## 動作の様子

実行すると、自動的にChromeブラウザが起動し、以下のような操作が行われました：

1. Zumperのウェブサイトにアクセス
2. 検索バーに「Redwood City, CA」と入力
3. フィルターからベッドルーム2つ、バスルーム1つを選択
4. リスト表示に切り替え
5. アパート情報を取得
6. 取得した各アパートから最寄りのCaltrainの駅までの自転車での時間・距離をGoogle Mapsで検索

## コードの解説

サンプルのコード構造は比較的シンプルです：

```python
# アパート情報とCaltrainへの自転車での距離時間を取得
def add_biking_distance(apartment: Apartment, caltrain_city: str, headless: bool) -> CaltrainBiking | None:
    with NovaAct(
        starting_page="https://maps.google.com/",
        headless=headless,
    ) as nova:
        nova.act(
            f"Search for {caltrain_city} Caltrain station and press enter. "
            "Click Directions. "
            f"Enter '{apartment.address}' into the starting point field and press enter. "
            "Click the bicycle icon for cycling directions."
        )
        result = nova.act("Return the shortest time and distance for biking", schema=CaltrainBiking.model_json_schema())
        if not result.matches_schema:
            print(f"Invalid JSON {result=}")
            return None
        time_distance = CaltrainBiking.model_validate(result.parsed_response)
        return time_distance
```

注目すべき点：
- `nova.act()` メソッドで自然言語指示を与えるだけで複雑なブラウザ操作を実行
- `schema` パラメータでデータの抽出形式を指定
- ThreadPoolExecutorを使った並列処理

## Nova Actの特徴

1. **自然言語での操作指示**：「検索して」「クリックして」など、人間が人間に伝えるような言葉でブラウザを操作できます。

2. **小さなタスクへの分解**：大きな操作を小さな指示に分解することで信頼性を高めています。

3. **並列処理が容易**：複数のNovaActインスタンスを作成して並列にタスクを実行できます。

4. **データ抽出が簡単**：Pydanticと組み合わせることで、Webページからのデータ抽出と構造化が簡単に行えます。

## Windows環境での注意点

実行時に以下のエラーが発生しました：

```
OSError: [WinError 10038] ソケット以外のものに対して操作を実行しようとしました。
```

これはWindowsでのselect.select()の使用に関する問題のようですが、実際の動作には影響がありませんでした。ただし、公式のサポートOSはMacOSとUbuntuなので、本格的に利用する場合はこれらの環境を使用することをお勧めします。

## 感想

Nova Actは非常に興味深いツールです。特に以下の点が印象的でした：

- 自然言語での指示だけでブラウザ操作が可能で、コーディング量が大幅に削減されます
- 複雑なワークフローも簡単に自動化できます
- 並列処理によるスケーラビリティが高いです

一方で、まだ研究プレビュー段階であり、いくつかの制限もあります：

- 高レベルの曖昧な指示では信頼性が低下することがあります
- マウスオーバーで表示される要素との相互作用は難しいです
- ブラウザウィンドウ自体との相互作用はできません

## まとめ

Amazon Nova Actは、ウェブ自動化の可能性を大きく広げるツールです。自然言語での指示だけでブラウザ操作ができるという特徴は、特に技術的な知識が限られたユーザーや、素早くプロトタイプを作成したい開発者にとって非常に魅力的です。

まだ研究プレビュー段階でいくつかの制限はありますが、今後の進化に期待が持てます。特に、複雑なワークフローを小さく信頼性の高いコマンドに分解するというアプローチは、他の自動化ツールとは一線を画しています。

皆さんもぜひ試してみてください！

## リポジトリ

https://github.com/Sunwood-ai-labs/nova-act-jp

https://github.com/Sunwood-ai-labs/nova-act-jp

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>