Amazon(アマゾン)で毎日開催されているタイムセール。
本日2025年4月14日は、初心者にも使いやすい設計の「グリッド フォームローラー」が33%オフや、筋膜の深部まで届くMBシリーズ ストレッチボール「マッサージボール MBX」が14%オフなど、生活を確実にアップグレードしてくれるTRIGGERPOINT(トリガーポイント)の人気アイテムがお得に登場しています。
Source link
Views: 0
Amazon(アマゾン)で毎日開催されているタイムセール。
本日2025年4月14日は、初心者にも使いやすい設計の「グリッド フォームローラー」が33%オフや、筋膜の深部まで届くMBシリーズ ストレッチボール「マッサージボール MBX」が14%オフなど、生活を確実にアップグレードしてくれるTRIGGERPOINT(トリガーポイント)の人気アイテムがお得に登場しています。
Source link
Views: 0
Model Context Protocol (MCP) は、AIモデルが外部ツールやサービスとどのように対話するかを標準化することを目的としています。これは共通のインターフェースを定義し、異なるモデルやツールプロバイダーが効果的に通信できるようにします。MCPは、AIがアクセスできる機能(ツール)を記述するための言語非依存の方法を提供し、ツール呼び出しの要求と応答のフォーマットを標準化します。これにより、AIモデルは特定のツール実装の詳細を知らなくても、多様なツールセットを利用できるようになります。
しかし、これらのMCP準拠ツールをLangChainのような既存のAIフレームワークに直接統合するには、アダプテーションが必要です。LangChainは独自のツール抽象化(BaseTool
)とエコシステムを持っているため、MCPツールをそのまま利用することはできません。
ここで langchain-mcp-adapters
ライブラリが重要な役割を果たします。これは重要な架け橋として機能し、MCPツールをLangChainおよびその強力なエージェントフレームワークであるLangGraphが理解し利用できる形式にシームレスに変換します。このライブラリは軽量なラッパーを提供し、開発者はLangChainアプリケーション内で成長し続けるMCPツールのエコシステムを活用できるようになります。
主な機能:
BaseTool
オブジェクトに自動的に変換します。これにより、LangChainエージェント(ReActエージェントなど)がこれらのツールを他のLangChainネイティブツールと同様に扱うことができます。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=<...> など
サンプルに進む前に、いくつかのコアコンセプトを理解することが不可欠です。
MCPサーバー:
mcp
ライブラリ(langchain-mcp-adapters
の依存関係)は、Pythonでこれらのサーバーを簡単に作成するための FastMCP
のようなツールを提供します。@mcp.tool()
デコレーターを使用して定義されます。このデコレーターは、型ヒントとdocstringから入力スキーマ(ツールが必要とする引数とその型)を自動的に推論します。これにより、ツールのインターフェースが明確に定義されます。@mcp.prompt()
を使用してプロンプトも定義できます。これは、構造化された会話の開始点や指示を提供します(例:システムプロンプトの設定)。mcp.run(transport="stdio")
や mcp.run(transport="sse")
)。stdio
はサーバーを標準入出力を介して通信するサブプロセスとして実行します。これはローカルでの開発やテストに便利です。sse
は通常、通信のためにシンプルなWebサーバー(多くの場合、FastAPIが内部で使用される)を実行します。これはネットワーク経由での接続に適しています。MCPクライアント (langchain-mcp-adapters
):
stdio
や sse
といった通信プロトコルの詳細を処理します。開発者は低レベルの通信を意識する必要はありません。MultiServerMCPClient
クラスは、特に複数のツールサーバーを扱う場合に、接続を管理するための主要な方法です。これは非同期コンテキストマネージャ (async with
) として使用され、接続の確立とクリーンアップを自動的に処理します。ツール変換:
BaseTool
クラス構造を使用します。これら二つの形式は互換性がありません。langchain-mcp-adapters
ライブラリは、このギャップを埋めるための変換機能を提供します。langchain_mcp_adapters.tools
にある load_mcp_tools
関数は、アクティブな mcp.ClientSession
を介してサーバーに接続し、MCPツールをリストアップし、それぞれをLangChainの StructuredTool
でラップします。StructuredTool
は、複雑な入力スキーマを持つツールに適したLangChainのツールクラスです。session.call_tool
)を処理し、応答をLangChainが期待する形式(通常は文字列または ToolMessage
)に正しくフォーマットします。これにより、エージェントはMCPツールの存在を意識することなく、シームレスにツールを利用できます。プロンプト変換:
langchain_mcp_adapters.prompts
の load_mcp_prompt
を使用して取得できます。HumanMessage
または AIMessage
オブジェクトのリストに変換します。これは、会話の初期化やエージェントへの指示(システムプロンプトなど)に適しています。簡単な例を構築しましょう:数学関数を提供する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
をサブプロセスとして起動し、それに接続し、add
と multiply
ツールをロードし、LangGraphエージェントを使用してMCPサーバー経由でこれらのツールを呼び出すことで数学の問題を解決します。クライアントとサーバーの両方からのログが表示され、エージェントがツールを呼び出す様子(サーバー側のログ)とエージェントの思考プロセス(クライアント側の astream_events
ログ)を確認できます。
多くの場合、異なる専門サーバーからのツールを組み合わせたい場合があります。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
として保存します。
実行方法:
python weather_server.py
python multi_client_app.py
MultiServerMCPClient
は math_server.py
サブプロセス (stdio) を起動し、実行中の weather_server.py
(sse) に接続します。そして、ツール (add
, multiply
, get_weather
) を集約し、それらがLangGraphエージェントで利用可能になります。エージェントは、質問の内容に応じて適切なサーバーのツールを呼び出すことができます。
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によって提供されます。リクエストがあるたびに、この初期化済みのエージェントが使用されます。サーバーがシャットダウンする際には、lifespan
の async with
ブロックが終了し、クライアントと stdio サーバーが適切にクリーンアップされます。SSE 天気サーバーは依然として別途実行する必要があることに注意してください。
stdio
:
command
と args
の設定が必要です。サーバープロセスがクラッシュすると、クライアントも影響を受ける可能性があります。sse
(Server-Sent Events):
url
の設定が必要です。ネットワーク遅延や信頼性の影響を受けます。デプロイメントのニーズに基づいてトランスポートを選択してください。ローカルでの迅速なプロトタイピングには stdio
が便利ですが、本番環境やマイクロサービスアーキテクチャでは sse
の方が適していることが多いでしょう。
MultiServerMCPClient
内の StdioConnection
および SSEConnection
辞書は、より細かい制御のための追加のオプションパラメータを受け入れます:
env
: サブプロセス用のカスタム環境変数。cwd
: サブプロセスの作業ディレクトリ。encoding
: テキストエンコーディング(デフォルト: “utf-8″)。encoding_error_handler
: エンコーディングエラーの処理方法(デフォルト: “strict”)。session_kwargs
: 基盤となる mcp.ClientSession
に渡される追加のキーワード引数(例:タイムアウト設定など)。headers
: SSEエンドポイントに送信するカスタムHTTPヘッダー。timeout
: HTTP接続タイムアウト(デフォルト: 5秒)。sse_read_timeout
: SSE読み取りタイムアウト(デフォルト: 300秒)。session_kwargs
: 基盤となる mcp.ClientSession
に渡される追加のキーワード引数。詳細については、langchain_mcp_adapters/client.py
の MultiServerMCPClient
、StdioConnection
、SSEConnection
の定義を参照してください。
langchain-mcp-adapters
ライブラリは、標準化された Model Context Protocol と柔軟な LangChain エコシステムの間のギャップを効果的に埋めます。MultiServerMCPClient
と自動ツール変換機能を提供することで、開発者は多様なMCP準拠ツールをLangChainエージェントやLangGraphアプリケーションに簡単に組み込むことができます。
コアワークフロー:
@mcp.tool()
を使用してツール(およびオプションで @mcp.prompt()
を使用してプロンプト)を定義します。MultiServerMCPClient
を設定します。async with ...
) を使用して接続し、client.get_tools()
を介してツールを取得します。create_react_agent
またはカスタムエージェント)に渡します。これにより、標準化されたプロトコルを通じて特殊な外部ツールを活用する、強力でモジュール化されたAIアプリケーションを構築できます。さらなる洞察については、リポジトリ内のサンプルコードやテストコード (tests/
ディレクトリ) を参照してください。これらは、ライブラリの具体的な使用方法や機能についての理解を深めるのに役立ちます。
Views: 0
Amazonは、同社プライベートブランド「Amazonベーシック」の新商品を対象としたタイムセールを4月14日9時より開催している。開催期間は4月27日11時59分まで。
「Amazonベーシック」の充電池用の充電器、除湿器、LED電球などのホーム用品などが特別価格で販売されている。ラインナップには「充電式単4形ニッケル水素電池」や「充電器 充電式単3形および単4形ニッケル水素電池用」、「ダイナミックボーカルマイク」などが登場。
なお、購入の際はセール価格が適用されているかなども確認してほしい。
Views: 0
『僕とロボコ』劇場公開記念でWeb公開中の199話が全話無料に
Source link
Views: 0
航空機を設計・製作・操縦してミッションをこなすシミュレーションゲームです。
Source link
Views: 0
semiworkは2025年4月12日,オンライン協力型ホラーゲーム「R.E.P.O.」の,開発経緯や制作の裏側を紹介する開発者動画「How R.E.P.O. was CREATED!」を公開した。
![]() |
R.E.P.O.は,「Semibot」と呼ばれるをロボットたちを操作し,謎のキャラクター「Taxman」の指令でさまざまな場所に赴き,価値のあるアイテムを回収するというアクションゲームだ。
物理演算で動くアイテムたちにはそれぞれ価格が設定されており,ぶつけたり落としたりするとどんどん価値が下がってしまうため,慎重に運ばなければならない。
また,マップには回収の妨害をしてくるモンスターたちが徘徊しており,物陰にかくれたり,ショップで購入したアイテムを使用したりして,対処する必要がある。
![]() |
公開された動画では,semiworkが最初のゲーム「Voidigo」をリリースしたあと,Unityでの開発に興味を持ったこと,そこからR.E.P.O.の前身となる「Project Clean」の開発に取り掛かったことが語られている。
Project Cleanは,ホラーをテーマにした掃除ゲームで,R.E.P.O.に登場するモンスター「Headman」は,この時登場した唯一の敵だったという。そしてProject Cleanを開発するうちに「これがマルチプレイヤーだったらどうなるだろう」と考え,現在の形へと再構築されたとのことだ。
![]() |
![]() |
R.E.P.O.は,いわゆる“Lethal Company系ゲーム”として評価されることの多い作品だが,以前の動画にて「特定のゲームには影響を受けていない」と述べられており,今回の動画でその経緯が明らかとなった形だ。
semiworkのYouTubeチャンネルでは,実装予定の新要素や,開発の裏話を収録した動画が毎週公開されているので,過去の動画もぜひチェックしておこう。
![]() |
Views: 0
【FGO】奏章4のタイトルは“人類裁決法廷 トリニティ・メタトロニオス”。天使関連のストーリーか?【Fate/Grand Order】
{content}
Views: 0
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を搭載する。
Views: 0
来週23日より配信スタートする、樋口真嗣監督のNetflix映画「新幹線大爆破」。配信に先立ち、新たな場面写真およびメイキング写真、登場人物相関図が公開された。
本作は、JR東日本の特別協力のもと、佐藤純彌監督が手掛けた1975年の東映映画「新幹線大爆破」をリブートした作品。オリジナル版はパニック映画の金字塔としても呼び声が高く、後に映画「スピード」(ヤン・デ・ボン監督)に影響を与えるなど、多くの映画人や鉄道ファンに愛されている。
Netflix版「新幹線大爆破」の主人公となる車掌・高市を演じるのは、樋口監督との本格的なタッグは『日本沈没』以来となる草彅剛。常に草彅の活躍に注目をしていた樋口だったが、ここ数年の目覚ましい評価の高まりをみている中で「ぜひまた一緒に新作を!との思いがメラメラと芽生え」、再タッグに至ったのだという。
草彅と共に新幹線に乗り合わせたもう一人の車掌・藤井は、「高市に厳しく指導されながらも愛される後輩キャラ」というイメージに合ったという、細田佳央太が演じる。
運転士の松本を演じるのはのん。彼女の監督としての現場を見た樋口が、「俳優の時にはみせないような監督としての強く厳しく凛々しい一面」に役どころを重ね合わせオファーをしたそうだ。
爆弾の恐怖におびえる乗客たちも、個性派揃いの俳優陣が集結。起業家YouTuber・等々力には、「トリックスターでありながらもどこかつかみどころのない」様子を上手く出せるのではと要潤を起用。そして、衆議院議員・加賀美を演じる尾野真千子には、「いい意味でのびのびと暴れてほしい」とお願いしたとのこと。
そして、事件に巻き込まれた新幹線を、指令所の総括指令長という立場から救出しようとする笠置を演じるのは斎藤工。「優秀で若くして重責を担う立場に置かれた笠置の、責任感と同時に若さゆえの危うさを兼ね備えた」という難しい役どころを、監督が全幅の信頼を置く斎藤が演じきっている。
1975年に劇場公開された東映映画「新幹線大爆破」を原作に、ストーリーを再構築した“リブート”作品であることも本作の注目ポイント。
公開当時から原作の大ファンであったという樋口がリブートを手がける際に注目したのは、「警察は犯人を捕らえられるが、新幹線で起きること自体を解決できるのは鉄道人だけ」ということ。さらに、「事件解決に向けての方策、アイディアが次々に繰り出されるような展開」にすることで、作品はさらにノンストップ感を増すことに。
また本作では「パニックになる乗客」にもスポットを当てられており、事件に巻き込まれた人々の目線で作品を体感できるようになっている。原作ファンである樋口監督ならではの目線での“リブート”が、本作の魅力を最大限に引き上げている。
はやぶさ60号は今日も、新青森から東京へ向けて定刻どおり出発した。高市(草彅剛)はいつもと変わらぬ想いで車掌としてお客さまを迎える。そんな中、一本の緊迫した電話が入る。その内容は、はやぶさ60号に爆弾を仕掛けたというもの。新幹線の時速が100kmを下回れば、即座に爆発する……。
高市は、極限の状況の中、乗客を守り、爆破を回避すべく奔走することになる。犯人が爆弾の解除料として要求して来たのは、1,000億円!
爆発だけでなく、さまざまな窮地と混乱に直面することになる乗務員と乗客たち。鉄道人たち、政府と警察、さらに国民も巻き込み、ギリギリの攻防戦が繰り広げられていく。極限の状況下でぶつかり合う思惑と正義、職業人としての矜持と人間としての本能。はやぶさ60号は、そして日本は、この危機を乗り越えることができるのか!?
出演:草彅剛、細田佳央太、のん、要潤、尾野真千子、豊嶋花、黒田大輔、松尾諭、大後寿々花、尾上松也、六平直政、ピエール瀧、坂東彌十郎、斎藤工
監督:樋口真嗣
原作:東映映画「新幹線大爆破」(監督:佐藤純彌、脚本:小野竜之助/佐藤純彌、1975 年作品)
エグゼクティブ・プロデューサー:佐藤善宏(Netflix)
プロデューサー:石塚紘太
ライン・プロデューサー:森賢正
准監督:尾上克郎
脚本:中川和博、大庭功睦
音楽:岩崎太整、yuma yamaguchi
撮影:一坪悠介、鈴木啓造
照明:浜田研一
録音:田中博信
美術:佐久嶋依里、加藤たく郎
スタイリスト:伊賀大介
編集:梅脇かおり、佐藤敦紀
アクション・コーディネイター:田渕景也
VFXスーパーバイザー:佐藤敦紀
ポストプロダクションスーパーバイザー:上田倫人
Compositing Supervisor:白石哲也
リレコーディングミキサー:佐藤宏明(molmol)
音響効果:荒川きよし
ミュージックスーパーバイザー:千陽崇之
特別協力:東日本旅客鉄道株式会社 株式会社ジェイアール東日本企画
制作プロダクション:エピスコープ株式会社
製作:Netflix
Views: 0
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(” + ”);
Views: 1