<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devkuma – AI</title>
    <link>https://www.devkuma.com/jp/tags/ai/</link>
    <image>
      <url>https://www.devkuma.com/jp/tags/ai/logo/180x180.jpg</url>
      <title>AI</title>
      <link>https://www.devkuma.com/jp/tags/ai/</link>
    </image>
    <description>Recent content in AI on devkuma</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>jp</language>
    <managingEditor>kc@example.com (kc kim)</managingEditor>
    <webMaster>kc@example.com (kc kim)</webMaster>
    <copyright>The devkuma</copyright>
    
	  <atom:link href="https://www.devkuma.com/jp/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>OpenAIのChatGPT説明</title>
      <link>https://www.devkuma.com/jp/docs/open-ai/chat-gpt/</link>
      <pubDate>Sun, 26 Apr 2026 15:49:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/open-ai/chat-gpt/</guid>
      <description>
        
        
        &lt;h2 id=&#34;chatgptとは何か&#34;&gt;ChatGPTとは何か？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;はOpenAIが開発した対話型人工知能システムであり、人間の言語を理解し、それに対する応答を自然に生成することを目的としている。従来の単純な検索ベースサービスとは異なり、ユーザーの質問意図を把握し、文脈を反映してより精密な回答を提供する点に特徴がある。&lt;/p&gt;
&lt;h2 id=&#34;chatgptの概念と登場背景&#34;&gt;ChatGPTの概念と登場背景&lt;/h2&gt;
&lt;p&gt;人工知能技術は長い時間をかけて発展してきたが、特に自然言語処理（NLP, Natural Language Processing）分野は近年急速に成長した。この流れの中で登場したChatGPTは、大規模言語モデル（LLM, Large Language Model）を基盤として、人間に近い水準の会話を実現することに重点を置いている。&lt;/p&gt;
&lt;p&gt;従来の検索エンジンがキーワード中心に情報を並べる方式だったのに対し、ChatGPTは質問の文脈を理解し、一つの完成された回答を生成する方式で動作する。つまり、単に情報を「探す」ことを超え、情報を「理解して再構成する」技術に近いといえる。&lt;/p&gt;
&lt;h2 id=&#34;chatgptの動作原理&#34;&gt;ChatGPTの動作原理&lt;/h2&gt;
&lt;p&gt;ChatGPTの核心は、膨大なテキストデータを学習した人工知能モデルにある。このモデルは文中の単語の関係と流れを学習し、特定の文が与えられたときに次に来る可能性が高い単語や文を予測する方式で動作する。&lt;/p&gt;
&lt;p&gt;たとえば、ユーザーが質問を入力すると、ChatGPTはその文の意味を分析し、それに合った回答を構成するために、多くの可能性の中から最も自然で適切な文を選択して出力する。この過程は非常に短い時間で行われ、ユーザーにはまるで人と会話しているような体験を提供する。&lt;/p&gt;
&lt;h2 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h2&gt;
&lt;h3 id=&#34;自然な会話能力&#34;&gt;自然な会話能力&lt;/h3&gt;
&lt;p&gt;ChatGPTは単なる文生成ではなく、以前の会話の文脈を記憶し、続けて会話できる能力を持つ。これにより、ユーザーは一つのテーマについて連続した質問を投げかけ、段階的に深い回答を得ることができる。&lt;/p&gt;
&lt;h3 id=&#34;多様な活用可能性&#34;&gt;多様な活用可能性&lt;/h3&gt;
&lt;p&gt;このシステムは特定分野に限定されず、非常に幅広い領域で活用できる。代表的には次のような活用が可能である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ブログおよびコンテンツ作成&lt;/li&gt;
&lt;li&gt;プログラミングコード生成およびデバッグ&lt;/li&gt;
&lt;li&gt;文書要約および翻訳&lt;/li&gt;
&lt;li&gt;学習支援および概念説明&lt;/li&gt;
&lt;li&gt;アイデア発想および企画支援&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このようにChatGPTは、個人ユーザーから企業まで多様な環境で生産性を高めるツールとして活用されている。&lt;/p&gt;
&lt;h3 id=&#34;速い応答速度&#34;&gt;速い応答速度&lt;/h3&gt;
&lt;p&gt;複雑な質問に対しても短時間で回答を生成できるため、リアルタイムコミュニケーションツールとしての価値も高い。&lt;/p&gt;
&lt;h2 id=&#34;chatgptの利点&#34;&gt;ChatGPTの利点&lt;/h2&gt;
&lt;p&gt;ChatGPTの最大の利点は、&lt;strong&gt;情報を単に提供するだけでなく、理解しやすい形に再構成してくれる点&lt;/strong&gt;である。これは特に専門知識が必要な分野でも大きな助けになる。&lt;/p&gt;
&lt;p&gt;また、反復作業を自動化したり、アイデアが必要な場面で初稿を素早く生成したりできるため、業務効率を大きく向上させる。開発者、作家、マーケター、学生など多様なユーザーが積極的に活用する理由もここにある。&lt;/p&gt;
&lt;h2 id=&#34;限界と注意事項&#34;&gt;限界と注意事項&lt;/h2&gt;
&lt;p&gt;しかし、ChatGPTは完全なシステムではない。いくつかの限界も存在する。&lt;/p&gt;
&lt;p&gt;第一に、すべての回答が常に正確であるとは保証できない。モデルは確率的に文を生成するため、実際の事実と異なる内容を含む可能性がある。
第二に、最新情報の反映が制限される場合がある。
第三に、法律、医療、金融など専門的判断が必要な領域では参考資料として活用し、必ず追加検証が必要である。&lt;/p&gt;
&lt;p&gt;したがって、ChatGPTを使うときは結果を批判的に検討し、重要な情報は別の信頼できる資料で確認する姿勢が必要である。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;
&lt;p&gt;ChatGPTは単純なチャットボットを超え、人間の言語を理解し、それを基に新しい情報を生成する次世代人工知能ツールといえる。特に対話型インターフェースを通じて誰でも簡単にアクセスできる点で、今後の情報活用方式に大きな変化をもたらすと期待される。&lt;/p&gt;
&lt;p&gt;今後、人工知能技術がさらに発展するにつれて、ChatGPTのようなシステムは日常生活はもちろん、多様な産業分野で中核的な役割を果たすだろう。この流れの中で、ユーザー自身もツールを正しく理解し活用する能力を備えることが重要である。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
    </item>
    
    <item>
      <title>OpenAI</title>
      <link>https://www.devkuma.com/jp/docs/ai/open-api/</link>
      <pubDate>Sun, 26 Apr 2026 15:45:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/open-api/</guid>
      <description>
        
        
        &lt;p&gt;OpenAIについての説明&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Claude説明</title>
      <link>https://www.devkuma.com/jp/docs/ai/claude/overview/</link>
      <pubDate>Fri, 07 Nov 2025 11:51:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/claude/overview/</guid>
      <description>
        
        
        &lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude&lt;/strong&gt;は人工知能（AI）言語モデル（LLM）系列で、米国のAI研究企業&lt;strong&gt;Anthropic&lt;/strong&gt;が開発した。&lt;/li&gt;
&lt;li&gt;2023年3月に初めて公開され、その後Claude 2、Claude 3、Claude 4など複数のバージョンへ進化してきた。&lt;/li&gt;
&lt;li&gt;開発目標の一つが&lt;strong&gt;安全性（Safety）&lt;strong&gt;と&lt;/strong&gt;責任あるAI利用&lt;/strong&gt;であり、そのために「憲法的AI（Constitutional AI）」アプローチを採用した。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude&lt;/strong&gt;という名前は、フランスの数学者であり情報理論の先駆者である&lt;strong&gt;Claude Shannon&lt;/strong&gt;に由来する。&lt;/li&gt;
&lt;li&gt;ChatGPTのように、テキストベースで会話、要約、翻訳、コード作成、文書分析などを行う&lt;strong&gt;対話型AIモデル&lt;/strong&gt;である。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;バージョンと進化&#34;&gt;バージョンと進化&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;バージョン名&lt;/th&gt;
          &lt;th&gt;リリース時期&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude 1（初期）&lt;/td&gt;
          &lt;td&gt;2023年初め&lt;/td&gt;
          &lt;td&gt;基本形態をリリース。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude 2&lt;/td&gt;
          &lt;td&gt;2023年7月&lt;/td&gt;
          &lt;td&gt;性能・応答長が増加。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude 3系列（Opus, Sonnet, Haiku）&lt;/td&gt;
          &lt;td&gt;2024年&lt;/td&gt;
          &lt;td&gt;性能/速度別モデルラインアップが存在。用途別に多様化。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude 4系列（例: Opus 4, Sonnet 4.5）&lt;/td&gt;
          &lt;td&gt;2025年&lt;/td&gt;
          &lt;td&gt;コード生成など高度な作業に強い。&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;特徴と利点&#34;&gt;特徴と利点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;自然言語対話、コード生成、データ分析、画像入力処理など、多様な作業が可能なように設計されている。&lt;/li&gt;
&lt;li&gt;最近のバージョンでは**コンテキストウィンドウ（context window）**が非常に大きくなり、長い文脈の処理や複雑な問題解決にも強くなった。たとえばClaude Sonnet 4.5バージョンは入力/出力トークン単価やコンテキストウィンドウなどが改善された。&lt;/li&gt;
&lt;li&gt;開発者および企業顧客向けAPI、エージェント（agent）活用、ツール（tool）使用連携など、実務活用も考慮されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安全性と透明性を重視&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザーに有害な回答を避け、説明可能な（reasonable）回答を提供することに重点を置く。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;長い文脈処理&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude 3シリーズは**最大200,000トークン（約150-200ページ分量）**まで理解可能で、長文書分析に強い。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;直感的な対話&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザーの意図やニュアンスを自然に把握する言語能力が優れている。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;企業向けAPI提供&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slack、Notion、Zapierなどとの統合機能を通じて業務自動化および文書処理を支援。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;chatgptとの違い&#34;&gt;ChatGPTとの違い&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;区分&lt;/th&gt;
          &lt;th&gt;ChatGPT (OpenAI)&lt;/th&gt;
          &lt;th&gt;Claude (Anthropic)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;開発会社&lt;/td&gt;
          &lt;td&gt;OpenAI&lt;/td&gt;
          &lt;td&gt;Anthropic&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;代表モデル&lt;/td&gt;
          &lt;td&gt;GPT-4, GPT-5&lt;/td&gt;
          &lt;td&gt;Claude 3シリーズ&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;哲学&lt;/td&gt;
          &lt;td&gt;効率性と正確性中心&lt;/td&gt;
          &lt;td&gt;安全性と人間中心設計&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;強み&lt;/td&gt;
          &lt;td&gt;コード作成、多様な統合機能&lt;/td&gt;
          &lt;td&gt;文書理解力、倫理的制御&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;文脈長&lt;/td&gt;
          &lt;td&gt;約128kトークン（GPT-4 Turbo）&lt;/td&gt;
          &lt;td&gt;約200kトークン（Claude 3）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;活用事例&#34;&gt;活用事例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;企業ではコーディング自動化、文書要約、データ分析、チャットボット対応などに使用している。たとえばコードリファクタリング、バグ修正などでも言及される。&lt;/li&gt;
&lt;li&gt;一般ユーザーもWeb/モバイルチャットインターフェースで自然な会話を行える。&lt;/li&gt;
&lt;li&gt;韓国市場進出を準備中であり、国内企業および政策機関との協力も進行中である。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;限界と留意事項&#34;&gt;限界と留意事項&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;まだ「完全な人工知能」（AGI）や自意識を持つシステムではなく、エラーまたは虚偽情報（「幻覚（Hallucination）」）の可能性が存在する。たとえばモデルが誤った法的引用を生成した事例が報道されたことがある。&lt;/li&gt;
&lt;li&gt;企業・団体利用時にはライセンス、データセキュリティ、規制遵守などが重要である。&lt;/li&gt;
&lt;li&gt;安全性・倫理性への配慮が企業や開発者に求められており、特定国家の企業に対するアクセス制限なども議論されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;韓国ユーザーが注意すべき点&#34;&gt;韓国ユーザーが注意すべき点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;韓国語入力/出力も可能だが、英語などの母語圏に比べて応答品質がやや劣る場合があるため、重要な業務では確認が必要である。&lt;/li&gt;
&lt;li&gt;韓国市場進出予定ではあるが、現時点では国内特化版やローカライズが完全ではない可能性がある。&lt;/li&gt;
&lt;li&gt;使用目的に応じて無料または有料プランに分かれる場合があり、APIなどは費用が発生する可能性がある。&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>AIモデルにGPUを使用する理由</title>
      <link>https://www.devkuma.com/jp/docs/ai/gpu/</link>
      <pubDate>Sat, 30 Aug 2025 17:35:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/gpu/</guid>
      <description>
        
        
        &lt;p&gt;AI、特にディープラーニングモデルは、膨大なデータを学習し推論するために&lt;strong&gt;莫大な量の演算&lt;/strong&gt;を行う必要がある。このときCPUだけでは速度が遅すぎて非効率なため、&lt;strong&gt;大規模な並列演算に特化したGPU&lt;/strong&gt;が必須で使われる。&lt;/p&gt;
&lt;h2 id=&#34;gpuとは何か&#34;&gt;GPUとは何か？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPU（Graphics Processing Unit）&lt;strong&gt;は、もともと&lt;/strong&gt;グラフィック演算&lt;/strong&gt;、たとえばピクセルレンダリングや3Dグラフィック処理を高速に行うために作られた装置である。&lt;/li&gt;
&lt;li&gt;ゲームや映像でグラフィックが途切れず滑らかに表現されるのも、GPUの高速な並列演算のおかげである。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cpu-vs-gpu構造比較&#34;&gt;CPU vs GPU構造比較&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;区分&lt;/th&gt;
          &lt;th&gt;CPU&lt;/th&gt;
          &lt;th&gt;GPU&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;コア数&lt;/td&gt;
          &lt;td&gt;数個（4-32個）の高性能コア&lt;/td&gt;
          &lt;td&gt;数千から数万個の小型コア&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;処理方式&lt;/td&gt;
          &lt;td&gt;直列処理（Sequential）&lt;/td&gt;
          &lt;td&gt;並列処理（Parallel）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;強み&lt;/td&gt;
          &lt;td&gt;一般的なロジック処理、複雑な分岐処理&lt;/td&gt;
          &lt;td&gt;大量の単純反復演算、行列/ベクトル演算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI適合性&lt;/td&gt;
          &lt;td&gt;低い&lt;/td&gt;
          &lt;td&gt;非常に高い&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ディープラーニング学習に必要な&lt;strong&gt;行列乗算、ベクトル演算&lt;/strong&gt;が、GPUの並列処理方式とぴったり合う。&lt;/p&gt;
&lt;h2 id=&#34;gpuがaiに必須な理由&#34;&gt;GPUがAIに必須な理由&lt;/h2&gt;
&lt;h3 id=&#34;並列演算能力&#34;&gt;並列演算能力&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ディープラーニングモデルは、多数のパラメーターとニューロン間の接続を同時に計算する必要がある。&lt;/li&gt;
&lt;li&gt;GPUはこれを一度に並列処理し、速度を飛躍的に向上させる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;行列ベクトル演算の最適化&#34;&gt;行列/ベクトル演算の最適化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ニューラルネットワーク（Neural Network）は、多数の&lt;strong&gt;行列（Matrix）&lt;/strong&gt;、**ベクトル（Vector）**乗算で構成される。&lt;/li&gt;
&lt;li&gt;例: &lt;code&gt;y = Wx + b&lt;/code&gt;（重み行列 x 入力ベクトル + バイアス）&lt;/li&gt;
&lt;li&gt;GPUは本来**グラフィック処理（ピクセル計算、3Dレンダリング）**のために行列演算が最適化されているため、AI演算と相性がよい。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;学習速度の短縮&#34;&gt;学習速度の短縮&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;モデル学習時には&lt;strong&gt;数百万から数十億個のパラメーター&lt;/strong&gt;を更新する必要がある。&lt;/li&gt;
&lt;li&gt;CPUだけを使うと数週間から数か月かかる学習が、GPUを使うと&lt;strong&gt;数時間から数日&lt;/strong&gt;に短縮される。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;大規模データ処理&#34;&gt;大規模データ処理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;AIは画像、音声、テキストなどの&lt;strong&gt;高次元データ&lt;/strong&gt;を扱う。&lt;/li&gt;
&lt;li&gt;GPUは大規模データ（batch）演算を同時に処理できるため、学習・推論速度が速い。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;推論inference性能の強化&#34;&gt;推論（Inference）性能の強化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;学習だけでなく、&lt;strong&gt;リアルタイムサービス&lt;/strong&gt;、たとえばチャットボット応答、画像/音声認識、自動運転センサーデータ分析などでも高速な応答を提供する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;エコシステム支援&#34;&gt;エコシステム支援&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PyTorch、TensorFlow&lt;/strong&gt;のような代表的なディープラーニングフレームワークは、**CUDA（NVIDIAライブラリ）**ベースでGPUに最適化されている。&lt;/li&gt;
&lt;li&gt;GPU使用時には自動で最適化されたカーネルを活用でき、追加の性能向上が可能である。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gpuとaiの関係&#34;&gt;GPUとAIの関係&lt;/h2&gt;
&lt;p&gt;初期のAI研究者は、大量のデータを学習させるときにCPUだけでは限界があることに気づいた。このとき&lt;strong&gt;グラフィック演算用GPUをディープラーニング学習に適用&lt;/strong&gt;したところ、並列演算構造がAIと完全に一致した。
それ以降、&lt;strong&gt;AIとGPUは切り離せない関係&lt;/strong&gt;となり、現在行われているほとんどのAI研究とサービスはGPUベースで実現されている。&lt;/p&gt;
&lt;h2 id=&#34;gpu以外のai専用ハードウェア&#34;&gt;GPU以外のAI専用ハードウェア&lt;/h2&gt;
&lt;p&gt;最近ではGPU以外にも&lt;strong&gt;AI特化チップ&lt;/strong&gt;が開発され活用されている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TPU（Tensor Processing Unit）&lt;/strong&gt;: Googleが開発、テンソル演算に最適化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NPU（Neural Processing Unit）&lt;/strong&gt;: モバイル機器向け、エネルギー効率に最適化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FPGA、ASIC&lt;/strong&gt;: 特定AI演算に特化したカスタムチップ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかし依然として、&lt;strong&gt;汎用性・性能・エコシステムの面でGPUが最も広く使用&lt;/strong&gt;されている。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU = 直列処理が強み（汎用プロセッサ）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU = 並列演算に特化（AI・ディープラーニング最適化）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIモデルにGPUを使用する理由 = 大規模な行列/ベクトル演算を同時に高速処理するため&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Geminiとは？</title>
      <link>https://www.devkuma.com/jp/docs/ai/gemini/</link>
      <pubDate>Sat, 30 Aug 2025 17:05:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/gemini/</guid>
      <description>
        
        
        &lt;h2 id=&#34;google-geminiとは&#34;&gt;Google Geminiとは？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini&lt;/strong&gt;は、Googleが&lt;strong&gt;DeepMind&lt;/strong&gt;と&lt;strong&gt;Brain&lt;/strong&gt;チームの能力を統合して開発したマルチモーダル大規模言語モデル（LLM）である。&lt;/li&gt;
