水曜日, 7月 16, 2025
No menu items!
ホーム ブログ ページ 3544

「キム西」初2ショ表紙でSNS大盛況!『CanCam』特別版即重版決定!

📌 内容
グローバルボーイズグループINIの西 洸人さんと木村柾哉さんが初の2ショット表紙を飾った『CanCam』7月号特別版が、5月22日に発売されました。この号は発売前にネット予約が完売し、書店販売も即完売という反響を呼び、重版が決定されました。特に彼らの「ダチ感」が表現された特別なカットが注目を集めています。

加えて、「2025 INI 3RD ARENA LIVE TOUR [XQUARE]」の横浜公演で、9月13日から15日にかけてバンテリンドームナゴヤでの追加公演が発表されました。INIはその人気をますます広げており、ファンの期待が高まっています。

本号には、ふたりの関係性を探る10ページ特集やフォトカードの付録も含まれており、ファンにとっては見逃せない内容になっています。さらに、6月5日から一部書店で販売される予定です。

📊 詳細データ

  • 発売日:2025年5月22日
  • 特別版内容:西 洸人さんと木村柾哉さんの初の2ショット表紙、10ページ特集、フォトカード付録
  • 重版決定:初回予約分が完売のため重版決定
  • 対象ファン:MINI(INIのファンネーム)
  • 追加公演:2025年9月13日、14日、15日にバンテリンドームナゴヤにて開催

公式リンク:CanCam公式サイト

💬 編集部コメント:

この発表における印象や注目点をカジュアルにまとめると、以下のようになります。


注目ポイント

  1. 表紙の反響
    INIの西 洸人さんと木村柾哉さんが初の2ショットで『CanCam』の特別版表紙を飾り、ファンの反応が非常に熱い!発売日前にネット予約は完売、発売後も書店では即完売という異例の状況。これが彼らの人気を証明していますね!

  2. 相反する個性の魅力
    西さんと木村さんは、顔や性格、パフォーマンスが正反対と言われていますが、その違いが相互に補完し合い、ファンを惹きつけています。この「ケミ」が感じられる表紙のカットは、二人の魅力を存分に発揮しています。

  3. 楽しい特集内容
    中ページには、ふたりの関係性を深掘りした10ページ特集があり、彼らの「素」な瞬間や対談が掲載。ファンにはたまらない内容で、和やかな雰囲気が伝わってきます。

  4. 特別付録の嬉しさ
    両面仕様のフォトカードが付録としてついてくるのもファン心を掴む要素。カジュアルな瞬間とクールな姿を両方楽しめるのは嬉しいですね。

  5. ライブのサプライズ発表
    さらに、新しいライブの日程がサプライズ公開され、INIは勢いを増しています。ファンにとっては目が離せない状態が続くことでしょう。

社会的な視点から見えるもの

  • 若者たちのアイドル文化
    若者層に強く支持される両者は、アイドルとしてだけでなく、彼ら自身の絆がメディアを通じて示されることで、ファンとの距離が近く感じられる。これは、今のアイドルとファンの関係性の在り方を象徴しています。

  • 多様性と受容
    異なる個性を持つ二人が共演することで、多様性が受け入れられる姿勢が広がっているのも大きなポイント。ファンも彼らの違いを楽しんでいるのが伝わります。

この発表は、ただのアイドルの活動を超えて、社会的なメッセージやコミュニティの在り方をも映し出していますね!


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

Views: 2

松村北斗主演「秒速5センチメートル」公開日決定!ティザー初解禁!

ざっくり内容:
SixTONESの松村北斗が主演する映画『秒速5センチメートル』の公開日が10月10日に決定し、ティザービジュアルも初公開されました。松村が演じる主人公・遠野貴樹は大きな桜の木の前に立ち、冬の夜に深く思索しています。この作品に対する期待の表れとして、コピーには「どれほどの速さで生きれば、きみにまた会えるのか」という切ないメッセージが添えられています。

本作は新海誠氏の名作アニメーションを実写化したもので、映像美と詩的な世界観が特徴です。新海氏は、自身の作品が新しい形で再現されることについて興奮したコメントを述べています。監督は奥山由之氏で、彼は数多くの広告やミュージックビデオを手がけ、国内外で評価されています。

『秒速5センチメートル』は、主人公の18年間にわたる人生の旅を描いており、アニメ版は公開から18年経った今もなお、多くの人々に愛されています。この実写版の発表により、再び注目が集まっています。

編集部の見解:

映画『秒速5センチメートル』の新たな実写化への期待

最近発表されたSixTONESの松村北斗が主演する実写版『秒速5センチメートル』の公開日が決まり、ファンの間で話題になっています。この作品は新海誠監督のアニメーション映画として2007年に公開され、多くの人々に愛されてきました。今回の実写化には、元の作品の魅力をどれだけ引き継げるのか、特に映像美と感情をどう表現するのか、非常に楽しみです。

思い出深い映像美とストーリー

アニメ版『秒速5センチメートル』は、その美しい風景描写や音楽、詩的なセリフが特徴です。この作品は時間や距離がもたらす感情の葛藤を描いており、特に若い世代に共感を得てきました。「どれほどの速さで生きれば、きみにまた会えるのか」というキャッチコピーからは、主人公の切ない思いが伝わってきます。

私の中でも、青春時代を思い返しながら見ることができる作品の一つです。特に、桜や雪といった自然の描写が、季節の移ろいを感じさせるのが印象的でした。これらは日本文化の重要な要素であり、特に桜は新たな始まりや別れを象徴する存在です。

社会への影響

新海誠監督の作品は、特に若者の間での共感を生むことで知られています。彼のストーリーは、恋愛だけでなく、友情や失われた時間といったテーマをも扱っています。そのため、今回の実写化により、再び若い世代が自分の経験と照らし合わせて考えるきっかけになるのは間違いありません。

実写版を手がける奥山由之監督は、映像美に定評があり、彼の過去の作品からも期待が高まります。新たな解釈や独自の視点で描かれることで、既存のファンだけでなく新しい観客層にもアプローチできるでしょう。

まとめと豆知識

