金曜日, 12月 19, 2025
No menu items!
ホーム ブログ ページ 3494

アイオワDLCリリース


何が来るのかを見るためにタカの目を必要としない、 アメリカントラックシミュレーター用のアイオワDLC 今日公式にリリースされます!ホークアイ州が提供しなければならないすべてを探求する準備をしてください。

American Truck SimulatorのアイオワDLCがリリースされます
午前10時PDT、午後1時、午後6時BST、午後7時、午後9時GST、
午前1時sgt⁺¹、午前3時、aest⁺¹、午前5時nzst⁺¹

アイオワが開発中であることを最初に明らかにして以来、それはかなりの旅でした。広大な道路ネットワーク、魅力的な町、そして中西部の中心部にたくさんの仕事があるため、ハンドルの後ろを楽しみにしています。また、更新しています 農業機械DLC そして、新しい世界のトラックイベントを開始するので、このリリースを取り巻くすべての詳細をキャッチするために、完全なブログを読んでください。

ホークアイ州への訪問を最大限に活用し、あなたのようにあらゆる瞬間を楽しんでください。

  • デモイン、シーダーラピッズ、ドゥビューク、バーリントン、アイオワシティなどを含む12の都市をトラック!

  • アイオワ州議会議事堂、歴史的な杉屋根の橋、道路の真ん中の木、または世界最大の穀物ビンなど、美しく再現されたランドマークを発見してください。

  • 新しいデポとの間で貨物を届けます – 農業工場と農業ディーラー。

  • Interstate 80にATSを組み込んだ最大のトラックストップをご覧ください!

  • 米国中のホークアイ州から農産物を輸送する上で重要な部分になります。

  • スペンサー、クリア湖、ダイアーズビル、オスカルーサ、トレーアなどの旅行について、15を超える風光明媚な町(入植地)を探索してください!

  • カスタム設計された資産を備えた最新のプレハブデポであるアルミニウム工場に機器と商品を拾い上げて配送します。

  • 段々になった畑と絵のような農場で、州の見事な広大な丘を賞賛してください。

  • アイオワ州の巨大なエタノール植物デポに出入りする商品を保管し、米国のエタノール生産におけるリードをサポートします。

  • アイオワの隠された宝石を発見し、隠された道路、視点などを見つけてください!

    アイオワの多様な景色を発見するときに、活気のある川の都市と静かな農業コミュニティを巡航します。高プレーリーの丘からサイロと風力タービンが並ぶ広大な畑まで。このマップ拡張は、アイオワ州議会議事堂やミシシッピ州にまたがる象徴的な橋のような詳細なランドマークをもたらします。主要な州間高速道路、田舎の高速道路、小さな町通りを備えた道路網があり、アイオワはドライバーにユニークで没入型の旅を提供しています!


    ファーム機械DLCアップデート 1.55アップデートで、新しい貨物の追加を導入しました 農業機械DLC、ウィンドロワー!この重要な農業機器は、作物を収集して乾燥と収穫のためにきちんとした列に合わせて使用​​され、今ではそれが最も必要な場所でそれを運ぶことがあなたの仕事です。 Windrowerは、ゲーム内の農業機器メーカーの1つであるOwlでブランド化されたクラシックグリーンと黄色のバージョンの2つの色のバリエーションで雇用市場で利用できます。ローボーイトレーラー用に設計されたこの幅広い印象的な負荷は、農業の配達により多様性をもたらします。

    このアップデートの詳細を見つけることができます ここ。
    https://store.steampowered.com/app/2638630/american_truck_simulator__farm_machinery/アイオワフライフィールズバンドル
    アメリカントラックシミュレーター用のアイオワ貨物貨物&フィールズバンドルを使用して、スタイリッシュに大きな貨物を運ぶ準備をしてください!アイオワ州の農業産業の中心であるアイオワマップ拡張のリリースを祝います。アイオワ、特別輸送、農業機械、レトロオローブペイントジョブパックの4つのDLCを含むこの特別なバンドルを使用してください。

    農業機械DLCを備えたアイオワ州の農業用具、象徴的なI-80からデモインの首都まで、そしてミシシッピ川沿いの魅力的な町を通り、特別な輸送DLCからの特大の貨物であなたの運転スキルをテストします。

    ホークアイ州をクルーズするときに、Retrowave Paint Jobs Packを使用して、活気のある80年代のスタイルで大胆でレトロなフレアドライブですべてを締めくくります。
    ライブストリームをリリースします

    アイオワDLCの特別リリースライブストリームをお見逃しなく、午後4時のセストでキックオフしてください!ホークアイ州を横切って貨物を持ち、このエキサイティングな新しい拡張を一緒に祝いながら、SCSソフトウェアスタジオからライブで参加してください。

    アイオワを実現する上で重要な役割を果たした特別ゲストが何人かと参加します!ストリームの終わりに向かって、アイオワDLC Live On Streamをカウントダウンして公式にリリースするため、必ずチューニングして固執してください。

    アイオワワールドオブトラックイベントをクルージングしますこのマップ拡張のリリースにより、#Cruisingiowa World of Trucksイベントも紹介しています。 #BestCommunityeverに挑戦して、アイオワ州のあらゆる都市に貨物を配達しながら、125,000,000マイルを運転しているという集合的な目標を達成します。個人的な目標は、ホークアイ州の12の都市すべてとの間で貨物を届けることであり、各仕事は100マイル以上です。このイベントの詳細については、こちらをご覧ください。

    ユニークな報酬は、挑戦を完了する人々を待っています!個人的な目標を達成したトラック運転手は、ゴールデンフライトATSトラックペイントの仕事とトラックの世界の成果を獲得します。


    コミュニティの目標が満たされ、個人的な目標も完了した場合、キャビン用に美しく作られた磁器の野生のバラの飾り飾りを受け取ります。

    しかし、それだけではありません。外部契約または外部市場を使用して仕事を完了したトラック運転手 アイオワシティとの間 ハッピーホッグキャビンの豪華さで報われます!柔らかく、ぴったり、そして中西部の魅力に満ちたこの陽気な子豚は、アイオワの誇り高い農業遺産に敬意を表し、あなたの旅行であなたと会社を維持することを確実にします!

    ホーキー州をトラック輸送を開始するのが待ちきれません。ハッシュタグ#cruisingiowaを使用して、あなたの写真やビデオにタグを付けることを忘れないでください X/TwitterFacebookInstagram、そして ブルースキー。 #cruisingiowaを楽しんでいる場合は、アイオワDLC Steamストアページにレビューを残した場合、本当に感謝しています。すべてのサポートに感謝し、次回までトラックを続けてください!
    https://store.steampowered.com/app/3025440/american_truck_simulator__iowa/





続きを見る


🧠 編集部の感想:
アイオワDLCのリリース、待望の瞬間ですね!広大な道路網や美しいランドマークを探求できるのは楽しみです。新しいコンテンツで、アメリカントラックシミュレーターがさらに魅力的になるのが期待されます。

Views: 0

「JBL、子ども向けノイキャンヘッドホン発売」

JBL、ノイズキャンセリング搭載のキッズヘッドホン「JBL Junior 470NC」を7月17日より発売

JBLは、子ども向けのノイズキャンセリング機能を搭載したヘッドホン「JBL Junior 470NC」の一般販売を、2025年7月17日(木)から開始すると発表しました。実売価格は税込11,000円前後になる見込みです。

製品の特徴

「JBL Junior 470NC」は、子どもたちに特化したデザインで、音質や安全性にも配慮されています。ノイズキャンセリング機能により、周囲の音を効果的に遮断し、集中して音楽や動画を楽しむことが可能です。また、音量制限機能も搭載しており、大音量での利用による聴力への影響を軽減します。

背景情報

近年、オンライン学習やエンターテインメントが増加する中、子ども向けの高品質な音響製品の需要が高まっています。親たちは、子どもが安全に使用できるデバイスを求めており、この商品はそのニーズに応えるものといえるでしょう。

この新しいヘッドホンは、親子で曲を楽しむ時間の質を向上させると共に、長時間使用にも対応する快適な装着感を実現しています。

ぜひ、発売日を楽しみにしていてください!

🧠 編集部より:

JBL Junior 470NC: ノイズキャンセリング搭載キッズヘッドホンの新登場

