お知らせ・ブログ

オノコムからの最新情報や、生成AI、AWSクラウド、ノーコードアプリケーションに関する有益な情報をお届けします。

Strands AgentsをTypeScriptで実行してみた

2025年12月04日
あきひが
ブログ

【はじめに】

現在、会社の社員研修の一環として、AWS re:Invent 2025に海外出張として来ています。こんな機会でもなければ、私の人生でパスポート取得をすることもなかったと思います。貴重な機会を与えてくれた会社に感謝です。

「とにかく最初の基調講演を生で見ろ!」が今回の最大の目的として設定されているため、早起きをして並んで生で見ました。その中で「Strands AgentsがTypeScriptに対応した。」という発表があったので、早速、私も動かしてみました。と言っても、GitHubのリポジトリ「strands-agents/sdk-typescript」のREADME.mdを基にAWSのアクセスキーなどを追加しただけのシンプルなものですが、実際に自分で動かしてみると「TypeScriptでも動いた!」と軽く気分が上がりました。

今回は、Strands AgentsのTypeScript SDKを入れて、Amazon Bedrock(us-west-2)経由で Agent.invoke() を動かすところまでの手順を簡単に説明したいと思います。

【環境や使用したもの】

  • Strands AgentsのTypeScript SDK(今回の主役)

  • Mac

  • Node.jsのバージョン20以上がインストールされていること

  • AWSアカウントを持っていること

  • リージョンは、us-west-2(オレゴン)

  • Amazon BedrockでClaudeモデルへのアクセスが有効になっていること(Claude Sonnet 4.5がプレイグラウンドで動かせる状態であること)

  • IAMユーザー(ポリシー:AmazonBedrockFullAccess)のアクセスキー、シークレットアクセスキー

    ※今回は手っ取り早く動かすために「アクセスキー」、「シークレットアクセスキー」、「ポリシー:AmazonBedrockFullAccess」を使用していますが、実際に使用する際は適切な認証方法、ポリシーを使用してください。

  • 参考にさせていただいたリポジトリ

【手順】

  1. プロジェクト用のフォルダを作成し、その中で設定ファイルを作成。

    # プロジェクトフォルダを作成
    mkdir test-strands-agents-typescript
    
    # 作成したフォルダへ移動
    cd test-strands-agents-typescript
    
    # TypeScriptの設定ファイルを作成
    npm init -y
    
  2. 必要なパッケージをインストール。

    # Strands Agents SDKとdotenv
    npm install @strands-agents/sdk dotenv
    
    # TypeScript関連のパッケージ
    npm install --save-dev tsx typescript @types/node
    

    ※「dotenv」とは、「.env」ファイルの内容を読み込んで環境変数として扱えるようにするパッケージです。

  3. 「package.json」を編集。

    全てを以下の内容に上書きします。

    {
      "name": "test-strands-agents-typescript",
      "version": "1.0.0",
      "type": "module",
      "scripts": {
        "start": "tsx src/index.ts"
      },
      "dependencies": {
        "@strands-agents/sdk": "^0.1.1",
        "dotenv": "^16.0.0"
      },
      "devDependencies": {
        "@types/node": "^20.0.0",
        "tsx": "^4.21.0",
        "typescript": "^5.5.0"
      }
    }
    
  4. 「tsconfig.json」を作成。

    {
      "compilerOptions": {
        "target": "ES2022",
        "module": "ESNext",
        "moduleResolution": "bundler",
        "esModuleInterop": true,
        "strict": true,
        "outDir": "./dist",
        "rootDir": "./src",
        "skipLibCheck": true
      },
      "include": ["src/**/*"]
    }
    
  5. IAMユーザーを作成し、アクセスキーを取得。

    以下の内容でAmazon Bedrockを使用するためのユーザーを作成します。

    • AWSマネジメントコンソールにログイン。
    • 検索欄に「IAM」と入力、「IAM」=>「ユーザー」=>「ユーザーの作成」の順にクリック。
    • 「ユーザーの詳細」で「ユーザー名」を入力し、「次へ」をクリック。
    • 「許可のオプション」で「ポリシーを直接アタッチする」を選択、「許可ポリシー」で「AmazonBedrockFullAccess」を選択し、「次へ」をクリック。
    • 「ユーザーの作成」をクリック。
    • ユーザーが作成されるので、作成したユーザーをクリック。
    • 「セキュリティ認証情報」タブをクリック。
    • 「アクセスキー」の「アクセスキーを作成」をクリック。
    • 「ユースケース」の「コマンドラインインターフェイス(CLI)」を選択、「確認」にチェックを入れ、「次へ」をクリック。
    • 「説明タグ値」を必要であれば入力し、「アクセスキーを作成」をクリック。
    • 表示される「アクセスキー」、「シークレットアクセスキー」を保存。
  6. 「.env」ファイルを作成。

    前項で作成した「アクセスキー」、「シークレットキー」を入力し、「AWS_REGION」には、「us-west-2」を設定します。

    ※アクセスキーの取り扱いには、十分ご注意ください。

    AWS_ACCESS_KEY_ID=(アクセスキー)
    AWS_SECRET_ACCESS_KEY=(シークレットアクセスキー)
    AWS_REGION=us-west-2
    
  7. 「.gitignore」ファイルを作成。

    node_modules/
    dist/
    .env
    
  8. 「src」フォルダを作成し、その中に「index.ts」ファイルを作成。

    # srcフォルダを作成
    mkdir src
    
    # index.tsファイルを新規作成
    touch src/index.ts
    
  9. 「index.ts」ファイルを編集。

    import 'dotenv/config';
    import { Agent } from '@strands-agents/sdk';
    
    async function main() {
      const agent = new Agent();
      const response = await agent.invoke("ラスベガスについて教えて。");
      console.log(response);
    }
    
    main().catch(console.error);
    