映画は芸術であり、観客に感情をもたらす力があります。『秒速5センチメートル』も、その一例です。実は、この作品は「秒速5センチメートル」というタイトルからもわかるように、桜の花びらが舞い落ちる速度を示しており、非常に象徴的です。新しい実写版がどのような形で私たちの心を打つか、期待が高まりますね。

日本だけでなく、世界中で愛される作品になることを願っています。公開後には再度、映画館に足を運ぶことで、誰かと感動を分かち合える瞬間を楽しめるといいですね。

  • キーワード: 映画「秒速5センチメートル」

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

Views: 0

痛車&痛バイク150台集結!奥伊吹でキャラ愛炸裂【ARCChampionship 2025】

📌 ニュース:
人気ゲームやアニメ、VTuberにインスパイアされた痛車と痛バイクが、総勢150台集まりました。

キャラクターへの愛を表現した魅力的なデザインが見られ、

来場者たちもその展示に心躍らせていました。

奥伊吹のイベントは、ファンの熱意を感じられる特別な場所でした。

ARCChampionship 2025のフォトレポートとして、

その盛り上がりをお届けします。

趣向を凝らした作品が揃い、

見逃せない体験となったイベントでした。

  • 以下のポイントをご覧ください!🎉

    1. 痛車&痛バイクが大集合!🚗💨
      人気ゲームやアニメ、VTuberのキャラクターをデザインした痛車や痛バイクが、総勢150台も集まりました。ファンの熱意が感じられますね!

    2. 奥伊吹の美しいロケーション🌄
      イベントは風光明媚な奥伊吹で開催され、多くの来場者がその美しい景色と共に、愛車を楽しむ姿が見られました。

    3. ファン同士の交流の場✨
      参加者はお気に入りのキャラクターについて語り合ったり、カスタマイズされた車両を見せ合ったりと、コミュニティのつながりを深める素敵な時間を過ごしていました。

    このようなイベントは、ファンの熱意を感じられる楽しい場ですね!😊


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

Views: 0

「ドラクエI&II HD-2D版、10月30日発売!」

📌 ニュース:
スクウェア・エニックスは、
『ドラゴンクエストI&II』のHD-2D版を
10月30日に発売すると発表しました。

対応プラットフォームは、
Nintendo Switch、PS5、
Xbox Series X|S、PC(Steam/Windows)で、
Steam版は10月31日発売予定です。

本作は、
ドット絵と3Dグラフィックを融合させた
「HD-2D」グラフィックで再構築されます。

開発は「浅野チーム」とアートディンクが担当。
新キャラクターや追加要素も期待されています。

通常版は税込7678円。
『ドラゴンクエストIII』のセーブデータ特典として、
ゲーム内アイテム「伝説のイメチェンセット」も入手可能です。

  • 『ドラゴンクエストI&II』HD-2D版についてのポイントを以下にまとめました✨

    1. 発売日とプラットフォーム 📅
      『ドラゴンクエストI&II』HD-2D版は、10月30日にNintendo Switch、PS5、Xbox Series X|S、PC向けに発売されます。Steam版は10月31日予定です。

    2. HD-2Dグラフィックの魅力 🎨
      この作品は、ドット絵と3Dグラフィックを融合させた「HD-2D」スタイルで再構築されています。新キャラクターや追加要素も用意されているとのことなので、期待が膨らみますね!

    3. 特典情報 🎁
      同時に『ドラゴンクエストIII』HD-2D版のセーブデータ特典として、ゲーム内アイテム「伝説のイメチェンセット」を受け取れます。『ドラゴンクエストI』では「いぬぐるみ」、『ドラゴンクエストII』では「ねこぐるみ」をゲットできますよ!

    ぜひ楽しみにしてくださいね!🎮


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

Views: 0

「孫正義、日米合同ファンドで最先端技術支援」

📌 ニュース:
ソフトバンクの孫正義氏が、アメリカのスコット・ベッセント財務長官との会談で、日米合同の政府系ファンド設立を提案しました。このファンドは、最先端技術やインフラに投資し、アメリカの財務省と日本の財務省が共同で運営します。

計画では、初期資本3000億ドル(約42兆円)規模で、ファンドは他の投資家にも開放される可能性があります。また、双方の政府に収益を提供することを目指し、両国の強固な投資関係を構築します。

このアイデアは高い政治レベルで検討されており、正式な提案には至っていませんが、日米貿易協定に寄与する可能性が期待されています。

  • ソフトバンクの孫正義氏が提案した日米合同政府系ファンドについて、以下の3つのポイントをまとめました📝✨

    1. ファンドの設立提案📊
      孫氏がアメリカの財務長官と会談し、最先端技術やインフラに投資するための3000億ドル規模の日米合同ファンドの設立を提案しました。

    2. 共同運営・株式保有🏛️
      このファンドは、アメリカと日本の財務省が共同で所有・運営し、両国の投資家が参加できる機会を提供する見込みです。

    3. 政治的背景🚀
      提案は両国の高い政治レベルで取り上げられており、経済的な連携強化を目指しています。これは、増税なしでの歳入源確保のためにも重要視されています。

    この計画はまだ正式な形にはなっていないものの、国際的な協力を促進する重要な動きとされています。


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

Views: 0

「iPhone天気予報の降水確率、真実公開!」

📌 ニュース:
iPhoneの天気アプリで表示される「降水確率」は、私たちの直感とは異なる意味を持つことがあります。例えば、「降水確率40%」は、特定地域内で降水がある地点の確率を示します。アメリカの気象局は「Confidence × Area」という計算式を用いており、同じ確率でも予報官の確信度や対象範囲が異なることがあります。