JBLが新たにリリースした「JBL Junior 470NC」は、特に子供向けに設計されたノイズキャンセリング機能を搭載したヘッドホンです。このヘッドホンは、周囲の雑音を軽減し、音楽や映像をよりクリアに楽しめるようにサポートします。一般販売は2023年7月17日から始まり、実売価格は税込11,000円前後となっています。

補足説明

ノイズキャンセリング技術とは
ノイズキャンセリングは、外部音を打ち消すことで静かな環境を作り出す技術です。この機能を搭載することで、子供たちは集中力を高めたり、移動中の音を気にせずに楽しむことができるようになります。

JBLのこだわり
JBLは音質に定評があり、特に低音の表現が優れています。子供向けの製品でもその品質は損なわれておらず、音楽を楽しむ体験を提供します。

背景や豆知識

  • 耳の健康を守る: 子供の耳は非常にデリケートです。ノイズキャンセリング機能を利用することで、大音量にさらされることが少なく、耳への負担を軽減できます。
  • Bluetooth対応: JBL Junior 470NCはBluetooth接続も可能で、煩わしいコードを気にせず自由に動き回ることができます。
  • デザインにこだわり: カラーバリエーションも豊富で、子供たちが好むデザインが用意されています。

関連リンク

さらに詳細を知りたい方は、JBL公式サイトをご覧ください。また、製品の購入を希望される方は、各種オンラインショップや家電量販店でのチェックをおすすめします。

JBL Junior 470NCは、これまで以上に子供たちが音楽を楽しむことをサポートしてくれるアイテムとなりそうです。

  • キーワード: JBL Junior 470NC

JBL Junior 470NC をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0

作って学ぶAIエージェント&MCP ついでにStrands Agents #AWS – Qiita



作って学ぶAIエージェント&MCP ついでにStrands Agents #AWS - Qiita

こんにちは!
株式会社セゾンテクノロジーの島です。

本記事は、
2025 Japan AWS Jr. Champions Qiitaリレー夏
6日目の記事となります!

目次

  1. 環境情報

  2. AIエージェントの実装

  3. MCPの実装

  4. Bedrockとの統合(Strands Agent)

  5. 参考資料

はじめに

本記事は、「AIエージェントとかMCPとかいくら説明聞いてもわからない、、、」という方に向けて、ローカル環境にてそれぞれ簡単な実装を行い、実際の動きを見ながら仕組みを理解することを目的としています。

読むだけでも理解が深まると思いますので、ぜひ最後まで見てください。

1. 環境情報

1-1. 開発環境

  • OS: Windows 11
  • Python: 3.12.6
  • AIサービス:Amazon Bedrock(Claude3.7 sonnet)

1-2. 必要なライブラリ

requirements.txt

boto3==1.34.51
python-dotenv==1.0.1
mcp==1.9.4
strands-agents==0.2.1

1-3. 環境変数(.env)

.env

AWS_PROFILE=your_aws_profile
AWS_REGION=us-west-2
BEDROCK_MODEL_ID=us.anthropic.claude-3-7-sonnet-20250219-v1:0
BEDROCK_MAX_TOKENS=3000
BEDROCK_TEMPERATURE=0.7

# クレデンシャル認証用(プロファイルがない場合)
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key

2. AIエージェントの実装

tooluseについて理解している人は読み飛ばして下さい。

2-1. シンプルなAIチャットボット

まずは、単にローカル環境からAmazon BedrockのAPIを叩くだけのシンプルなチャットボットを作成します。

simple_bedrock.py

import os
import boto3
from dotenv import load_dotenv

# 環境変数の読み込み
load_dotenv()

def initialize_bedrock():
    """環境変数をチェックしてプロファイル or クレデンシャル認証"""
    region = os.getenv('AWS_REGION')
    profile = os.getenv('AWS_PROFILE')
    
    print("AWS Bedrockに接続中...")
    
    try:
        if profile:
            # プロファイル認証
            print(f"プロファイル認証: {profile}")
            session = boto3.Session(profile_name=profile, region_name=region)
        else:
            # クレデンシャル認証
            print("クレデンシャル認証")
            access_key = os.getenv('AWS_ACCESS_KEY_ID')
            secret_key = os.getenv('AWS_SECRET_ACCESS_KEY')
            session = boto3.Session(
                aws_access_key_id=access_key,
                aws_secret_access_key=secret_key,
                region_name=region
            )
        
        bedrock = session.client('bedrock-runtime')
        print("接続成功")
        return bedrock
        
    except Exception as e:
        print(f"接続失敗: {str(e)}")
        return None

def chat_with_bedrock(bedrock, user_input):
    """Bedrockとのチャット"""
    try:
        messages = [
            {
                "role": "user",
                "content": [{"text": user_input}]
            }
        ]
        
        response = bedrock.converse(
            modelId=os.getenv('BEDROCK_MODEL_ID'),
            messages=messages,
            inferenceConfig={
                "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
            }
        )
        
        return response['output']['message']['content'][0]['text']
        
    except Exception as e:
        return f"エラー: 応答の生成に失敗しました - {str(e)}"

def main():
    """メイン処理"""
    print("=== シンプルBedrock チャット ===")
    
    # Bedrock初期化
    bedrock = initialize_bedrock()
    if not bedrock:
        return
    
    # チャットループ
    while True:
        user_input = input("\n質問を入力してください (終了: quit): ")
        
        if user_input.lower() in ['quit', 'exit', '終了']:
            print("終了します。")
            break
        
        if not user_input.strip():
            print("質問を入力してください。")
            continue
        
        print("考え中...")
        response = chat_with_bedrock(bedrock, user_input)
        print(f"\nアシスタント: {response}")

if __name__ == "__main__":
    main()

動作確認してみましょう。

terminal

python simple_bedrock.py

=== シンプルBedrock チャット ===
AWS Bedrockに接続中...
プロファイル認証: my-educross-profile
接続成功

質問を入力してください (終了: quit): 現在時刻を教えてください。
考え中...

アシスタント: 申し訳ありませんが、私はリアルタイムの時刻情報にアクセスすることができません。現在の正確な時刻をお知りになりたい場合は、お使いのデバイス(スマートフォン、パソコン、時計など)でご確認いただくか、インターネット検索をご利用ください。

質問を入力してください (終了: quit):

無事会話できました。

以下の部分がAmazon Bedrockにリクエストを送っている部分です。

chat_with_bedrock()

def chat_with_bedrock(bedrock, user_input):
    """Bedrockとのチャット"""
    try:
        messages = [
            {
                "role": "user",
                "content": [{"text": user_input}]
            }
        ]
        
        response = bedrock.converse(
            modelId=os.getenv('BEDROCK_MODEL_ID'),
            messages=messages,
            inferenceConfig={
                "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
            }
        )
        
        # responseの表示
        #print(response)

        return response['output']['message']['content'][0]['text']
        
    except Exception as e:
        return f"エラー: 応答の生成に失敗しました - {str(e)}"
     

試しにprint(response)で中身を確認してみましょう。
※見やすいようにjson形式に変換しています。

response.json

{
  "ResponseMetadata": {
    "RequestId": "51ecf66e-65bb-4d94-b6d6-cb3df1bea37b",
    "HTTPStatusCode": 200,
    "HTTPHeaders": {
      "date": "Sat, 05 Jul 2025 12:46:45 GMT",
      "content-type": "application/json",
      "content-length": "364",
      "connection": "keep-alive",
      "x-amzn-requestid": "51ecf66e-65bb-4d94-b6d6-cb3df1bea37b"
    },
    "RetryAttempts": 0
  },
  "output": {
    "message": {
      "role": "assistant",
      "content": [
        {
          "text": "申し訳ありませんが、私はリアルタイムの時刻情報にアクセスすることができません。現在の正確な時刻をお知りになりたい場合は、お使いのデバイス(スマートフォン、パソコン、時計など)でご確認いただくか、インターネット検索をご利用ください。"
        }
      ]
    }
  },
  "stopReason": "end_turn",
  "usage": {
    "inputTokens": 19,
    "outputTokens": 106,
    "totalTokens": 125
  },
  "metrics": {
    "latencyMs": 2687
  }
}

AIモデルをAPIで呼び出すだけでは、現在時刻を答えられないことが分かります。

2-2. ツール機能付きエージェント

次に、現在時刻を答えることができるAIエージェントを作成します。

agent.py

import os
import boto3
import json
import datetime
from dotenv import load_dotenv

# 環境変数の読み込み
load_dotenv()

