土曜日, 6月 7, 2025
No menu items!
ホーム ブログ ページ 3979

疲れは溜めない!初心者でも安心なトリガーポイントのフォームローラーが33%オフ #Amazonセール



疲れは溜めない!初心者でも安心なトリガーポイントのフォームローラーが33%オフ #Amazonセール

Amazon(アマゾン)で毎日開催されているタイムセール。
本日2025年4月14日は、初心者にも使いやすい設計の「グリッド フォームローラー」が33%オフや、筋膜の深部まで届くMBシリーズ ストレッチボール「マッサージボール MBX」が14%オフなど、生活を確実にアップグレードしてくれるTRIGGERPOINT(トリガーポイント)の人気アイテムがお得に登場しています。



Source link

Views: 0

`langchain-mcp-adapters` を使用した LangChain と MCP サーバーの連携 #Python



`langchain-mcp-adapters` を使用した LangChain と MCP サーバーの連携 #Python

はじめに

Model Context Protocol (MCP) は、AIモデルが外部ツールやサービスとどのように対話するかを標準化することを目的としています。これは共通のインターフェースを定義し、異なるモデルやツールプロバイダーが効果的に通信できるようにします。MCPは、AIがアクセスできる機能(ツール)を記述するための言語非依存の方法を提供し、ツール呼び出しの要求と応答のフォーマットを標準化します。これにより、AIモデルは特定のツール実装の詳細を知らなくても、多様なツールセットを利用できるようになります。

しかし、これらのMCP準拠ツールをLangChainのような既存のAIフレームワークに直接統合するには、アダプテーションが必要です。LangChainは独自のツール抽象化(BaseTool)とエコシステムを持っているため、MCPツールをそのまま利用することはできません。

ここで langchain-mcp-adapters ライブラリが重要な役割を果たします。これは重要な架け橋として機能し、MCPツールをLangChainおよびその強力なエージェントフレームワークであるLangGraphが理解し利用できる形式にシームレスに変換します。このライブラリは軽量なラッパーを提供し、開発者はLangChainアプリケーション内で成長し続けるMCPツールのエコシステムを活用できるようになります。

主な機能:

  • MCPツール変換: MCPツールをLangChain互換の BaseTool オブジェクトに自動的に変換します。これにより、LangChainエージェント(ReActエージェントなど)がこれらのツールを他のLangChainネイティブツールと同様に扱うことができます。
  • マルチサーバークライアント: 複数のMCPサーバーに同時に接続し、さまざまなソースからツールを集約できる堅牢なクライアント (MultiServerMCPClient) を提供します。これにより、異なる機能を持つ複数のマイクロサービスのようなMCPサーバーを組み合わせて利用できます。
  • トランスポートの柔軟性: 標準入出力 (stdio) やサーバーセントイベント (sse) など、一般的なMCP通信トランスポートをサポートします。これにより、ローカルでの開発からネットワーク経由のリモートサーバー接続まで、様々なデプロイメントシナリオに対応できます。

このチュートリアルでは、MCPサーバーの設定方法、アダプターライブラリを使用したサーバーへの接続方法、そしてロードされたツールをLangGraphエージェントに統合する方法を順を追って説明します。

インストール

まず、必要なパッケージをインストールします。

pip install langchain-mcp-adapters langgraph langchain-openai # またはお好みのLangChain LLMインテグレーション

また、選択した言語モデルプロバイダーのAPIキーを設定する必要があります。通常、環境変数を設定することで行います。

export OPENAI_API_KEY=
# または export ANTHROPIC_API_KEY=<...> など

コアコンセプト