さらに、国やサービスによって基準が異なるため、iPhoneの降水確率も他国の定義とは一線を画すことがあります。このように、天気予報の数字には複雑な背景があるのです。情報社会で賢く生きるためには、受け入れた情報の意味を深く考えることが重要です。スマートフォンが示す数字の裏には、様々な興味深い物語が広がっているかもしれません。

  • こちらの記事のポイントを3つまとめました!😊

    1. 降水確率の誤解を解こう!☔️
      iPhoneの天気アプリの「降水確率」は、単純に「雨が降る確率」とは限りません。例えば「降水確率40%」は、その地域内で雨が降る可能性が40%という複雑な定義に基づいています。

    2. 国や基準による違いがある!🗺️
      降水確率の計算は国や機関によって異なります。アメリカと日本での定義は違い、日本では「1mm以上の降水が起こる確率」を指すと説明されています。これにより、同じ50%の表示でも意味が異なることがあります。

    3. 情報リテラシーを大切に✨
      気象情報に限らず、様々なデータや情報には隠れた背景があります。どのように情報が導かれたのかを考え、自分自身で疑問を持つことが、より賢い情報の活用につながります。日常の情報に対して主体的な視点を持ちましょう!

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

Views: 0

Clair Obscur:Expedition 33で古いlumiereを再訪してください



あなたの旅の間に探求する地域の不足はありません clear clear nabure:遠征33 しかし、リストの一番上に追加する必要があるのは、古いルミエールです。これは、メインボスを倒した後にのみアクセスできるエリアを持つユニークな場所です。ほとんどのプレイヤーは、古いルミエールを振り返って再登場させるとは考えていません。なぜなら、彼らは物語を続けたいと思っているか、新しい敵と発見するためのより良い略奪があることに気付かないからです。古いルミエールをまだ再訪していない場合は、リストに載せてください。


続きを見る


🧠 編集部の感想:
古いルミエールを再訪することは、ゲームの深みを増す素晴らしいアイデアです。メインボスを倒した後にしかアクセスできないエリアがあることで、プレイヤーにさらなる挑戦を提供します。多くの人が見落としているこの場所を探索することで、新たな発見や楽しみが得られるでしょう。

Views: 0

Google Gen AI TypeScript/JavaScript SDK の使用方法 #GenerativeAI



Google Gen AI TypeScript/JavaScript SDK の使用方法 #GenerativeAI

Google Gen AI SDK for TypeScript and JavaScript は、開発者が Gemini モデルの最先端機能をアプリケーションにシームレスに統合することを可能にします。洗練されたチャットインターフェースの構築、クリエイティブなコンテンツの生成、またはマルチモーダル機能の活用を目指す場合でも、この SDK は堅牢で直感的なツールキットを提供します。Gemini API(Google AI Studio 経由)と Google Cloud の Vertex AI プラットフォームの両方を包括的にサポートしており、幅広いプロジェクトにとって汎用性の高い選択肢となります。このガイドでは、SDK の使用に関する基本事項を、初期設定から高度な機能の探求まで、公式ドキュメントとサンプルコードから直接引用した事実に基づいた実装詳細に焦点を当てて説明します。

利用開始:環境設定

SDK の機能に飛び込む前に、開発環境が前提条件を満たし、SDK がインストールされていることを確認してください。

前提条件

Google Gen AI SDK を使用するための主な前提条件は、Node.js バージョン 18 以降です。

インストール

SDK のインストールは npm を使用して簡単に行えます。ターミナルを開き、次のコマンドを実行します。

npm install @google/genai

このコマンドにより、必要なパッケージがプロジェクトにダウンロードおよびインストールされます。

クイックスタート:最初のインタラクション

Gemini モデルとの対話を開始する最も簡単な方法は、Google AI Studio から取得した API キーを使用することです。

コンテンツを生成する方法の簡単な例を次に示します。

import {GoogleGenAI} from '@google/genai';

// API キーが環境変数として設定されていることを確認してください
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;

const ai = new GoogleGenAI({apiKey: GEMINI_API_KEY});

async function main() {
  try {
    const response = await ai.models.generateContent({
      model: 'gemini-2.0-flash-001', // または目的のモデル
      contents: '空が青いのはなぜですか?',
    });
    // response.text がテキストにアクセスする正しい方法であると仮定します(SDK構造に基づく)
    // 実際のレスポンス構造は response.candidates[0].content.parts[0].text である可能性があります
    // 簡単のため、README のクイックスタートに従い、概念的な 'response.text' を参照します。
    // より堅牢なアクセスは次のようになります:
    if (response.candidates && response.candidates.length > 0 &&
        response.candidates[0].content && response.candidates[0].content.parts &&
        response.candidates[0].content.parts.length > 0) {
      console.log(response.candidates[0].content.parts[0].text);
    } else {
      console.log("テキスト応答が受信されなかったか、予期しない構造です。");
    }
  } catch (error) {
    console.error("コンテンツ生成エラー:", error);
  }
}

main();

(注意:レスポンスオブジェクト内のテキストへの正確なパスは異なる場合があります。README.md はクイックスタートで簡潔にするために response.text を使用していますが、実際の API レスポンスはしばしば response.candidates[0].content.parts[0].text のようによりネストされています。使用しているメソッドの特定のレスポンス構造を常に参照してください。)

初期化:Gemini への接続

SDK は、Gemini Developer API または Vertex AI のいずれかで動作するように初期化できます。

Gemini Developer API

サーバーサイドアプリケーションの場合、API キーを使用して GoogleGenAI を初期化します。

import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({apiKey: 'YOUR_GEMINI_API_KEY'});

ブラウザでの使用:

ブラウザサイドアプリケーションでも初期化は同じです。ただし、重要なセキュリティ上の考慮事項があります。

注意:API キーのセキュリティ
API キーをクライアントサイドのコードに直接公開しないでください。本番環境では、API キーを保護するために常にサーバーサイドの実装を使用してください。開発目的または特定のユースケースでクライアントサイドの実装が避けられない場合は、厳格な API キー制限など、堅牢なセキュリティ対策を講じてください。

Vertex AI

SDK を Vertex AI で使用するには、Google Cloud プロジェクト ID とロケーションを指定する必要があります。

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({
    vertexai: true,
    project: 'your_google_cloud_project_id',
    location: 'your_google_cloud_location', // 例:'us-central1'
});

提供されている SDK サンプルの多くは、環境変数(GOOGLE_GENAI_USE_VERTEXAIGOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_LOCATION)を使用して、Gemini API と Vertex AI の構成を切り替えるパターンを示しています。

API バージョン選択