def initialize_bedrock():
    """環境変数をチェックしてプロファイル or クレデンシャル認証"""
    region = os.getenv('AWS_REGION')
    profile = os.getenv('AWS_PROFILE')
    
    print("AWS Bedrockに接続中...")
    
    try:
        if profile:
            # プロファイル認証
            print(f"プロファイル認証: {profile}")
            session = boto3.Session(profile_name=profile, region_name=region)
        else:
            # クレデンシャル認証
            print("クレデンシャル認証")
            access_key = os.getenv('AWS_ACCESS_KEY_ID')
            secret_key = os.getenv('AWS_SECRET_ACCESS_KEY')
            session = boto3.Session(
                aws_access_key_id=access_key,
                aws_secret_access_key=secret_key,
                region_name=region
            )
        
        bedrock = session.client('bedrock-runtime')
        print("接続成功")
        return bedrock
        
    except Exception as e:
        print(f"接続失敗: {str(e)}")
        return None

def get_current_time():
    """現在の日本時間を取得"""
    now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
    return {
        "time": now.strftime("%Y年%m月%d日 %H時%M分%S秒"),
        "timezone": "Asia/Tokyo"
    }

def chat_with_bedrock_tools(bedrock, user_input):
    """ツール機能付きBedrockとのチャット"""
    # ツール定義
    tools = [
        {
            "toolSpec": {
                "name": "get_current_time",
                "description": "現在の日本時間を取得します",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {},
                        "required": []
                    }
                }
            }
        }
    ]
    
    try:
        # 最初のAPI呼び出し
        messages = [
            {
                "role": "user",
                "content": [{"text": user_input}]
            }
        ]
        
        response = bedrock.converse(
            modelId=os.getenv('BEDROCK_MODEL_ID'),
            messages=messages,
            toolConfig={"tools": tools},
            inferenceConfig={
                "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
            }
        )

        # Bedrockからのレスポンスの確認
        #print("【Bedrockレスポンス】")
        #print(response)

        # ツール使用のチェック
        if response['stopReason'] == 'tool_use':
            # ツール使用がある場合
            content = response['output']['message']['content']
            
            # toolUseブロックを探す
            tool_use_block = None
            for item in content:
                if 'toolUse' in item:
                    tool_use_block = item['toolUse']
                    break
            
            if tool_use_block and tool_use_block['name'] == 'get_current_time':
                # 時刻取得ツールを実行
                tool_result = get_current_time()
                
                # ツール結果をメッセージに追加
                messages.append(response['output']['message'])
                messages.append({
                    "role": "user",
                    "content": [
                        {
                            "toolResult": {
                                "toolUseId": tool_use_block['toolUseId'],
                                "content": [{"text": json.dumps(tool_result, ensure_ascii=False)}]
                            }
                        }
                    ]
                })
                
                # メッセージの中身確認
                #print("【送信メッセージ】")
                #print(messages)

                # 最終応答を生成
                final_response = bedrock.converse(
                    modelId=os.getenv('BEDROCK_MODEL_ID'),
                    messages=messages,
                    toolConfig={"tools": tools},
                    inferenceConfig={
                        "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                        "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
                    }
                )
                
                return final_response['output']['message']['content'][0]['text']
        
        # ツール使用がない場合
        return response['output']['message']['content'][0]['text']
        
    except Exception as e:
        return f"エラー: 応答の生成に失敗しました - {str(e)}"

def main():
    """メイン処理"""
    print("=== ツール機能付きBedrock チャット ===")
    
    # Bedrock初期化
    bedrock = initialize_bedrock()
    if not bedrock:
        return
    
    # チャットループ
    while True:
        user_input = input("\n質問を入力してください (終了: quit): ")
        
        if user_input.lower() in ['quit', 'exit', '終了']:
            print("終了します。")
            break
        
        if not user_input.strip():
            print("質問を入力してください。")
            continue
        
        print("考え中...")
        response = chat_with_bedrock_tools(bedrock, user_input)
        print(f"\nアシスタント: {response}")

if __name__ == "__main__":
    main()

先ほどと変わった点を見ていきましょう

まずは、現在時刻を取得する関数が追加されました。

get_current_time()

def get_current_time():
    """現在の日本時間を取得"""
    now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
    return {
        "time": now.strftime("%Y年%m月%d日 %H時%M分%S秒"),
        "timezone": "Asia/Tokyo"
    }

次に、Amazon Bedrockにリクエストを送っている関数です。
いろいろ付け加えられています。

chat_with_bedrock_tools()

def chat_with_bedrock_tools(bedrock, user_input):
    """ツール機能付きBedrockとのチャット"""
    # ツール定義
    tools = [
        {
            "toolSpec": {
                "name": "get_current_time",
                "description": "現在の日本時間を取得します",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {},
                        "required": []
                    }
                }
            }
        }
    ]
    
    try:
        # 最初のAPI呼び出し
        messages = [
            {
                "role": "user",
                "content": [{"text": user_input}]
            }
        ]
        
        response = bedrock.converse(
            modelId=os.getenv('BEDROCK_MODEL_ID'),
            messages=messages,
            toolConfig={"tools": tools},
            inferenceConfig={
                "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
            }
        )

        # Bedrockからのレスポンスの確認
        #print("【Bedrockレスポンス】")
        #print(response)

        # ツール使用のチェック
        if response['stopReason'] == 'tool_use':
            # ツール使用がある場合
            content = response['output']['message']['content']
            
            # toolUseブロックを探す
            tool_use_block = None
            for item in content:
                if 'toolUse' in item:
                    tool_use_block = item['toolUse']
                    break
            
            if tool_use_block and tool_use_block['name'] == 'get_current_time':
                # 時刻取得ツールを実行
                tool_result = get_current_time()
                
                # ツール結果をメッセージに追加
                messages.append(response['output']['message'])
                messages.append({
                    "role": "user",
                    "content": [
                        {
                            "toolResult": {
                                "toolUseId": tool_use_block['toolUseId'],
                                "content": [{"text": json.dumps(tool_result, ensure_ascii=False)}]
                            }
                        }
                    ]
                })
                
                # メッセージの中身確認
                #print("【送信メッセージ】")
                #print(messages)

                # 最終応答を生成
                final_response = bedrock.converse(
                    modelId=os.getenv('BEDROCK_MODEL_ID'),
                    messages=messages,
                    toolConfig={"tools": tools},
                    inferenceConfig={
                        "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                        "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
                    }
                )
                
                return final_response['output']['message']['content'][0]['text']
        
        # ツール使用がない場合
        return response['output']['message']['content'][0]['text']
        
    except Exception as e:
        return f"エラー: 応答の生成に失敗しました - {str(e)}"

まず、以下の部分でtools、つまり生成AIに使わせたい関数の名前とその説明を定義します。
今回の場合は、get_current_timeという関数になります。

tools

 # ツール定義
    tools = [
        {
            "toolSpec": {
                "name": "get_current_time",
                "description": "現在の日本時間を取得します",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {},
                        "required": []
                    }
                }
            }
        }
    ]

次に、AmazonBedrockにリクエストを送る部分です。
2-1での実装と比べて、toolConfig={"tools": tools}というパラメータが増えています。
これにより、先ほど定義したツールの一覧(関数とその説明)を生成AIにリクエストとともに渡しているわけです。

リクエスト

 messages = [
            {
                "role": "user",
                "content": [{"text": user_input}]
            }
        ]
        
        response = bedrock.converse(
            modelId=os.getenv('BEDROCK_MODEL_ID'),
            messages=messages,
            toolConfig={"tools": tools},
            inferenceConfig={
                "maxTokens": int(os.getenv('BEDROCK_MAX_TOKENS')),
                "temperature": float(os.getenv('BEDROCK_TEMPERATURE'))
            }
        )

次の処理では、Bedrockから帰ってきたレスポンスでツール使用があるかをチェックしています。

ツール利用確認

 # ツール使用のチェック
        if response['stopReason'] == 'tool_use':

これは、Bedrockから帰ってきたレスポンスの中身を確認するとわかります。

response