&lt;li&gt;テキストだけでなく、音声、画像、動画など多様な形式の情報を理解し処理できることが特徴である。&lt;/li&gt;
&lt;li&gt;初めて公開されたのは2023年12月で、&lt;strong&gt;Gemini 1.0&lt;/strong&gt;は&lt;strong&gt;Ultra&lt;/strong&gt;、&lt;strong&gt;Pro&lt;/strong&gt;、&lt;strong&gt;Nano&lt;/strong&gt;の三つのバージョンでリリースされた。それぞれ複雑な作業、汎用作業、オンデバイス処理を目的としていた。&lt;/li&gt;
&lt;li&gt;その後急速に発展を重ね、&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt;と&lt;strong&gt;2.5 Pro&lt;/strong&gt;が現在の主要バージョンとして使用されている。Flashは応答速度中心、Proは高度な推論とコード生成機能を提供し、音声出力およびセキュリティ機能も強化された。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gemini.google.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://gemini.google.com/&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/gemini.jpg&#34; alt=&#34;Google Gemini&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;geminiの主な特徴&#34;&gt;Geminiの主な特徴&lt;/h2&gt;
&lt;h3 id=&#34;マルチモーダルmultimodality&#34;&gt;&lt;strong&gt;マルチモーダル（Multimodality）&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;従来のAIモデルが主にテキストに限定されていたのに対し、Geminiはテキスト、画像、音声、動画という多様な形式のデータを同時に理解し、統合的に処理できる。&lt;/li&gt;
&lt;li&gt;たとえば、動画を見ながら内容について質問したり、画像とテキストを一緒に提供して特定の作業を依頼したりできる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;画像編集nano-banana--gemini-25-flash-image&#34;&gt;画像編集（Nano-Banana / Gemini 2.5 Flash Image）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;「&lt;strong&gt;Nano-Banana&lt;/strong&gt;」と呼ばれる&lt;strong&gt;Gemini 2.5 Flash Image&lt;/strong&gt;モデルは、ユーザーが自然言語で画像を修正または合成できるようにし、顔や物体などの特徴を一貫して維持しながら修正する高度な機能を提供する。&lt;/li&gt;
&lt;li&gt;たとえば、複数画像の結合、背景変更、スタイルや衣装の修正などが可能であり、AI生成画像には見えるまたは見えないウォーターマークが含まれているため、生成有無を確認できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;音声およびボイスインタラクション&#34;&gt;音声およびボイスインタラクション&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini Live&lt;/strong&gt;機能は音声を用いたリアルタイム対話型インターフェースであり、特にPixel 9で画面およびカメラ共有とともに使用できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;多様なモデル&#34;&gt;多様なモデル&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Geminiは使用目的に応じて複数のモデルに分かれる。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini Ultra:&lt;/strong&gt; 最も強力で複雑な作業に最適化されたモデル。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini Pro:&lt;/strong&gt; 幅広い作業に使えるバランスの取れた性能のモデル。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gemini Flash:&lt;/strong&gt; コスト効率と速い応答速度が重要な作業に適したモデル。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;優れた性能&#34;&gt;優れた性能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Geminiは複雑な推論、コーディング、数学問題解決など多様なベンチマークで優れた性能を示している。特に、大規模マルチタスク言語理解（MMLU）ベンチマークで人間専門家のスコアを上回る結果を示したこともある。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;日常アシスタント機能の強化&#34;&gt;日常アシスタント機能の強化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini for Home&lt;/strong&gt;はGoogle Assistantを置き換える新しいAIベースの生活支援ツールであり、日常ルーティン管理、より自然な会話、スマートホーム機器制御機能を含む。2025年10月から初期アクセス提供予定である。&lt;/li&gt;
&lt;li&gt;また、&lt;strong&gt;Android Auto&lt;/strong&gt;にもGeminiが統合され、運転中に音声命令でメッセージ送信、メール確認など多様な機能を実行できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;google-workspace統合と多言語対応&#34;&gt;Google Workspace統合と多言語対応&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Geminiは&lt;strong&gt;Gmail&lt;/strong&gt;、&lt;strong&gt;Calendar&lt;/strong&gt;、&lt;strong&gt;Maps&lt;/strong&gt;、&lt;strong&gt;Photos&lt;/strong&gt;、&lt;strong&gt;YouTube&lt;/strong&gt;などを接続し、複数アプリを行き来しながら作業を支援する。スケジュール管理、アラーム設定、通話、発表練習などの機能も提供される。&lt;/li&gt;
&lt;li&gt;現在40以上の言語をサポートし、モバイルアプリ（Android、iOS）とWebを通じて利用できる。また、&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt;と&lt;strong&gt;2.5 Pro&lt;/strong&gt;は課金ベースの有料モデルとしても提供されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;活用分野&#34;&gt;&lt;strong&gt;活用分野&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Geminiは次のような多様な分野で活用できる。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;創造的作業:&lt;/strong&gt; 文章作成、画像生成、アイデアブレインストーミングなど&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学習および研究:&lt;/strong&gt; 複雑なテーマの要約、論文分析、学習計画作成など&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コーディング:&lt;/strong&gt; コード生成、デバッグ、最適化など&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;カスタマーサービス:&lt;/strong&gt; 質問に対する正確で有益な回答提供など&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GeminiはGoogle AI Studio、Vertex AIなど多様なGoogleクラウドサービスと連携して使用でき、GoogleのAIアシスタントであるGeminiにも搭載されている。&lt;/p&gt;
&lt;h2 id=&#34;競争力と比較ポイント&#34;&gt;競争力と比較ポイント&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GoogleはGeminiがOpenAIのGPT-4と同等またはそれ以上のベンチマーク性能を出すと発表したが、実際の使用経験は用途によって異なる可能性がある。&lt;/li&gt;
&lt;li&gt;Geminiは特に&lt;strong&gt;マルチモーダル設計&lt;/strong&gt;、&lt;strong&gt;長いコンテキストウィンドウ&lt;/strong&gt;、&lt;strong&gt;強化された画像および音声処理能力&lt;/strong&gt;で差別化されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;領域&lt;/th&gt;
          &lt;th&gt;特徴要約&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;マルチモーダル処理&lt;/td&gt;
          &lt;td&gt;テキスト、画像、音声、映像、コードをすべて理解/生成可能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;モデル構成&lt;/td&gt;
          &lt;td&gt;Gemini 1.0 (Ultra/Pro/Nano) -&amp;gt; 2.5 Flash / Proなど最新バージョン&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;画像編集&lt;/td&gt;
          &lt;td&gt;Nano-Banana: 自然言語ベースの編集、特徴一貫性維持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;音声インターフェース&lt;/td&gt;
          &lt;td&gt;Gemini Live: 音声ベースのリアルタイム対話&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;日常アシスタント機能&lt;/td&gt;
          &lt;td&gt;Gemini for Home、Android Auto音声対応&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Workspace連携&lt;/td&gt;
          &lt;td&gt;Gmail、Calendarなどと統合、多様なアプリ接続が可能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;競争力&lt;/td&gt;
          &lt;td&gt;GPT-4比でマルチモーダル設計、長いコンテキスト、高いベンチマーク&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;課金モデル&lt;/td&gt;
          &lt;td&gt;無料 + プレミアムプラン（例: Gemini 2.5 Proなど）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;今後の流れ&#34;&gt;今後の流れ&lt;/h2&gt;
&lt;p&gt;Geminiは今後、&lt;strong&gt;スマートホーム&lt;/strong&gt;、&lt;strong&gt;車両&lt;/strong&gt;、&lt;strong&gt;生産性ツール&lt;/strong&gt;、&lt;strong&gt;マルチメディア生成&lt;/strong&gt;など多様な分野に深く統合される予定であり、新しい機能やバージョンが継続的にリリースされている。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>Gemini</category>
      
    </item>
    
    <item>
      <title>人工知能の理解と活用</title>
      <link>https://www.devkuma.com/jp/docs/ai/overview/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/overview/</guid>
      <description>
        
        
        &lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;人工知能（AI: Artificial Intelligence）は、もはや未来の技術ではなく、現在の私たちの生活に深く入り込んでいる中核技術である。ここでは、人工知能の基本概念から最新の応用事例までを体系的に説明し、読者がAIの本質を理解し、実際に活用できるようにすることを目的とする。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Gemini APIを活用したアプリケーション作成</title>
      <link>https://www.devkuma.com/jp/docs/ai/gemini/api/</link>
      <pubDate>Wed, 28 Jan 2026 18:08:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/gemini/api/</guid>
      <description>
        
        
        &lt;h2 id=&#34;gemini-keyの発行&#34;&gt;Gemini Keyの発行&lt;/h2&gt;
&lt;p&gt;Google Gemini APIを使用するには、API Keyを発行する必要がある。&lt;/p&gt;
&lt;h3 id=&#34;1-gemini-developer-apiサイトにアクセス&#34;&gt;1. Gemini Developer APIサイトにアクセス&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://ai.google.dev/&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt; にアクセスし、&lt;strong&gt;Explore models in Google AI Studio&lt;/strong&gt;ボタンをクリックする。&lt;/li&gt;
&lt;li&gt;初回アクセス時は利用規約が表示されるため、内容を確認して「Continue」ボタンをクリックする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/gemini-api-1.png&#34; alt=&#34;Gemini Developer API&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;2-get-api-keyの発行&#34;&gt;2. Get API Keyの発行&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Get API Key&lt;/strong&gt;メニューを選択すると、Keyを発行できる。&lt;/li&gt;
&lt;li&gt;すでに発行済みなら一覧に表示され、発行したことがなければ&lt;strong&gt;APIキーを作成&lt;/strong&gt;ボタンで発行できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/gemini-api-2.png&#34; alt=&#34;Gemini API Key&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;無料枠&#34;&gt;無料枠&lt;/h3&gt;
&lt;p&gt;無料枠はモデルごとに使用量制限がある。
gemini-3-flash基準で、1日の最大リクエスト数（RPD）は最大20回しかない。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/gemini-api-3.png&#34; alt=&#34;Gemini API Key Free&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;ライブラリを活用したクライアント開発&#34;&gt;ライブラリを活用したクライアント開発&lt;/h2&gt;
&lt;p&gt;ここではKotlin言語でGoogle GenAI SDKを活用し、APIを呼び出す方法を見ていく。&lt;/p&gt;
&lt;h3 id=&#34;プロジェクト作成&#34;&gt;プロジェクト作成&lt;/h3&gt;
&lt;p&gt;IDEツールを利用してプロジェクトを作成する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.
├── build.gradle.kts
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
└── src
    ├── main
    │   ├── kotlin
    │   │   └── Main.kt
    │   └── resources
    └── test
        ├── kotlin
        └── resources
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;ライブラリ追加&#34;&gt;ライブラリ追加&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;/build.gradle.kts&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-kotlin&#34; data-lang=&#34;kotlin&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;dependencies&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;implementation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;com.google.genai:google-genai:1.36.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;バージョンはGitHubリポジトリ（&lt;a href=&#34;https://github.com/googleapis/java-genai&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;googleapis/java-genai&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;）を確認し、最新バージョンを入れればよい。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;クライアント開発&#34;&gt;クライアント開発&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;/src/main/kotlin/Main.kt&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-kotlin&#34; data-lang=&#34;kotlin&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;com.devkuma&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;com.google.genai.Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fun&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Client&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apiKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;models&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;generateContent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gemini-3-flash-preview&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;人工知能について一文で説明してください。&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;text&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;人工知能は、人間の学習、推論、知覚能力をコンピューターシステムで実装し、機械が知的な作業を実行できるようにする技術です。
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GEMINI_API_KEY&lt;/strong&gt;には発行したキーを入れる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rest&#34;&gt;REST&lt;/h2&gt;
&lt;p&gt;Gemini APIはREST APIとして呼び出すこともできる。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl &amp;#34;https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent&amp;#34; \
  -H &amp;#34;x-goog-api-key: $GEMINI_API_KEY&amp;#34; \
  -H &amp;#39;Content-Type: application/json&amp;#39; \
  -X POST \
  -d &amp;#39;{
    &amp;#34;contents&amp;#34;: [
      {
        &amp;#34;parts&amp;#34;: [
          {
            &amp;#34;text&amp;#34;: &amp;#34;人工知能について一文で説明してください。&amp;#34;
          }
        ]
      }
    ]
  }&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;candidates&amp;#34;: [
    {
      &amp;#34;content&amp;#34;: {
        &amp;#34;parts&amp;#34;: [
          {
            &amp;#34;text&amp;#34;: &amp;#34;人工知能は、人間の学習、推論、知覚能力をコンピューターシステムで実装し、知的な作業を実行できるようにした技術です。&amp;#34;,
            &amp;#34;thoughtSignature&amp;#34;: &amp;#34;Er8OCrwOAXLI2nzqxL3K8LCAB020BPaY+sv89....&amp;#34;
          }
        ],
        &amp;#34;role&amp;#34;: &amp;#34;model&amp;#34;
      },
      &amp;#34;finishReason&amp;#34;: &amp;#34;STOP&amp;#34;,
      &amp;#34;index&amp;#34;: 0
    }
  ],
  &amp;#34;usageMetadata&amp;#34;: {
    &amp;#34;promptTokenCount&amp;#34;: 13,
    &amp;#34;candidatesTokenCount&amp;#34;: 32,
    &amp;#34;totalTokenCount&amp;#34;: 415,
    &amp;#34;promptTokensDetails&amp;#34;: [
      {
        &amp;#34;modality&amp;#34;: &amp;#34;TEXT&amp;#34;,
        &amp;#34;tokenCount&amp;#34;: 13
      }
    ],
    &amp;#34;thoughtsTokenCount&amp;#34;: 370
  },
  &amp;#34;modelVersion&amp;#34;: &amp;#34;gemini-3-flash-preview&amp;#34;,
  &amp;#34;responseId&amp;#34;: &amp;#34;5rh6afO6NYb22roPsKr06Ao&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;参考文書&#34;&gt;参考文書&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/gemini-api/docs&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gemini API | Google AI for Developers&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記のサンプルコードは&lt;a href=&#34;https://github.com/devkuma/kotlin-tutorial/tree/main/gemini-api-tutorial&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;で確認できる。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>kotlin</category>
      
      <category>Gemini</category>
      
    </item>
    
    <item>
      <title>Google Gemini APIを使用したMCP関数呼び出し</title>
      <link>https://www.devkuma.com/jp/docs/ai/gemini/api-mcp/</link>
      <pubDate>Fri, 30 Jan 2026 16:28:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/gemini/api-mcp/</guid>
      <description>
        
        
        &lt;h2 id=&#34;関数呼び出しの動作方式&#34;&gt;関数呼び出しの動作方式&lt;/h2&gt;
&lt;p&gt;関数呼び出しの動作方式については、&lt;a href=&#34;https://ai.google.dev/gemini-api/docs/function-calling?hl=ko&amp;amp;_gl=1*15vau2u*_up*MQ..*_ga*MTEzMDM3OTczNi4xNzY5NzQ2MDI4*_ga_P1DBVKWT6V*czE3Njk3NDYwMjgkbzEkZzAkdDE3Njk3NDYwMjgkajYwJGwwJGg3MTQyMTk5NzU.&amp;amp;example=meeting#how-it-works&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gemini API公式文書&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;に詳しく説明されている。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/gemini-function-calling-overview.png&#34; alt=&#34;関数呼び出し概要&#34;&gt;&lt;/p&gt;
&lt;p&gt;簡単に説明すると次のとおりである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;関数呼び出し&lt;/strong&gt;は、アプリケーション、LLM、外部関数の間の構造化された協業方式である。&lt;/li&gt;
&lt;li&gt;アプリケーションはまず関数宣言を定義し、関数名、パラメーター、目的をモデルに説明する準備をする。&lt;/li&gt;
&lt;li&gt;ユーザープロンプトと関数宣言を一緒に&lt;strong&gt;LLMへ渡す&lt;/strong&gt;と、モデルは関数呼び出しが必要か判断し、&lt;strong&gt;構造化されたJSON応答&lt;/strong&gt;または通常テキストで応答する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;関数実行はモデルではなくアプリケーションの責任&lt;/strong&gt;であり、モデルは関数名と引数だけを提供する。&lt;/li&gt;
&lt;li&gt;実行結果を再びモデルに送ると、モデルはそれを反映して&lt;strong&gt;ユーザーに分かりやすい最終回答&lt;/strong&gt;を生成する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mcpサーバーの準備&#34;&gt;MCPサーバーの準備&lt;/h2&gt;
&lt;p&gt;MCPサーバーは次の文書で説明した簡単なサーバーを活用する。&lt;br&gt;
&lt;a href=&#34;https://www.devkuma.com/docs/spring-ai/mcp-server-auth/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Spring、Kotlinを活用して作ったWebMVC MCP Serverに認証を追加する&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;クライアント開発&#34;&gt;クライアント開発&lt;/h2&gt;
&lt;p&gt;クライアントは次の文書で作成したアプリケーションを活用する。&lt;br&gt;
&lt;a href=&#34;https://www.devkuma.com/docs/ai/gemini/api/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gemini APIを活用したアプリケーション作成&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-kotlin&#34; data-lang=&#34;kotlin&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;com.devkuma.sample1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;com.google.genai.Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;com.google.genai.types.*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;io.modelcontextprotocol.client.McpClient&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;io.modelcontextprotocol.client.transport.HttpClientStreamableHttpTransport&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;io.modelcontextprotocol.spec.McpSchema.CallToolRequest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;java.net.http.HttpRequest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;java.util.stream.Collectors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fun&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 設定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpServerUrl&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;http://localhost:8080&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpApiKey&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;api01.mycustomapikey&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;geminiApiKey&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;========================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Gemini API + MCP Function Calling Demo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;========================================&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1. MCPクライアント初期化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;request&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;HttpRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newBuilder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;header&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;header&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;X-API-key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpApiKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;transport&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;HttpClientStreamableHttpTransport&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mcpServerUrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;requestBuilder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;request&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;McpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sync&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;transport&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;initialize&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ping&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// MCPサーバーで使用可能なツール一覧を取得する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;toolsList&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;listTools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Available Tools = &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$toolsList&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2. Geminiクライアント初期化および関数設定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionDeclarations&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;toolsList&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stream&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;FunctionDeclaration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// MCP tool name
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;description&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;description&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// MCP tool description
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parametersJsonSchema&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;inputSchema&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Object型で受け取る
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;collect&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Collectors&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toList&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Tool&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Tool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionDeclarations&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionDeclarations&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;GenerateContentConfig&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;listOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Client&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apiKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;geminiApiKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4. ユーザー質問処理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;userMessage&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ソウルの天気を教えて&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;========================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;User: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$userMessage&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;========================================&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 5. 最初のGemini API呼び出し
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;models&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;generateContent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gemini-3-flash-preview&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;userMessage&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;=== First Response ===&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Candidates: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${response.candidates()}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 6. Function Call確認および処理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidatesOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;candidates&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;candidatesOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidates&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidatesOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;candidates&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isNotEmpty&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidate&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidates&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;contentOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;candidate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;contentOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;contentOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;partsOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;partsOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;parts&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;partsOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Parts: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$parts&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Function Callがあるか確認
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCalls&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;parts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;filter&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Part&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionCalls&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isNotEmpty&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;=== Function Calls Detected ===&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 会話履歴を構成（ユーザーメッセージ + モデルのfunction call）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;contents&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mutableListOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// ユーザーメッセージを追加
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;contents&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000&#34;&gt;Content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;listOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Part&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;text&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;userMessage&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;).&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// モデルの応答（function call）を追加
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;contents&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 各Function Callを処理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionResponseParts&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mutableListOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Part&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;part&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCalls&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCallOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;part&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionCallOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCallOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionNameOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionArgsOpt&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionCall&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;args&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionNameOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionArgsOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isPresent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionName&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionNameOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionArgs&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionArgsOpt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Function Call: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$functionName&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Arguments: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$functionArgs&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 3段階: MCPサーバーのツールを呼び出し
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpResult&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;callTool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;CallToolRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionArgs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;MCP Result: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$mcpResult&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// MCP結果からcontentを抽出
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpContent&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpResult&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;resultText&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mcpContent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isNotEmpty&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// MCP Contentを文字列に変換
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// TextContentの場合はtextフィールドを持つ
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mcpContent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                            &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;modelcontextprotocol&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;McpSchema&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TextContent&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;text&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;No result&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Extracted Result: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;$resultText&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Function Response Partを生成
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;functionResponsePart&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Part&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                            &lt;span style=&#34;color:#000&#34;&gt;FunctionResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mapOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;result&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;resultText&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#000&#34;&gt;functionResponseParts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionResponsePart&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 関数応答をuser roleとして追加
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;contents&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000&#34;&gt;Content&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;builder&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;functionResponseParts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4段階: 関数呼び出し結果を含めてGemini APIを再呼び出し
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;=== Calling Gemini Again with Function Results ===&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;response&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;models&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;generateContent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gemini-3-flash-preview&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000&#34;&gt;contents&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 7. 最終応答出力
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;=== Final Response ===&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Assistant: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${response.text()}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;println&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;No function calls detected. Direct response: &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${response.text()}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 8. 整理: MCPクライアント終了
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;mcpClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;closeGracefully&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;========================================
Gemini API + MCP Function Calling Demo
========================================

Available Tools = ListToolsResult[tools=[Tool[name=get_weather, title=null, description=Return the weather of a given city., inputSchema=JsonSchema[type=object, properties={city={type=string, description=The city for which to get the weather}}, required=[city], additionalProperties=false, defs=null, definitions=null], outputSchema=null, annotations=null, meta=null]], nextCursor=null, meta=null]

========================================
User: ソウルの天気を教えて
========================================