デフォルトでは、SDK はベータ API エンドポイントを利用して、API の最新のプレビュー機能へのアクセスを提供します。安定した API エンドポイントが必要な場合は、初期化中に API バージョンを指定できます。

Vertex AI で v1 安定 API を使用する場合:

const ai = new GoogleGenAI({
    vertexai: true,
    project: 'your_project',
    location: 'your_location',
    apiVersion: 'v1'
});

Gemini Developer API で v1alpha を使用する場合(例として、特定のバージョンは異なる場合があります):

const ai = new GoogleGenAI({
    apiKey: 'YOUR_GEMINI_API_KEY',
    apiVersion: 'v1alpha'
});

コアコンセプト:GoogleGenAI オブジェクト

SDK のすべての機能は、GoogleGenAI クラスのインスタンスを介してアクセスされます。このオブジェクトは中央ハブとして機能し、関連する API メソッドを論理的なサブモジュールに編成します。

  • ai.models: Gemini モデルと対話するための主要なインターフェースです。テキストベースの生成のための generateContent、画像作成のための generateImages、動画合成のための generateVideos などのメソッドを格納しています。また、利用可能なモデルに関するメタデータ(例:getlist)を取得するためにも使用できます。
  • ai.caches: このサブモジュールは、Cache オブジェクトを作成および管理するためのツールを提供します。キャッシュは、同じ大きなプロンプトプレフィックスを繰り返し使用する場合に、コストとレイテンシを削減するのに特に役立ちます。プロンプトの最初の部分をキャッシュすることにより、後続の呼び出しでは新しい一意の部分のみを処理する必要があります。caches.ts サンプルは、キャッシュの作成と使用を示しています。
  • ai.chats: 会話型アプリケーションを構築するために、ai.chats を使用すると、ローカルでステートフルな Chat オブジェクトを作成できます。これらのオブジェクトは、会話履歴を自動的に維持することにより、マルチターンの対話の管理を簡素化します。chats.tschat_afc_streaming.ts などのサンプルがその使用法を示しています。
  • ai.files: このサブモジュールは、ファイルを扱う上で不可欠です。ai.files.upload を使用してファイル(画像、テキストなど)を API にアップロードし、プロンプト内でこれらのファイルを URI を使用して参照できます。これは、ファイルが複数回使用される場合に帯域幅を削減するのに役立ち、プロンプトにインラインで含めるには大きすぎるファイルには必要です。generate_content_with_file_upload.ts サンプルは、ai.files.get によるファイル処理ステータスの確認を含め、これを示しています。
  • ai.live: ai.live サブモジュールは、Gemini モデルとのリアルタイムでインタラクティブなセッションを可能にします。テキスト、音声、動画の入力をサポートし、テキストまたは音声の出力をサポートします。これは、即時のフィードバックや継続的な対話を必要とする動的なアプリケーションに最適です。live_client_content.ts サンプルは、ここでの重要なリファレンスです。

主な機能とその利用方法

Google Gen AI SDK には、多様な AI 搭載アプリケーションを構築するための機能が満載です。

Gemini 2.5 モデルによるアプリの容易な構築

SDK は、さまざまな生成タスクのために Gemini 2.5 モデルの能力を活用するプロセスを簡素化します。

コンテンツ生成(テキスト)

最も一般的なユースケースは、テキストベースのコンテンツの生成です。ai.models.generateContent() メソッドがこれの中心となります。

// 'ai' が初期化された GoogleGenAI インスタンスであると仮定します
async function generateMyContent() {
  const response = await ai.models.generateContent({
    model: 'gemini-2.0-flash-001', // または他の互換性のあるテキストモデル
    contents: 'ローマ帝国に関する面白い事実を教えてください。',
  });
  // レスポンスへのアクセス例:
  console.log(response.candidates[0].content.parts[0].text);
}

contents 引数の構造化:

generateContent(および関連メソッド)の contents パラメータは柔軟です。

  • Content: 単一の Content オブジェクトを提供すると、SDK はそれを自動的に配列でラップします。
  • Content[]: Content オブジェクトの配列を直接提供でき、これはマルチターンの会話または複数の情報を表します。
  • Part | string: 単一の Part オブジェクト(テキスト、インラインデータ、またはファイル URI)または単純な文字列は、ロール ‘user’ を持つ Content オブジェクトにラップされます。
  • Part[] | string[]: Part オブジェクトまたは文字列の配列は、ロール ‘user’ を持つ単一の Content オブジェクトに集約されます。

README.md からの重要な注意点:この自動ラッピングは FunctionCall および FunctionResponse パートには適用されません。これらについては、モデルによって話されたパートとユーザーによって話されたパートを明示的に定義するために、完全な Content[] 構造を提供する必要があります。

応答性のためのストリーミング

チャットボットなど、即時のフィードバックが必要なアプリケーションの場合、generateContentStream メソッドは非常に貴重です。モデルによって生成されると同時にレスポンスのチャンクを生成し、コンテンツを段階的に表示できます。

async function streamMyContent() {
  const responseStream = await ai.models.generateContentStream({
    model: 'gemini-2.0-flash-001',
    contents: 'フレンドリーなロボットについての短い物語を書いてください。',
  });

  let accumulatedText = "";
  for await (const chunk of responseStream) {
    if (chunk.text) { // チャンクにテキストが存在するか確認
      accumulatedText += chunk.text;
      console.log('受信チャンク:', chunk.text);
    }
  }
  console.log('完全なレスポンス:', accumulatedText);
}

generate_content_streaming.ts および chat_afc_streaming.ts サンプルは実用的な例を提供します。

関数呼び出し

関数呼び出しにより、Gemini モデルは外部システムや API と対話できます。モデルが呼び出すことができる関数(ツール)を定義すると、モデルは情報を取得したりアクションを実行したりするために、特定の引数でこれらの関数の実行を要求できます。このプロセスには、主に 4 つのステップが含まれます。

  1. 関数の宣言: FunctionDeclaration オブジェクトを使用して、関数の名前、説明、およびパラメータを定義します。パラメータタイプを指定するために Type enum(例:Type.OBJECTType.STRINGType.NUMBER)が使用されます。
  2. 関数呼び出しを有効にして generateContent を呼び出す: tools 配列に関数宣言を提供し、toolConfig を構成します(例:functionCallingConfig: { mode: FunctionCallingConfigMode.ANY })。
  3. FunctionCall の処理: モデルのレスポンスには FunctionCall オブジェクトが含まれる場合があり、これはどの関数をどの引数で呼び出すかを示します。これらのパラメータを使用して実際の関数を実行します。
  4. FunctionResponse の送信: 関数が実行された後、新しい generateContent 呼び出し(多くの場合チャット履歴の一部として)内の FunctionResponse パートとして結果をモデルに送信し、対話を続行します。