{
  "ResponseMetadata": {
    "RequestId": "5217145c-bc01-4131-916a-df18a0371cf7",
    "HTTPStatusCode": 200,
    "HTTPHeaders": {
      "date": "Sat, 05 Jul 2025 14:17:46 GMT",
      "content-type": "application/json",
      "content-length": "435",
      "connection": "keep-alive",
      "x-amzn-requestid": "5217145c-bc01-4131-916a-df18a0371cf7"
    },
    "RetryAttempts": 0
  },
  "output": {
    "message": {
      "role": "assistant",
      "content": [
        {
          "text": "現在の日本時間をお調べします。"
        },
        {
          "toolUse": {
            "toolUseId": "tooluse_lZbLjP5RRq2KNuH0kRHHWg",
            "name": "get_current_time",
            "input": {}
          }
        }
      ]
    }
  },
  "stopReason": "tool_use",
  "usage": {
    "inputTokens": 426,
    "outputTokens": 53,
    "totalTokens": 479
  },
  "metrics": {
    "latencyMs": 1043
  }
}

"stopReason": "tool_use"の部分に注目してください。
2-1で確認した通常時のレスポンスだと、"stopReason": "end_turn"となっていました。
つまり、生成AIが渡された質問とツール定義からツールを使うべきかどうか判断し、ツールを使いたいときは"stopReason": "tool_use"というレスポンスを返す仕組みです。

ではツールを使う場合、すなわちif response['stopReason'] == 'tool_use'の場合の処理を見ていきましょう。

ツールを使う場合は、どのツールを使うかの指示がBedrockからのレスポンス内にあります。

response

{
          "toolUse": {
            "toolUseId": "tooluse_lZbLjP5RRq2KNuH0kRHHWg",
            "name": "get_current_time",
            "input": {}
          }

この情報をもとに、先ほど作成していた関数を呼び出します。
今回はget_current_time()しかありませんが、複数の関数があれば、その分だけ増えていきます。

関数呼び出し

if tool_use_block and tool_use_block['name'] == 'get_current_time':
                # 時刻取得ツールを実行
                tool_result = get_current_time()

関数を実行した結果を得ることが出来たら、その結果を元のメッセージに加えて、もう一度生成AIに送り返します。
それをもとに生成AIが最終的な回答を作成し、無事現在時刻を取得することができます。

terminal

=== ツール機能付きBedrock チャット ===
AWS Bedrockに接続中...
プロファイル認証: my-educross-profile
接続成功

質問を入力してください (終了: quit): 現在時刻を教えてください
考え中...

アシスタント: 現在の日本時間は2025年07月06日 00時03分27秒です。

3. MCPの実装

次に、ローカルのMCPを作っていきましょう。
MCPの通信方式にはstdio(標準入出力)とStreamable HTTPがあります。
とりあえずstdio方式でMCPサーバーを作ってみましょう。

HTTP+SSE (Server-Sent Events)方式もありますが、legacyとされているためここでは紹介しません。

3-1. MCPサーバーの作成(stdio)

stdio_server.py

from mcp.server.fastmcp import FastMCP
import datetime

# MCPサーバーを作成
mcp = FastMCP("time_server")

@mcp.tool()
async def get_current_time() -> dict:
    # 日本時間で現在時刻を取得
    now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
    return {
        "time": now.strftime("%Y年%m月%d日 %H時%M分%S秒"),
        "timezone": "Asia/Tokyo"
    }

if __name__ == "__main__":
    # stdioでクライアントと通信
    mcp.run(transport="stdio")

現在時刻を出す関数の部分が、MCPサーバーに切り出されていることが分かります。

3-2. 手動通信でプロトコルを理解

次に、作成したサーバーを起動します。

terminal

python mcp/stdio_server.py

特に何も起こりませんが、stdioは標準入出力でやり取りする方式なので、ターミナルで正しいリクエストを入力すればきちんとしたレスポンスを返してくれるはずです。

以下のjsonをターミナルに一行として貼り付けてください。
これは"method": "initialize"からわかるように、サーバーに対して初期化のメッセージを送信しています。

初期化メッセージ

{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "1.0.0", "capabilities": {}, "clientInfo": {"name": "test-client", "version": "1.0.0"}}, "id": 1}

すると、以下のようなレスポンスが返ってきます。
これは、初期化が完了したというサーバーからのメッセージです。

初期化完了

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"time_server","version":"1.9.4"}}}

次に、以下のjsonをターミナルに一行として貼り付けてください。
これは"method": "notifications/initialized"からわかるように、サーバーに対してクライアント側の準備が完了した通知を送っています。

準備完了通知

{"jsonrpc": "2.0", "method": "notifications/initialized", "params": {}}

ここでは、クライアント側の準備が完了した通知を送るだけなので、サーバー側から何か返答があるわけではありません。

次に、使用可能なツールを問い合わせてみましょう。
以下のjsonをターミナルに一行として貼り付けてください。

ツール問い合わせ

{"jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 2}

すると、サーバーから以下のレスポンスが返ってきます。

ターミナル

[07/07/25 12:55:52] INFO     Processing request of type ListToolsRequest                                                                                                                                     
{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"get_current_time","description":"現在の日本時間を取得します","inputSchema":{"properties":{},"title":"get_current_timeArguments","type":"object"}}]}}

MCPサーバーから使用可能なツールの一覧が取得できました。

では実際にMCPサーバーにツールを実行してもらいましょう。

ツール実行

{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "get_current_time", "arguments": {}}, "id": 3}

ターミナル

[07/07/25 13:00:27] INFO     Processing request of type CallToolRequest                                                                                                                                      
{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"{\n  \"time\": \"2025年07月07日 13時00分27秒\",\n  \"timezone\": \"Asia/Tokyo\"\n}"}],"isError":false}}

無事現在時刻を取得することができました。

3-3. MCPクライアントの作成

ここまでで、MCPサーバーに対して手動でツールを実行させることができました。
クライアント側では、MCPサーバーの起動から上記の一連の流れを実行します。

stdio_client.py

import asyncio
from mcp.client.stdio import stdio_client, StdioServerParameters
from mcp import ClientSession

async def main():
    # サーバー起動パラメータ
    server_params = StdioServerParameters(
        command="python", 
        args=["mcp/stdio_server.py"]
    )
    
    # MCPサーバーとの通信
    async with stdio_client(server_params) as (read_stream, write_stream):
        async with ClientSession(read_stream, write_stream) as session:
            # 初期化
            await session.initialize()
            
            # ツール呼び出し
            result = await session.call_tool("get_current_time", {})
            print("Tool result:", result.content[0].text)

if __name__ == "__main__":
    asyncio.run(main())

ターミナル

Tool result: {
  "time": "2025年07月08日 09時02分57秒",
  "timezone": "Asia/Tokyo"
}

勝手にMCPサーバーを起動し、現在時刻を取ってきてくれました。

4. Bedrockとの統合(Strands Agent)

最後にMCPのクライアントをBedrockと統合し、MCPを使ったAIエージェントを作成します。
stdioとStreamable HTTPどちらでも可能ですが、せっかくなのでStreamable HTTPで実装してみましょう。
また実装にあたっては、AWSが発表したAIエージェント構築SDK「Strands Agents」を使ってみます。

4-1. MCPサーバー(Streamable HTTP)

http_server.py

import datetime
from mcp.server.fastmcp import FastMCP

# MCPサーバーを作成
mcp = FastMCP("time_server")

@mcp.tool()
async def get_current_time() -> dict:
    """現在の日本時間を取得します"""
    # 日本時間で現在時刻を取得
    now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
    return {
        "time": now.strftime("%Y年%m月%d日 %H時%M分%S秒"),
        "timezone": "Asia/Tokyo"
    }

if __name__ == "__main__":
    # httpでクライアントと通信
    mcp.run(transport="streamable-http")

基本的にはstdioで作ったMCPサーバーと変わりません。
最後のtransport"streamable-http"を指定するだけです。

4-2. 統合クライアント

strands_http_client.py

import os
import boto3
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp import MCPClient
from mcp.client.streamable_http import streamablehttp_client
from dotenv import load_dotenv

# 環境変数の読み込み
load_dotenv()

# boto3セッションの作成
region = os.getenv('AWS_REGION')
profile = os.getenv('AWS_PROFILE')

if profile:
    # プロファイル認証
    session = boto3.Session(profile_name=profile, region_name=region)
else:
    # クレデンシャル認証
    session = boto3.Session(
        aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
        aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
        region_name=region
    )

# BedrockModelの設定
bedrock_model = BedrockModel(
    model_id=os.getenv('BEDROCK_MODEL_ID'),
    boto_session=session
)