サンプルに進む前に、いくつかのコアコンセプトを理解することが不可欠です。

  1. MCPサーバー:

    • MCPサーバーは、AIモデルが呼び出すことができるツール(関数)を公開します。これは、特定の機能を提供するマイクロサービスと考えることができます。
    • mcp ライブラリ(langchain-mcp-adapters の依存関係)は、Pythonでこれらのサーバーを簡単に作成するための FastMCP のようなツールを提供します。
    • ツールは @mcp.tool() デコレーターを使用して定義されます。このデコレーターは、型ヒントとdocstringから入力スキーマ(ツールが必要とする引数とその型)を自動的に推論します。これにより、ツールのインターフェースが明確に定義されます。
    • サーバーは @mcp.prompt() を使用してプロンプトも定義できます。これは、構造化された会話の開始点や指示を提供します(例:システムプロンプトの設定)。
    • サーバーは、通信に使用するトランスポートメカニズムを指定して実行されます(例: mcp.run(transport="stdio")mcp.run(transport="sse"))。stdio はサーバーを標準入出力を介して通信するサブプロセスとして実行します。これはローカルでの開発やテストに便利です。sse は通常、通信のためにシンプルなWebサーバー(多くの場合、FastAPIが内部で使用される)を実行します。これはネットワーク経由での接続に適しています。
  2. MCPクライアント (langchain-mcp-adapters):

    • クライアントの役割は、1つ以上のMCPサーバーに接続することです。
    • クライアントは、stdiosse といった通信プロトコルの詳細を処理します。開発者は低レベルの通信を意識する必要はありません。
    • クライアントは、利用可能なツールのリストとその定義(名前、説明、入力スキーマ)をサーバーから取得します。
    • MultiServerMCPClient クラスは、特に複数のツールサーバーを扱う場合に、接続を管理するための主要な方法です。これは非同期コンテキストマネージャ (async with) として使用され、接続の確立とクリーンアップを自動的に処理します。
  3. ツール変換:

    • MCPツールには独自の定義形式があります。一方、LangChainは BaseTool クラス構造を使用します。これら二つの形式は互換性がありません。
    • langchain-mcp-adapters ライブラリは、このギャップを埋めるための変換機能を提供します。langchain_mcp_adapters.tools にある load_mcp_tools 関数は、アクティブな mcp.ClientSession を介してサーバーに接続し、MCPツールをリストアップし、それぞれをLangChainの StructuredTool でラップします。StructuredTool は、複雑な入力スキーマを持つツールに適したLangChainのツールクラスです。
    • このラッパーは、LangChainエージェントがツールを使用することを決定したときに、実際のMCPツール呼び出し(session.call_tool)を処理し、応答をLangChainが期待する形式(通常は文字列または ToolMessage)に正しくフォーマットします。これにより、エージェントはMCPツールの存在を意識することなく、シームレスにツールを利用できます。
  4. プロンプト変換:

    • ツールと同様に、MCPプロンプトは langchain_mcp_adapters.promptsload_mcp_prompt を使用して取得できます。
    • この関数は、MCPサーバーからプロンプト構造を取得し、それをLangChainの HumanMessage または AIMessage オブジェクトのリストに変換します。これは、会話の初期化やエージェントへの指示(システムプロンプトなど)に適しています。

クイックスタート: シングルサーバーの例 (約400語)

簡単な例を構築しましょう:数学関数を提供するMCPサーバーと、それらの関数を使用するLangGraphエージェントです。

ステップ1: MCPサーバーの作成 (math_server.py)

# math_server.py
from mcp.server.fastmcp import FastMCP

# 名前を指定してMCPサーバーを初期化
mcp = FastMCP("Math")

@mcp.tool()
def add(a: int, b: int) -> int:
    """二つの数を加算します"""
    print(f"サーバー側: add({a}, {b}) を実行中") # サーバー側のログ
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """二つの数を乗算します"""
    print(f"サーバー側: multiply({a}, {b}) を実行中") # サーバー側のログ
    return a * b

# プロンプト定義の例
@mcp.prompt()
def configure_assistant(skills: str) -> list[dict]:
    """指定されたスキルでアシスタントを設定します。"""
    return [
        {
            "role": "assistant", # LangChainのAIMessageに対応
            "content": f"あなたは役立つアシスタントです。次のスキルを持っています: {skills}。常に一度に一つのツールのみを使用してください。",
        }
    ]

if __name__ == "__main__":
    # stdioトランスポートを使用してサーバーを実行
    print("算術MCPサーバーをstdio経由で起動中...")
    mcp.run(transport="stdio")

このコードを math_server.py として保存します。

ステップ2: クライアントとエージェントの作成 (client_app.py)

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

from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

# --- 重要: このパスを更新してください ---
# math_server.py ファイルへの絶対パスを取得
current_dir = os.path.dirname(os.path.abspath(__file__))
math_server_script_path = os.path.join(current_dir, "math_server.py")
# ---