generate_content_with_function_calling.ts サンプルは FunctionDeclaration でこれを示しています。chat_afc_streaming.ts サンプルは、宣言と実行ロジックをバンドルする、より高度な CallableTool アプローチを紹介しています。

// chat_afc_streaming.ts からの簡略化された概念的なスニペット
import { GoogleGenAI, FunctionCallingConfigMode, FunctionDeclaration, Type, CallableTool, Part } from '@google/genai';

// ... (ai の初期化) ...

const controlLightFunctionDeclaration: FunctionDeclaration = { /* ... サンプル通り ... */ };

const controlLightCallableTool: CallableTool = {
  tool: async () => Promise.resolve({ functionDeclarations: [controlLightFunctionDeclaration] }),
  callTool: async (functionCalls: any[]) => { // `any` は簡潔さのため、特定の型を使用してください
    console.log('ツール呼び出し引数:', functionCalls[0].args);
    // 実際のツールロジックはここに記述します
    const responsePart: Part = {
      functionResponse: {
        name: 'controlLight',
        response: { brightness: 25, colorTemperature: 'warm' }, // レスポンス例
      },
    };
    return [responsePart];
  },
};

const chat = ai.chats.create({
  model: 'gemini-2.0-flash', // 関数呼び出しをサポートするモデルを確認してください
  config: {
    tools: [controlLightCallableTool],
    toolConfig: { functionCallingConfig: { mode: FunctionCallingConfigMode.AUTO } },
    // ...
  },
});

// ... (sendMessageStream とレスポンス処理) ...

Live API サポート (ai.live)

ai.live モジュールは、高度にインタラクティブなリアルタイムアプリケーションを構築するために設計されています。コンテンツの双方向ストリーミングを可能にし、テキスト、音声、動画の入力をサポートし、テキストまたは音声の出力を生成します。これは、ライブ文字起こし、音声制御アシスタント、またはインタラクティブなマルチモーダルエクスペリエンスなどのアプリケーションに最適です。

Live API を使用するための主なステップ:

  1. 接続: ai.live.connect() を使用してセッションを確立します。モデル名とコールバックのセットを提供します。
  2. コールバック:

    • onopen: 接続が正常に確立されたときにトリガーされます。
    • onmessage: サーバーからメッセージ(LiveServerMessage)を受信したときに呼び出されます。このメッセージには、テキスト、データ(音声など)、またはターンの完了を示すサーバーコンテンツが含まれる場合があります。
    • onerror: セッション中に発生したエラーを処理します。
    • onclose: 接続が閉じられたときに呼び出されます。
  3. 構成: connectconfig パラメータで、期待する出力の種類を示すために responseModalities(例:[Modality.TEXT][Modality.AUDIO])を指定できます。
  4. コンテンツの送信: session.sendClientContent() を使用してモデルにデータを送信します。これは、単純なテキストでも、インラインデータ(例:base64 エンコードされた画像や音声)を含むより複雑な構造でもかまいません。
  5. ターンの処理: 対話は多くの場合ターンベースです。サーバーからのメッセージを処理し、「ターン」がいつ完了したか(message.serverContent.turnComplete によって示される)を判断するためのロジックが必要になります。
  6. セッションのクローズ: session.close() を使用して接続を終了します。

sdk-samples/live_client_content.ts ファイルは明確な例を提供しています。

// live_client_content.ts からのスニペット、簡略化
import { GoogleGenAI, LiveServerMessage, Modality } from '@google/genai';
// ... (ai の初期化と waitMessage, handleTurn などのヘルパー関数) ...

async function live(client: GoogleGenAI, model: string) {
  const responseQueue: LiveServerMessage[] = []; // 受信メッセージを保存するため

  const session = await client.live.connect({
    model: model, // 例:'gemini-2.0-flash-live-001'
    callbacks: {
      onopen: () => console.log('ライブセッションが開かれました。'),
      onmessage: (message: LiveServerMessage) => responseQueue.push(message),
      onerror: (e: any) => console.error('ライブエラー:', e.message || e), // ErrorEvent または類似のもの
      onclose: (e: any) => console.log('ライブセッションが閉じられました:', e.reason || e), // CloseEvent または類似のもの
    },
    config: { responseModalities: [Modality.TEXT] }, // テキストレスポンスを期待
  });

  // 簡単なテキストを送信
  session.sendClientContent({ turns: 'Hello world' });
  await handleTurn(); // サーバーレスポンスを待機して処理するカスタム関数

  // テキストとインライン画像データを送信
  const turnsWithImage = [
    'この画像はただの黒ですが、見えますか?',
    {
      inlineData: {
        data: 'iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAC0lEQVR4nGNgQAYAAA4AAamRc7EAAAAASUVORK5CYII=', // 2x2 の黒い PNG
        mimeType: 'image/png',
      },
    },
  ];
  session.sendClientContent({ turns: turnsWithImage });
  await handleTurn();

  session.close();
}

その他の関連サンプルには、live_client_content_with_url_context.ts(URL コンテキストのデモンストレーション)、live_music.ts(音楽関連の対話、音声機能を示唆)、および live_server.ts があり、これらは sdk-samples/index.html とともに、音声入力および出力ストリームの処理を含むライブ対話のためのバックエンドの設定を示しています。sdk-samples/index.html ファイルには、特にマイク音声をキャプチャし、Socket.IO を介してサーバーに送信し、サーバーから受信した音声を再生するためのクライアントサイド JavaScript が含まれており、リアルタイムの音声入出力を効果的に示しています。

MCP (Multi-modal Coherent Prompting) サポート