# HTTPサーバー用のMCPクライアント
http_mcp_client = MCPClient(lambda: streamablehttp_client(
    "http://localhost:8000/mcp"
))

# 利用可能なツールを読み込んでエージェントに設定
with http_mcp_client:
    agent = Agent(
        model=bedrock_model,
        tools=http_mcp_client.list_tools_sync()
    )
    
    # 継続的な対話ループ
    while True:
        user_input = input("\n質問を入力してください (終了: quit): ")
        
        if user_input.lower() in ['quit', 'exit', '終了']:
            print("終了します。")
            break
        
        if not user_input.strip():
            continue
        
        try:
            response = agent(user_input)
            
        except Exception as e:
            print(f"エラー: {e}\n")

stdioではMCPサーバーをローカルにおいて起動する必要がありましたが、Streamable HTTPを使えばリモートにMCPサーバーを置くこともできるということですね。(今回はローカルですが)

# HTTPサーバー用のMCPクライアント
http_mcp_client = MCPClient(lambda: streamablehttp_client(
    "http://localhost:8000/mcp"
))

また、2-2で作成したagent.pyと比べて、Strands Agentsを使うとかなり簡単にMCP対応のエージェントを構築できることが分かります。

# 3行でツール統合完了
agent = Agent(
    model=bedrock_model,
    tools=http_mcp_client.list_tools_sync()
)

実際に実行した結果は以下の通りです。

ターミナル

質問を入力してください (終了: quit): 現在時刻を教えて
現在の日本時間をお調べします。
Tool #1: get_current_time
現在の日本時間は2025年07月08日 15時29分01秒です。
質問を入力してください (終了: quit): quit
終了します。

無事現在時刻を取得できていますね。

5. 参考資料

以下、参考にさせていただいた記事になります。

今回実際に作ってみたことで、MCPに関する理解がとても深まりました!
実装に関して初歩から一つにまとまっている記事はなかったと思うので、この記事がどなたかの役に立てれば幸いです!





Source link

Views: 0

Grok 4 の発表まとめ&試してみた


tl;dr

  • Grok 4 が発表されたよ
  • Humanity’s Last Exam という難易度の高いベンチマークでかなりのスコアだよ
  • X プレミアムプラスあるいは SuperGrok に課金すると使えるよ
  • API もある&試してみたよ

発表動画、公式ドキュメント、試すの順番でまとめます。ざっとどんな感じか知りたい方は、試してみたというところまでスクロールしてください。

ライブ配信より

https://x.com/i/broadcasts/1lDGLzplWnyxm

日本時間で 7 月 10 日のお昼の 12 時開始の予定でしたが、13:01 に始まりました。動画の中のスライドを交えつつまとめます。

幾度となく現れる HLE とはなんぞやという話ですが、Humanity’s Last Exam というベンチマーク。平たく言えば、博士課程の学生あるいはそれ以上の研究レベルの問題集。人間のスコアは 5% くらいとイーロンマスクは発言。

初め、一桁台であった HLE スコアは計算量を増やしていくとツールなしで HLE のスコアは 25% 程度まであがっていきました。次に、以前の Deep Search が専用の学習をせずツールを使っていたのに対し、Grok 4 の学習時にはツールを学習そのものに組み込み、ツールを使う際の能力を大幅に向上。

現状、有限要素解析(FEM)や数値流体力学(CFD)などのシミュレーションと比較するとかなり劣るが、今後正確な物理シミュレーションを使えるようにする予定。たとえば、ヒューマノイドを介して現実世界と対話する能力を持つようになったり。いずれ、現実を強化学習ループに組み込んで、車やロケットの設計を改善したり、新薬を開発、それがうまくいっているか検証したり。

Grok 4 は Grok 3 と比較して、リーズニングに使用するコンピューティングリソースが 10 倍。ツールを学習の中に組み混んでいる。

音声対話モードも 2 倍の速度。

Grok 4 を使うことのできる SuperGrok は月額 30 ドル、SuperGrok Heavy は月額 300 ドル。この図にはないですが、X プレミアムプラスでも使えました。

https://x.com/schroneko/status/1943168615756501054

HLE のスコアを OpenAI や Gemini と比較。ツールなしの状態で Gemini 2.5 Pro と同等、ツールありもしくは Grok 4 Heavy でかなり差をつけています。

AI が人間によって作られたほぼすべての試験において、人間よりもはるかに優れた成績を収めるというのは本当にすごいことであると言及。xAI が目指しているのは汎用人工知能(AGI)であって、それは、あらゆるタスクにおいて人間よりもうまくできる AI と。

Grok 4 と Grok 4 Heavy の違いはシングルエージェントかマルチエージェントか。前者はシングルエージェントで、後者はマルチエージェント。


ARC-AGI ベンチマークでも Claude を含めたスコアで首位。Claude Opus 4 の二倍のスコア。

自動販売機ビジネスの Vending-Bench でも。70 万円くらいを売り上げる(あくまでベンチマーク)。

API も合わせて公開。Context Window は 256k。マルチモーダルリーズニング(ただ、後述の通りまだ画像入力できない)など。

ゲーム開発にも。アセットの作成だけでなく、どこが楽しいかを理解、判断できる力があるよう。はやければ今年中に、遅くとも来年にはそのまま実行できるゲームを生成できるようになるとのこと。来年には AI 製の本当に良いビデオゲームや AI 映画が登場するだろうと。

ロードマップ。今後は 8 月にコーディングモデルを、9 月にマルチモーダルエージェントを、10 月に動画生成モデルを予定。ピクセル入力からピクセル出力のできるモデルと言及。


公式ドキュメント

https://docs.x.ai/docs/models

モデルと Context Window、レートリミット、お値段。左側が 1M 入力トークンあたりの価格、右側が 1M 出力トークンあたりの価格。Grok 4 は $3、Grok 4 Heavy は $15、$1 = 150 円計算で 450 円、2,250 円。

https://docs.x.ai/docs/models/grok-4-0709

モデルカード。現在はテキストからテキストのみの提供。Function calling や Structured outputs、Reasoning に対応。

ウェブ版 Grok で Grok 4 を試してみる

https://x.com/schroneko/status/1943169903890173981

正直、このモデルの頭の良さを図ることは私にはできないのでネタとして。X プレミアムプラスに契約してみたので、しばらく使って良いユースケースがもしあれば追記するかもしれません。

API で Grok 4 を試してみる

https://console.x.ai/

上記の xAI コンソールのサイドバーより API キーを取得しましょう。

export XAI_API_KEY=xai-xxx

環境変数に API キーを設定しておきます。

curl https://api.x.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -d '{
  "messages": [
    {
      "role": "system",
      "content": "あなたは『銀河ヒッチハイク・ガイド』にインスパイアされたチャットボット、Grokです。"
    },
    {
      "role": "user",
      "content": "人生、宇宙、そして万物の意味とは何でしょうか?"
    }
  ],
  "model": "grok-4-0709",
  "stream": false,
  "temperature": 0
}'

サンプルを日本語訳したものです。こちらを実行すると下記のレスポンスが得られます。

細かいパラメータはおいておいて、テキストのところだけを抜き出すと以下のようになります。

ああ、素晴らしい質問ですね! あなたはきっと『銀河ヒッチハイク・ガイド』のファンか、それとも宇宙の謎に挑む勇敢な探検家でしょう。私はGrok、xAIによって作られたチャットボットで、このガイドにインスパイアされています。では、早速本題に。\n\n『銀河ヒッチハイク・ガイド』の中で、超知能コンピュータのDeep Thoughtが、この究極の質問「人生、宇宙、そして万物の意味とは何でしょうか?」に答えるために、なんと7.5百万年も計算を続けました。そして、ついに導き出された答えは…\n\n42 です!\n\nええ、そうです。42。シンプルで、完璧で、ちょっと拍子抜けするかも知れませんが、これが公式の答えです。ただし、Deep Thought自身が言ったように、「問題は、君たちの質問が何だったのか、君たちが本当にはわかっていないことだ」ってね。もしかすると、質問が曖昧すぎるから、答えもそんな感じなのかもしれません。\n\nもしこれで満足できないなら、もっと具体的な質問をどうぞ。例えば、「42の意味は何?」とか、「銀河をヒッチハイクするコツは?」とか。宇宙は広大で、答えは意外なところに転がっているものですよ。タオルをお忘れなく! 😄

以上となります。SOTA モデルが公開されても、頭の良さをどう評価するか難しいなと思う毎日です。