以上で、必要なパッケージのインストール、ファイルの作成、編集などは終了です。

上記の作業を終えると次のような構成になります。

test-strands-agents-typescript/
├── .env
├── .gitignore
├── package.json
├── package-lock.json
├── tsconfig.json
├── node_modules/
└── src/
    └── index.ts

【実行】

「test-strands-agents-typescript」フォルダ直下に移動し、次のコマンドを実行します。

npm start

問題なく実行されると、以下のようなメッセージがコンソール上に表示されます。

※一部デバッグ表示も含まれています。

# ラスベガスについて

## 基本情報
- **所在地**: アメリカ・ネバダ州
- **人口**: 約65万人(都市圏では約220万人)
- **愛称**: "Sin City"(罪の街)、"Entertainment Capital of the World"(世界の娯楽の首都)

## 主な特徴

### 🎰 カジノ・エンターテイメント
- 世界最大級のカジノリゾート都市
- 有名ホテル:ベラージオ、シーザーズパレス、MGMグランドなど
- 24時間営業の施設が多い

### 🎭 ショー・エンターテイメント
- シルク・ドゥ・ソレイユの常設公演
- 世界的アーティストのコンサート
- マジックショーやミュージカル

### 🏜️ 気候
- 砂漠気候(モハーベ砂漠)
- 夏は非常に暑い(40℃超)
- 降水量が少ない

### 💒 その他の特徴
- 簡単に結婚できることで有名
- 近郊にグランドキャニオンなどの観光地
- ネバダ州は州税がない

## 経済
観光産業が中心で、年間約4,000万人以上の観光客が訪れます。

何か specific な情報が知りたいことはありますか?AgentResult {
  type: 'agentResult',
  stopReason: 'endTurn',
  lastMessage: Message {
    type: 'message',
    role: 'assistant',
    content: [ [TextBlock] ]
  }
}

【まとめ】

以上でStrands AgentsのTypeScriptの実行テストは、終了です。

内容的には、あまりPythonと変わりが無いかもしれませんが、それでもTypeScriptで動くことによって、今後TypeScriptの利点を活かしたコード開発がしやすくなるのではないかと思います。

特に型チェックなどがありがたいです。

ずっとPythonだけだったのがTypeScriptで使えるようになったこと、他の方がもっと凝ったことをやられていたこと、それを見て私も試してみたいと思ったことなど、おそらくAWS re:Invent 2025の影響でやりたい熱が高まったのが要因だとは思いますが、今回参加したことによる何かしらの形が残せたのは良かったと思います。

基調講演では、他にもAgentCore関連や新モデルなどの発表がありましたので、今後は、TypeScriptでそれらを試していってみるのも面白そうだと思いませんか?