Multi-modal Coherent Prompting (MCP) は、Gemini モデルが複数の外部ツールやサービスと連携して対話することを可能にします。これは、多様な機能を活用できる複雑なエージェントを構築するための強力な機能です。SDK は、MCP クライアントを Gemini モデルのツールとして統合するための mcpToTool ユーティリティを提供します。

sdk-samples/mcp_client.ts サンプルは、2 つのモック MCP サーバー(1 つは色付きメッセージを「印刷」するためのもの、もう 1 つは「ビープ音」を鳴らすためのもの)を設定することでこれを示しています。これらはその後、generateContent にツールとして提供されます。

コアコンセプト:

  1. MCP サーバー: McpServer インスタンスを作成します(@modelcontextprotocol/sdk/server/mcp.js から)。
  2. サーバー上のツールの定義: server.tool() を使用して、MCP サーバーが公開する関数(例:print_messagebeep)を定義します。これには、期待される入力パラメータの指定(サンプルではスキーマ検証に Zod を使用)と実行するロジックが含まれます。
  3. サーバーの接続: サーバーはトランスポートメカニズム(例:ローカルテスト用の InMemoryTransport)を介して接続します。
  4. MCP クライアント: McpClient@modelcontextprotocol/sdk/client/index.js から)が作成され、サーバーのトランスポートに接続されます。
  5. mcpToTool @google/genaimcpToTool 関数は、MCP クライアントを ai.models.generateContent()tools 配列に渡すことができる形式に変換します。
  6. モデルとの対話: Gemini モデルは、レスポンス生成の一部としてこれらの MCP ツールを呼び出すことを選択できます。これは標準の関数呼び出しと同様です。
// mcp_client.ts からの概念的なフロー
import { GoogleGenAI, mcpToTool, FunctionCallingConfigMode } from '@google/genai';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
// ... (ai の初期化、spinUpPrintingServer、spinUpBeepingServer はサンプル通り) ...

async function mcpSample(ai: GoogleGenAI) {
  const printingClient: Client = await spinUpPrintingServer();
  const beepingClient: Client = await spinUpBeepingServer();

  const response = await ai.models.generateContent({
    model: 'gemini-2.5-flash-preview-04-17', // MCP/高度なツール使用をサポートするモデル
    contents: 'プリンターを使用して緑色で "Hello MCP" と印刷し、その後ビープ音を鳴らしてください。',
    config: {
      tools: [mcpToTool(printingClient, beepingClient)], // MCP クライアントをツールとして提供
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.AUTO, // または .ANY
        },
      },
    },
  });
  // モデルはその後、MCP ツールをターゲットとする FunctionCall パートを発行します。
  // SDK と MCP クライアント/サーバーのセットアップが通信を処理します。
  // MCP における 'callTool' に相当するものは、サーバーの登録済みツールハンドラによって処理されます。
}

mcp_client_stream.ts サンプルは、ストリーミングを MCP 対話で使用する方法を示すことでこれを拡張しています。

TTS (Text-to-Speech) モデル

提供されているサンプルには、generateImages のような ai.models サブモジュールにスタンドアロンの「Text-to-Speech」または generateSpeech メソッドは明示的に含まれていませんが、SDK の機能は主に ai.live モジュールを介して TTS 機能を強力にサポートしています。

live_client_content.ts および sdk-samples/index.htmllive_server.ts を使用)のセットアップで見られるように、Live API は音声出力を生成するように構成できます(responseModalities: [Modality.AUDIO])。このようなセッションでモデルによってテキストが処理されると、結果として得られる音声出力は実質的に TTS になります。

sdk-samples/index.html のクライアントサイドコードには、サーバーから(その例では Socket.IO を介して)base64 エンコードされた音声データを受信し、それをデコードしてブラウザの AudioContext を使用して再生するロジックが含まれています。これは、ライブでインタラクティブなコンテキストでテキスト入力から音声を生成するためのエンドツーエンドのパイプラインを示しています。

// sdk-samples/index.html からの概念的なクライアントサイド音声再生
// socket.on('audioStream', async function (base64AudioMsg) {
//   const float32AudioData = base64ToFloat32AudioData(base64AudioMsg); // デコード関数
//   const audioCtx = new AudioContext();
//   const audioBuffer = audioCtx.createBuffer(1, float32AudioData.length, 24000); // サンプルレート
//   audioBuffer.copyToChannel(float32AudioData, 0);
//   const source = audioCtx.createBufferSource();
//   source.buffer = audioBuffer;
//   source.connect(audioCtx.destination);
//   source.start(0);
//   // ... キューイングロジック ...
// });

したがって、直接的な ai.models.textToSpeech() メソッドを呼び出すわけではありませんが、次の方法で TTS を実現します。

  1. responseModalitiesModality.AUDIO を含めて ai.live.connect() を使用します。
  2. session.sendClientContent() を介してテキストコンテンツを送信します。
  3. 音声が生成された場合、音声データ(おそらく message.data または類似のフィールドに、base64 エンコードされている可能性あり)を含む LiveServerMessage を処理します。
  4. この音声データをクライアントサイドでデコードして再生します。

画像・動画生成モデル

SDK は、ビジュアルコンテンツを生成および操作するための専用メソッドを提供します。

画像生成 (ai.models.generateImages)

ai.models.generateImages() メソッドを使用すると、テキストプロンプトから画像を生成できます。

  • モデル: 画像生成モデルを指定します(例:generate_image.ts で使用されている imagen-3.0-generate-002)。
  • プロンプト: 生成したい画像のテキスト説明を提供します。
  • 設定 (config):

    • numberOfImages: 特定の数の画像バリエーションを要求します。
    • includeRaiReason: コンテンツ生成が影響を受ける場合に、Responsible AI に関連する理由をオプションで含めます。
    • aspectRatiomodenegativePromptseed などの他のパラメータを使用して、より詳細な制御を行うことができます(基本的な generate_image.ts ではすべてが明示的に示されているわけではありませんが、これらの存在は画像生成 API では一般的です)。

レスポンスには生成された画像が含まれ、通常はバイトデータ(response.generatedImages[0].image.imageBytes)として返され、これを保存または表示できます。