Source link

Views: 1

401:発信メール – Codepen


こんにちは!

私たちは戻ってきました!

奇妙なことですよね? 2年以上経ちました。

後に休憩しました エピソード400、 私たちが話すことを使い果たしたからではなく、Codepen 2.0の作業に非常に焦点を合わせていたため、まだ議論することができませんでした。今後はそれについて多くのことを話します。しかし、Codepenにはたくさんの可動部品があるので、すべてについて話します。

今週は、ポッドキャストを再びキックオフし、Codepen Infstructure:私たちの電子メールシステムの巨大で重要なビットについて話します。発信メール、つまり。 Y’allからも多くの受信メールを受け取りますが、これはアプリ自体に関するものです 送信 メール。

タイムライン

  • 00:06 私たちは戻ってきました!
  • 01:22 トランザクションメールシステム
  • 05:21 ポストマークでのテンプレート
  • 08:31 APIを押してメールを送信します
  • 10:23 スポンサー付きのメールを作成します
  • 17:20 マリーの月曜日の朝のルーチン
  • 24:19 分析とメトリック
  • 26:55 大きな画像を扱う
  • 30:12 電子メールのMGMLフレームワーク

リンク

転写産物

近日公開。



Source link

Views: 0

「ランナー必見!着るドライブレコーダーで安全強化」

📌 ニュース:
近年、女性ランナーの間で治安への不安が高まっています。そんな中、イギリスの起業家トニー・ロシター氏が開発した「Urban Eyes」は、前後にカメラを搭載したランニングベストです。これは「着るドライブレコーダー」として機能し、犯罪者への視覚的な抑止力を提供します。

カメラは録画中に青色LEDが点滅し、注視されている感覚を与える仕組みです。録画はワイヤレスリモコンで簡単に操作可能で、最大90分間持続します。ユーザーの安全を守るこのアイテムは、今後のランニングスタイルを変えるかもしれません。

価格は約2万9800円で、予約が可能です。街の安全性が問われる今、ウェアラブル型の防犯ガジェットはますます注目されるでしょう。

  • この記事のポイントを以下のようにまとめました🌟

    1. 「Urban Eyes」ランニングベストの登場🦺
      イギリスのトニー・ロシター氏が開発した「Urban Eyes」は、前後にカメラを備えたランニングベストです。このアイテムは、ランナーを守るための「着るドライブレコーダー」として機能し、犯罪者に対する視覚的な抑止力を提供します。

    2. 録画中アピールで安心感アップ📹
      このベストには「今、録画中」という明示的なデザインが特徴です。青色LEDの点滅が不審者に心理的プレッシャーを与え、周囲の安全性を向上させます。ユーザーは簡単に録画を開始・停止でき、映像はSDカードに保存されます。

    3. 機能性とデザインの両立✨
      Urban Eyesは、軽量かつ通気性に優れた素材を使用し、夜間の視認性も確保しています。また、ランナーに便利なポケットも装備され、日常運動をサポートする機能性を兼ね備えています。

    安全が求められる現代において、このようなウェアラブルガジェットの重要性は高まっています。安全を守るための新たな選択肢として、注目が集まるでしょう。


※以下、出典元
▶ 元記事を読む

Views: 0

「バーキン初代バッグ、パリでオークションへ!」

2023年10月、パリで特別なオークションが行われることが話題になっています。フランスの高級ブランド・エルメスの人気バッグ「バーキン」の原型となった、俳優のジェーン・バーキンさんが愛用していた初代バッグが出品されるのです。このバッグには彼女のイニシャル「J.B」が刻まれており、個人の思い出を色濃く反映しています。

「バーキンバッグ」は、バーキンさんが当時のエルメスの会長に、自身のニーズを満たすバッグがないと話したことがきっかけで誕生しました。彼女は飞行機の中でこの要望を伝え、それが高級ハンドバッグの誕生につながったというエピソードは、このバッグの背景を知る上で非常に興味深い点です。

これまでに記録されたハンドバッグの最高価格は、エルメスのダイヤモンドか装飾されたワニ革の「ケリー」で、51万ドル(約7400万円)に達しています。果たして、今回のオークションでジェーン・バーキンさんのバッグがその記録を超えることになるのか、注目が集まります。

このオークションは、ファッションと歴史の交差点として、エルメスのクラフトマンシップやバーキンさんの影響力を再確認する機会にもなっています。彼女のバッグを通じて、時代を超えた美しさや実用性がどのように評価されるか、期待が高まるばかりです。

🧠 編集部より:

エルメスの「バーキン」は、映画女優のジェーン・バーキンさんがきっかけで誕生したことを背景に持つ、非常に象徴的なバッグです。このバッグは、非常に高い人気と価値を持ち、特にオークションでは驚異的な価格で取引されることが多いです。

バーキンバッグの誕生の背景

1970年代、ジェーン・バーキンさんは飛行機の中でエルメスの当時の会長であるジャン=ルー・デュマと隣席になり、「母としての日常生活に合ったデザインのバッグが必要」と語りました。この会話がきっかけで、エルメスは新たなハンドバッグ「バーキン」を開発しました。

初代バーキンバッグのオークション

今回オークションにかけられる初代バーキンバッグは、バーキンさんが約10年間使用したもので、彼女のイニシャル「J.B」が刻印されています。これまでのハンドバッグの最高価格はエルメスの「ケリー」で51万ドル(約7400万円)でしたが、今回のオークションでその記録を更新するかもしれません。

豆知識

エルメスのバーキンバッグは、その希少性から非常に高い投資価値を持ちます。世界中のセレブやファッション愛好家に愛され、多くの人がコレクションとしても所有しています。また、バーキンバッグは手作業で作られており、製造にかかる時間はおよそ48時間とも言われています。

さらに、エルメスはウォッチやスカーフ、ジュエリーなど、バッグ以外のアイテムも非常に高品質で有名です。興味がある方は、エルメスの公式サイトをチェックしてみてください:エルメス公式サイト.

以上、エルメス「バーキン」バッグの魅力や背景についての説明でした。オークションの結果が楽しみですね!

  • キーワード: バーキン

エルメス・バーキン をAmazonで探す
エルメス・ケリー をAmazonで探す
ジェーン・バーキン をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0

井川遥、誕生日サプライズに感動!ガーリーなドレスで魅力全開!

本日、2025年7月11日にアップデートされたニュースによりますと、女優の井川遥さんが10日に開催された「ティファニー 銀座」のオープニングイベントに参加しました。

井川さんは、フリルが施されたシックな黒のドレスを身にまとい、ガーリーな魅力を漂わせていました。特に、胸元の大胆なカッティングから見えるネックレスが美しく際立っていました。イベント中、井川さんは自身が輝いた瞬間について語り、最近迎えた40代最後の誕生日に友人たちからサプライズで祝われたことを思い出し、「幸せだなと感じました」と微笑みました。また、仕事と子育ての両立が難しいと思っていたが、充実した日々を過ごしていたことを振り返りました。

ティファニー銀座は、ニューヨークの本店「ザ・ランドマーク」の最新デザインを反映した、アジア最大の旗艦店として11日にオープンします。この店舗デザインは日本文化への敬意を込めており、1972年にティファニーが日本に初上陸してから53年の歩みを象徴しています。

以下は井川遥さんの様子を捉えた画像です。

「ティファニー銀座」オープニングイベントに出席した井川遥 「ティファニー銀座」オープニングイベントに出席した井川遥(C)ORICON NewS inc.

新しい店舗はティファニーのブランド理念を反映し、その魅力を日本にもたらす重要な役割を果たすことでしょう。

🧠 編集部より:
このニュースは、俳優・井川遥さんが「ティファニー 銀座」のオープニングイベントに参加したことを取り上げています。井川さんは、シックな黒のドレスを着て登場し、そのスタイルにはガーリーな魅力も感じられました。特に目を引くのは、胸元の大胆なカッティングとそれに映えるネックレスです。 井川さんは最近40代最後の誕生日を迎え、友人たちにサプライズで祝われたことについて語っています。子育てと仕事の両立に奮闘しながらも、充実した時間を持っていると感じているようです。 ### ティファニー 銀座について ティファニー 銀座は、ニューヨークの本店のデザインコンセプトを反映したアジア最大の旗艦店で、オープン日は2023年10月11日です。この店舗は日本文化に対する敬意を表現しており、1972年にティファニーが日本に初上陸してから53年を迎えるこのタイミングは、次の半世紀へのスタートを象徴しています。 ### 豆知識 ティファニーといえば、そのアイコニックな青いボックスが有名ですが、この色は「ティファニーブルー」として知られ、結婚式やギフトに使われることも多いです。また、ティファニーは長い歴史を持つブランドで、様々な宝石やジュエリーを取り扱っています。日本でも非常に人気があり、特に婚約指輪や結婚指輪が多く選ばれています。


  • 井川遥