async def main():
    # モデルを初期化 (OpenAI GPT-4oを使用する例)
    model = ChatOpenAI(model="gpt-4o") # またはお好みのモデル

    # math_server.py スクリプトを実行するためのパラメータを設定
    server_params = StdioServerParameters(
        command="python", # 実行するコマンド
        args=[math_server_script_path], # コマンドライン引数(スクリプトパス)
        # cwd=..., env=... # オプション: 作業ディレクトリや環境変数
    )

    print("MCPサーバーに接続中...")
    # stdio_client コンテキストマネージャを使用して接続を確立
    async with stdio_client(server_params) as (read, write):
        # read/writeストリームを使用してClientSessionを作成
        # session_kwargs で ClientSession の挙動をカスタマイズ可能
        async with ClientSession(read, write) as session:
            print("セッションを初期化中...")
            # サーバーとのハンドシェイクを実行
            await session.initialize()
            print("セッションが初期化されました。")

            print("MCPツールをロード中...")
            # MCPツールを取得し、LangChainツールに変換
            # この関数が内部で session.list_tools() を呼び出し、
            # 返された MCPTool オブジェクトを convert_mcp_tool_to_langchain_tool で変換
            tools = await load_mcp_tools(session)
            print(f"ロードされたツール: {[tool.name for tool in tools]}")

            # モデルとロードされたツールを使用してLangGraph ReActエージェントを作成
            # ReActは推論(Reasoning)と行動(Action)を交互に行うエージェントの一種
            agent = create_react_agent(model, tools)

            print("エージェントを呼び出し中...")
            # エージェントを実行
            inputs = {"messages": [("human", "(3 + 5) * 12 は?")]} # ユーザーからの入力

            # イベントストリームを取得して処理の流れを監視 (推奨)
            async for event in agent.astream_events(inputs, version="v1"):
                print(f"イベント: {event['event']}, データ: {event['data']}") # イベントをストリーミングして観察

            # または最終的な応答を直接取得
            # final_response = await agent.ainvoke(inputs)
            # print("エージェントの応答:", final_response['messages'][-1].content)

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

これを math_server.py と同じディレクトリに client_app.py として保存します。

実行方法:

クライアントスクリプトを実行します:

クライアントスクリプトは自動的に math_server.py をサブプロセスとして起動し、それに接続し、addmultiply ツールをロードし、LangGraphエージェントを使用してMCPサーバー経由でこれらのツールを呼び出すことで数学の問題を解決します。クライアントとサーバーの両方からのログが表示され、エージェントがツールを呼び出す様子(サーバー側のログ)とエージェントの思考プロセス(クライアント側の astream_events ログ)を確認できます。

複数のMCPサーバーへの接続

多くの場合、異なる専門サーバーからのツールを組み合わせたい場合があります。MultiServerMCPClient はこれを簡単に実現します。

ステップ1: 別のサーバーを作成 (weather_server.py)

SSEトランスポートを使用して実行される天気サーバーを作成しましょう。SSEは、サーバーからクライアントへの一方向のプッシュ通知に適したプロトコルです。

# weather_server.py
from mcp.server.fastmcp import FastMCP
import uvicorn # 必要: pip install uvicorn fastapi sse-starlette

mcp = FastMCP("Weather")

@mcp.tool()
async def get_weather(location: str) -> str:
    """指定された場所の天気を取得します。"""
    print(f"サーバー側: get_weather({location}) を実行中")
    # 実際のシナリオでは、ここで天気APIを呼び出す
    return f"{location}はいつも晴天です"

if __name__ == "__main__":
    # SSEトランスポートを使用してサーバーを実行 (uvicornのようなASGIサーバーが必要)
    # mcp ライブラリは暗黙的にSSE用のFastAPIアプリを作成します。
    # デフォルトでは、ポート8000の /sse エンドポイントで実行されます。
    print("天気MCPサーバーをSSE経由でポート8000で起動中...")
    # 手動で実行する場合: uvicorn.run(mcp.app, host="0.0.0.0", port=8000)
    # mcp.run の便利な方法を使用する場合:
    mcp.run(transport="sse", host="0.0.0.0", port=8000)

これを weather_server.py として保存します。実行には uvicorn, fastapi, sse-starlette が必要になる場合があります (pip install uvicorn fastapi sse-starlette)。

ステップ2: MultiServerMCPClient を使用するようにクライアントを更新 (multi_client_app.py)

import asyncio
import os
from langchain_mcp_adapters.client import MultiServerMCPClient, StdioConnection, SSEConnection
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

# --- 重要: パスを更新してください ---
current_dir = os.path.dirname(os.path.abspath(__file__))
math_server_script_path = os.path.join(current_dir, "math_server.py")
# 天気サーバーは別途実行し、URL経由で接続
# ---