// generate_image.ts からのスニペット
import { GoogleGenAI } from '@google/genai';
// ... (ai の初期化) ...

async function generateMyImage() {
  const response = await ai.models.generateImages({
    model: 'imagen-3.0-generate-002',
    prompt: '夕焼け空に飛行車が飛び交う未来都市の風景。',
    config: {
      numberOfImages: 1,
      includeRaiReason: true,
    },
  });

  if (response?.generatedImages?.[0]?.image?.imageBytes) {
    const imageBytes = response.generatedImages[0].image.imageBytes;
    // imageBytes を処理します(例:ファイルに保存、ブラウザに表示)
    console.log('画像生成完了(バイト長):', imageBytes.length);
  }
}

sdk-samples ディレクトリには、より高度な画像編集タスクのためのスクリプトも含まれています。

  • edit_image_control_reference.ts: 編集をガイドするために参照画像を使用する可能性があります。
  • edit_image_mask_reference.ts: マスクと参照に基づいてインペインティングまたはアウトペインティングを示唆します。
  • edit_image_style_transfer.ts: ある画像のスタイルを別の画像に転送します。
  • edit_image_subject_reference.ts: 参照によって定義された被写体に焦点を当てて画像を編集します。
  • upscale_image.ts: 生成された画像または既存の画像の解像度を上げるため。

これらは通常、入力画像、目的の変更を説明するプロンプト、および場合によってはマスクまたは参照画像の提供を伴います。

動画生成 (ai.models.generateVideos)

動画コンテンツの生成は非同期操作です。

  1. 生成の開始: ai.models.generateVideos() を呼び出し、以下を提供します。

    • model: 動画生成モデル(例:generate_video.tsveo-2.0-generate-001)。
    • prompt: 動画のテキスト説明。
    • config (オプション): numberOfVideos などのパラメータ。
      この呼び出しは Operation オブジェクトを返します。
  2. 完了のポーリング: 動画生成には時間がかかります。ai.operations.getVideosOperation({operation: operation}) を使用して、操作のステータスを定期的に確認する必要があります。operation.done が true になるまでループは続行されます。
  3. 動画の取得: done になると、operation.response.generatedVideos 配列に生成された動画ファイルへの参照が含まれます。
  4. 動画のダウンロード: ai.files.download({ file: videoReference, downloadPath: 'myvideo.mp4' }) を使用して動画ファイルを保存します。
// generate_video.ts からのスニペット、簡略化
import { GoogleGenAI } from '@google/genai';
// ... (ai の初期化と遅延関数) ...

async function generateMyVideo() {
  let operation = await ai.models.generateVideos({
    model: 'veo-2.0-generate-001',
    prompt: '花が咲くタイムラプス。',
    config: { numberOfVideos: 1 },
  });

  console.log('動画生成開始。オペレーション ID:', operation.name);

  while (!operation.done) {
    console.log('動画生成完了を待機中...');
    await delay(5000); // 再度確認する前に 5 秒待機
    operation = await ai.operations.getVideosOperation({ operation: operation });
  }

  console.log('動画生成完了。');
  const videos = operation.response?.generatedVideos;
  if (videos && videos.length > 0) {
    videos.forEach((video, i) => {
      console.log(`動画 ${i} をダウンロード中...`);
      // ここでの 'video' オブジェクトは、名前、URI などを持つ File オブジェクトです。
      ai.files.download({
        file: video, // File オブジェクトを直接渡す
        downloadPath: `generated_video_${i}.mp4`,
      }).then(() => {
        console.log(`動画 video${i}.mp4 がダウンロードされました。`);
      }).catch(e => console.error('ダウンロードエラー', e));
    });
  } else {
    console.log('動画は生成されませんでした。');
  }
}

Gemini API と Vertex AI のサポート:統一されたエクスペリエンス

Google Gen AI SDK の大きな強みは、Gemini API(通常は Google AI Studio の API キー経由でアクセス)と Vertex AI(Google Cloud の統合 MLOps プラットフォーム)の両方を一貫してサポートしている点です。

  • デュアル初期化: 「初期化」セクションで示したように、GoogleGenAI オブジェクトをいずれかのサービスをターゲットにするように構成できます。
  • 一貫した API サーフェス: ほとんどの場合、メソッドとそのシグネチャ(generateContentgenerateImages など)は、使用しているバックエンドサービスに関係なく同じままです。これにより、コードの移行が容易になり、それらを切り替える必要がある場合に抽象化レイヤーを提供できます。
  • サンプルコードの構造: sdk-samples ディレクトリのほとんどのファイル(例:generate_image.tschats.tslive_client_content.ts)には、通常 GOOGLE_GENAI_USE_VERTEXAI のような環境変数に基づいて、Gemini API(コメント/変数ではしばしば “MLDev” または “GoogleAI” と呼ばれる)または Vertex AI のいずれかのために SDK を条件付きで初期化するロジックが含まれています。

README.md はその違いを明確にしています。

Vertex AI プラットフォームまたは Gemini Developer プラットフォームのいずれかでホストされているモデルは、この SDK を介してアクセスできます。

この統一されたアプローチにより開発が簡素化され、SDK が選択したバックエンドとの通信のニュアンスを処理する間、アプリケーションロジックに集中できます。

高度なトピックとその他の機能