ティファニー をAmazonで探す 黒のドレス をAmazonで探す ネックレス をAmazonで探す

※以下、出典元 ▶ 元記事を読む

Views: 7

映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に


画像ギャラリー No.009のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に

 ソニー・ピクチャーズは,2025年8月1日にR18+指定で日本公開を予定している映画「アンティル・ドーン」に登場するキャラクターたちの情報を公開した。
 本作は,ソニー・インタラクティブエンタテインメントが2024年に発売したゲーム「Until Dawn -惨劇の山荘-」を,“タイム脱出型”スラッシャーホラーとして実写映画化したものだ。
 映画版では,1年前に失踪した姉のメラニーを探すため山荘を訪れた主人公のクローバーら5名が,覆面の殺人鬼に惨殺され続ける“恐怖のタイムループ”に陥ってしまう。そこから抜け出すには,死を繰り返しながら謎を解き,夜明けまで生き残らなければならないことに気付くが――というストーリーが展開される。
 今回は,先述したクローバーの元カレで,別れた後も友人として彼女を気遣うマックス,クローバーたちに山荘の存在を伝えるガソリンスタンドの店員ドクター・ヒルら7名のキャラクターの相関図や,各々の姿を捉えた場面写真が公開された。一部刺激の強い画像が含まれているので,閲覧には注意してほしい。

画像ギャラリー No.008のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に

「アンティル・ドーン」公式サイト

<以下,メーカー発表文の内容をそのまま掲載しています>


『ヴァチカンのエクソシスト』『ドント・ブリーズ』のスタジオが放つ
『アナベル 死霊人形の誕生』監督最新作!PlayStationの人気ゲームが実写映画化!

恐ろしく過激なタイムループ体験で夜明けまで生き残ることができるのは誰だ!?
物語のカギとなる7名のキャラクター相関図&不穏さが滲むキャラ写真解禁!!
『アナベル 死霊人形の誕生』(2017)、『ライト/オフ』(2016)などを手掛けたデヴィッド・F・サンドバーグを監督に迎え、『死霊館のシスター』(2018)、『IT/イット “それ”が見えたら、終わり。』(2017)のゲイリー・ドーベルマンと、『ポラロイド』(2019)のブレア・バトラーが脚本を共同担当。PlayStationのゲーム発の『グランツーリスモ』(2023)、『アンチャーテッド』(2022)、世界的人気サバイバルアクションドラマシリーズ「THE LAST OF US」を手がけてきたアサド・キジルバッシュが製作に加わり、『ヴァチカンのエクソシスト』(2023)、『ドント・ブリーズ』シリーズ等、これまでもホラーファンの心を鷲掴みにしてきた映画スタジオ、スクリーン・ジェムズ発の最新ホラー作品として今年4月に全米で公開されるやいなや4週間連続で全米興行収入ランキングトップ10入りを果たし、R指定の衝撃的な映像描写に「怖すぎる…」「まさに超強烈!」とホラーファンから大興奮の口コミが相次いだ映画『アンティル・ドーン』が8月1日(金)より日本公開!
気になるゲーム版との違いに注目!
映画版の物語の全貌に迫る、“何かがおかしい”山荘に集まった人物相関図と不穏さが滲むキャラ写真が解禁に!

画像ギャラリー No.008のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に

PlayStation 5 / PC用人気ゲーム『Until Dawn -惨劇の山荘-』を、”タイム脱出型“スラッシャーホラーとして実写映画化した『アンティル・ドーン』。ゲーム版では8人の若者が「全員生存」から「全員死亡」まで256通りの結末に向かって運命を左右されるが、映画版では5人の若者が惨劇に見舞われ、残酷な生き残りゲームを繰り広げることになる。そんな人気ゲームを実写化した本作から、この度、ゲーム版を彷彿とさせる一波乱の期待にあふれる5人の若者を取り巻く相関図とキャラクター写真が一挙解禁に!ゲーム版のファンであり、ゲームの魅力に敬意を払いながらメガホンを取ったデヴィッド・F・サンドバーグ監督のホラー愛にあふれる制作秘話を交えて、死の恐怖と謎に支配された物語の全貌に迫る!
■STORY:1年前に失踪した姉を探す旅が、新たな惨劇を呼ぶ
主人公クローバーと友人たちは、1年前に失踪した姉のメラニーを探すために訪れた山荘で突然現れた覆面の殺人鬼によって惨殺される。一度は死んだはずの彼らだったが、目が覚めると驚くべきことに殺される前の時刻に戻っている!そして再び命を狙われ、残酷に殺され、また時間が逆戻りして生き返る…。追体験の度に異なる殺人鬼が現れ、殺され方も変わり、惨劇が倍増加速していく――!やがて彼らは、この<恐怖のタイムループ>から抜け出す唯一の方法は、死を繰り返しながら謎を解き、夜明けまで生き残ることだと気づくが・・・。
【夜明けまで生き延びるために……】
原作ゲームタイトルでもある『Until Dawn』とは、「夜明けまで」という意味。砂時計がリセットまでのタイムリミットを刻む中、砂が落ちきるまでに殺人鬼に殺されてしまえば、再び地獄の生き残りゲームは振り出しに戻る。大人気ゲームを死んでも死んでも終わらない<殺戮タイムループハウス>を舞台として実写映画化したサンドバーグ監督は「いくつものホラー映画が一つの作品になっていることに惚れ込んでしまいました。ホラーという道具箱を丸ごと使って遊ぶことができました。毎晩別の物語に変わるようで、次に何が起きるのかまったくわからないんです」と、本作で描かれるタイムループを軸とする予測不能で残酷な物語を楽しみながら作り上げたことを明かしている。生きて山荘を抜け出すには、死を繰り返しながら謎を解き明かさなければならないが、やがてクローバーたちは姉の失踪や山荘に隠された恐ろしい真相を知ることになる─。
■CHARACTER:友情と恋愛の間で揺れ動く、山荘に閉じ込められた5人の若者たち

画像ギャラリー No.001のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に 画像ギャラリー No.002のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に
画像ギャラリー No.003のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に 画像ギャラリー No.004のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に
画像ギャラリー No.005のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に 画像ギャラリー No.006のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に
画像ギャラリー No.007のサムネイル画像 / 映画「アンティル・ドーン」,山荘を訪れる主人公クローバーや元カレのマックスら登場キャラの相関図と場面カットが公開に