async def main():
    model = ChatOpenAI(model="gpt-4o")

    # 複数のサーバーの接続情報を定義
    # キー (例: "math_service") は接続を識別するための一意な名前
    # 値は StdioConnection または SSEConnection 型の辞書
    server_connections: dict[str, StdioConnection | SSEConnection] = {
        "math_service": { # この接続の一意な名前
            "transport": "stdio",
            "command": "python",
            "args": [math_server_script_path],
            # 必要であれば他の StdioConnection パラメータを追加 (env, cwd など)
        },
        "weather_service": { # この接続の一意な名前
            "transport": "sse",
            "url": "http://localhost:8000/sse", # weather_server が実行されているURL
            # 必要であれば他の SSEConnection パラメータを追加 (headers, timeout など)
        }
    }

    print("複数のMCPサーバーに接続中...")
    # MultiServerMCPClient コンテキストマネージャを使用
    # __aenter__ で定義された接続情報に基づいて各サーバーに接続し、セッションを初期化
    async with MultiServerMCPClient(connections=server_connections) as client:
        print("接続が確立されました。")

        # *すべて* の接続済みサーバーから *すべて* のツールを取得
        # client.get_tools() は内部で保持している全サーバーのツールリストを結合して返す
        all_tools = client.get_tools()
        print(f"ロードされたツール: {[tool.name for tool in all_tools]}")

        # 結合されたツールリストでエージェントを作成
        agent = create_react_agent(model, all_tools)

        # --- エージェントとの対話 ---
        print("n算術クエリでエージェントを呼び出し中...")
        math_inputs = {"messages": [("human", "(3 + 5) * 12 は?")]}
        math_response = await agent.ainvoke(math_inputs)
        print("算術応答:", math_response['messages'][-1].content)

        print("n天気クエリでエージェントを呼び出し中...")
        weather_inputs = {"messages": [("human", "ニューヨークの天気は?")]}
        weather_response = await agent.ainvoke(weather_inputs)
        print("天気応答:", weather_response['messages'][-1].content)

        # --- プロンプト取得の例 ---
        # print("n算術サーバーのプロンプトを取得中...")
        # try:
        #     # client.get_prompt で指定したサーバーからプロンプトを取得
        #     prompt_messages = await client.get_prompt(
        #         server_name="math_service", # connections で定義した名前を使用
        #         prompt_name="configure_assistant", # MCPサーバーで定義されたプロンプト名
        #         arguments={"skills": "基本的な算術"} # プロンプトが必要とする引数
        #     )
        #     print("取得したプロンプト:", prompt_messages)
        # except Exception as e:
        #     print(f"プロンプトの取得に失敗しました: {e}")


if __name__ == "__main__":
    # 最初に別のターミナルで天気サーバーを起動します:
    # python weather_server.py
    # 次に、このクライアントスクリプトを実行します:
    asyncio.run(main())

これを multi_client_app.py として保存します。

実行方法:

  1. 一つのターミナルで天気サーバーを起動します: python weather_server.py
  2. 別のターミナルでマルチクライアントアプリを実行します: python multi_client_app.py

MultiServerMCPClientmath_server.py サブプロセス (stdio) を起動し、実行中の weather_server.py (sse) に接続します。そして、ツール (add, multiply, get_weather) を集約し、それらがLangGraphエージェントで利用可能になります。エージェントは、質問の内容に応じて適切なサーバーのツールを呼び出すことができます。

LangGraph APIサーバーとの統合

MCPツールを使用するLangGraphエージェントを、langgraph deploy を使用して永続的なAPIサービスとしてデプロイできます。重要なのは、LangGraphアプリケーションコンテキスト内で MultiServerMCPClient のライフサイクル(初期化とクリーンアップ)を正しく管理することです。これにはLangGraphの lifespan 機能を使用します。

graph.py ファイルを作成します:

# graph.py
from contextlib import asynccontextmanager
import os
from langchain_mcp_adapters.client import MultiServerMCPClient, StdioConnection, SSEConnection
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI # または Anthropic など

# --- 重要: パス/URLをサーバー環境に合わせて更新 ---
# LangGraphサーバーが実行される場所からの相対パスを想定
math_server_script_path = os.path.abspath("math_server.py")
weather_server_url = "http://localhost:8000/sse" # 天気サーバーは独立して実行されている必要あり
# ---

# 接続情報を定義 (サーバー環境でのパス/URLが正しいことを確認)
server_connections: dict[str, StdioConnection | SSEConnection] = {
    "math_service": {
        "transport": "stdio",
        "command": "python",
        "args": [math_server_script_path],
    },
    "weather_service": {
        "transport": "sse",
        "url": weather_server_url,
    }
}

model = ChatOpenAI(model="gpt-4o")

# 非同期コンテキストマネージャを使用してクライアントのセットアップ/ティアダウンを処理
# LangGraph は FastAPI の lifespan イベントハンドラを利用してこれを管理する
@asynccontextmanager
async def lifespan(_app): # LangGraph は lifespan 管理のためにこの構造を期待
    # MultiServerMCPClient コンテキスト内でクライアントを初期化
    async with MultiServerMCPClient(server_connections) as client:
        print("ライフスパン内でMCPクライアントが初期化されました。")
        # クライアントがアクティブなコンテキスト*内部*でエージェントを作成
        agent = create_react_agent(model, client.get_tools())
        # LangGraph がリクエスト処理に使用できるようにエージェントを yield する
        # ここで yield された辞書のキー (例: "agent") が entrypoint で参照される
        yield {"agent": agent}
    print("ライフスパン終了、MCPクライアントがクリーンアップされました。")