=== First Response ===
Candidates: Optional[[Candidate{content=Optional[Content{parts=Optional[[Part{mediaResolution=Optional.empty, codeExecutionResult=Optional.empty, executableCode=Optional.empty, fileData=Optional.empty, functionCall=Optional[FunctionCall{id=Optional.empty, args=Optional[{city=Seoul}], name=Optional[get_weather], partialArgs=Optional.empty, willContinue=Optional.empty}], functionResponse=Optional.empty, inlineData=Optional.empty, text=Optional.empty, thought=Optional.empty, thoughtSignature=Optional[[B@a7f0ab6], videoMetadata=Optional.empty}]], role=Optional[model]}], citationMetadata=Optional.empty, finishMessage=Optional.empty, tokenCount=Optional.empty, finishReason=Optional[STOP], avgLogprobs=Optional.empty, groundingMetadata=Optional.empty, index=Optional[0], logprobsResult=Optional.empty, safetyRatings=Optional.empty, urlContextMetadata=Optional.empty}]]
Parts: [Part{mediaResolution=Optional.empty, codeExecutionResult=Optional.empty, executableCode=Optional.empty, fileData=Optional.empty, functionCall=Optional[FunctionCall{id=Optional.empty, args=Optional[{city=Seoul}], name=Optional[get_weather], partialArgs=Optional.empty, willContinue=Optional.empty}], functionResponse=Optional.empty, inlineData=Optional.empty, text=Optional.empty, thought=Optional.empty, thoughtSignature=Optional[[B@a7f0ab6], videoMetadata=Optional.empty}]

=== Function Calls Detected ===
Function Call: get_weather
Arguments: {city=Seoul}
MCP Result: CallToolResult[content=[TextContent[annotations=null, text=&amp;#34;The weather in Seoul is good.&amp;#34;, meta=null]], isError=false, structuredContent=null, meta=null]
Extracted Result: &amp;#34;The weather in Seoul is good.&amp;#34;

=== Calling Gemini Again with Function Results ===

=== Final Response ===
Assistant: ソウルの天気は良いです。
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;参考文書&#34;&gt;参考文書&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ai.google.dev/gemini-api/docs/function-calling?hl=ko&amp;amp;example=meeting&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Gemini API | Gemini APIを使用した関数呼び出し&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
      <category>kotlin</category>
      
      <category>Gemini</category>
      
    </item>
    
    <item>
      <title>OpenAI Codexのインストールと使用方法</title>
      <link>https://www.devkuma.com/jp/docs/open-ai/codex/install/</link>
      <pubDate>Sun, 26 Apr 2026 15:49:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/open-ai/codex/install/</guid>
      <description>
        
        
        &lt;p&gt;開発者の視点で重要なのは、&lt;strong&gt;Codexは「インストール型プログラム」というより、複数の方式で接続して使うツール&lt;/strong&gt;だという点である。&lt;/p&gt;
&lt;p&gt;つまり、ローカルに必ずインストールしなければならない構造ではなく、ChatGPT、CLI、IDE、Webなど多様な方式で使用できる。&lt;/p&gt;
&lt;h2 id=&#34;codexのインストール&#34;&gt;Codexのインストール&lt;/h2&gt;
&lt;h3 id=&#34;chatgptで使用最も簡単な方法&#34;&gt;ChatGPTで使用（最も簡単な方法）&lt;/h3&gt;
&lt;p&gt;実際、多くの場合は別途インストールせずに開始する。&lt;/p&gt;
&lt;h4 id=&#34;方法&#34;&gt;方法&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;ChatGPTにログイン&lt;/li&gt;
&lt;li&gt;Codex機能を有効化（プランが必要）&lt;/li&gt;
&lt;li&gt;すぐに使用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CodexはChatGPTプランに含まれて提供される。&lt;/p&gt;
&lt;h4 id=&#34;特徴&#34;&gt;特徴&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;インストール不要&lt;/li&gt;
&lt;li&gt;すぐに使用可能&lt;/li&gt;
&lt;li&gt;最も簡単な方式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;mac環境でcliをインストール開発者向け&#34;&gt;Mac環境でCLIをインストール（開発者向け）&lt;/h3&gt;
&lt;p&gt;Mac環境のターミナルベースでCodexを使いたいなら、これが核心である。&lt;/p&gt;
&lt;h4 id=&#34;事前準備&#34;&gt;事前準備&lt;/h4&gt;
&lt;p&gt;まず基本環境から確認する必要がある。&lt;/p&gt;
&lt;p&gt;以下は必須である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS（Ventura以降推奨）&lt;/li&gt;
&lt;li&gt;Node.js（18以上）&lt;/li&gt;
&lt;li&gt;npmまたはpnpm&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id=&#34;nodeのインストール未インストールの場合&#34;&gt;Nodeのインストール（未インストールの場合）&lt;/h6&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;brew install node
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;インストール確認:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;codex-cliのインストール&#34;&gt;Codex CLIのインストール&lt;/h4&gt;
&lt;p&gt;公式に提供されているCLIインストール方式である。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install -g @openai/codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;インストール確認:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;codex --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;ログイン最重要&#34;&gt;ログイン（最重要）&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;初回実行時、次のようなコンソール画面が表示される。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Welcome to Codex, OpenAI&lt;span style=&#34;color:#a40000&#34;&gt;&amp;#39;&lt;/span&gt;s command-line coding agent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Sign in with ChatGPT to use Codex as part of your paid plan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  or connect an API key &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; usage-based billing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; 1. Sign in with ChatGPT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Usage included with Plus, Pro, Business, and Enterprise plans
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2. Sign in with Device Code
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Sign in from another device with a one-time code
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  3. Provide your own API key
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Pay &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; what you use
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Press Enter to &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここで1番のChatGPTアカウントでログインを選択すると、ブラウザーが開く。
&lt;img src=&#34;image.png&#34; alt=&#34;alt text&#34;&gt;&lt;/p&gt;
&lt;p&gt;ログインするとCLIとアカウントが接続される。&lt;/p&gt;
&lt;p&gt;その後、コンソールに表示される内容を確認し、ボタンを何度か押すと使用準備が完了する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;╭───────────────────────────────────────────────╮
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ &amp;gt;_ OpenAI Codex &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;v0.125.0&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;                    │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│                                               │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ model:     gpt-5.5   /model to change         │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ directory: ~/develop/devkuma/devkuma-hugo-www │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;╰───────────────────────────────────────────────╯
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Tip: GPT-5.5 is now available in Codex. It&lt;span style=&#34;color:#a40000&#34;&gt;&amp;#39;&lt;/span&gt;s our strongest agentic coding model yet, built to reason through large codebases, check
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  assumptions with tools, and keep going &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;until&lt;/span&gt; the work is &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Learn more: https://openai.com/index/introducing-gpt-5-5/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;› Use /skills to list available skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;使用フロー&#34;&gt;使用フロー&lt;/h4&gt;
&lt;p&gt;改めて整理すると、使用フローは次のとおりである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLIで&lt;code&gt;codex&lt;/code&gt;を実行&lt;/li&gt;
&lt;li&gt;ログインを進める（ChatGPTアカウント）&lt;/li&gt;
&lt;li&gt;プロジェクトフォルダーで実行&lt;/li&gt;
&lt;li&gt;自然言語で作業を指示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この過程が終わると、CLIとアカウントが接続される。&lt;/p&gt;
&lt;p&gt;例:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;このプロジェクトにRedisキャッシュを追加して&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;ide拡張vs-codeなど&#34;&gt;IDE拡張（VS Codeなど）&lt;/h3&gt;
&lt;h4 id=&#34;使用方法&#34;&gt;使用方法&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;VS Codeを開く&lt;/li&gt;
&lt;li&gt;Codex拡張をインストール&lt;/li&gt;
&lt;li&gt;ログイン&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;利点&#34;&gt;利点&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;コードを見ながらすぐ修正&lt;/li&gt;
&lt;li&gt;自動リファクタリング&lt;/li&gt;
&lt;li&gt;コードレビュー支援&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;webアプリベースの使用&#34;&gt;Web/アプリベースの使用&lt;/h3&gt;
&lt;p&gt;Codexは次の方式もサポートする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex Web&lt;/li&gt;
&lt;li&gt;Codex専用アプリ&lt;/li&gt;
&lt;li&gt;GitHub連携&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特にWebではGitHub接続が必要である。&lt;/p&gt;
&lt;h2 id=&#34;codexの使用&#34;&gt;Codexの使用&lt;/h2&gt;
&lt;h3 id=&#34;apisdk方式上級&#34;&gt;API/SDK方式（上級）&lt;/h3&gt;
&lt;p&gt;バックエンドで直接使いたい場合:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI APIキーを使用&lt;/li&gt;
&lt;li&gt;Codexモデルを呼び出し&lt;/li&gt;
&lt;li&gt;自動化システムを構築&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;開発者基準の推奨インストール使用&#34;&gt;開発者基準の推奨インストール/使用&lt;/h3&gt;
&lt;p&gt;現実的には次のように分かれる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入門
&lt;ul&gt;
&lt;li&gt;ChatGPT -&amp;gt; すぐ使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;実務
&lt;ul&gt;
&lt;li&gt;CLI + IDEを一緒に使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;上級
&lt;ul&gt;
&lt;li&gt;API + 自動化（CI/CD連携）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;h3 id=&#34;重要ポイントよく混乱する&#34;&gt;重要ポイント（よく混乱する）&lt;/h3&gt;
&lt;p&gt;「Codexインストール = プログラムのダウンロード」ではない。
正確には「Codexを使用できるインターフェースをインストールすること」である。&lt;/p&gt;
&lt;h3 id=&#34;開発者向けtips&#34;&gt;開発者向けTips&lt;/h3&gt;
&lt;p&gt;次のように使うと効率がよい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI: 大きな作業（リファクタリング、機能追加）&lt;/li&gt;
&lt;li&gt;ChatGPT: アイデア/設計&lt;/li&gt;
&lt;li&gt;IDE: 細かな修正&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;組み合わせて使うことが核心である。&lt;/p&gt;
&lt;h3 id=&#34;一行要約&#34;&gt;一行要約&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Codexはインストールするツールではなく、接続して使うAI開発エージェントである&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

      </description>
      
      <category>AI</category>
      
      <category>Codex</category>
      
    </item>
    
    <item>
      <title>OpenAIのCodexとは？</title>
      <link>https://www.devkuma.com/jp/docs/open-ai/codex/</link>
      <pubDate>Sun, 26 Apr 2026 15:49:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/open-ai/codex/</guid>
      <description>
        
        
        &lt;h2 id=&#34;codexとは&#34;&gt;Codexとは？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Codex&lt;/strong&gt;はOpenAIが開発した&lt;strong&gt;AIベースのソフトウェアエンジニアリングエージェント&lt;/strong&gt;である。&lt;br&gt;
単にコードを「手伝うツール」ではなく、&lt;strong&gt;実際に作業を代わりに実行するAI&lt;/strong&gt;という点でChatGPTと区別される。&lt;/p&gt;
&lt;h2 id=&#34;一行定義&#34;&gt;一行定義&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;「開発作業を委任すると代わりに実行するAI開発者」&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT -&amp;gt; 思考を助けるツール&lt;/li&gt;
&lt;li&gt;Codex -&amp;gt; 仕事を代わりに処理するエージェント&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この違いが核心である。&lt;/p&gt;
&lt;h2 id=&#34;chatgptとcodexの違い&#34;&gt;ChatGPTとCodexの違い&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;区分&lt;/th&gt;
          &lt;th&gt;ChatGPT&lt;/th&gt;
          &lt;th&gt;Codex&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;役割&lt;/td&gt;
          &lt;td&gt;質問/説明/アイデア&lt;/td&gt;
          &lt;td&gt;実際の作業実行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;出力&lt;/td&gt;
          &lt;td&gt;テキスト回答&lt;/td&gt;
          &lt;td&gt;コード + 実行結果&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;範囲&lt;/td&gt;
          &lt;td&gt;単一応答中心&lt;/td&gt;
          &lt;td&gt;ファイル/プロジェクト単位の作業&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;方式&lt;/td&gt;
          &lt;td&gt;対話型&lt;/td&gt;
          &lt;td&gt;作業委任型&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;簡単にいうと、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT: 「こうすればよいです」&lt;/li&gt;
&lt;li&gt;Codex: 「私が直接やってみました（コード含む）」&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;codexの中核特徴&#34;&gt;Codexの中核特徴&lt;/h2&gt;
&lt;h3 id=&#34;実際のコード作業を実行&#34;&gt;実際のコード作業を実行&lt;/h3&gt;
&lt;p&gt;Codexは次のような作業を直接実行する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機能実装（Feature開発）&lt;/li&gt;
&lt;li&gt;バグ修正&lt;/li&gt;
&lt;li&gt;リファクタリング&lt;/li&gt;
&lt;li&gt;テストコード作成&lt;/li&gt;
&lt;li&gt;Pull Request作成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;単純生成ではなく、&lt;strong&gt;最後まで作業を完了すること&lt;/strong&gt;が特徴である。&lt;/p&gt;
&lt;h3 id=&#34;プロジェクト単位の理解&#34;&gt;プロジェクト単位の理解&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;コードベース全体を読み分析&lt;/li&gt;
&lt;li&gt;モジュール間の関係を把握&lt;/li&gt;
&lt;li&gt;データフローを追跡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、「1ファイル」ではなく「サービス全体」を基準に動作する。&lt;/p&gt;
&lt;h3 id=&#34;独立実行環境sandbox&#34;&gt;独立実行環境（Sandbox）&lt;/h3&gt;
&lt;p&gt;Codexは作業ごとに次のような作業を繰り返す。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;独立した実行環境を作成&lt;/li&gt;
&lt;li&gt;コード修正&lt;/li&gt;
&lt;li&gt;テスト実行&lt;/li&gt;
&lt;li&gt;結果検証&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;テスト通過まで反復実行する構造も可能である。&lt;/p&gt;
&lt;h3 id=&#34;並列作業マルチタスク&#34;&gt;並列作業（マルチタスク）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;複数の作業を同時に実行&lt;/li&gt;
&lt;li&gt;バックグラウンドで作業を継続&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A機能開発&lt;/li&gt;
&lt;li&gt;Bバグ修正&lt;/li&gt;
&lt;li&gt;Cテスト追加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人が行う作業を並列に処理できる。&lt;/p&gt;
&lt;h3 id=&#34;自動化エージェント&#34;&gt;自動化エージェント&lt;/h3&gt;
&lt;p&gt;Codexは単純なリクエストだけでなく、次の作業も可能である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CI/CD作業&lt;/li&gt;
&lt;li&gt;イシュー整理&lt;/li&gt;
&lt;li&gt;ログ分析&lt;/li&gt;
&lt;li&gt;反復業務処理&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;実際の活用例&#34;&gt;実際の活用例&lt;/h2&gt;
&lt;h3 id=&#34;開発実務&#34;&gt;開発実務&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;「このAPIにキャッシュを追加して」&lt;/li&gt;
&lt;li&gt;「このコードをリファクタリングしてテストを追加して」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-&amp;gt; コード修正 + テスト実行 + 結果提供&lt;/p&gt;
&lt;h3 id=&#34;テスト自動化&#34;&gt;テスト自動化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Testcontainers環境構成&lt;/li&gt;
&lt;li&gt;Kotest/JUnitテスト生成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あなたのようなSpringベース開発では特に強力である。&lt;/p&gt;
&lt;h3 id=&#34;保守&#34;&gt;保守&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;古いコード分析&lt;/li&gt;
&lt;li&gt;deprecated API置換&lt;/li&gt;
&lt;li&gt;性能改善&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;生産性自動化&#34;&gt;生産性自動化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;文書生成&lt;/li&gt;
&lt;li&gt;リリースノート作成&lt;/li&gt;
&lt;li&gt;コードレビュー補助&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;開発者視点での利点&#34;&gt;開発者視点での利点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;開発速度の最大化&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;反復作業を除去&lt;/li&gt;
&lt;li&gt;実装まで自動化&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;コンテキスト維持&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト全体理解に基づく作業&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;集中力維持&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;「面倒な作業」を委任可能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結果として&lt;strong&gt;Flow状態を維持しながら開発可能&lt;/strong&gt;になる。&lt;/p&gt;
&lt;h2 id=&#34;限界重要&#34;&gt;限界（重要）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;完璧ではない&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;誤った設計の可能性&lt;/li&gt;
&lt;li&gt;非効率なコード生成&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;責任問題&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;結果は最終的に人が検証する必要がある&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;コンテキスト制限&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;組織ポリシーやビジネスロジックを完全に理解するのは難しい&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最近のトレンド重要ポイント&#34;&gt;最近のトレンド（重要ポイント）&lt;/h2&gt;
&lt;p&gt;最近のCodexは単純なコーディングツールを超えている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;開発だけでなく&lt;strong&gt;業務自動化エージェント&lt;/strong&gt;へ拡張&lt;/li&gt;
&lt;li&gt;多くの企業で実務に適用&lt;/li&gt;
&lt;li&gt;数百万の開発者が使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「AIが答える時代 -&amp;gt; AIが働く時代」へ変化している（[Reuters][4]）。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;
&lt;p&gt;Codexは既存の開発方式を次のように変えている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接実装 -&amp;gt; 作業委任&lt;/li&gt;
&lt;li&gt;単一作業 -&amp;gt; 並列作業&lt;/li&gt;
&lt;li&gt;コード作成 -&amp;gt; 結果中心開発&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;核心まとめ&#34;&gt;核心まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ChatGPTは思考を助け、Codexは仕事を代わりに行う。&lt;/strong&gt;&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>Codex</category>
      
    </item>
    
    <item>
      <title>Google AI</title>
      <link>https://www.devkuma.com/jp/docs/ai/google/</link>
      <pubDate>Sun, 26 Apr 2026 11:48:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/google/</guid>
      <description>
        
        
        &lt;p&gt;Google AIツールについての説明&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>AI用語</title>
      <link>https://www.devkuma.com/jp/docs/ai/term/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/term/</guid>
      <description>
        
        
        &lt;h2 id=&#34;混乱しやすく難しい最近のai関連用語&#34;&gt;混乱しやすく難しい最近のAI関連用語&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;AI（Artificial Intelligence）
&lt;ul&gt;
&lt;li&gt;コンピューターが人間の知能を模倣し、学習して問題を解決する技術&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML（Machine Learning）
&lt;ul&gt;
&lt;li&gt;AIがデータを通じて自動的に学習し、予測する技術&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DL（Deep Learning）
&lt;ul&gt;
&lt;li&gt;MLの一種で、「人工ニューラルネットワーク」を活用して複雑なパターンを学習する技術&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AX（AI Transformation）
&lt;ul&gt;
&lt;li&gt;DXを超えて、AIを中心に企業の変革を進めること&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AGI（Artificial General Intelligence）
&lt;ul&gt;
&lt;li&gt;特定の作業に限定されず、人間のように複数の分野で知的に問題を解決できる人工知能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gen（Generative）AI
&lt;ul&gt;
&lt;li&gt;テキスト、画像、音楽、動画などを生成する人工知能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Prompting
&lt;ul&gt;
&lt;li&gt;Gen AIから必要な答えを得るための質問方法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LLM（Large Language Model）
&lt;ul&gt;
&lt;li&gt;ビッグデータを基に、言語に近いテキストを理解し生成する技術&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;FM（Foundation Model）
&lt;ul&gt;
&lt;li&gt;多様で膨大なデータで事前学習されたモデル。言語処理、画像認識、音声/動画生成などの基盤モデルとして使われる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hallucination（幻覚）
&lt;ul&gt;
&lt;li&gt;AIが誤った結論に達し、現実には存在しない出力やコンテンツを生成する現象&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Claude Codeの権限要求を省略</title>
      <link>https://www.devkuma.com/jp/docs/ai/claude/dangerously-skip-permissions/</link>
      <pubDate>Thu, 11 Apr 2024 12:18:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/claude/dangerously-skip-permissions/</guid>
      <description>
        
        
        &lt;p&gt;Claude Code使用時に、ファイル修正やコマンド実行のたびに権限を尋ねられないようにするには、&lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;フラグを使って「YOLOモード（全許可）」で実行するか、settings.jsonで詳細権限を設定できる。&lt;/p&gt;
&lt;h2 id=&#34;1-常に権限なしで実行yoloモード&#34;&gt;1. 常に権限なしで実行（YOLOモード）&lt;/h2&gt;
&lt;p&gt;ターミナルで以下のコマンドを実行すると、ファイル作成、削除、コマンド実行時に承認を求めずすぐに進行する。&lt;/p&gt;
&lt;h3 id=&#34;linuxmacos&#34;&gt;Linux/macOS&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;alias claude=&#39;claude --dangerously-skip-permissions&#39;&lt;/code&gt;を&lt;code&gt;.bashrc&lt;/code&gt;や&lt;code&gt;.zshrc&lt;/code&gt;に追加して永続設定する。&lt;/p&gt;
&lt;h3 id=&#34;windows&#34;&gt;Windows&lt;/h3&gt;
&lt;p&gt;doskeyマクロ設定を通じて&lt;code&gt;claude=claude --dangerously-skip-permissions $*&lt;/code&gt;を設定する。&lt;/p&gt;
&lt;h2 id=&#34;2-特定ツールだけ許可設定ファイル&#34;&gt;2. 特定ツールだけ許可（設定ファイル）&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;より安全な方法として、&lt;code&gt;.claude/settings.json&lt;/code&gt;で許可するツール（Bash、ファイル読み書きなど）を指定できる。&lt;/p&gt;
&lt;p&gt;例:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&amp;#34;permissions&amp;#34;: {&amp;#34;allow&amp;#34;: [&amp;#34;Bash(find:*)&amp;#34;]}} 
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;3-自動承認モードauto-mode&#34;&gt;3. 自動承認モード（Auto Mode）&lt;/h2&gt;
&lt;p&gt;最新バージョンでは、特定の安全装置を維持しながら承認ポップアップなしで動作する「Auto mode」を使用でき、これは環境設定で制御可能である。&lt;/p&gt;
&lt;p&gt;注意:&lt;br&gt;
&lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;は作業速度を上げるが、危険な動作も制限なく実行するため、自動化や実験環境でのみ使用することが推奨される。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Claude</title>
      <link>https://www.devkuma.com/jp/docs/ai/claude/</link>
      <pubDate>Sun, 26 Apr 2026 11:48:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/claude/</guid>
      <description>
        
        
        &lt;p&gt;Claudeについての説明&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>AIツール</title>
      <link>https://www.devkuma.com/jp/docs/ai/tool/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/tool/</guid>
      <description>
        
        
        &lt;p&gt;AIツール&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>OpenAI Skillsの説明およびインストール・使用法</title>
      <link>https://www.devkuma.com/jp/docs/open-ai/skills/</link>
      <pubDate>Fri, 01 May 2026 10:00:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/open-ai/skills/</guid>
      <description>
        
        
        &lt;h2 id=&#34;skillsとは&#34;&gt;Skillsとは？&lt;/h2&gt;
&lt;p&gt;AIツールを使っていると、同じプロンプトを繰り返し入力する瞬間が必ず来る。コードレビュー依頼、テストコード生成、ログ分析など、毎回同じ作業を説明し直すのは思ったより非効率である。&lt;/p&gt;
&lt;p&gt;この問題を解決する核心が「Skills」である。簡単にいえば、よく使う作業を一つの&lt;strong&gt;再利用可能なコマンド&lt;/strong&gt;として作っておく機能である。&lt;/p&gt;
&lt;p&gt;一度うまく作っておけば、毎回長く説明しなくても短いトリガーだけで同じ結果を得られる。&lt;/p&gt;
&lt;p&gt;つまり、Skillsは再利用可能なワークフローを書くためのフォーマットであり、Codex CLIだけでなくIDE拡張プログラムやCodexアプリでも使用できる。&lt;/p&gt;
&lt;h3 id=&#34;核心構造&#34;&gt;核心構造&lt;/h3&gt;
&lt;p&gt;Skillは複雑に見えるが構造は単純である。核心は「入力 -&amp;gt; 処理 -&amp;gt; 出力」の流れである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力: ユーザー要求（例: 「このコードのテストを作って」）&lt;/li&gt;
&lt;li&gt;処理: 定義されたプロンプトロジック&lt;/li&gt;
&lt;li&gt;出力: 成果物（テストコード、説明など）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重要なのは、単にプロンプトを保存するのではなく、「役割 + ルール + 出力形式」まで含む点である。&lt;/p&gt;
&lt;p&gt;一般要求:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「このコードのテストコードを作って」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skill:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;役割: テストコード専門家&lt;/li&gt;
&lt;li&gt;ルール: Kotest使用、WebFlux考慮&lt;/li&gt;
&lt;li&gt;出力: すぐ実行可能なコード&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この違いだけで結果の品質が大きく変わる。&lt;/p&gt;
&lt;h2 id=&#34;skillsのインストール&#34;&gt;Skillsのインストール&lt;/h2&gt;
&lt;p&gt;スキルはコマンドで使うか、直接ファイルを入れて簡単にインストールできる。&lt;/p&gt;
&lt;h3 id=&#34;方法1-公式カタログからインストール&#34;&gt;方法1: 公式カタログからインストール&lt;/h3&gt;
&lt;p&gt;OpenAI Codexの公式スキルカタログは、AIエージェントが特定作業を反復実行できるよう、指示、スクリプト、リソースをまとめたフォルダー構造のモジュールである。&lt;/p&gt;
&lt;p&gt;公式リポジトリ（GitHub）のopenai/skillsでCodex用スキルカタログを確認できる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/openai/skills&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/openai/skills&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CodexでSkillをインストールするには&lt;code&gt;$skill-installer&lt;/code&gt;を実行する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$skill-installer {スキル名}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;たとえば、&lt;code&gt;screenshot&lt;/code&gt;というskillをインストールする方法は次のとおりである。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$skill-installer screenshot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行すると、&lt;code&gt;~/.codex/skills/&lt;/code&gt;フォルダーにMarkdown形式の仕様（&lt;code&gt;SKILL.md&lt;/code&gt;）などのファイルが作成される。&lt;/p&gt;
&lt;p&gt;次のファイルは&lt;code&gt;screenshot&lt;/code&gt;というSkillをインストールして生成されたファイルである。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.codex
└── skills
    └── screenshot
        ├── agents
        │   └── openai.yaml
        ├── assets
        │   ├── screenshot-small.svg
        │   └── screenshot.png
        ├── LICENSE.txt
        ├── scripts
        │   ├── ensure_macos_permissions.sh
        │   ├── macos_display_info.swift
        │   ├── macos_permissions.swift
        │   ├── macos_window_info.swift
        │   ├── take_screenshot.ps1
        │   └── take_screenshot.py
        └── SKILL.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;インストール後にCodexを再起動すると、すぐに使用できる。&lt;/p&gt;
&lt;h3 id=&#34;方法2-github-urlを入力してインストール&#34;&gt;方法2: GitHub URLを入力してインストール&lt;/h3&gt;
&lt;p&gt;GitHub URLを直接入力してインストールすることもできる。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$skill-installer https://github.com/openai/skills/tree/main/skills/.curated/{スキル名}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;方法3-プロジェクトルートに直接追加&#34;&gt;方法3: プロジェクトルートに直接追加&lt;/h3&gt;
&lt;p&gt;プロジェクトルートに&lt;code&gt;.agents/skills/&lt;/code&gt;フォルダーを作り、スキルフォルダーを入れればよい。
これをGit pushすると、チームメンバー全員がすぐに使用できる。&lt;/p&gt;
&lt;h2 id=&#34;codexでskillを使用する&#34;&gt;CodexでSkillを使用する&lt;/h2&gt;
&lt;p&gt;Codexは二つの方式でスキルを使用できる。&lt;/p&gt;
&lt;h3 id=&#34;明示的呼び出しexplicit-invocation&#34;&gt;明示的呼び出し（Explicit invocation）&lt;/h3&gt;
&lt;p&gt;CLI/IDEでは、プロンプトに&lt;code&gt;${スキル名}&lt;/code&gt;を入力してスキルを指定し、直接呼び出せる。&lt;/p&gt;
&lt;p&gt;たとえば、&lt;code&gt;screenshot&lt;/code&gt;というskillを使用する方法は次のとおりである。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$screenshot https://www.devkuma.com --fullpage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;または&lt;code&gt;/skills&lt;/code&gt;コマンドで使用可能なスキル一覧を確認して選択する。&lt;/p&gt;
&lt;h3 id=&#34;暗黙的呼び出しimplicit-invocation&#34;&gt;暗黙的呼び出し（Implicit invocation）&lt;/h3&gt;
&lt;p&gt;作業内容を説明すると、Codexが自動で適切なスキルを探して実行する。&lt;/p&gt;
&lt;p&gt;たとえば、「このPRのコメントを反映して」と言うと、&lt;code&gt;gh-address-comments&lt;/code&gt;スキルが自動実行される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作業内容がスキルの&lt;code&gt;description&lt;/code&gt;と一致すると、Codexが自動選択する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;暗黙的マッチングは&lt;code&gt;skills/SKILL.md&lt;/code&gt;ファイル内の&lt;code&gt;description&lt;/code&gt;に依存する。&lt;/p&gt;
&lt;h2 id=&#34;skillの基本ファイル構造&#34;&gt;Skillの基本ファイル構造&lt;/h2&gt;
&lt;p&gt;Codexはまず各スキルの名前、説明、ファイルパスだけを参照し、実際にそのスキルを使用すると判断したときだけ&lt;code&gt;SKILL.md&lt;/code&gt;全体をロードする。&lt;/p&gt;
&lt;p&gt;Codexは適切なスキルを選択できるよう、初期コンテキストに使用可能なスキル一覧を含める。
この一覧はプロンプト空間を過度に占有しないよう制限され、全体コンテキストの約2%または最大8,000文字程度である。
スキルが多い場合は説明が先に短縮され、非常に多い場合は一部スキルが一覧から除外され警告が表示される。&lt;/p&gt;
&lt;p&gt;この制限は初期スキル一覧にだけ適用される。Codexが特定スキルを選択すると、そのスキルの&lt;code&gt;SKILL.md&lt;/code&gt;全体を読む。&lt;/p&gt;
&lt;p&gt;一つのスキルは&lt;code&gt;SKILL.md&lt;/code&gt;ファイルと、任意のスクリプトおよびリソースで構成されるディレクトリである。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;my-skill/
├── SKILL.md        # 必須: 指示 + メタデータ
├── scripts/        # 任意: 実行コード
├── references/     # 任意: 文書
├── assets/         # 任意: テンプレート、リソース
└── agents/
    └── openai.yaml # 任意: UIおよび依存関係設定
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;必須ファイルで、&lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt;、Codexが従うべき核心手順が入る。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;任意で、同じコードを繰り返し書くことになる場合に入れる。&lt;/li&gt;
&lt;li&gt;変更ファイル一覧収集、PRメタデータ整理、特定テスト実行のように、決定的に同じ動作が必要な場合に適している。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;references/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;任意で、参考資料を入れる場所である。&lt;/li&gt;
&lt;li&gt;RLSポリシー点検基準、チームのAPI契約、デプロイポリシーなどの文書がよく合う。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;任意で、出力物に使うテンプレートやリソースを置く。&lt;/li&gt;
&lt;li&gt;レビューコメントテンプレート、PR説明テンプレート、報告書形式ファイルなどである。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skillを作る&#34;&gt;Skillを作る&lt;/h2&gt;
&lt;p&gt;公式スキルだけでは不足する場合がある。自分またはチームのワークフローのためにカスタムスキルが必要になることがある。&lt;/p&gt;
&lt;p&gt;カスタムスキルを作るには、上で述べた&lt;code&gt;SKILL.md&lt;/code&gt;ファイルを作成する必要がある。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt;の書き方:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name: skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description: このスキルがいつ実行され、いつ実行されるべきでないかを明確に説明
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Codexが従うべきスキル指示を書く
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここで&lt;code&gt;description&lt;/code&gt;が最も重要である。暗黙的マッチングはこの&lt;code&gt;description&lt;/code&gt;に依存するため、明確かつ簡潔に書く必要がある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心ユースケースを前に配置&lt;/li&gt;
&lt;li&gt;トリガーキーワードを明確に記述&lt;/li&gt;
&lt;li&gt;説明が切れてもマッチできるように書く&lt;/li&gt;
&lt;li&gt;韓国語と英語キーワードを両方含める&lt;/li&gt;
&lt;li&gt;実際に入力しそうな表現を列挙&lt;/li&gt;
&lt;li&gt;このスキルがしないことも明示（誤ったマッチング防止）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;description例:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;description: &amp;#34;PRレビューコメントを自動で反映する。&amp;#39;리뷰 반영&amp;#39;, &amp;#39;PR 코멘트&amp;#39;, &amp;#39;address comments&amp;#39;, &amp;#39;fix review&amp;#39;などに反応する。コードレビュー自体は実行しない。&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;基本生成器で作る&#34;&gt;基本生成器で作る&lt;/h3&gt;
&lt;p&gt;直接&lt;code&gt;SKILL.md&lt;/code&gt;ファイルを書いてもよいが、基本生成器の使用を推奨する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$skill-creator
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この生成器は次を質問する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;スキルが行う作業&lt;/li&gt;
&lt;li&gt;いつ実行されるべきか&lt;/li&gt;
&lt;li&gt;スクリプトを含めるかどうか（デフォルトはinstruction-only）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codexはスキル変更を自動で検知する。変更が反映されない場合はCodexを再起動すればよい。&lt;/p&gt;
&lt;h2 id=&#34;skillの保存場所&#34;&gt;Skillの保存場所&lt;/h2&gt;
&lt;p&gt;Codexは複数の場所からSkillをロードする。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;範囲&lt;/th&gt;
          &lt;th&gt;場所&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;REPO&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$CWD/.agents/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;現在の作業ディレクトリだけにスキル適用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;REPO&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$CWD/../.agents/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;上位ディレクトリだけに適用されるスキル&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;REPO&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$REPO_ROOT/.agents/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;リポジトリ全体の共有スキル&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;USER&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$HOME/.agents/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;ユーザー個人スキル（すべての自分のプロジェクトに適用）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ADMIN&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/etc/codex/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;システム全体の共有スキル&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SYSTEM&lt;/td&gt;
          &lt;td&gt;Codex標準提供&lt;/td&gt;
          &lt;td&gt;標準内蔵スキル（&lt;code&gt;$skill-installer&lt;/code&gt;, &lt;code&gt;$skill-creator&lt;/code&gt;など）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Codexはシンボリックリンクされたスキルフォルダーもサポートする。&lt;/p&gt;
&lt;p&gt;これらの場所はローカル開発および探索用である。外部配布したい場合はpluginを使う方がよい。&lt;/p&gt;
&lt;h2 id=&#34;任意メタデータ&#34;&gt;任意メタデータ&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;agents/openai.yaml&lt;/code&gt;を追加すると、UIおよびポリシー設定が可能である。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;interface&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;display_name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ユーザーに表示される名前&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;short_description&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;簡単な説明&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;icon_small&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;./assets/small-logo.svg&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;icon_large&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;./assets/large-logo.png&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;brand_color&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;#3B82F6&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default_prompt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;デフォルトプロンプト&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;policy&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;allow_implicit_invocation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;dependencies&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;tools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;openaiDeveloperDocs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;description&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;OpenAI Docs MCPサーバー&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;transport&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;streamable_http&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;url&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;https://developers.openai.com/mcp&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;allow_implicit_invocation&lt;/code&gt;のデフォルト値: &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;false&lt;/code&gt;に設定すると自動呼び出しが無効化される（明示的呼び出しは可能）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skillの有効化無効化&#34;&gt;Skillの有効化/無効化&lt;/h2&gt;
&lt;p&gt;不要なスキルがある場合、削除せずに&lt;code&gt;~/.codex/config.toml&lt;/code&gt;で有効化 여부を設定できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;skills&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;path&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/path/to/skill/SKILL.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;enabled&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;設定変更後はCodexの再起動が必要である。&lt;/p&gt;
&lt;h2 id=&#34;プラグインとしてスキルを配布&#34;&gt;プラグインとしてスキルを配布&lt;/h2&gt;
&lt;p&gt;ローカルスキルフォルダーは開発とテストに適している。&lt;/p&gt;
&lt;p&gt;次のような場合はpluginとしてパッケージングするのがよい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;再利用可能なスキル配布&lt;/li&gt;
&lt;li&gt;複数スキルを一つにまとめる&lt;/li&gt;
&lt;li&gt;アプリ連携を含める&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;プラグインには次を含められる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数のスキル&lt;/li&gt;
&lt;li&gt;アプリマッピング&lt;/li&gt;
&lt;li&gt;MCPサーバー設定&lt;/li&gt;
&lt;li&gt;UIアセット&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;claude-skillsをcodexで活用&#34;&gt;Claude SkillsをCodexで活用&lt;/h2&gt;
&lt;p&gt;Claude、Codexツールはいずれも同じAgent Skillsオープン標準（agentskills.io）に従うため、同じSKILL.mdフォーマットを使い、AnthropicのSkillsリポジトリをCodexでも活用できる。&lt;/p&gt;
&lt;p&gt;方法は簡単である。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Skillsリポジトリを&lt;code&gt;.agents/skills/&lt;/code&gt;に複製する。&lt;/li&gt;
&lt;li&gt;list-skillsスクリプトを追加する。
&lt;ul&gt;
&lt;li&gt;skillsフォルダーの&lt;code&gt;SKILL.md&lt;/code&gt;を読み、JSONを出力する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;に「list-skillsを実行して使用可能なskillsを確認せよ」という指示を追加する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こうすると、Claude Code用に作ったスキルをCodexでもそのまま活用できる。
ただし、この方法はコミュニティで発見された活用法であり、OpenAI/Anthropicが公式にサポートする相互運用機能ではない。&lt;/p&gt;
&lt;p&gt;基本的なスキルは相互互換が可能である。ただし、各ツールの拡張機能（Claude Codeの&lt;code&gt;allowed-tools&lt;/code&gt;、Codexの&lt;code&gt;.system&lt;/code&gt;ディレクトリなど）は互換しない場合がある。&lt;/p&gt;
&lt;h3 id=&#34;claude-code-skills-vs-codex-skills比較&#34;&gt;Claude Code Skills vs Codex Skills比較&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
          &lt;th&gt;Codex&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;定義ファイル&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;インストール方式&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/plugin install + 手動コピー&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$skill-installer&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;公式カタログ&lt;/td&gt;
          &lt;td&gt;あり&lt;/td&gt;
          &lt;td&gt;35+ キュレーション&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;暗黙的呼び出し&lt;/td&gt;
          &lt;td&gt;サポート&lt;/td&gt;
          &lt;td&gt;サポート&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;チーム共有&lt;/td&gt;
          &lt;td&gt;Gitコミット&lt;/td&gt;
          &lt;td&gt;Gitコミット&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;実行環境&lt;/td&gt;
          &lt;td&gt;CLI + IDE拡張&lt;/td&gt;
          &lt;td&gt;CLI + アプリ + IDE&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;実務での生産性向上&#34;&gt;実務での生産性向上&lt;/h2&gt;
&lt;p&gt;スキルはCodex CLI、IDE拡張プログラム、Codexアプリで使用できる。&lt;/p&gt;
&lt;p&gt;単に作ることより重要なのは「どこに使うか」である。実際に効果が大きかった事例をいくつか共有する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ログ分析自動化
&lt;ul&gt;
&lt;li&gt;WebFluxログは非同期フローのため分析が難しい。Skillで「ログ解釈専門家」を作っておくと、複雑なログも構造的に説明してくれる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;テストコード標準化
&lt;ul&gt;
&lt;li&gt;チームごとにテストスタイルが異なる問題をSkillsで解決できる。ルールを強制すると、すべてのコードが同じスタイルで生成される。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;反復業務の除去
&lt;ul&gt;
&lt;li&gt;API文書生成&lt;/li&gt;
&lt;li&gt;エラーメッセージ分析&lt;/li&gt;
&lt;li&gt;コードリファクタリング提案&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;このような作業はSkillsとして作っておくと、ほぼ自動化レベルで処理される。&lt;/p&gt;
&lt;p&gt;核心は「よく行う作業は必ずSkillにする」という基準を立てることである。&lt;/p&gt;
&lt;h2 id=&#34;まとめ-codex-skillsは開発生産性の核心ツール&#34;&gt;まとめ: Codex Skillsは開発生産性の核心ツール&lt;/h2&gt;
&lt;p&gt;Codex Skillsは単純なプロンプト保存機能ではない。反復作業を自動化し、結果の品質を標準化する強力なツールである。&lt;/p&gt;
&lt;p&gt;最初は一つ作るだけでも十分である。テストコード生成、ログ分析、コードレビューのうち、最も頻繁に行う作業から始めてみよう。&lt;/p&gt;
&lt;p&gt;一度慣れると、「なぜ今まで使わなかったのか」と思うほど開発フローが変わる。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ&lt;/h2&gt;
&lt;h3 id=&#34;q1-codex-skillsはいつ使うのがよいか&#34;&gt;Q1. Codex Skillsはいつ使うのがよいか？&lt;/h3&gt;
&lt;p&gt;同じ要求を3回以上繰り返すなら、すぐSkillにするのがよい。特にテストコード生成、文書化、ログ分析のような作業に効果的である。&lt;/p&gt;
&lt;h3 id=&#34;q2-skillが多くなると管理が難しくならないか&#34;&gt;Q2. Skillが多くなると管理が難しくならないか？&lt;/h3&gt;
&lt;p&gt;そのため、命名と目的定義が重要である。&amp;ldquo;test-webflux&amp;rdquo;、&amp;ldquo;log-analyzer&amp;quot;のように明確に区分すると管理しやすい。&lt;/p&gt;
&lt;h3 id=&#34;q3-初心者でもすぐ使用できるか&#34;&gt;Q3. 初心者でもすぐ使用できるか？&lt;/h3&gt;
&lt;p&gt;可能である。複雑なロジックなしにRole、Rules、Outputだけ明確に定義すればよい。むしろ初心者ほど反復作業を減らすのに大きな助けになる。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>Codex</category>
      
    </item>
    
    <item>
      <title>NotebookLM</title>
      <link>https://www.devkuma.com/jp/docs/ai/notebook-lm/</link>
      <pubDate>Mon, 23 Feb 2026 08:48:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/notebook-lm/</guid>
      <description>
        
        
        &lt;h2 id=&#34;notebooklmとは&#34;&gt;NotebookLMとは？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NotebookLM&lt;/strong&gt;はGoogleが開発した&lt;strong&gt;AIベースの研究・ノート整理ツール&lt;/strong&gt;である。
ユーザーがアップロードした資料（文書、PDF、Webリンクなど）を基にAIが内容を理解し、要約・整理・質問応答を行う&lt;strong&gt;パーソナライズされたAI研究アシスタント&lt;/strong&gt;に近い。&lt;/p&gt;
&lt;p&gt;既存のチャットボットが一般知識を基に回答するのとは異なり、&lt;strong&gt;ユーザーが提供した資料の中だけで根拠を探して回答することが核心的特徴&lt;/strong&gt;である。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://notebooklm.google/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Google NotebookLM&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h2&gt;
&lt;h3 id=&#34;資料ベースの回答grounded-ai&#34;&gt;資料ベースの回答（Grounded AI）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;アップロードした文書内だけで回答を生成&lt;/li&gt;
&lt;li&gt;回答に**出典（引用）**が一緒に提供される&lt;/li&gt;
&lt;li&gt;論文、契約書、講義資料の分析に強い&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自動要約&#34;&gt;自動要約&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;長いPDFを要点だけに整理&lt;/li&gt;
&lt;li&gt;重要概念、主張、結論を構造化&lt;/li&gt;
&lt;li&gt;ブログ初稿、報告書初稿の作成に活用可能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;質問と深掘り分析&#34;&gt;質問と深掘り分析&lt;/h3&gt;
&lt;p&gt;例:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「この文書の核心主張3つは？」&lt;/li&gt;
&lt;li&gt;「著者が前提としている仮定は何か？」&lt;/li&gt;
&lt;li&gt;「批判的に分析して」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-&amp;gt; 単純要約を超えて、&lt;strong&gt;批判的分析や比較分析も可能&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;オーディオ概要audio-overview&#34;&gt;オーディオ概要（Audio Overview）&lt;/h3&gt;
&lt;p&gt;文書内容を2人のAIが会話するように説明してくれる機能
-&amp;gt; ポッドキャストのように聞くことができる&lt;/p&gt;
&lt;h2 id=&#34;対応形式&#34;&gt;対応形式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Docs&lt;/li&gt;
&lt;li&gt;PDF&lt;/li&gt;
&lt;li&gt;Webサイトリンク&lt;/li&gt;
&lt;li&gt;テキストファイル&lt;/li&gt;
&lt;li&gt;Google Slides&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgptとの違い&#34;&gt;ChatGPTとの違い&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;区分&lt;/th&gt;
          &lt;th&gt;NotebookLM&lt;/th&gt;
          &lt;th&gt;ChatGPT&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;回答基準&lt;/td&gt;
          &lt;td&gt;アップロード資料中心&lt;/td&gt;
          &lt;td&gt;一般学習データベース&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;出典表示&lt;/td&gt;
          &lt;td&gt;あり&lt;/td&gt;
          &lt;td&gt;基本的になし&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;研究分析&lt;/td&gt;
          &lt;td&gt;非常に強い&lt;/td&gt;
          &lt;td&gt;可能だが汎用的&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;創造的文章作成&lt;/td&gt;
          &lt;td&gt;普通&lt;/td&gt;
          &lt;td&gt;非常に強い&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;こんな人におすすめ&#34;&gt;こんな人におすすめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;論文・リサーチ作業が多い人&lt;/li&gt;
&lt;li&gt;ブログ/本の執筆を準備している人&lt;/li&gt;
&lt;li&gt;契約書・政策文書の分析が必要な会社員&lt;/li&gt;
&lt;li&gt;試験対策の要約整理が必要な受験生&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;NotebookLMは単純なAIチャットボットではなく、**「自分の資料を読んで理解するAI研究パートナー」**に近い。&lt;/p&gt;
&lt;p&gt;特に本を書く場合（例: Kotest本の執筆のような作業）や、資料ベースのコンテンツを作るときに非常に強力なツールになり得る。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>AI Q&amp;A</title>
      <link>https://www.devkuma.com/jp/docs/ai/qna/</link>
      <pubDate>Sat, 30 Aug 2025 18:38:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/qna/</guid>
      <description>
        
        
        &lt;p&gt;AIについて気になることをまとめる。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Ollama</title>
      <link>https://www.devkuma.com/jp/docs/ai/ollama/</link>
      <pubDate>Sat, 30 Aug 2025 17:05:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/ollama/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ollamaとは&#34;&gt;Ollamaとは？&lt;/h2&gt;
&lt;p&gt;Ollamaは、最近AI/LLM開発者の間でよく使われているツールである。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ollama&lt;/strong&gt;は、&lt;strong&gt;ローカル環境で大規模言語モデル（LLM）を簡単に実行・管理できるオープンソースプラットフォーム&lt;/strong&gt;である。&lt;br&gt;
つまり、OpenAI APIのようなクラウドモデルを使わなくても、**自分のPC（Mac/Linux/Windows）**でLlama、Mistral、Gemma、CodeLlamaなどのモデルを読み込んで使用できる。&lt;/p&gt;
&lt;h2 id=&#34;ollamaの主な特徴&#34;&gt;Ollamaの主な特徴&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ローカル実行をサポート&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;インターネット接続なしでもモデルを実行可能&lt;/li&gt;
&lt;li&gt;企業セキュリティや個人のプライバシーに有利&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;簡単なモデル配布&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ollama run llama3&lt;/code&gt;のような1行のコマンドでモデルを実行&lt;/li&gt;
&lt;li&gt;Dockerのように&lt;strong&gt;モデルパッケージ管理&lt;/strong&gt;をサポート（&lt;code&gt;Modelfile&lt;/code&gt;という設定ファイルで管理）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;複数モデルをサポート&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Meta LLaMA、Mistral、Gemma、Code Llama、Phiなど多様なモデルをダウンロードして実行可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API提供&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;REST API形式でローカルサーバー（&lt;code&gt;http://localhost:11434/api/generate&lt;/code&gt;）を開き、他のアプリから呼び出し可能&lt;/li&gt;
&lt;li&gt;ローカルOpenAI APIサーバーのように活用可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU最適化&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;MPS（Mac）、CUDA（NVIDIA GPU）をサポートし高速&lt;/li&gt;
&lt;li&gt;CPUでも実行可能だが速度は低下する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;ollamaの使用&#34;&gt;Ollamaの使用&lt;/h2&gt;
&lt;h3 id=&#34;インストール&#34;&gt;インストール&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;macOS/Linux/Windows向けパッケージも提供
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ollama.com/download&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://ollama.com/download&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;macOS
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;brew install ollama&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;macOSでインストール完了後に実行すると、メニューバーにOllamaアイコンが表示される。&lt;br&gt;
&lt;img src=&#34;https://www.devkuma.com/docs/ai/ollama-macos.png&#34; alt=&#34;Ollama&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;モデル実行&#34;&gt;モデル実行&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ollama run llama3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;初回実行時はモデルを自動ダウンロードしてから実行する。llama3モデルの容量は4.7GB。&lt;/p&gt;
&lt;h4 id=&#34;モデルのダウンロード&#34;&gt;モデルのダウンロード&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ollama.com/search&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;公式サイト&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;で使用するmodelを検索し、気に入ったモデルをインストールする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推奨モデル
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ollama.com/library/gpt-oss&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.ollama.com/library/gpt-oss&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPTレベルのチャット、分析、業務などを望む場合に使用する。MacBookでは少し遅いが動作は良好。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ollama.com/library/phi4-mini&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.ollama.com/library/phi4-mini&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;単純なMCP server呼び出し対象探索などの簡単な作業に向いている。toolsをサポートする軽量モデルならどれでもよい。qwen、deepseekは使用禁止。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;api呼び出し例-curl&#34;&gt;API呼び出し（例: curl）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl http://localhost:11434/api/generate -d &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;llama3&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;Explain quantum computing in simple terms&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;モデル管理&#34;&gt;モデル管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ollama list&lt;/code&gt; -&amp;gt; インストール済みモデルを確認&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ollama pull mistral&lt;/code&gt; -&amp;gt; 新しいモデルをダウンロード&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ollama create mymodel -f Modelfile&lt;/code&gt; -&amp;gt; カスタムモデルを作成&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;ollamaと他のllm実行フレームワークの比較&#34;&gt;Ollamaと他のLLM実行フレームワークの比較&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ツール&lt;/th&gt;
          &lt;th&gt;特徴&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;最も簡単なインストール/実行、ローカルAPI提供、モデルパッケージ管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;LM Studio&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;GUIベース、モデル選択と実行が直感的&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;vLLM&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;高性能サーバー実行に最適化、主に大規模デプロイで使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Text Generation WebUI&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;多様なモデル実行 + Web UI提供&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;OpenAI API&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;クラウドベースで最新モデルを使用可能。ただし費用/プライバシーの問題あり&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;活用事例&#34;&gt;活用事例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;開発環境で&lt;strong&gt;ローカルAIアシスタント&lt;/strong&gt;を構築&lt;/li&gt;
&lt;li&gt;社内セキュリティデータと接続した&lt;strong&gt;内部チャットボット&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangChain、LlamaIndex&lt;/strong&gt;のようなフレームワークと連携してRAGシステムを構築&lt;/li&gt;
&lt;li&gt;プロトタイピング: OpenAI API費用を使わず素早く実験&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ollamaはローカルで簡単にLLMを実行できる「LLMのDocker」のようなプラットフォーム&lt;/strong&gt;である。個人研究から企業向けチャットボットまで幅広く使える。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>人工知能の概念と歴史</title>
      <link>https://www.devkuma.com/jp/docs/ai/concept-and-history/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/concept-and-history/</guid>
      <description>
        
        
        &lt;h2 id=&#34;人工知能の定義&#34;&gt;人工知能の定義&lt;/h2&gt;
&lt;p&gt;人工知能とは、人間の学習、推論、問題解決能力をコンピューターが実行できるように実装した技術を指す。単純なルールベースの自動化から始まり、現在では自ら学習し適応する機械学習およびディープラーニング技術へと発展している。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/apple-siri-goolgle-assistant.png&#34; alt=&#34;Siri, Google Assistant&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;事例: SiriやGoogle Assistantなどのスマートフォン音声アシスタントは、単純な命令の実行を超えて、ユーザーの言語パターンを学習し、より精密な対話を支援する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;人工知能の歴史&#34;&gt;人工知能の歴史&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;1950年代: アラン・チューリングが「チューリングテスト」を提案&lt;/li&gt;
&lt;li&gt;1960-70年代: ルールベースのエキスパートシステムが登場&lt;/li&gt;
&lt;li&gt;1980-90年代: ニューラルネットワーク研究の再開と機械学習の発展&lt;/li&gt;
&lt;li&gt;2000年代以降: ビッグデータとGPUの発展によりディープラーニングが急成長&lt;/li&gt;
&lt;li&gt;現在: 自然言語処理、自動運転、医療診断など多様な分野へ拡大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/ai-history.png&#34; alt=&#34;人工知能の歴史&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;図表1: 人工知能の歴史年表（年ごとの主要技術発展の流れ）&lt;/li&gt;
&lt;li&gt;画像出典: &lt;a href=&#34;https://spri.kr/posts/view/21643?code=industry_trend&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://spri.kr/posts/view/21643?code=industry_trend&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>GitHub Copilot</title>
      <link>https://www.devkuma.com/jp/docs/ai/copilot/</link>
      <pubDate>Sat, 30 Aug 2025 14:50:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/copilot/</guid>
      <description>
        
        
        &lt;h2 id=&#34;copilotとは&#34;&gt;Copilotとは？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;は、GitHubとOpenAIが共同開発した&lt;strong&gt;AIベースのコード自動補完ツール&lt;/strong&gt;である。&lt;/li&gt;
&lt;li&gt;開発者がコードを書くとき、**コメント、関数シグネチャ、文脈（Context）**を分析し、最も適切なコードを自動で提案する。&lt;/li&gt;
&lt;li&gt;一般に**AIペアプログラマー（AI Pair Programmer）**と呼ばれる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;自動コード提案&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;1行、関数全体、さらにはテストコードまで自動生成&lt;/li&gt;
&lt;li&gt;繰り返しパターンを素早く補完&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コメントベース開発&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;// 2つの数を足す関数を書く&lt;/code&gt;のような自然言語コメントを入力するとコードを生成&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文脈理解&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;現在のファイルやプロジェクト内の他ファイルを参照し、より自然な提案が可能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多様な言語/フレームワーク対応&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Python、JavaScript、TypeScript、Go、Java、C#、C++など幅広い言語をサポート&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IDE統合&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;VS Code、JetBrains IDE、Neovimなど主要な開発環境にプラグインとして提供&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;活用事例&#34;&gt;活用事例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;反復作業の短縮&lt;/strong&gt;: boilerplateコード、CRUD API、テストコード作成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新しい言語の学習&lt;/strong&gt;: 不慣れな言語/フレームワーク文法を素早く習得&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アルゴリズム実装&lt;/strong&gt;: コメントで要件を書き、コードを自動生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;リファクタリング補助&lt;/strong&gt;: より良い実装方式を提案&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;利点&#34;&gt;利点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;開発速度の向上: 日常的な反復コーディングを大幅に削減&lt;/li&gt;
&lt;li&gt;学習効果: 知らないAPIや文法を例として示す&lt;/li&gt;
&lt;li&gt;コード一貫性の維持: チームルールに合わせてボイラープレートを自動化&lt;/li&gt;
&lt;li&gt;テスト作成補助: TDDサイクルを加速&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;限界欠点&#34;&gt;限界/欠点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;正確性が不完全&lt;/strong&gt;: 常に正しい、または最適なコードが出るわけではない&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セキュリティリスク&lt;/strong&gt;: 脆弱性を含む可能性がある（例: SQLインジェクション対策漏れ）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ライセンス問題&lt;/strong&gt;: 公開コードで学習しているため、一部コードが著作権問題になる可能性がある&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文脈の制限&lt;/strong&gt;: プロジェクト全体を深く理解するには限界がある&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;費用&#34;&gt;費用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;有料サブスクリプション&lt;/strong&gt;（2025年現在）
&lt;ul&gt;
&lt;li&gt;個人: 月額約&lt;strong&gt;10米ドル&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;企業: 月額約&lt;strong&gt;19米ドル/ユーザー&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;学生とオープンソース貢献者には無料提供&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;copilotとバイブコーディングの違い&#34;&gt;Copilotとバイブコーディングの違い&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Copilot&lt;/strong&gt;: 開発者が主導し、AIは提案する補助ツール&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;バイブコーディング&lt;/strong&gt;: AIが主導し、開発者は目標とフィードバックだけを与える創作スタイル&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;類似のaiコーディングツール&#34;&gt;類似のAIコーディングツール&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Amazon CodeWhisperer&lt;/strong&gt; (AWS)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tabnine&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursor IDE（ChatGPT内蔵IDE）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replit Ghostwriter&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Copilotは「AIペアプログラマー」として、コメントやコード文脈を基にリアルタイムでコード提案を行うツール&lt;/strong&gt;である。&lt;/li&gt;
&lt;li&gt;反復的で生産性の低い作業を減らし、初稿コードを素早く作れるが、必ず&lt;strong&gt;検証・レビュー・テスト&lt;/strong&gt;が必要である。&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>人工知能の中核技術</title>
      <link>https://www.devkuma.com/jp/docs/ai/core-technologies/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/core-technologies/</guid>
      <description>
        
        
        &lt;h2 id=&#34;機械学習&#34;&gt;機械学習&lt;/h2&gt;
&lt;p&gt;機械学習（ML, Machine Learning）は、&lt;strong&gt;コンピューターが明示的にプログラムされていなくても、データからパターンを学習し、予測や意思決定を行える技術&lt;/strong&gt;である。つまり、人が一つひとつルールを書かなくても、データを通じて自らルールや関連性を見つけ出す能力を指す。代表的なものに、教師あり学習、教師なし学習、強化学習がある。&lt;/p&gt;
&lt;h3 id=&#34;機械学習の種類&#34;&gt;機械学習の種類&lt;/h3&gt;
&lt;p&gt;機械学習は主に&lt;strong&gt;学習方式&lt;/strong&gt;によって三つに分けられる。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;教師あり学習（Supervised Learning）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定義&lt;/strong&gt;: 入力データと、それに対応する正解（Label）を一緒に提供してモデルを学習させる。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;: 入力データから正解を予測する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;メールのスパム分類（スパム/正常）&lt;/li&gt;
&lt;li&gt;住宅価格の予測（面積、立地 -&amp;gt; 価格）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アルゴリズム&lt;/strong&gt;: 線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、サポートベクターマシンなど&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;教師なし学習（Unsupervised Learning）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;定義&lt;/strong&gt;: 正解なしで入力データだけを使って学習し、隠れたパターンや構造を見つける。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;: データのクラスタリング、次元削減&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;例&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顧客セグメンテーション（購買パターンに基づくクラスタ）&lt;/li&gt;
&lt;li&gt;異常検知（不正取引の発見）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;アルゴリズム&lt;/strong&gt;: K-meansクラスタリング、階層的クラスタリング、PCA（主成分分析）など&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;強化学習（Reinforcement Learning）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定義&lt;/strong&gt;: 行動に対する報酬（Reward）と罰則（Penalty）を用いて最適な戦略を学習する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;: 逐次的な意思決定の最適化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;AlphaGoの囲碁&lt;/li&gt;
&lt;li&gt;自動運転車の経路学習&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アルゴリズム&lt;/strong&gt;: Q学習、Deep Q-Network（DQN）、方策勾配法など&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;機械学習の動作原理&#34;&gt;機械学習の動作原理&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;データ収集&lt;/strong&gt;: 学習するデータを集める（例: 画像、テキスト、センサーデータ）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;データ前処理&lt;/strong&gt;: 欠損値の除去、正規化、特徴量（Feature）の抽出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;モデル選択&lt;/strong&gt;: 問題の種類に合ったMLアルゴリズムを選択&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学習（Training）&lt;/strong&gt;: データを通じてモデルがルールやパターンを学習&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;評価（Evaluation）&lt;/strong&gt;: テストデータを通じてモデルの精度を測定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;予測（Prediction）&lt;/strong&gt;: 新しいデータに対する結果を予測&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;機械学習の実例&#34;&gt;機械学習の実例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;医療&lt;/strong&gt;: MRI、CT画像分析による疾病診断の支援&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;金融&lt;/strong&gt;: 信用スコア予測、不正取引の検知&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;電子商取引&lt;/strong&gt;: 個人向けの商品推薦&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自動運転&lt;/strong&gt;: 道路上の物体認識、経路決定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自然言語処理&lt;/strong&gt;: 機械翻訳、チャットボットの対話生成&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;機械学習の利点&#34;&gt;機械学習の利点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;データに基づく意思決定が可能&lt;/li&gt;
&lt;li&gt;大規模データの処理と複雑なパターン学習に効率的&lt;/li&gt;
&lt;li&gt;反復学習によって性能改善が可能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;機械学習の限界&#34;&gt;機械学習の限界&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;データ依存性&lt;/strong&gt;: 品質の高いデータが必ず必要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;過学習（Overfitting）&lt;/strong&gt;: 学習データだけに特化し、汎化能力が不足する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;説明力の不足&lt;/strong&gt;: モデルがなぜその判断を下したのか理解しにくい場合がある&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;倫理問題&lt;/strong&gt;: 偏ったデータにより不公平な結果が発生する可能性がある&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ディープラーニング&#34;&gt;ディープラーニング&lt;/h2&gt;
&lt;p&gt;ディープラーニング（Deep Learning）は、人工知能分野において&lt;strong&gt;人間の脳構造を模倣した人工ニューラルネットワーク（Artificial Neural Network）を基盤に、多層構造を通じてデータの複雑なパターンや特徴を学習する技術&lt;/strong&gt;を意味する。単純な機械学習モデルがデータの基本的な関係を学習するのに対し、ディープラーニングは複数の層（Layer）を通過しながら、より抽象化された特徴を学習することで、高次元の問題解決に強みを持つ。画像認識、音声認識、自然言語処理などで優れた性能を示している。&lt;/p&gt;
&lt;h3 id=&#34;ディープラーニングの中核原理&#34;&gt;ディープラーニングの中核原理&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;人工ニューラルネットワーク構造&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力層（Input Layer）: データが最初に入る層&lt;/li&gt;
&lt;li&gt;隠れ層（Hidden Layer）: 入力データを処理し、特徴を抽出する層&lt;/li&gt;
&lt;li&gt;出力層（Output Layer）: 最終的な予測や分類結果を出力する層&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;学習過程&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;順伝播（Forward Propagation）&lt;/strong&gt;: 入力データを通じて出力値を計算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;損失関数（Loss Function）&lt;/strong&gt;: 出力値と実際の値との差を測定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;逆伝播（Backpropagation）&lt;/strong&gt;: 誤差を基に重み（Weight）を調整&lt;/li&gt;
&lt;li&gt;反復的な学習を通じてモデルの予測精度を徐々に向上&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;活性化関数（Activation Function）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ニューラルネットワークの各ノードで出力値を変換し、非線形性を付与&lt;/li&gt;
&lt;li&gt;代表的な関数: シグモイド（Sigmoid）、ReLU、双曲線正接（Tanh）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;ディープラーニングの特徴&#34;&gt;ディープラーニングの特徴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自動特徴抽出&lt;/strong&gt;: データから有用な特徴を人が一つひとつ定義しなくても学習可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多層構造&lt;/strong&gt;: 隠れ層が多いほど複雑なパターンを学習可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大規模データへの適合&lt;/strong&gt;: ビッグデータとGPU演算によって効率的に学習&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ディープラーニングの主な応用分野&#34;&gt;ディープラーニングの主な応用分野&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;画像認識&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;自動運転車の道路物体認識、医療画像診断など&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;音声認識&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;音声アシスタント、リアルタイム通訳システム&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自然言語処理&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;機械翻訳、チャットボット、文書要約&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推薦システム&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;電子商取引の個別商品推薦、動画推薦アルゴリズム&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;ディープラーニングの利点&#34;&gt;ディープラーニングの利点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;複雑で高次元のデータでも高い精度を達成可能&lt;/li&gt;
&lt;li&gt;特徴抽出の自動化によりデータ前処理の負担を軽減&lt;/li&gt;
&lt;li&gt;さまざまな分野で従来手法を大きく上回る性能を発揮&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ディープラーニングの限界&#34;&gt;ディープラーニングの限界&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;学習に大量のデータが必要&lt;/strong&gt;: 十分なデータがないと性能が低下&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;説明力の不足&lt;/strong&gt;: モデルの判断過程が不透明で、「ブラックボックス」問題がある&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;計算コストと時間の消費&lt;/strong&gt;: GPUおよび大規模な計算資源が必要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;過学習のリスク&lt;/strong&gt;: 学習データだけに最適化され、汎化能力が不足する&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;自然言語処理nlp&#34;&gt;自然言語処理（NLP）&lt;/h2&gt;
&lt;p&gt;自然言語処理（NLP, Natural Language Processing）は、&lt;strong&gt;人間が使う言語、すなわち自然言語をコンピューターが理解し、分析し、生成できるようにする人工知能技術分野&lt;/strong&gt;を意味する。これにより、機械はテキストや音声形式の言語データを処理し、意味を把握したり、適切な応答を生成したりできる。翻訳、質疑応答、チャットボット、文書要約など多様な応用事例があり、近年はGPT系モデルが大きな成果を上げている。&lt;/p&gt;
&lt;h3 id=&#34;自然言語処理の主な目標&#34;&gt;自然言語処理の主な目標&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;言語理解（Language Understanding）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力された文の意味、文脈、意図などを把握&lt;/li&gt;
&lt;li&gt;例: 質問応答システム、感情分析&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;言語生成（Language Generation）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機械が人に理解できる自然な文を生成&lt;/li&gt;
&lt;li&gt;例: チャットボットの対話、自動文書要約、機械翻訳&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;自然言語処理の中核技術&#34;&gt;自然言語処理の中核技術&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;形態素解析（Morphological Analysis）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文を構成する最小の意味単位（形態素）に分離&lt;/li&gt;
&lt;li&gt;例: &amp;ldquo;나는 학교에 간다&amp;rdquo; -&amp;gt; [나/는, 학교/에, 가/ㄴ다]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;品詞タグ付け（Part-of-Speech Tagging）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各単語に名詞、動詞、形容詞などの品詞を付与&lt;/li&gt;
&lt;li&gt;文の構造と意味分析の基盤を整える&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;意味解析（Semantic Analysis）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文や単語の意味をコンピューターが理解できる形に変換&lt;/li&gt;
&lt;li&gt;例: 「銀行」が金融機関なのか川岸なのかを判別&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;構文解析（Syntactic Parsing）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文の文法構造を分析し、主語、目的語、動詞の関係を確認&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;テキスト埋め込み（Text Embedding）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;単語、文、文書などを数値ベクトルに変換&lt;/li&gt;
&lt;li&gt;機械学習モデルが自然言語データを処理できるようにする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;言語モデル（Language Model）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文脈とパターンを学習し、次の単語を予測&lt;/li&gt;
&lt;li&gt;GPT、BERTなどの最新モデルが代表的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;自然言語処理の応用事例&#34;&gt;自然言語処理の応用事例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;機械翻訳&lt;/strong&gt;: Google翻訳、DeepLなど&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;チャットボットおよび対話型AI&lt;/strong&gt;: 顧客相談の自動化、個人チューターAI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;テキスト要約&lt;/strong&gt;: ニュース記事、論文、報告書の自動要約&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;感情分析&lt;/strong&gt;: SNS、レビューのデータを基にした肯定・否定分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;音声認識および音声合成&lt;/strong&gt;: Siri、Alexa、TTS（Text-to-Speech）システム&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自然言語処理の利点&#34;&gt;自然言語処理の利点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;人間と機械の自然な相互作用が可能&lt;/li&gt;
&lt;li&gt;膨大なテキストデータを自動で分析し活用可能&lt;/li&gt;
&lt;li&gt;翻訳、検索、推薦など多様なサービスの高度化が可能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自然言語処理の限界&#34;&gt;自然言語処理の限界&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文脈理解の限界&lt;/strong&gt;: 複雑な文脈や曖昧な表現の理解が難しい&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;言語および文化的バイアスの問題&lt;/strong&gt;: 特定の言語や文化のデータに依存するとバイアスが発生&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;データ依存性&lt;/strong&gt;: 品質の高い学習データがなければ精度が低下&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;計算資源が必要&lt;/strong&gt;: 大規模言語モデルの学習には膨大な計算コストが必要&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;強化学習&#34;&gt;強化学習&lt;/h2&gt;
&lt;p&gt;強化学習は、報酬と罰則を基に最適な行動戦略を学習する技術である。AlphaGoが囲碁対局で勝利した事例が代表的である。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/alphago-leesedol.png&#34; alt=&#34;AlphaGoと李世ドルの対局&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;事例: AlphaGoと李世ドルの対局は、強化学習の実践的成果を世界に刻み込んだ出来事だった。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;強化学習は、エージェント（Agent）が環境と相互作用しながら、経験を通じて最適な行動戦略を学習する人工知能技術を意味する。エージェントは現在の状態（State）を観察し、可能な複数の行動（Action）の中から一つを選択し、その選択に対する報酬（Reward）や罰則（Penalty）を受ける。このフィードバックを通じて、エージェントは長期的に最大の報酬を得られる行動方針（Policy）を徐々に改善する。強化学習の核心は、正解を明示的に教えられなくても、反復的な試行錯誤を通じて自ら最適な戦略を発見する点にある。代表的な事例として&lt;strong&gt;AlphaGo&lt;/strong&gt;がある。AlphaGoは数多くの囲碁対局シミュレーションと強化学習を繰り返し、囲碁の最適な手を学習した。この過程で人間のチャンピオンである李世ドルに勝利する成果を収めた。これにより、強化学習が複雑な問題解決にも効果的であることを証明した。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>GPTと生成AI</title>
      <link>https://www.devkuma.com/jp/docs/ai/gpt/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/gpt/</guid>
      <description>
        
        
        &lt;h2 id=&#34;gptの概念&#34;&gt;GPTの概念&lt;/h2&gt;
&lt;p&gt;GPT（Generative Pre-trained Transformer）は、事前学習によって膨大な言語パターンを習得した後、新しい文を生成できる人工知能モデルである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generative（生成型）&lt;/strong&gt;: 新しい文を生成できることを意味する。質問への回答を作成したり、文章作成を依頼されると新しい文を作り出したりできる。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-trained（事前学習済み）&lt;/strong&gt;: 膨大なデータであらかじめ学習されたモデルを意味する。書籍、Webサイト、ニュースなど多様なテキストを基に、言語の規則や表現を習得している。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformer（トランスフォーマー）&lt;/strong&gt;: 文の意味を効果的に理解し処理するために設計されたモデル構造の名称である。これはGoogleが開発した技術である。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;動作方式&#34;&gt;動作方式&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;事前学習（Pre-training）&lt;/strong&gt;
GPTはインターネット上に存在する膨大なテキストデータを学習し、言語のパターン、文法、意味などを習得する。たとえば、「空が青い理由は」という文が与えられると、その後に「太陽光が散乱するためである」という記述がよく現れることを学習する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;推論（Inference）&lt;/strong&gt;
事前学習が完了したGPTは、ユーザーから質問を入力されると、それに適した自然な回答を生成する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;文脈理解（Context Understanding）&lt;/strong&gt;
GPTは以前の文脈を参照し、状況に合った応答をしようとする。たとえば、会話の中で前に「春」に関する言及があった場合、花や天気のような話題をよりよく連想して活用できる。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;gptの利点&#34;&gt;GPTの利点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多様な言語タスクを実行可能&lt;/strong&gt;
質問応答、文章作成、翻訳、要約、文法校正など、さまざまな言語処理タスクを実行できる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;自然な表現を生成&lt;/strong&gt;
GPTベースのチャットボットは、会話体の文を自然に生成でき、人と会話しているような体験を提供する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;迅速な反応&lt;/strong&gt;
望む情報を数秒以内に生成して提供する。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgptの登場&#34;&gt;ChatGPTの登場&lt;/h2&gt;
&lt;p&gt;ChatGPTは、OpenAIが開発した**大規模言語モデル（LLM, Large Language Model）**ベースの対話型人工知能サービスである。GPT（Generative Pre-trained Transformer）技術を基盤に、人間に近い自然な対話を行い、質疑応答、文書作成、翻訳、要約など多様な言語処理タスクを支援する。自然な文脈理解と多言語対応能力が強みである。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chatgpt.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://chatgpt.com/&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;名称の意味&#34;&gt;名称の意味&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chat&lt;/strong&gt;: ユーザーとの対話インターフェースを意味する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT&lt;/strong&gt;: 文生成能力を備え、事前学習されたトランスフォーマーアーキテクチャベースのモデルである。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「GPT技術を基盤とした対話型サービス」という意味を含んでいる。&lt;/p&gt;
&lt;h3 id=&#34;特徴と機能&#34;&gt;特徴と機能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;多様な活用性
&lt;ul&gt;
&lt;li&gt;質問応答、文章作成、翻訳、要約、プログラム作成（コード支援）などが可能である。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;自然な対話能力
&lt;ul&gt;
&lt;li&gt;人と会話しているような自然な応答を生成できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;多言語対応&lt;/li&gt;
&lt;li&gt;韓国語を含むさまざまな言語でコミュニケーションできる。&lt;/li&gt;
&lt;li&gt;技術的柔軟性
&lt;ul&gt;
&lt;li&gt;テキスト、コード、表、JSONなど多様な形式の出力を生成でき、ノーコード環境でも活用できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多様な言語タスクを実行可能&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;質問応答、文章作成、翻訳、要約、文法校正、コード作成など幅広く活用できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自然な対話生成&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;人と会話しているような自然な言語表現を生成できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多言語対応&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;韓国語を含む多数の言語でコミュニケーションできる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;出力形式の柔軟性&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;テキストだけでなく、コード、表、JSONなど多様な形式で結果を提供できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;技術的基盤&#34;&gt;技術的基盤&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;事前学習（Pre-training）&lt;/strong&gt;: Web、書籍、論文、ソースコードなど膨大なテキストデータを基に、言語の構造と意味を学習した。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformerアーキテクチャ&lt;/strong&gt;: 文脈理解と文生成のための中核技術であり、Self-Attentionメカニズムを活用して単語間の関係を効果的に把握する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;活用事例&#34;&gt;活用事例&lt;/h2&gt;
&lt;p&gt;ChatGPTの活用範囲は非常に広く、さまざまな産業や分野で実際に適用されている。代表的な活用事例は次のとおりである。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;カスタマーサービスの自動化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企業の顧客支援部門では、ChatGPTを活用して24時間オンライン相談サービスを提供している。これにより、顧客の基本的な問い合わせを迅速に処理でき、担当者が複雑な問題に集中できるよう支援する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;教育および学習支援&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教育現場でChatGPTは、学生一人ひとりの学習速度とレベルに合わせた個別学習を提供する。学生が質問を入力すると、AIが分かりやすい回答を提供し、追加学習資料を推薦することで学習効率を高める。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;プログラミングコード支援&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プログラマーはChatGPTを活用して、コード作成やデバッグの支援を受けることができる。反復的なコード作成作業、関数テンプレート生成、エラー検討などを自動化することで、開発速度を向上させ、生産性を高める。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;コンテンツ生成および要約&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPTは、記事要約、広告文作成、報告書作成など多様なコンテンツ生成業務を実行できる。また、膨大な文書を要約して重要情報を素早く伝えることで、情報処理の効率を高める。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;限界と課題&#34;&gt;限界と課題&lt;/h2&gt;
&lt;p&gt;ChatGPTの活用には明確な利点がある一方で、次のような限界と課題もある。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;事実誤りが発生する可能性&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPTは学習済みデータに基づいて回答を生成するため、ときどき誤った情報やエラーが含まれることがある。したがって、重要な意思決定に活用する際には追加の検証が必要である。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;最新情報の反映に関する限界&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデルが学習された時点以降の最新情報や出来事は反映されない場合がある。リアルタイム情報が必要な分野では、補助的なツールとして活用するのが適切である。&lt;/li&gt;
&lt;li&gt;ただし、最新のGPTモデルはインターネット検索機能と連携して、これを補完することもある。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;データ利用と著作権問題&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPTが学習したデータには著作権が存在する場合があり、生成されたコンテンツも知的財産権の問題と結びつく可能性がある。したがって、商業利用時には法的問題に注意する必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;予測に基づく動作原理&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;GPTは単語の次の位置を確率的に予測する方式で動作する。したがって、人間のような深い理解や感情を持つわけではなく、意味を「理解」するというよりは、パターンを「予測」していると見るのが妥当である。&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
    </item>
    
    <item>
      <title>LLM（Large Language Model）</title>
      <link>https://www.devkuma.com/jp/docs/ai/llm/</link>
      <pubDate>Sun, 24 Aug 2025 13:14:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/llm/</guid>
      <description>
        
        
        &lt;h2 id=&#34;llmの概要&#34;&gt;LLMの概要&lt;/h2&gt;
&lt;p&gt;LLM（Large Language Models、大規模言語モデル）は、膨大な量のテキストデータを学習し、&lt;strong&gt;自然言語を理解して生成できる人工知能モデル&lt;/strong&gt;である。主に&lt;strong&gt;ディープラーニングベースのTransformer構造&lt;/strong&gt;を活用しており、人間の言語特性を統計的に把握することで、高度なテキスト生成および処理能力を備えている。&lt;/p&gt;
&lt;p&gt;LLMは今日のAIの中核として、言語ベースのアプリケーションやシステム設計で非常に重要な役割を果たしている。&lt;/p&gt;
&lt;h2 id=&#34;llmの動作原理&#34;&gt;LLMの動作原理&lt;/h2&gt;
&lt;h3 id=&#34;学習方式とtransformerアーキテクチャ&#34;&gt;学習方式とTransformerアーキテクチャ&lt;/h3&gt;
&lt;p&gt;LLMは数千億個のテキスト例を通じて、&lt;strong&gt;教師なし学習&lt;/strong&gt;方式で事前学習（pre-training）を行う。&lt;br&gt;
特に、&lt;strong&gt;Transformer構造&lt;/strong&gt;はセルフアテンション（self-attention）によって文脈の関係を理解し、従来の再帰型ニューラルネットワーク（RNN）より並列処理が可能なため、学習効率が非常に高い。&lt;/p&gt;
&lt;h3 id=&#34;パラメーターと埋め込み&#34;&gt;パラメーターと埋め込み&lt;/h3&gt;
&lt;p&gt;「大規模」という名称は、数十億から数千億個に及ぶ「パラメーター（parameter）」の規模を意味する。この膨大なパラメーターによって、言語の複雑な文脈やニュアンスを捉えることができる。
また、「埋め込み（embedding）」は単語を多次元ベクトルに変換し、意味的類似性を数値的に表現することで文脈理解を助ける。&lt;/p&gt;
&lt;h2 id=&#34;応用分野&#34;&gt;応用分野&lt;/h2&gt;
&lt;p&gt;LLMは非常に柔軟に活用でき、代表的な応用例は次のとおりである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;生成AI&lt;/strong&gt;: ユーザープロンプトに従って、エッセイ、翻訳、要約などのテキストを生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コード生成&lt;/strong&gt;: GitHub Copilot、AWS CodeWhispererなど、自然言語からコード作成を支援&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;テキスト分類および感情分析&lt;/strong&gt;: 顧客フィードバック分類、文書クラスタリングなど&lt;/li&gt;
&lt;li&gt;その他: 知識ベースの質疑応答（KI-NLP）、チャットボット、カスタマーサービス自動化など&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;学習方法の種類&#34;&gt;学習方法の種類&lt;/h2&gt;
&lt;p&gt;LLMを特定用途に合わせて活用する方法には、次の三つがある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ゼロショット学習（Zero-Shot）&lt;/strong&gt;: 追加学習なしに一般的なプロンプトだけで多様な作業を実行可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;フューショット学習（Few-Shot）&lt;/strong&gt;: 少量の例を提供することで性能を向上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ファインチューニング（Fine-Tuning）&lt;/strong&gt;: 特定データでパラメーターを追加学習させ、特化した適用を可能にする&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;重要性と期待効果&#34;&gt;重要性と期待効果&lt;/h2&gt;
&lt;p&gt;LLMの導入は、企業や組織にさまざまな利点をもたらす。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;業務自動化&lt;/strong&gt;: カスタマーサポート、文書要約、コンテンツ生成など、言語ベース作業の自動化により生産性が向上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拡張性と柔軟性&lt;/strong&gt;: 一つのモデルが翻訳、要約、質疑応答など複数の作業に柔軟に対応&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;革新の促進&lt;/strong&gt;: 知識抽出、創作支援、対話型インターフェースなど、多様な将来可能性の基盤を提供&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;限界と考慮事項&#34;&gt;限界と考慮事項&lt;/h2&gt;
&lt;p&gt;LLMを活用する際には、次のような限界も考慮する必要がある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;高いリソース要求&lt;/strong&gt;: 数十億個のパラメーターベースのモデルを学習・運用するには、相当な計算資源が必要である。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;潜在的なバイアスとエラー&lt;/strong&gt;: 学習データの限界や偏りがモデル出力に反映される可能性があり、精度に対する継続的な改善が必要である。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プライバシーとセキュリティへの懸念&lt;/strong&gt;: 個人的または機密性の高いデータとの関連可能性に備える必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;説明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;定義&lt;/td&gt;
          &lt;td&gt;膨大なテキストを基盤とするディープラーニングモデルで、自然言語の理解・生成が可能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;動作原理&lt;/td&gt;
          &lt;td&gt;Transformerベース、セルフアテンション・埋め込み・数十億パラメーター&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;応用分野&lt;/td&gt;
          &lt;td&gt;テキスト生成、コード生成、分類、要約、チャットボットなど&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;学習方式&lt;/td&gt;
          &lt;td&gt;Zero-Shot、Few-Shot、Fine-Tuning&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;利点&lt;/td&gt;
          &lt;td&gt;自動化、拡張性、創造的活用の可能性&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;限界&lt;/td&gt;
          &lt;td&gt;リソース要求、バイアス・精度問題、セキュリティリスクなど&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
      <category>LLM</category>
      
    </item>
    
    <item>
      <title>MCP（Model Context Protocol）</title>
      <link>https://www.devkuma.com/jp/docs/ai/mcp/</link>
      <pubDate>Sun, 24 Aug 2025 13:14:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/mcp/</guid>
      <description>
        
        
        &lt;h2 id=&#34;mcpの概要&#34;&gt;MCPの概要&lt;/h2&gt;
&lt;p&gt;Model Context Protocol（MCP）は、&lt;strong&gt;AI、特に大規模言語モデル（LLM）が外部データソースやツールと効果的に相互作用できるようにするオープン標準プロトコル&lt;/strong&gt;である。&lt;/p&gt;
&lt;p&gt;このプロトコルは、アプリケーションがLLMにコンテキスト（Context）を一貫した方式で渡せるように設計されている。一言でいえば、&lt;strong&gt;AI用のUSB-Cポート&lt;/strong&gt;という比喩で説明されることもある。USB-Cがさまざまな機器を統一された形式で接続するように、MCPもAIモデルと多様なリソースを標準化された方式で接続する。&lt;/p&gt;
&lt;p&gt;つまり、&lt;strong&gt;AIモデルがさまざまな外部システムと接続できるようにする共通インターフェース&lt;/strong&gt;である。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/mcp-architecture.png&#34; alt=&#34;MCP Architecture&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;標準化されたインターフェース&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデルが「データソース / ツール / アプリケーション」にアクセスできる共通規約を提供する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;プラグイン型構造&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定のアプリケーションに依存せず、どのモデルでもMCPをサポートすれば同じ方式で拡張できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;セキュリティと制御&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデルがアクセスできる範囲を制限し、ユーザーが許可したリソースだけにアクセスするよう設計されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;開発者に優しい&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI、Anthropicなど複数のAIモデルで共通利用できるため、「一度作ったMCPツールはどこでも使える」。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;例&#34;&gt;例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;モデルが「データベース問い合わせ」を必要とする場合:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;モデル -&amp;gt; MCP -&amp;gt; DB Adapter -&amp;gt; Database
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;モデルが「Web API呼び出し」を行う必要がある場合:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;モデル -&amp;gt; MCP -&amp;gt; HTTP Adapter -&amp;gt; 外部REST API
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、MCPは&lt;strong&gt;AIのプラグインエコシステムを標準化&lt;/strong&gt;する基盤技術と見ることができる。&lt;/p&gt;
&lt;h3 id=&#34;導入背景と必要性&#34;&gt;導入背景と必要性&lt;/h3&gt;
&lt;p&gt;AIモデルは本質的に&lt;strong&gt;テキストベース&lt;/strong&gt;でのみ入出力を行う。しかし実際の活用では、DB照会、API呼び出し、ファイル入出力など多様な作業が必要である。これまでは&lt;strong&gt;プラグイン、LangChain、独自APIブリッジ&lt;/strong&gt;のような個別ソリューションを使う必要があったが、これらを&lt;strong&gt;標準化されたプロトコル&lt;/strong&gt;としてまとめたものがMCPである。&lt;/p&gt;
&lt;p&gt;従来、AIアプリケーションが外部システムと相互作用するには、&lt;strong&gt;モデルごと、ツールごとにそれぞれカスタム統合実装が必要&lt;/strong&gt;だった。そのため開発と保守の複雑性が大きく増え、これは&lt;strong&gt;M x N問題&lt;/strong&gt;と表現された。MCPはこれを&lt;strong&gt;M + N構造に単純化&lt;/strong&gt;し、AIアプリケーションが多様なツールと標準化された方式で接続できるよう支援する。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/mcp-before-after.webp&#34; alt=&#34;MCP Architecture&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;画像出典: &lt;a href=&#34;https://www.descope.com/learn/post/mcp&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.descope.com/learn/post/mcp&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;アーキテクチャと動作原理&#34;&gt;アーキテクチャと動作原理&lt;/h2&gt;
&lt;h3 id=&#34;クライアントサーバー構造&#34;&gt;クライアント・サーバー構造&lt;/h3&gt;
&lt;p&gt;MCPは&lt;strong&gt;クライアント・サーバーアーキテクチャ&lt;/strong&gt;を採用している。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCPクライアント&lt;/strong&gt;は、Claude DesktopなどのAIアプリケーションである。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCPサーバー&lt;/strong&gt;は、ファイルシステム、データベース、APIなどの外部リソースを提供する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;通信方式&#34;&gt;通信方式&lt;/h3&gt;
&lt;p&gt;MCPは&lt;strong&gt;JSON-RPC 2.0&lt;/strong&gt;を基盤としてリクエスト（Request）とレスポンス（Response）を交換し、これは&lt;strong&gt;標準化されたメッセージ交換方式によって相互運用性を高める&lt;/strong&gt;。
また、&lt;strong&gt;ローカルプロセス間通信（stdioベース）&lt;strong&gt;と&lt;/strong&gt;HTTP + SSE（Server-Sent Events）ベース&lt;/strong&gt;通信の両方をサポートする。&lt;/p&gt;
&lt;h3 id=&#34;サーバーの役割&#34;&gt;サーバーの役割&lt;/h3&gt;
&lt;p&gt;MCPサーバーは次のような機能を実行する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tool Registry&lt;/strong&gt;: 利用可能なツールと機能の一覧を管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: アクセス権限を検証&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Request Handler&lt;/strong&gt;: クライアントのリクエストを処理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response Formatter&lt;/strong&gt;: 結果をAIモデルが理解できる形式に加工&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AIアプリケーションはサーバーに「利用可能なツール一覧」を要求し、それを基に適切なツールを選択して活用できる。&lt;/p&gt;
&lt;h2 id=&#34;開発者親和性と拡張性&#34;&gt;開発者親和性と拡張性&lt;/h2&gt;
&lt;p&gt;AnthropicはMCPを&lt;strong&gt;オープンソース標準&lt;/strong&gt;として公開し、&lt;strong&gt;Python、TypeScript、Java、Kotlin、C#など主要言語向けSDK&lt;/strong&gt;も提供している。これにより、&lt;strong&gt;クライアントおよびサーバー実装が概ね簡単である&lt;/strong&gt;という利点が得られる。&lt;/p&gt;
&lt;h2 id=&#34;活用効果と利点&#34;&gt;活用効果と利点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;明確な指示&lt;/strong&gt;: LLMがどのデータを扱うかを明確に指定できる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;曖昧さの除去&lt;/strong&gt;: 複数の情報源を明確に区別して参照できる&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特化した処理の支援&lt;/strong&gt;: 特定のデータ形式に合わせた専用処理が可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コンテキスト例&lt;/strong&gt;: ファイルシステム、DB、クラウドサービスなど多様なコンテキストを一緒に活用可能&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これらの利点により、&lt;strong&gt;AIの活動範囲が拡張され、より正確で文脈に合った応答&lt;/strong&gt;を提供できるようになる。&lt;/p&gt;
&lt;h2 id=&#34;導入時期とエコシステム動向&#34;&gt;導入時期とエコシステム動向&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MCPは&lt;strong&gt;2024年11月にAnthropicがオープンソースとして公開&lt;/strong&gt;し、&lt;strong&gt;2025年初めから開発者コミュニティと主要AIツールでの採用が急速に増加&lt;/strong&gt;した。&lt;/li&gt;
&lt;li&gt;C#向け公式SDKのリリースに関する言及もあり、現在は多数のMCPサーバーが稼働しており、&lt;strong&gt;セキュリティアーキテクチャとデータ保護&lt;/strong&gt;も重要な関心事になっている。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;まとめ表&#34;&gt;まとめ表&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;説明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定義&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;AIモデルと外部データ/ツールを接続するオープン標準プロトコル&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;導入背景&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;個別統合の複雑性を解消し、より柔軟な拡張性を確保&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;構造&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;クライアント・サーバー構造、JSON-RPC、標準メッセージ交換&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SDK&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Python、TS、Java、Kotlin、C#などを提供&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;利点&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;明確性、拡張性、自動化、セキュリティ強化など&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;現在の動向&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;公開後に急成長中で、セキュリティと実用性が拡大中&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;気になる部分がさらにあれば、いつでもお知らせください。たとえば、MCPサーバーの直接構築事例や技術活用の流れなども説明できます。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
      <category>MCP</category>
      
    </item>
    
    <item>
      <title>MCPサーバー</title>
      <link>https://www.devkuma.com/jp/docs/ai/mcp-server/</link>
      <pubDate>Sat, 30 Aug 2025 14:55:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/mcp-server/</guid>
      <description>
        
        
        &lt;h2 id=&#34;mcpサーバーとは&#34;&gt;MCPサーバーとは？&lt;/h2&gt;
&lt;p&gt;MCPサーバーは、&lt;strong&gt;AIモデルが外部リソース（ツール、データ、APIなど）にアクセスできるよう接続する標準化されたインターフェースを提供する役割&lt;/strong&gt;を持つ。&lt;br&gt;
簡単にいえば、&lt;strong&gt;AIが使えるツール集を提供するサーバー&lt;/strong&gt;である。&lt;/p&gt;
&lt;h2 id=&#34;構造&#34;&gt;構造&lt;/h2&gt;
&lt;p&gt;MCPは大きく**クライアント（Client）&lt;strong&gt;と&lt;/strong&gt;サーバー（Server）**に分かれる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCPクライアント&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;LLM環境に接続されたアプリケーション（例: IDE、Chat UI、Notebookなど）&lt;/li&gt;
&lt;li&gt;ユーザーのプロンプトを受け取りモデルを実行し、必要に応じてMCPサーバーにリクエストする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCPサーバー&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;複数の&lt;strong&gt;リソース/ツール/関数&lt;/strong&gt;を管理し提供する&lt;/li&gt;
&lt;li&gt;標準化されたプロトコル（JSON-RPCベース）を通じてクライアントと通信&lt;/li&gt;
&lt;li&gt;例: DB照会サーバー、ファイルシステムサーバー、API呼び出しサーバー&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/mcp-client-server.png&#34; alt=&#34;MCP Client Server&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;サーバーが提供するもの&#34;&gt;サーバーが提供するもの&lt;/h2&gt;
&lt;p&gt;MCPサーバーは大きく四つの機能を提供する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;リソース（Resources）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;データベース、ファイル、文書、APIレスポンスなど&lt;/li&gt;
&lt;li&gt;例: &lt;code&gt;resource://db/customers&lt;/code&gt;, &lt;code&gt;resource://filesystem/project/README.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール（Tools）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;呼び出し可能な関数/アクション&lt;/li&gt;
&lt;li&gt;例: &lt;code&gt;searchCustomer(name)&lt;/code&gt;, &lt;code&gt;sendEmail(to, subject, body)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プロンプト（Prompts）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;あらかじめ定義されたテンプレートを提供&lt;/li&gt;
&lt;li&gt;例: 「SQLクエリ生成用プロンプト」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;イベント（Events）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;サーバーで発生する通知や変更イベントをリアルタイムで伝達&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;動作フロー例&#34;&gt;動作フロー例&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;ユーザーがIDE内で「DBから顧客『洪吉童』を検索して」と入力&lt;/li&gt;
&lt;li&gt;LLMが判断し、MCPクライアントを通じて「searchCustomer」ツールの呼び出しを要求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCPクライアント -&amp;gt; MCPサーバー&lt;/strong&gt;へリクエストを伝達&lt;/li&gt;
&lt;li&gt;MCPサーバーが実際のDB照会を実行し、結果を返す&lt;/li&gt;
&lt;li&gt;LLMが結果をユーザーに分かりやすい文で整理して表示&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;mcpサーバーの例&#34;&gt;MCPサーバーの例&lt;/h2&gt;
&lt;p&gt;たとえば、ファイルシステムMCPサーバーなら次のようになる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resource&lt;/strong&gt;: プロジェクトフォルダー内のファイル（&lt;code&gt;/src/main.kt&lt;/code&gt;, &lt;code&gt;/README.md&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;: ファイルの読み取り、書き込み、検索機能（&lt;code&gt;readFile&lt;/code&gt;, &lt;code&gt;writeFile&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts&lt;/strong&gt;: 「このコードをリファクタリングして」のようなテンプレート&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このように構成されたサーバーを接続すると、AIはプロジェクトファイルを直接探索・修正できるようになる。&lt;/p&gt;
&lt;h2 id=&#34;比喩&#34;&gt;比喩&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCPサーバー&lt;/strong&gt; = 「ホテルのコンシェルジュ」
&lt;ul&gt;
&lt;li&gt;客（LLM）が「観光地を推薦して」と言うと、コンシェルジュが複数のAPI/DBを裏側で扱い、整理された情報を提供する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCPクライアント&lt;/strong&gt; = 「ホテルのフロント」
&lt;ul&gt;
&lt;li&gt;客と直接会話し、リクエストを受け取ってコンシェルジュへ伝える&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;MCPサーバーは、LLMが外部ツールやデータを安全かつ一貫した方式で活用できるよう、標準化されたインターフェースを提供するバックエンドの役割&lt;/strong&gt;を果たす。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>RAG（Retrieval-Augmented Generation）</title>
      <link>https://www.devkuma.com/jp/docs/ai/rag/</link>
      <pubDate>Sat, 30 Aug 2025 13:09:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/rag/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ragretrieval-augmented-generationの概念&#34;&gt;RAG（Retrieval-Augmented Generation）の概念&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAG = 検索（Retrieval）+ 生成（Generation）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;LLM（大規模言語モデル）が自分の内部知識だけで答えを生成するのではなく、外部データベース（例: 文書、ベクトルDB、Wiki、社内資料など）から関連情報を検索し、その結果を基に回答を生成する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、単に「モデルが知っていること」だけを使うのではなく、「必要なときに外部で調べて答える」賢いアシスタントのような概念である。&lt;/p&gt;
&lt;h2 id=&#34;なぜ必要なのか&#34;&gt;なぜ必要なのか？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LLMの知識限界を克服
&lt;ul&gt;
&lt;li&gt;LLMは学習時点以降の最新情報を知らない。&lt;/li&gt;
&lt;li&gt;たとえば、GPTのようなモデルは学習時点以降の最新情報を知らない。&lt;/li&gt;
&lt;li&gt;RAGを使うと、DBやWebから取得した資料を活用できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;幻覚（Hallucination）を減らす
&lt;ul&gt;
&lt;li&gt;LLMは知らないことを作り上げる場合がある。&lt;/li&gt;
&lt;li&gt;外部の根拠資料を活用すると、回答の信頼性を高められる。&lt;/li&gt;
&lt;li&gt;根拠のない回答ではなく、実際の文書やDBを根拠に回答できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;カスタム知識の活用
&lt;ul&gt;
&lt;li&gt;企業内部文書、報告書、顧客FAQ、論文、コードベースなどの&lt;strong&gt;専用データ&lt;/strong&gt;をLLMが使用できる。&lt;/li&gt;
&lt;li&gt;社内の機密文書を学習させなくても活用できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ragの動作構造&#34;&gt;RAGの動作構造&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;クエリ（Query）入力
&lt;ul&gt;
&lt;li&gt;ユーザーが質問を入力する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;検索（Retrieval）段階
&lt;ul&gt;
&lt;li&gt;質問をベクトル化（埋め込み）した後、ベクトルデータベースから関連文書を検索する。&lt;/li&gt;
&lt;li&gt;代表的なDB: Pinecone、Weaviate、Milvus、FAISSなど。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;生成（Generation）段階
&lt;ul&gt;
&lt;li&gt;LLMが検索された文書を参照して回答を生成し、一緒に伝達する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/rag.png&#34; alt=&#34;RAG&#34;&gt;&lt;/p&gt;
&lt;p&gt;つまり、&lt;strong&gt;「探して -&amp;gt; 参照して -&amp;gt; 回答する」構造&lt;/strong&gt;である。&lt;/p&gt;
&lt;h2 id=&#34;例&#34;&gt;例&lt;/h2&gt;
&lt;p&gt;たとえば、「当社の2023年売上はいくら？」という質問が入った場合:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM単独: 「2023年の売上は1億ドルです。」（根拠なし、誤っている可能性あり）&lt;/li&gt;
&lt;li&gt;RAG活用: 会社内部の財務報告書を検索 -&amp;gt; 関連データを取得 -&amp;gt; 「2023年の当社売上は9,200億ウォンで、前年比8%成長しました。」（根拠のある回答）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;比喩で理解する&#34;&gt;比喩で理解する&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM単独&lt;/strong&gt;: 記憶力のよい人。ただし最新情報は知らない場合がある。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG使用&lt;/strong&gt;: 記憶力のよい人が&lt;strong&gt;辞書や検索エンジン&lt;/strong&gt;を参照して回答すること。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ragとfine-tuningの比較&#34;&gt;RAGとFine-tuningの比較&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fine-tuning: モデル自体を追加学習し、新しい知識を「内在化」する&lt;/li&gt;
&lt;li&gt;RAG: モデルはそのままにし、外部資料を検索して活用する&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方法&lt;/th&gt;
          &lt;th&gt;利点&lt;/th&gt;
          &lt;th&gt;欠点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Fine-tuning&lt;/td&gt;
          &lt;td&gt;応答が速く自然&lt;/td&gt;
          &lt;td&gt;データを更新するたびに再学習が必要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG&lt;/td&gt;
          &lt;td&gt;常に最新/カスタム情報を反映可能、素早く構築可能&lt;/td&gt;
          &lt;td&gt;検索品質によって回答品質が左右される&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;実務では、RAGに必要に応じて一部Fine-tuningを組み合わせて使うことが多い。&lt;/p&gt;
&lt;h2 id=&#34;rag実装に使われる技術スタック&#34;&gt;RAG実装に使われる技術スタック&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;埋め込みモデル: OpenAI Embeddings、Sentence-BERTなど&lt;/li&gt;
&lt;li&gt;ベクトルDB: Pinecone、Weaviate、Milvus、FAISS&lt;/li&gt;
&lt;li&gt;LLM: GPT、Claude、LLaMA、Geminiなど&lt;/li&gt;
&lt;li&gt;フレームワーク: LangChain、LlamaIndex、Haystack&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;RAGはLLMが検索システムを併用し、信頼できる最新情報を反映した回答を生成する方式である。&lt;/li&gt;
&lt;li&gt;つまり、知識の拡張と信頼性補強のための中核技術である。&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
      <category>RAG</category>
      
    </item>
    
    <item>
      <title>AI Agent</title>
      <link>https://www.devkuma.com/jp/docs/ai/agent/</link>
      <pubDate>Sat, 30 Aug 2025 13:49:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/agent/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ai-agentとは&#34;&gt;AI Agentとは？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI Agent&lt;/strong&gt;は、単に回答だけを生成するLLM（大規模言語モデル）とは異なり、&lt;strong&gt;環境（Environment）と相互作用しながら特定の目標を達成するよう設計された知能システム&lt;/strong&gt;である。&lt;/li&gt;
&lt;li&gt;つまり、&lt;strong&gt;自ら判断し、必要なツールを使い、行動し、結果を改善するAI&lt;/strong&gt;といえる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ai-agentの中核要素&#34;&gt;AI Agentの中核要素&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;目標（Goal）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;エージェントが実行すべき任務。例: 顧客質問への回答、報告書作成、コード修正など。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知覚（Perception）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;環境や入力を理解する段階。ユーザー入力、センサーデータ、APIレスポンスなど。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行動（Action）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;目標を達成するために取る措置。検索、計算、外部API呼び出し、DB更新など。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;フィードバックループ（Feedback Loop）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;結果を評価し、必要に応じて次の行動を修正する過程。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;ai-agentと単純なllmの違い&#34;&gt;AI Agentと単純なLLMの違い&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM&lt;/strong&gt;: 質問 -&amp;gt; 回答（単純なQ&amp;amp;A）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Agent&lt;/strong&gt;: 質問 -&amp;gt; 計画を立てる -&amp;gt; 検索/ツール使用 -&amp;gt; 複数段階を実行 -&amp;gt; 最終回答&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLMは「ソウルの天気を教えて」に対して、過去の学習データに基づいて答えることがある。&lt;/li&gt;
&lt;li&gt;AI Agentは&lt;strong&gt;リアルタイムAPIを呼び出し&lt;/strong&gt;、現在の気温と天気を取得して答えることができる。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ai-agentが使用する技術&#34;&gt;AI Agentが使用する技術&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM（Large Language Model）&lt;/strong&gt; -&amp;gt; 自然言語理解および推論&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG（Retrieval-Augmented Generation）&lt;/strong&gt; -&amp;gt; 外部知識検索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール使用（Plugins, APIs）&lt;/strong&gt; -&amp;gt; 計算機、ブラウザー、データベースなど&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プランナー（Planner）&lt;/strong&gt; -&amp;gt; 複雑な作業を複数段階に分けて実行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;メモリ（Memory）&lt;/strong&gt; -&amp;gt; 過去の会話や状態を記憶し、連続的な作業を実行&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;代表的なai-agentの例&#34;&gt;代表的なAI Agentの例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT + Tools（OpenAI）&lt;/strong&gt; -&amp;gt; コード実行、Webブラウジング、データ分析が可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AutoGPT, BabyAGI&lt;/strong&gt; -&amp;gt; オープンソースの自律型エージェント&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LangChain Agents&lt;/strong&gt; -&amp;gt; 複数のツールを接続してワークフローを自動化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Copilot, Google Gemini Agents&lt;/strong&gt; -&amp;gt; 生産性ツールと統合されたAIアシスタント&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ai-agentの活用分野&#34;&gt;AI Agentの活用分野&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;業務自動化&lt;/strong&gt;: メール要約、スケジュール管理、文書生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;カスタマーサポート&lt;/strong&gt;: FAQ回答、相談業務支援&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;研究・分析&lt;/strong&gt;: 論文検索、データ分析、報告書作成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;開発支援&lt;/strong&gt;: コード生成、テスト、デバッグ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ロボティクス&lt;/strong&gt;: 自動運転、ドローン、スマートファクトリー&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI Agentは、単に回答だけを行うLLMを超えて、目標を立て、ツールを活用し、環境と相互作用する知能システム&lt;/strong&gt;である。&lt;br&gt;
つまり、「&lt;strong&gt;実行可能なAI&lt;/strong&gt;」と理解すればよい。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>Multi-Model</title>
      <link>https://www.devkuma.com/jp/docs/ai/multi-model/</link>
      <pubDate>Sat, 30 Aug 2025 13:14:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/multi-model/</guid>
      <description>
        
        
        &lt;h2 id=&#34;multi-modelとは&#34;&gt;Multi-Modelとは？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;一つのAIシステムで複数のモデルを一緒に使うアプローチ&lt;/strong&gt;を指す。&lt;br&gt;
つまり、単一モデルにすべてを任せるのではなく、&lt;strong&gt;各モデルの強みを組み合わせる&lt;/strong&gt;ことで、より高い性能や多様な機能を得る方法である。&lt;/p&gt;
&lt;p&gt;たとえば、テキストだけでなく画像、音声、動画まで一緒に処理できるモデルである。&lt;/p&gt;
&lt;h2 id=&#34;なぜ必要なのか&#34;&gt;なぜ必要なのか？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;一つのモデルでは不足する場合&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例: 画像も扱い、テキストも扱う必要がある場合&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;専門化されたモデルの活用&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大規模な汎用モデルとドメイン特化モデルを一緒に使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;性能最適化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重く遅いモデルは中核推論だけに使い、軽いモデルは前処理や簡単な作業に使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;コスト削減&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常にGPT-4のような超巨大モデルを使うと高価なため、一部は小さなモデルに任せ、難しい部分だけ大きなモデルを使う&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;multi-modelの種類&#34;&gt;Multi-Modelの種類&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;マルチモーダル（Multi-Modal）とは異なる&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-Model != Multi-Modal&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Multi-Modal&lt;/em&gt;: 画像+テキスト+音声など、&lt;strong&gt;複数の入力形式&lt;/strong&gt;を処理する一つのモデル&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Multi-Model&lt;/em&gt;: &lt;strong&gt;複数のモデルを組み合わせて&lt;/strong&gt;システムを構成&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;構成方式&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;並列（Ensemble）&lt;/strong&gt;: 複数のモデルが同時に答えを出し、結果を統合して最終決定&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例: 投票（Voting）、平均（Blending）、重み付き組み合わせ（Weighted Sum）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;直列（Pipeline）&lt;/strong&gt;: あるモデルの出力を別のモデルの入力として渡す&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例: 画像キャプションモデル -&amp;gt; テキスト要約モデル -&amp;gt; 質疑応答モデル&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ハイブリッド&lt;/strong&gt;: 状況に応じてモデルを選択する（Routerモデル）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;例&#34;&gt;例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;検索 + 生成（RAG）&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;検索モデル（ベクトル検索）+ 生成モデル（LLM）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot系&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;コード支援: 素早いコード補完は小さなモデル、精密なバグ修正はGPT-4&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自動運転&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;映像認識CNN + 行動計画RLモデル&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ヘルスケア&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;医学知識モデル + 一般LLMの組み合わせ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;multi-model-vs-single-model&#34;&gt;Multi-Model vs Single Model&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;区分&lt;/th&gt;
          &lt;th&gt;Single Model&lt;/th&gt;
          &lt;th&gt;Multi-Model&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;構成&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;一つのモデルがすべてを実行&lt;/td&gt;
          &lt;td&gt;複数のモデルが役割分担&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;利点&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;単純で管理しやすい&lt;/td&gt;
          &lt;td&gt;精度向上、柔軟性向上、最新技術の活用が可能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;欠点&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;汎用モデルには性能限界がある&lt;/td&gt;
          &lt;td&gt;システムが複雑で調整が必要&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Multi-Modelは複数のモデルを組み合わせ、それぞれの強みを生かしてより良い結果を出すシステム設計方式&lt;/strong&gt;である。&lt;/p&gt;
&lt;p&gt;例として、「検索モデル + 生成モデル」、「小さなモデル + 大きなモデル」、「特化モデル + 汎用モデル」を組み合わせる方式がある。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
      <category>LLM</category>
      
    </item>
    
    <item>
      <title>Function Calling（Tools）</title>
      <link>https://www.devkuma.com/jp/docs/ai/function-calling/</link>
      <pubDate>Sat, 30 Aug 2025 14:50:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/function-calling/</guid>
      <description>
        
        
        &lt;h2 id=&#34;function-callingツール呼び出しとは&#34;&gt;Function Calling（ツール呼び出し）とは？&lt;/h2&gt;
&lt;p&gt;LLMが単にテキストだけを生成するのではなく、&lt;strong&gt;外部関数（Function）やAPIを直接呼び出せるようにする機能&lt;/strong&gt;である。&lt;br&gt;
たとえば、OpenAI APIが提供する&lt;code&gt;function_call&lt;/code&gt;機能が代表的である。&lt;/p&gt;
&lt;h3 id=&#34;動作原理&#34;&gt;動作原理&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ユーザー入力&lt;/strong&gt;: 「今日のソウルの天気を教えて」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLMの判断&lt;/strong&gt;: 「これは天気APIを呼び出す必要がある」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール呼び出し&lt;/strong&gt;: あらかじめ定義された関数（例: &lt;code&gt;getWeather(location: string)&lt;/code&gt;）を実行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;結果受信&lt;/strong&gt;: &lt;code&gt;{ &amp;quot;location&amp;quot;: &amp;quot;Seoul&amp;quot;, &amp;quot;temp&amp;quot;: 28, &amp;quot;condition&amp;quot;: &amp;quot;Sunny&amp;quot; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最終応答生成&lt;/strong&gt;: 「今日のソウルは晴れで28度です」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;つまり、LLMは&lt;strong&gt;自然言語 -&amp;gt; 関数入力への変換&lt;/strong&gt;を担当し、実際の計算や検索は外部関数/ツールが担う。&lt;/p&gt;
&lt;h3 id=&#34;利点&#34;&gt;利点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;リアルタイムデータの活用&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;LLM自体は訓練時点以降の知識を知らない。Function Callで最新APIに接続できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正確な計算&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;LLMは数学演算が苦手である。代わりに計算機APIを呼び出せば正確な結果を返せる。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;業務自動化&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;「メールを送って」 -&amp;gt; メールAPIを呼び出す&lt;/li&gt;
&lt;li&gt;「DBから顧客一覧を取得して」 -&amp;gt; DBクエリを実行&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mcpとfunction-callingの違い&#34;&gt;MCPとFunction Callingの違い&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Function Calling&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;個別ツールをLLMが直接呼び出す方式&lt;/li&gt;
&lt;li&gt;APIや関数単位の呼び出し定義が必要&lt;/li&gt;
&lt;li&gt;例: &lt;code&gt;getWeather()&lt;/code&gt;, &lt;code&gt;searchStockPrice()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MCP（Model Context Protocol）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数のツール（Function/Resource）を&lt;strong&gt;標準化された方式で接続&lt;/strong&gt;するプロトコル&lt;/li&gt;
&lt;li&gt;各ツールを「Provider」として抽象化し、LLMが一貫した方法でアクセス可能&lt;/li&gt;
&lt;li&gt;Function Callを含む「ツール呼び出し」を体系的に管理する上位概念&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;実際の例&#34;&gt;実際の例&lt;/h2&gt;
&lt;h3 id=&#34;1-function-calling単独使用&#34;&gt;1. Function Calling単独使用&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OpenAI Function Callの例:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;getWeather&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;現在の天気を照会&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;parameters&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;モデルが&lt;code&gt;&amp;quot;서울&amp;quot;&lt;/code&gt;をlocationにマッピングしてAPIを実行する。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-mcpベースのfunction-calling&#34;&gt;2. MCPベースのFunction Calling&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MCPはFunctionを&lt;strong&gt;Resource Registry&lt;/strong&gt;としてまとめて管理&lt;/li&gt;
&lt;li&gt;LLMが「天気API」を直接知る必要はなく、MCPが&lt;code&gt;tools.weather&lt;/code&gt;のような抽象化されたインターフェースを提供&lt;/li&gt;
&lt;li&gt;複数のツールを&lt;strong&gt;標準プロトコル&lt;/strong&gt;で接続し、Function Callの混乱や重複を減らす&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;比喩で整理&#34;&gt;比喩で整理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Function Calling&lt;/strong&gt; = 個別の「ツールの使い方」（はさみ、ハンマー、ドライバーのような単一ツール）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP&lt;/strong&gt; = 「工具箱/作業台」（ツールを標準化された方式で整理しておくシステム）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Function Callingは個別APIを呼び出す技術&lt;/strong&gt;であり、&lt;strong&gt;MCPは複数のFunction（ツール）を標準化された方式で管理・接続する上位レイヤー&lt;/strong&gt;と理解すればよい。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>バイブコーディング（Vibe Coding）</title>
      <link>https://www.devkuma.com/jp/docs/ai/vibe-coding/</link>
      <pubDate>Sat, 30 Aug 2025 17:55:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/vibe-coding/</guid>
      <description>
        
        
        &lt;h2 id=&#34;バイブコーディングvibe-codingの定義&#34;&gt;バイブコーディング（Vibe Coding）の定義&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;バイブコーディング&lt;/strong&gt;は正式な学術用語というより、最近の開発者コミュニティで使われる表現であり、&lt;strong&gt;プログラミングを感覚的に、流れ（Vibe、バイブ）に合わせて楽しみながら行うコーディング方式&lt;/strong&gt;を意味する。&lt;/li&gt;
&lt;li&gt;特にAI時代に合わせて、開発者がコードを一行ずつ直接書くよりも、&lt;strong&gt;自然言語で目標やフィードバックを与え、LLMがコードを生成・修正するよう導く開発方式&lt;/strong&gt;を強調する。
&lt;ul&gt;
&lt;li&gt;人は「何を作るか」に集中し、実装の詳細はAIが担当する。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;この用語は、2025年2月に&lt;strong&gt;Andrej Karpathy&lt;/strong&gt;が「コードを忘れて、完全にバイブに任せる」という趣旨で言及したことで普及した。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;概念的特徴&#34;&gt;概念的特徴&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;没入と即興性&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;決まった設計なしに、浮かんだアイデアや感覚に従ってすぐにコーディング&lt;/li&gt;
&lt;li&gt;音楽の**即興演奏（jam session）**のような感覚&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流れ（Vibe、バイブ）中心&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;「面白そうなもの」「今やりたいこと」を中心に自由に実装&lt;/li&gt;
&lt;li&gt;コードの完璧さよりも&lt;strong&gt;楽しさと流れ&lt;/strong&gt;が重要&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高速プロトタイピング&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;動作する最小機能を素早く作って実行&lt;/li&gt;
&lt;li&gt;完璧なアーキテクチャより、&lt;strong&gt;まず動くもの&lt;/strong&gt;を目標にする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;バイブコーディングの活用文脈&#34;&gt;バイブコーディングの活用文脈&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;コーディング学習初期&lt;/strong&gt; -&amp;gt; 自由に実験しながら動機を維持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ハッカソン/プロトタイプ制作&lt;/strong&gt; -&amp;gt; アイデアを素早く実装する必要があるとき&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;創造的な作業&lt;/strong&gt; -&amp;gt; 音楽、アート、ゲームなどでの実験的実装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI活用コーディング&lt;/strong&gt; -&amp;gt; ChatGPTのようなAIと対話しながら流れに沿って実装&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ワークフロー一般的な進行段階&#34;&gt;ワークフロー（一般的な進行段階）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;目標記述&lt;/strong&gt; -&amp;gt; 「Slackボットで休暇承認/拒否を処理」のように結果中心で説明&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初案生成&lt;/strong&gt; -&amp;gt; LLMがプロジェクトの骨組みを作成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;実行・フィードバック&lt;/strong&gt; -&amp;gt; エラーや不足機能を自然言語で指摘し、修正を反復&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;機能拡張/リファクタリング&lt;/strong&gt; -&amp;gt; テスト基準を提示して収束させる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;核心は、&lt;strong&gt;対話型の指示とフィードバック&lt;/strong&gt;を基に開発が進む点である。&lt;/p&gt;
&lt;h2 id=&#34;長所と短所&#34;&gt;長所と短所&lt;/h2&gt;
&lt;h3 id=&#34;長所&#34;&gt;長所&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;創造性を発揮しやすく、没入しやすい&lt;/li&gt;
&lt;li&gt;素早く結果を確認できるため、プロトタイピングに最適&lt;/li&gt;
&lt;li&gt;学習や実験の動機づけになる（楽しくて続けやすい）&lt;/li&gt;
&lt;li&gt;非開発者でも参入障壁が低い（AIと一緒に開発可能）&lt;/li&gt;
&lt;li&gt;開発者は細かな実装よりも&lt;strong&gt;設計・品質管理の役割&lt;/strong&gt;へ移行&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;短所&#34;&gt;短所&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;構造的な完成度や安定性が不足しやすい&lt;/li&gt;
&lt;li&gt;バグやセキュリティ脆弱性が発生するリスク&lt;/li&gt;
&lt;li&gt;自分が直接書いていないコードは保守やデバッグが難しい&lt;/li&gt;
&lt;li&gt;複数ファイルやレガシー連携のような複雑なシステムには不向き&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ai補助コーディングとの違い&#34;&gt;AI補助コーディングとの違い&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI補助コーディング（例: Copilot）&lt;/strong&gt; -&amp;gt; 自分がコードを書くとAIが補完・推薦する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;バイブコーディング&lt;/strong&gt; -&amp;gt; &lt;strong&gt;AIが大部分のコードを書く&lt;/strong&gt;。人間は目標・制約・テストだけを提示する&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;実務でのガードレール安全装置&#34;&gt;実務でのガードレール（安全装置）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;テスト優先&lt;/strong&gt; -&amp;gt; 単体・統合・E2Eテストを先に定義&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;静的分析/セキュリティ点検&lt;/strong&gt; -&amp;gt; Linter、SAST、依存関係脆弱性の自動検査&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;レビューと記録&lt;/strong&gt; -&amp;gt; 要件・受け入れ基準・リスクを文書化し、最終承認&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;サンドボックス環境&lt;/strong&gt; -&amp;gt; 安全な実行空間、機密情報の遮断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本番前リファクタリング&lt;/strong&gt; -&amp;gt; 別スプリントを編成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ドメイン知識の固定&lt;/strong&gt; -&amp;gt; API仕様、エラーケース、性能基準を継続的に注入&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;適合不適合の例&#34;&gt;適合/不適合の例&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;適合&lt;/strong&gt; -&amp;gt; ハッカソン、PoC、個人ツール、UI/フロントエンドプロトタイプ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意が必要&lt;/strong&gt; -&amp;gt; 金融、医療、組み込みなど高信頼/規制環境&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;開始用プロンプトテンプレート&#34;&gt;開始用プロンプトテンプレート&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;目標&lt;/strong&gt;: 何を、誰が、なぜ使うのか&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;機能&lt;/strong&gt;: 必須・任意要件の一覧&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;制約/基準&lt;/strong&gt;: セキュリティ、性能、アクセシビリティ、ライセンス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;技術スタック&lt;/strong&gt;: 言語、フレームワーク、DB、デプロイ方式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;受け入れ基準&lt;/strong&gt;: 通過すべきテストシナリオ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;作業方式&lt;/strong&gt;: 小さな単位のPR、段階別テスト、コミット規則の遵守&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;例&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Next.js + SQLiteで『個人ToDo共有ボード』を作って。必須機能5個とE2Eテスト3個を先に提案し、各機能をTDDサイクルで実装しよう。セキュリティはOAuth、XSS防止、rate limitを含める。」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;バイブコーディングは、定石的な設計よりもひらめきと流れに合わせ、特にAIを活用して即興的に実験し素早く結果を出す開発スタイル&lt;/strong&gt;である。&lt;/li&gt;
&lt;li&gt;プロトタイプ、ハッカソン、個人プロジェクトには強力だが、本番レベルではセキュリティ、テスト、リファクタリングが必須である。&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>人工知能の応用分野</title>
      <link>https://www.devkuma.com/jp/docs/ai/applications/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/applications/</guid>
      <description>
        
        
        &lt;h2 id=&#34;医療&#34;&gt;医療&lt;/h2&gt;
&lt;p&gt;医療画像分析、新薬開発、患者に合わせた個別治療&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/eye.png&#34; alt=&#34;網膜画像&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;事例: GoogleのDeepMindが開発したAIは、眼科疾患の早期発見に活用されている。&lt;/li&gt;
&lt;li&gt;画像出典: &lt;a href=&#34;https://www.irobotnews.com/news/articleView.html?idxno=8041&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ロボット新聞「Google DeepMind、人工知能を活用して眼科疾患を早期診断」&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;医療aiの実例&#34;&gt;医療AIの実例&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;画像診断: AIがX線やMRI画像を読影し、初期がんを早期発見する。米国のある病院では読影エラー率が20%減少した。&lt;/li&gt;
&lt;li&gt;新薬開発: 従来は10年以上かかっていた候補物質の探索を、AIベースで数か月以内に短縮する。&lt;/li&gt;
&lt;li&gt;個別治療: 患者の遺伝子情報を分析し、最も効果的な抗がん剤を推薦する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/ai/new-drug-development.png&#34; alt=&#34;網膜画像&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;図3: AI活用前の従来型新薬開発プロセスとAIベースプロセスの比較&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;自動運転&#34;&gt;自動運転&lt;/h2&gt;
&lt;p&gt;自動運転技術は、道路状況をリアルタイムで認識し、それを基に最適な走行戦略を決定し、交通の流れを効率的に管理することを目標とする。カメラ、レーダー、LiDARなどのセンサーを通じて周辺環境を検知し、AIアルゴリズムがそれを分析して車両の速度、方向、車間距離などを自動で調整する。これにより、交通事故を減らし、道路効率を高め、運転者と歩行者の安全を強化できる。&lt;/p&gt;
&lt;h2 id=&#34;金融&#34;&gt;金融&lt;/h2&gt;
&lt;p&gt;金融分野でAIは、不正取引の検知、投資戦略の自動化、リスク管理など多様な領域に適用されている。不正検知では、異常な取引パターンをリアルタイムで分析して疑わしい取引を識別し、投資戦略の自動化では、市場データを基にポートフォリオ最適化を行う。またAIは、金融機関が信用リスクや市場リスクなどを予測し管理するために活用され、金融の安定性と業務効率を同時に高める。&lt;/p&gt;
&lt;h2 id=&#34;製造業&#34;&gt;製造業&lt;/h2&gt;
&lt;p&gt;製造業では、スマート工場の実現、予知保全、品質管理の自動化などにAIが適用される。スマート工場は、生産設備と物流システムをAIでつなぎ、効率的な工程管理を可能にする。予知保全（Predictive Maintenance）は、センサーデータを分析して設備故障を事前に予測し、保守計画を最適化することでコストと時間を削減する。品質管理の自動化は、生産過程で発生し得る欠陥をリアルタイムで検知し、製品品質を向上させる。&lt;/p&gt;
&lt;h2 id=&#34;教育&#34;&gt;教育&lt;/h2&gt;
&lt;p&gt;教育分野では、AIを活用して個別学習、自動採点、知能型チュータリングシステムなどを提供する。学生一人ひとりの学習水準と速度を分析して個別化された学習コンテンツを推薦し、課題や試験を自動採点して教師の業務負担を軽減する。また、知能型チュータリングシステムは、学生の学習パターンを分析して弱い領域を補完し、リアルタイムのフィードバックを提供することで学習効果を最大化する。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
    </item>
    
    <item>
      <title>倫理と今後の展望</title>
      <link>https://www.devkuma.com/jp/docs/ai/ethics-and-future-prospects/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/ethics-and-future-prospects/</guid>
      <description>
        
        
        &lt;h2 id=&#34;倫理的考慮事項&#34;&gt;倫理的考慮事項&lt;/h2&gt;
&lt;p&gt;人工知能技術の発展と普及は、さまざまな倫理的問題を伴う。主な考慮事項は次のとおりである。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;個人情報保護&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIシステムは大量のデータに依存して学習し、動作する。この過程で個人の機微情報が収集・処理される可能性があり、情報漏えいや悪用のリスクが存在する。したがって、AIの開発と活用においては、個人情報保護法の遵守と安全なデータ管理が不可欠である。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;アルゴリズムのバイアス&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIモデルは、学習データに含まれるバイアスをそのまま学習する可能性がある。これは特定の集団や個人に対する不公平な判断、差別的な結果を招き、社会的信頼を損なう可能性がある。これを防ぐためには、データの偏りを検討し、公平性を考慮したアルゴリズム設計が必要である。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;人間労働の代替問題&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIの自動化能力は、生産性と効率性を高める一方で、一部の職業の役割を代替する可能性がある。これは雇用構造の変化と社会的不平等の問題を引き起こす可能性があり、それに対する政策的な備えと再教育プログラムの整備が重要である。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;著作権問題&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIはコンテンツを学習し生成するため、誰かのコンテンツ権利と衝突する可能性がある。著作物を著作権者の許可なく複製したり無断で変更したりすると、著作権侵害になる可能性がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;ジブリ風は著作権問題になるのか&#34;&gt;ジブリ風は著作権問題になるのか？&lt;/h3&gt;
&lt;p&gt;具体的な&lt;strong&gt;表現&lt;/strong&gt;は保護されるが、抽象的な&lt;strong&gt;アイデア&lt;/strong&gt;は保護されない。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;思想と感情の創作的表現
&lt;ul&gt;
&lt;li&gt;例: キャラクター、映画の場面&lt;/li&gt;
&lt;li&gt;著作権で保護される&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;アイデア、技法、方法
&lt;ul&gt;
&lt;li&gt;例: 作風、タッチ&lt;/li&gt;
&lt;li&gt;著作権では保護されない&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;では、「ジブリ風」はインターネットに投稿してもよいのか。
法的には問題がなくても、AI倫理の観点では適切な利用とはいえない。&lt;/p&gt;
&lt;h2 id=&#34;人工知能の未来&#34;&gt;人工知能の未来&lt;/h2&gt;
&lt;p&gt;人工知能は、単なる道具を超えて、人間と協力し知的な意思決定を支援するパートナーへと進化すると見込まれる。未来社会においてAIは、医療、教育、産業など多様な分野で人間の能力を補助し、効率性を最大化する役割を果たすだろう。しかし、技術発展の速度が非常に速いため、社会的・法的制度と規範の整備が並行して行われなければ、個人情報侵害、不公平な判断、雇用不安などさまざまな問題を引き起こす可能性がある。したがって、AIの潜在的な利点を最大化し、副作用を最小化するためには、技術的革新とともに倫理的、法的、社会的な準備が不可欠である。&lt;/p&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
    </item>
    
    <item>
      <title>おわりに</title>
      <link>https://www.devkuma.com/jp/docs/ai/conclusion/</link>
      <pubDate>Sat, 16 Aug 2025 22:33:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/ai/conclusion/</guid>
      <description>
        
        
        &lt;h2 id=&#34;おわりに&#34;&gt;おわりに&lt;/h2&gt;
&lt;p&gt;人工知能はすでに私たちの社会全体において不可欠な技術として定着している。本書を通じて、読者がAIの概念と原理を正しく理解し、それぞれの分野で効果的に活用できることを期待する。&lt;/p&gt;
&lt;h2 id=&#34;人工知能の学習&#34;&gt;人工知能の学習&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/learning/what-is-generative-ai/generative-ai-is-a-tool-in-service-of-humanity&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;LinkedIn Learning | Generative AI is a tool in service of humanity&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;生成AIの基礎について学ぶコース&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/learning/paths/applying-generative-ai-as-a-creative-professional&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;LinkedIn Learning | Applying Generative AI as a Creative Professional&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;クリエイター向けの生成AIコース&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gseek.kr/user/popular/popularTheme/course?p_prgrm_group_sn=18&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;京畿道生涯学習ポータル | 生成AI講座&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;生成AI講座&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>AI</category>
      
      <category>ChatGPT</category>
      
    </item>
    
  </channel>
</rss>