コア機能以外にも、SDK はサンプル全体で示されているいくつかのその他の機能を提供します。

  • ファイルのアップロードと管理 (ai.files):

    • ai.files.upload(): プロンプトで使用するファイル(テキスト、画像など)をアップロードします。generate_content_with_file_upload.ts サンプルは Blob のアップロードを示しています。
    • config: アップロードされたファイルの displayName を指定します。
    • アップロードは、nameurimimeType、および state を持つ File オブジェクトを返します。
    • ai.files.get(): ファイルのメタデータを取得し、処理ステータス(例:PROCESSINGACTIVEFAILED)を確認します。ポーリングが必要な場合があります。
    • createPartFromUri(): ファイル URI と MIME タイプから Part オブジェクトを簡単に作成し、contents に含めるためのユーティリティ。
  • セマンティックキャッシング (ai.caches):

    • caches.ts サンプルは、ai.caches.create() を使用したキャッシュの作成を示しています。
    • その後、リクエストにキャッシュ名/オブジェクトを提供することで、generateContent でこのキャッシュを使用できます。これは、共通のプロンプトプレフィックスの埋め込みを再利用するのに役立ち、コストを節約し、潜在的にレイテンシを改善します。
  • モデル情報:

    • ai.models.get({ model: 'model-name' }): 特定のモデルに関する詳細情報を取得します。(get_model_info.ts で見られるように)
    • ai.models.list(): 利用可能なモデルをリストします。(list_models.ts で見られるように)
  • コンテンツ生成のための構成オプション:
    さまざまな generate_content_with_...ts サンプルは、多数の構成オプションを紹介しています。

    • generate_content_with_safety_settings.ts: 有害な可能性のあるコンテンツをモデルがどのように処理するかを制御するための安全設定の構成を示しています。
    • generate_content_with_system_instructions.ts: 会話全体でモデルの動作をガイドするためのシステムレベルの指示を提供する方法を示しています。
    • generate_content_with_response_schema.ts: モデルの出力のための JSON スキーマを指定でき、構造化されたレスポンスを保証します。..._accept_json_schema.ts バリアントはこれを強調しています。
    • generate_content_with_latlong.ts: 位置データを取り込む機能を示しています。
    • generate_content_with_log_prob.ts: トークンの対数確率にアクセスするため。
    • generate_content_with_model_configuration.ts: 一般的なモデル構成パラメータ。
    • generate_content_with_search_grounding.ts: モデルのレスポンスを検索結果でグラウンディングします。
    • generate_content_with_url_context.ts: 生成タスクのための URL コンテキストの提供。
  • アボートシグナル: abort_signal.ts サンプルは、進行中の API リクエストをキャンセルするために AbortController を使用する方法を示しており、これは長時間実行される操作やユーザーが開始したキャンセルを管理するために不可欠です。
  • API バージョニング詳細: api_version.ts は、API バージョン選択に関連するより詳細な例またはテストを提供する可能性があります。
  • チューニング: tunings.ts は、モデルのファインチューニングまたはチューニング済みモデルの管理に関連する機能を示唆していますが、詳細はサンプルのコードにあります。

まとめ

Google Gen AI SDK for TypeScript and JavaScript は、Gemini ファミリーのモデルの高度な機能への強力で柔軟な橋渡しを提供します。Gemini API と Vertex AI の両方をサポートし、ストリーミング、関数呼び出し、ライブマルチモーダルインタラクション、画像/動画生成、包括的なコンテンツ生成制御などの豊富な機能セットと組み合わせることで、次世代の AI アプリケーションを構築しようとしている開発者にとって優れた選択肢となります。

詳細な README.mddocs フォルダ内の構造化されたドキュメント、特に sdk-samples ディレクトリ内の豊富な実用的な例を探求することで、開発者は迅速に習熟し、イノベーションを開始できます。特にブラウザベースのアプリケーションでは、本番環境へのデプロイメントのためにサーバーサイドの実装を優先するか、堅牢なクライアントサイドのセキュリティ対策を講じることにより、常に API キーのセキュリティを優先することを忘れないでください。SDK は Gemini の機能とともに進化するように設計されているため、更新や新しいサンプルに注目することで、生成 AI の最新の進歩を活用していることを保証できます。





Source link

Views: 0

「FGO×ラムセス大王展」限定グッズ登場!

🔸 ざっくり内容:
この記事は、人気キャラクターオジマンディアス、ニトクリス、クレオパトラが描き下ろしのミニキャラとして登場するイベントについて紹介しています。特に、これらのキャラクターがファンに親しまれていることを背景に、彼らの魅力を新たな形で楽しめる機会が提供される点が強調されています。

イベントは6月14日から開始され、会場ではチケットを使ってアクリルキーホルダーやクリアファイルなどのグッズが販売される予定です。これにより、ファンはお気に入りのキャラクターを身近に感じるアイテムを手に入れることができます。

重要な視点として、イベントはただのグッズ販売にとどまらず、キャラクターのファン同士が集い、コミュニケーションを楽しむ場でもある点が挙げられます。これにより、キャラクターへの愛情がさらに深まることが期待されています。

🧠 編集部の見解:
オジマンディアスやニトクリス、クレオパトラなどのキャラクターが描き下ろされて登場するというのは、ファンとしてはたまらないニュースですね!これらのキャラクターは、歴史や神話の背景を持つ魅力的な存在であるため、作品への没入感も増します。

また、ミニキャラのデザインは、普段の彼らの威厳を保ちながらも可愛らしさがあり、ファンアートやコスプレにも広がりそう。特に、グッズ販売が6月14日から開始されるというのは、イベントに参加しない人たちにも手に入るチャンスを提供していくれるので楽しみです。

これは、キャラクター商品を通じて新たなファン層を開拓し、コンテンツ産業の新たな波を生む可能性も秘めていますよね。さらに、こうしたミニキャラの展開は、若いクリエイターたちにも刺激を与える要素となるでしょう。デジタル時代の今、ビジュアル表現が増えることで、より多くの人々が歴史や文学に興味を持つきっかけになるのではないかと期待しています。

ところで、オジマンディアスは「王の王」というタイトルを持つエジプトのファラオですが、彼にまつわる有名な詩があるのをご存じですか?シェリーの詩『オジマンディアス』では、栄光を誇った王の像が風化してしまった様子が描かれており、人間の偉業が無常であることを示唆しています。このように、キャラクターたちの魅力だけでなく、彼らの背後にあるストーリーや歴史を知ることで、より深い理解を得ることができそうですね。

グッズは需給が高まっている今、彼らのもつ歴史的背景や物語を楽しみつつ、ファン同士で盛り上がれるアイテムでもあると思います。これからの展開が非常に楽しみです!

  • キーワード: グッズ販売

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

Views: 0

本線上をUターンして逆走か 新名神逆走事故 逮捕の男(2025年5月21日)

0

三重県の新名神高速で発生した逆走車による事故で逮捕された男が、高速道路の本線上をUターンして逆走を始めたとみられる …

Views: 0