# lifespan がエージェントを yield する場合、個別の main グラフ定義は不要なことが多い

langgraph.json (または pyproject.toml[tool.langgraph] セクション) を設定して、このグラフ定義をライフスパンマネージャーと共に使用します:

// langgraph.json (例)
{
  "dependencies": ["."], // または必要なパッケージを指定
  "graphs": {
    "my_mcp_agent": { // APIエンドポイント名 (例: /my_mcp_agent/invoke)
      "entrypoint": "graph:agent", // lifespan  yield した辞書のキーを参照
      "lifespan": "graph:lifespan" // 使用する lifespan 関数を指定
    }
  }
}

これで langgraph up を実行すると、lifespan 関数が実行され、MultiServerMCPClient が起動し (そして stdio の数学サーバーも起動し)、SSE サーバーに接続します。このコンテキスト内で作成されたエージェントがLangGraphによって提供されます。リクエストがあるたびに、この初期化済みのエージェントが使用されます。サーバーがシャットダウンする際には、lifespanasync with ブロックが終了し、クライアントと stdio サーバーが適切にクリーンアップされます。SSE 天気サーバーは依然として別途実行する必要があることに注意してください。

サーバートランスポート (stdio vs. SSE)

  • stdio:

    • 通信: サーバープロセスの標準入力および出力ストリーム経由。
    • 利点: ローカル開発のための簡単なセットアップ。クライアントがサーバーのライフサイクル(起動・停止)を管理します。ネットワーク設定が不要。
    • 欠点: クライアントとサーバーが密結合。分散システムや非Pythonサーバーにはあまり適していません。クライアント側で commandargs の設定が必要です。サーバープロセスがクラッシュすると、クライアントも影響を受ける可能性があります。
  • sse (Server-Sent Events):

    • 通信: SSEプロトコルを使用してHTTP経由。サーバーはWebサービスとして動作します(多くの場合、FastAPI/Uvicornが暗黙的に使用されます)。
    • 利点: 標準的なWebプロトコル。ネットワーク化された/リモートのサーバーに適しており、異なる言語で実装されている可能性もあります。サーバーは独立して実行されます。スケーラビリティが高い。
    • 欠点: サーバーを別途実行・管理する必要があります。クライアント側で url の設定が必要です。ネットワーク遅延や信頼性の影響を受けます。

デプロイメントのニーズに基づいてトランスポートを選択してください。ローカルでの迅速なプロトタイピングには stdio が便利ですが、本番環境やマイクロサービスアーキテクチャでは sse の方が適していることが多いでしょう。

高度なクライアント設定

MultiServerMCPClient 内の StdioConnection および SSEConnection 辞書は、より細かい制御のための追加のオプションパラメータを受け入れます:

  • Stdio:

    • env: サブプロセス用のカスタム環境変数。
    • cwd: サブプロセスの作業ディレクトリ。
    • encoding: テキストエンコーディング(デフォルト: “utf-8″)。
    • encoding_error_handler: エンコーディングエラーの処理方法(デフォルト: “strict”)。
    • session_kwargs: 基盤となる mcp.ClientSession に渡される追加のキーワード引数(例:タイムアウト設定など)。
  • SSE:

    • headers: SSEエンドポイントに送信するカスタムHTTPヘッダー。
    • timeout: HTTP接続タイムアウト(デフォルト: 5秒)。
    • sse_read_timeout: SSE読み取りタイムアウト(デフォルト: 300秒)。
    • session_kwargs: 基盤となる mcp.ClientSession に渡される追加のキーワード引数。

詳細については、langchain_mcp_adapters/client.pyMultiServerMCPClientStdioConnectionSSEConnection の定義を参照してください。

まとめ

langchain-mcp-adapters ライブラリは、標準化された Model Context Protocol と柔軟な LangChain エコシステムの間のギャップを効果的に埋めます。MultiServerMCPClient と自動ツール変換機能を提供することで、開発者は多様なMCP準拠ツールをLangChainエージェントやLangGraphアプリケーションに簡単に組み込むことができます。

コアワークフロー:

  1. MCPサーバーで @mcp.tool() を使用してツール(およびオプションで @mcp.prompt() を使用してプロンプト)を定義します。
  2. 各サーバーの接続詳細(stdioまたはsse)を使用して MultiServerMCPClient を設定します。
  3. クライアントのコンテキストマネージャ (async with ...) を使用して接続し、client.get_tools() を介してツールを取得します。
  4. 取得したLangChain互換ツールをエージェント(create_react_agent またはカスタムエージェント)に渡します。