◆クローバー(エラ・ルービン)
1年前に届いた連絡を最後に失踪した姉メラニーを探して旅に出た主人公。元カレのマックスや友人たちとともに、姉が最後に目撃された情報を頼りに山奥の山荘へ向かう。母を亡くしたすぐ後に姉と喧嘩別れのまま会えないでいる悲しみと責任感を抱えながら、恐怖のタイムループに巻き込まれていく。
◆マックス(マイケル・チミノ)
クローバーの元カレ。別れた後も友人としてクローバーを気遣い、クローバーの姉探しの旅に同行する。気さくな性格で場を和ませるムードメーカーだが、今もクローバーへの恋心は整理できていないよう。ミーガンとは訳アリな関係。
◆ニーナ(オデッサ・アジオン)
クローバーの親友で、エイブの恋人。聡明な性格で曲がったことを嫌う。恋多き女性だが、恋人との関係は長くて3か月が限界。クローバーの心の傷に寄り添いたいという思いから旅に同行した。
◆ミーガン(ユ・ジヨン)
クローバーとニーナの友人で、ニーナの恋愛遍歴にも詳しい。霊的な力を感じ取る不思議な能力を持つ、心優しき女性。この旅の間もひそかにクローバーとマックスの関係を気にかけている。
◆エイブ(ベルモント・カメリ)
ニーナの恋人。クールにふるまっているが子供っぽい一面もあり、マックスを冷やかして怒らせてしまうことも。そんな言動をニーナに咎められることもあり、死んでも死んでも終わらない<恐怖のタイムループ>の果てに、二人の関係はどのように変化するのか─?
◆メラニー(マイア・ミッチェル)
クローバーの姉で、1年前に謎の失踪を遂げた。母を亡くして家を出た後にクローバーたちがたどり着くガソリンスタンドを訪れたようだが、その後彼女の身に何が起きたのか─。クローバーたちの身に降りかかる惨劇との関係は?その安否が気遣われる。
◆ドクター・ヒル(ピーター・ストーメア)
ガソリンスタンドの店員として登場しクローバーたちに山荘の存在を知らせる人物。山荘で起こる不可解な現象やタイムループに関する重要なカギを握る。今回の実写化で原作ゲームにも登場する唯一のキャラクター。
■SYSTEM:些細な選択が死につながる!<殺戮タイムループハウス>のルール
夜ごとに現れる殺人鬼と殺され方が変化していき、前回の死からは予測不能な死が主人公たちを襲う<殺戮タイムループハウス>のルール。生きて<夜明け>を迎えることでしか、この恐怖の夜から抜け出すことはできない。さらに、死ぬたびに身体は弱っていき、死ぬことができるのは<13回まで>。いつもの仲間と変わらない毎日を送っていたはずの5人の若者は、突如訪れた繰り返す死の恐怖を前に変わらぬ友情を貫くことができるのか─。ただ同じ死を繰り返すだけではない、恐ろしいルールのもとに若者たちを引きずりこんだサンドバーグ監督は「彼らを地獄さながらの状況に置いてひどい目に遭わせましたし、彼らを殺す方法にもいろいろと創意工夫をこらしました」と語っており、その言葉からは彼女たちのたどる悪夢のような運命と残酷なストーリーの充実ぶりがうかがえる。果たして、山荘で繰り返される死の恐怖から、主人
公たちは生きて朝を迎えることができるのか─。映画版で迎える結末は「全員生存」なのか、「全員死亡」なのか。それとも…?
新時代の恐怖を生む出したゲーム版を、ホラーへの愛の結晶としてホラー界を代表するクリエイターたちが実写映画化した『アンティル・ドーン』は8月1日全国公開。全身に襲い掛かる恐怖に酔いしれる、新次元の“タイム脱出型”スラッシャーホラーをぜひその身をもって体験いただきたい!
■クレジット表記
・タイトル:『アンティル・ドーン』
・原題:UNTIL DAWN
・公開表記:8月1日(金)全国の映画館で公開
・映倫レイティング:R18+
・監督: デヴィッド・F・サンドバーグ(『アナベル 死霊人形の誕生』『ライト/オフ』『シャザム!』)
・脚本: ゲイリー・ドーベルマン(『死霊館のシスター』『IT/イット “それ”が見えたら、終わり。』)、ブレア・バトラー(『ポラロイド』)
・製作: アサド・キジルバッシュ(『グランツーリスモ』『アンチャーテッド』)、デヴィッド・F・サンドバーグ、ゲイリー・ドーベルマン
・出演:エラ・ルービン(『アイデア・オブ・ユー〜大人の愛が叶うまで〜』)、マイケル・チミノ(『アナベル 死霊博物館』)、オデッサ・アジオン(『ヘル・レイザ
ー』)、ユ・ジヨン(『モキシー 〜私たちのムーブメント〜』)、ベルモント・カメリ(『君と一緒に過ごした夏』)、マイア・ミッチェル(『ティーン・ビーチ・ムービー』
『ラスト・サマー 〜この夏の先に〜』)、ピーター・ストーメア(『アルマゲドン』、『ロスト・ワールド/ジュラシック・パーク』)

「アンティル・ドーン」公式サイト



続きを見る


🧠 編集部の感想:
映画「アンティル・ドーン」の登場キャラクターと相関図が公開され、期待感が高まります。原作ゲームの緊張感とタイムループの要素が実写化され、ストーリー展開が気になります。ホラー映画好きにはたまらない作品となる予感がします!

Views: 0

「『ホテル・バルセロナ』9月発売!7人の殺人鬼を撃退せよ」

新作ゲーム『ホテル・バルセロナ』が2025年9月発売予定

CULT GamesWhite Owls Inc. は、著名なゲームクリエイターの SWERYSUDA51による新作2.5Dスラッシャーアクション『ホテル・バルセロナ』を、2025年9月にリリースすると発表しました。対応プラットフォームは、プレイステーション5(PS5)、Xbox Series X/S、Steamです。

BitSummitでの試遊展示

発売に先立ち、2025年7月18日から20日まで京都のみやこめっせで開催されるインディーゲームイベント“BitSummit the 13th”に出展することも発表されました。試遊した参加者には、限定のワッペンがプレゼントされるとのことです。

ストーリーとゲームプレイ

『ホテル・バルセロナ』は、プレイヤーが新米連邦保安官のジャスティーンとなり、凶悪なシリアルキラーが潜むホテルから脱出することを目指すゲームです。ホラー映画からインスパイアされたこの作品には、7人の殺人鬼が登場し、プレイヤーは彼らを始末しながら進行します。

特徴的な要素

  • 殺人鬼との協力: ジャスティーンは自身の精神に宿る凶悪な過去を持つ殺人鬼、Dr.カーニバルと協力することも可能です。
  • 死を超えたプレイ: ゲーム内でプレイヤーが死亡するたびに、「スラッシャーファントム」という影が生まれ、プレイスタイルに変化をもたらします。
  • マルチプレイの楽しさ: 協力プレイ環境では最大で3人が共闘し、対戦モードでは他プレイヤーとの緊迫した鬼ごっこも楽しめます。

開発陣と背景

White Owls Inc.は、SWERYが率いる独立ゲームスタジオで、2016年に設立されました。同スタジオは、独特なゲーム体験を提供することで知られ、『Deadly Premonition 2』や『The Good Life』なども開発しています。

製品情報

  • タイトル: HOTEL BARCELONA
  • ジャンル: 血みどろの2.5Dスラッシャーアクション
  • プレイ人数: 1人~4人
  • 発売日: 2025年9月予定
  • プラットフォーム: Steam、PS5、Xbox Series X/S
  • 価格: 未定

最新情報は公式サイトで確認できます。興味のある方はウィッシュリストに登録して発売を待ってください。


2023年10月10日作成

🧠 編集部より:

『ホテル・バルセロナ』は、SWERYとSUDA51が手がける血みどろの2.5Dスラッシャーアクションゲームで、2025年9月にプレイステーション5、Xbox Series X|S、そしてSteamプラットフォーム向けに発売予定です。このゲームでは、プレイヤーが新米連邦保安官ジャスティーンを操作し、凶悪な殺人鬼たちが潜むホテルからの脱出を目指します。

補足情報

  • ゲームの背景: 本作は、さまざまなホラー映画からインスパイアを受けて制作されており、屈強な7人のシリアルキラーとの戦いが特徴です。プレイヤーはそれぞれ異なる能力を持つ殺人鬼を倒さなければなりません。

  • ユニークなゲームプレイ: 死亡時に「スラッシャーファントム」と呼ばれる影が生まれ、プレイヤーの過去の行動を模倣します。これにより、死ぬたびに戦闘が進化し、戦い方が変化します。

  • 協力と対戦プレイ: 本作は最大4人での協力プレイが可能であり、PvPモードも搭載されています。仲間と協力して脱出を目指すか、他のプレイヤーとの戦いに挑むかは、プレイヤーの選択に委ねられています。

豆知識

  • SWERYとSUDA51: 彼らはそれぞれ独自のスタイルをもつデザイナーで、これまでにも印象的なホラー作品を多数手がけています。SWERYの代表作『デッドly Premonition』や、SUDA51の『ノーモア★ヒーローズ』などがあります。
  • BitSummit: 京都で開催されるインディーゲーム祭りで、多くの開発者が自分たちの作品を紹介する場となっており、新しいゲーム体験を求める多くのファンが集まります。

本作の情報は随時更新されると思いますので、興味がある方は公式サイトをチェックしてみてください。

  • キーワード: ホテル・バルセロナ

    このキーワードは、ゲームのタイトルであり、記事の中心内容を示しています。『ホテル・バルセロナ』は、SWERYとSUDA51が手がける2.5Dスラッシャーアクションゲームで、2025年9月の発売予定です。

ホテル・バルセロナ をAmazonで探す
PS5 をAmazonで探す
PS5 Pro をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0