これにより、標準化されたプロトコルを通じて特殊な外部ツールを活用する、強力でモジュール化されたAIアプリケーションを構築できます。さらなる洞察については、リポジトリ内のサンプルコードやテストコード (tests/ ディレクトリ) を参照してください。これらは、ライブラリの具体的な使用方法や機能についての理解を深めるのに役立ちます。






Source link

Views: 0

「Amazonベーシック」新商品タイムセールが開催。充電式電池やマイクなどがラインナップ – GAME Watch


 Amazonは、同社プライベートブランド「Amazonベーシック」の新商品を対象としたタイムセールを4月14日9時より開催している。開催期間は4月27日11時59分まで。

 「Amazonベーシック」の充電池用の充電器、除湿器、LED電球などのホーム用品などが特別価格で販売されている。ラインナップには「充電式単4形ニッケル水素電池」や「充電器 充電式単3形および単4形ニッケル水素電池用」、「ダイナミックボーカルマイク」などが登場。

 なお、購入の際はセール価格が適用されているかなども確認してほしい。





Source link

Views: 0

『僕とロボコ』劇場公開記念でWeb公開中の199話が全話無料に。ありとあらゆるパロディが詰め込まれたジャンプの無法地帯。劇場版の元ネタになった157話も読める




『僕とロボコ』劇場公開記念でWeb公開中の199話が全話無料に



Source link

Views: 0

オープンワールド航空機設計シム『Aviassembly』早期アクセス“非常に好評”スタート。新パーツを開発し、より遠く・速く・運搬できるよう機体を改良してお金を稼げ




航空機を設計・製作・操縦してミッションをこなすシミュレーションゲームです。



Source link

Views: 0

「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に



 semiworkは2025年4月12日,オンライン協力型ホラーゲーム「R.E.P.O.」の,開発経緯や制作の裏側を紹介する開発者動画「How R.E.P.O. was CREATED!」を公開した。

画像ギャラリー No.006のサムネイル画像 / 「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に

 R.E.P.O.は,「Semibot」と呼ばれるをロボットたちを操作し,謎のキャラクター「Taxman」の指令でさまざまな場所に赴き,価値のあるアイテムを回収するというアクションゲームだ。
 物理演算で動くアイテムたちにはそれぞれ価格が設定されており,ぶつけたり落としたりするとどんどん価値が下がってしまうため,慎重に運ばなければならない。
 また,マップには回収の妨害をしてくるモンスターたちが徘徊しており,物陰にかくれたり,ショップで購入したアイテムを使用したりして,対処する必要がある。

画像ギャラリー No.007のサムネイル画像 / 「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に

 公開された動画では,semiworkが最初のゲーム「Voidigo」をリリースしたあと,Unityでの開発に興味を持ったこと,そこからR.E.P.O.の前身となる「Project Clean」の開発に取り掛かったことが語られている。
 Project Cleanは,ホラーをテーマにした掃除ゲームで,R.E.P.O.に登場するモンスター「Headman」は,この時登場した唯一の敵だったという。そしてProject Cleanを開発するうちに「これがマルチプレイヤーだったらどうなるだろう」と考え,現在の形へと再構築されたとのことだ。

画像ギャラリー No.005のサムネイル画像 / 「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に
画像ギャラリー No.003のサムネイル画像 / 「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に

 R.E.P.O.は,いわゆる“Lethal Company系ゲーム”として評価されることの多い作品だが,以前の動画にて「特定のゲームには影響を受けていない」と述べられており,今回の動画でその経緯が明らかとなった形だ。
 semiworkのYouTubeチャンネルでは,実装予定の新要素や,開発の裏話を収録した動画が毎週公開されているので,過去の動画もぜひチェックしておこう。

画像ギャラリー No.004のサムネイル画像 / 「R.E.P.O.」が誕生したきっかけは“お掃除ゲーム”だった。R.E.P.O.制作の裏話を収録した開発動画が公開に







Source link

Views: 0

【FGO】奏章4のタイトルは“人類裁決法廷 トリニティ・メタトロニオス”。天使関連のストーリーか?【Fate/Grand Order】


【FGO】奏章4のタイトルは“人類裁決法廷 トリニティ・メタトロニオス”。天使関連のストーリーか?【Fate/Grand Order】
 スマートフォン向けRPG『Fate/Grand Order』FGO)にて、2025年4月30日に開幕する最新ストーリー“奏章IV”のタイトルが公開された。
 奏章IVのタイトルは“人類裁決法廷 トリニティ・メタトロニオス”。メタトロニオス(ギリシア語で“玉座にはべる者”)は天使として有名な“メタトロン”の語源という説もある。南欧エリアの神々しい光を見るに、天使関連のストーリーになるのだろうか。また、トリニティとあるので、3体あるいは三位一体の天使が出てくるかもしれない。

広告

[IMAGE]

奏章IVのロゴが天使の羽のようにも見える。羽だとしたら枚数が多いように見えるため、高位の天使が関わってくるのかもしれない。

[IMAGE]

奏章IVの対象クラスはルーラーと目されている。

[IMAGE]

奏章IVといえば、登場予定の女性(画像手前)と思われる新キャラクターも気になるところ。天使関連のストーリーであれば、配色や羽などを見るに悪魔や堕天使の類だろうか?
 なお、奏章IVの開放条件は“奏章II 不可逆廃棄孔 イド”と“奏章III 新霊長後継戦 アーキタイプ・インセプション”のクリアーとなっている。未クリアーの人はいまのうちにストーリーを進めておこう。



      【FGO】奏章4のタイトルは“人類裁決法廷 トリニティ・メタトロニオス”。天使関連のストーリーか?【Fate/Grand Order】

      {content}

      Source link

      Views: 0

      【本日みつけたお買い得品】16型で約1.2kgの軽量Core Ultra 2搭載ノートが2万5千円オフ – PC Watch


       Amazonにおいて、16型ノートPCのLG「gram 16」が2万5,000円引きで、23万9,800円にて購入可能となっている。

       gram 16は、CPUとして「Core Ultra 7 256V」を採用するノートPCだ。ほか、16型ディスプレイ(2,560×1,600ドット)、16GBメモリ、512GB SSD、Windows 11 Homeを備える。Dolby Atmos対応のステレオスピーカーを内蔵。本体重量は約1,239gと、16型としては比較的軽量だ。

       インターフェイスは、Thunderbolt 4 2基、USB 3.2 Gen 2 2基、HDMI、Wi-Fi 6、Bluetooth 5.3、ステレオミニジャックなどを装備する。

       ASUS「Vivobook S 15 S5507QA」は、3月31日の価格から1万8,182円引きにより、12万7,091円で購入できる。120Hz駆動の15.6型有機EL(2,880×1,620ドット)、Snapdragon X Plus X1P-42-100、16GBメモリ、512GB SSD、Windows 11 Homeを搭載する。





      Source link

      Views: 0

      解決できるのは鉄道人だけ。Netflix版「新幹線大爆破」メイキング写真 – AV Watch


      メイキング

      来週23日より配信スタートする、樋口真嗣監督のNetflix映画「新幹線大爆破」。配信に先立ち、新たな場面写真およびメイキング写真、登場人物相関図が公開された。

      本作は、JR東日本の特別協力のもと、佐藤純彌監督が手掛けた1975年の東映映画「新幹線大爆破」をリブートした作品。オリジナル版はパニック映画の金字塔としても呼び声が高く、後に映画「スピード」(ヤン・デ・ボン監督)に影響を与えるなど、多くの映画人や鉄道ファンに愛されている。

      Netflix版「新幹線大爆破」の主人公となる車掌・高市を演じるのは、樋口監督との本格的なタッグは『日本沈没』以来となる草彅剛。常に草彅の活躍に注目をしていた樋口だったが、ここ数年の目覚ましい評価の高まりをみている中で「ぜひまた一緒に新作を!との思いがメラメラと芽生え」、再タッグに至ったのだという。

      草彅と共に新幹線に乗り合わせたもう一人の車掌・藤井は、「高市に厳しく指導されながらも愛される後輩キャラ」というイメージに合ったという、細田佳央太が演じる。

      運転士の松本を演じるのはのん。彼女の監督としての現場を見た樋口が、「俳優の時にはみせないような監督としての強く厳しく凛々しい一面」に役どころを重ね合わせオファーをしたそうだ。

      爆弾の恐怖におびえる乗客たちも、個性派揃いの俳優陣が集結。起業家YouTuber・等々力には、「トリックスターでありながらもどこかつかみどころのない」様子を上手く出せるのではと要潤を起用。そして、衆議院議員・加賀美を演じる尾野真千子には、「いい意味でのびのびと暴れてほしい」とお願いしたとのこと。

      そして、事件に巻き込まれた新幹線を、指令所の総括指令長という立場から救出しようとする笠置を演じるのは斎藤工。「優秀で若くして重責を担う立場に置かれた笠置の、責任感と同時に若さゆえの危うさを兼ね備えた」という難しい役どころを、監督が全幅の信頼を置く斎藤が演じきっている。

      相関図

      「エンタメで東日本を盛り上げたい」という熱い気持ちに共鳴し、JR東日本が特別協力。実際の駅舎で撮影が行なわれた

      1975年に劇場公開された東映映画「新幹線大爆破」を原作に、ストーリーを再構築した“リブート”作品であることも本作の注目ポイント。

      公開当時から原作の大ファンであったという樋口がリブートを手がける際に注目したのは、「警察は犯人を捕らえられるが、新幹線で起きること自体を解決できるのは鉄道人だけ」ということ。さらに、「事件解決に向けての方策、アイディアが次々に繰り出されるような展開」にすることで、作品はさらにノンストップ感を増すことに。

      また本作では「パニックになる乗客」にもスポットを当てられており、事件に巻き込まれた人々の目線で作品を体感できるようになっている。原作ファンである樋口監督ならではの目線での“リブート”が、本作の魅力を最大限に引き上げている。

      あらすじ

      はやぶさ60号は今日も、新青森から東京へ向けて定刻どおり出発した。高市(草彅剛)はいつもと変わらぬ想いで車掌としてお客さまを迎える。そんな中、一本の緊迫した電話が入る。その内容は、はやぶさ60号に爆弾を仕掛けたというもの。新幹線の時速が100kmを下回れば、即座に爆発する……。

      高市は、極限の状況の中、乗客を守り、爆破を回避すべく奔走することになる。犯人が爆弾の解除料として要求して来たのは、1,000億円!

      爆発だけでなく、さまざまな窮地と混乱に直面することになる乗務員と乗客たち。鉄道人たち、政府と警察、さらに国民も巻き込み、ギリギリの攻防戦が繰り広げられていく。極限の状況下でぶつかり合う思惑と正義、職業人としての矜持と人間としての本能。はやぶさ60号は、そして日本は、この危機を乗り越えることができるのか!?

      作品情報

      出演:草彅剛、細田佳央太、のん、要潤、尾野真千子、豊嶋花、黒田大輔、松尾諭、大後寿々花、尾上松也、六平直政、ピエール瀧、坂東彌十郎、斎藤工

      監督:樋口真嗣
      原作:東映映画「新幹線大爆破」(監督:佐藤純彌、脚本:小野竜之助/佐藤純彌、1975 年作品)
      エグゼクティブ・プロデューサー:佐藤善宏(Netflix)
      プロデューサー:石塚紘太
      ライン・プロデューサー:森賢正
      准監督:尾上克郎
      脚本:中川和博、大庭功睦
      音楽:岩崎太整、yuma yamaguchi
      撮影:一坪悠介、鈴木啓造
      照明:浜田研一
      録音:田中博信
      美術:佐久嶋依里、加藤たく郎
      スタイリスト:伊賀大介
      編集:梅脇かおり、佐藤敦紀
      アクション・コーディネイター:田渕景也
      VFXスーパーバイザー:佐藤敦紀
      ポストプロダクションスーパーバイザー:上田倫人
      Compositing Supervisor:白石哲也
      リレコーディングミキサー:佐藤宏明(molmol)
      音響効果:荒川きよし
      ミュージックスーパーバイザー:千陽崇之
      特別協力:東日本旅客鉄道株式会社 株式会社ジェイアール東日本企画
      制作プロダクション:エピスコープ株式会社
      製作:Netflix





      Source link

      Views: 0

      【悲報】「挨拶返せよお前は天皇か」モー娘。メンバーの裏垢がバレて炎上



      bandicam 2025-04-14 19-27-59-332
      21歳モー娘。自身のSNS拡散投稿を謝罪「全て私が書いたもの」1月にはプライベート写真流出
      モーニング娘。’25の北川莉央(21)が10日までに自身のブログを更新。ネット上で拡散されている自身のSNS投稿について謝罪した。
      ネット上には、北川とみられるSNSアカウントにより、グループメンバーを批判している文章が拡散されていた。北川は「この度は私の未熟な行動により、メンバー、ファンのみなさんを傷つけてしまい、申し訳ございません」と謝罪した上で「いま出ているものは全て私が書いたもので間違いありません」と認めた。

       

      https://imgur.com/FLQtwxs.jpeg

       

      https://imgur.com/jRGXQEh.jpeg

       

      https://imgur.com/zFpXE8I.jpeg

       

      https://imgur.com/3xmphpV.jpeg
      ※詳しくは下記リンクより
      https://www.nikkansports.com/entertainment/news/202504140000266.html

      document.write(” + ”);

      続きを読む



      Source link

      Views: 1