[{"data":1,"prerenderedAt":828},["ShallowReactive",2],{"/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat":3,"navigation-ja-jp":43,"banner-ja-jp":464,"footer-ja-jp":474,"blog-post-authors-ja-jp-Michael Friedrich":710,"blog-related-posts-ja-jp-10-best-practices-for-using-ai-powered-gitlab-duo-chat":725,"next-steps-ja-jp":767,"blog-promotions-ja-jp":776},{"id":4,"title":5,"authorSlugs":6,"authors":8,"body":10,"category":11,"categorySlug":11,"config":12,"content":16,"date":25,"description":17,"extension":27,"externalUrl":28,"featured":15,"heroImage":19,"isFeatured":15,"meta":29,"navigation":15,"path":30,"publishedDate":25,"rawbody":31,"seo":32,"slug":14,"stem":37,"tagSlugs":38,"tags":41,"template":13,"updatedDate":26,"__hash__":42},"blogPosts/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat.md","AI搭載のGitLab Duoチャットを使用するためのベストプラクティス【10選】",[7],"michael-friedrich",[9],"Michael Friedrich","AIと会話を交わすのはチャレンジングかもしれません。どのような質問から始めるべきでしょうか？どのように質問を組み立てますか？どのくらいのコンテキストが必要でしょうか？会話により最高かつ最適な結果を得られるのでしょうか？\n\nこのチュートリアルでは、AI搭載のDevSecOpsワークフローにGitLab Duoチャットを統合し、最良な結果を得るためにプロンプトを洗練させる上で役立つヒントとベストプラクティス10選をご紹介します。\n\n[始める：GitLab Duoチャットを開いたままにしておく](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#始める：GitLab-Duoチャットを開いたままにしておく)\n\n[GitLab Duoチャットを使用するためのベストプラクティス10選](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#GitLab-Duoチャットを使用するためのベストプラクティス10選)\n\n1. [会話を交わす](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#1.-会話を交わす)\n2. [効率を上げるためにプロンプトを絞り込む](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#2.-効率を上げるためにプロンプトを絞り込む)\n3. [プロンプトのパターンに従う](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#3.-プロンプトのパターンに従う)\n4. [ローコンテキストコミュニケーションを使用する](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#4.-ローコンテキストコミュニケーションを使用する)\n5. [繰り返す](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#5.-繰り返す)\n6. [焦らない](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#6.-焦らない)\n7. [リセットして再起動](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#7.-リセットして再起動)\n8. [IDEのスラッシュコマンドで効率化](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#8.-IDEのスラッシュコマンドで効率化)\n9. [スラッシュコマンドのプロンプトを絞り込む](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#9.-スラッシュコマンドのプロンプトを絞り込む)\n10. [スラッシュコマンドでクリエイティブに](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#10.-スラッシュコマンドでクリエイティブに)\n\nボーナスコンテンツ：\n- [ショートカット](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#ショートカット)\n- [試してみよう](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#試してみよう)\n- [詳細](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#詳細)\n\n> AIで進化する最新のGitlab １７とGitLab Duoを、ライブ中継で観てみませんか？\u003Cbr> [__＞日本時間6月28日のイベントに今すぐ登録する＜__](https://about.gitlab.com/eighteen/)\n\n## 始める：GitLab Duoチャットを開いたままにしておく\n\n[GitLab Duoチャット](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/)は、GitLab UI、Web IDE、およびVS CodeなどのサポートされているプログラミングIDEで利用できます。\n\nVS Codeでは、デフォルトの左ペインでGitLab Duoチャットを開くことができます。アイコンを右側のペインにドラッグアンドドロップすることもできます。これにより、コードを書いたり、ファイルツリーを移動したり、Gitアクションを実行したりしている間も、チャットを開いたままにしておくことが可能です。チャットの場所をリセットするには、コマンドパレットを開きます。macOSの場合は `[Command] + [Shift] + [P]`、Windows/Linuxの場合は `[Ctrl] + [Shift] + [P]` キーボードショートカットを押し、`View: Reset View Locations` と入力します。以下の短いビデオで、その方法を説明します。\n\n\u003C!-- 空白行 -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/foZpUvWPRJQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- 空白行 -->\n\nWeb IDEとVS Codeは同じフレームワークを共有しています。Web IDEでは同じメソッドを使用でき、より効率的なワークフローを実現できます。\n\n![Web IDEのチャット](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097645344.png)\n\n## GitLab Duoチャットを使用するためのベストプラクティス10選\n\n### 1. 会話を交わす\n\nチャットは会話形式で行うべきであり、検索フォームではありません。\n\n会話の始め方としては、ブラウザでの検索と同様の検索用語から始めて、応答と出力を試してみることをおすすめします。この例では、C#プロジェクトとベストプラクティスから始めましょう。\n\n> c# start project best practices\n>\n> （c#プロジェクト スタート時のベストプラクティス）\n\n![C#スタートプロジェクトのベストプラクティスのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097646/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097645345.png)\n\nこの回答は、C#の幅広いスコープを理解するのには役立ちますが、すぐに実践できるベストプラクティスを提示しているわけではありません。次は、同じコンテキストで、より焦点を絞った質問をしてみましょう。\n\n> Please show the project structure for the C# project.\n>\n> （C#プロジェクトのプロジェクト構造を示してください）\n\n![C#プロジェクトの構造のチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097645346.png)\n\nこの回答は参考になります。次に、同じ質問の構成でGitに関する質問をしてみましょう。何かを表示してほしいと指示します。\n\n> Show an example for a .gitignore for C#\n>\n> （C#の.gitignoreの例を示してください）\n\n![C#の.gitignoreのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image25_aHR0cHM6_1750097645347.png)\n\nCI/CDに進み、C#プロジェクトを構築する方法を尋ねます。\n\n> Show a GitLab CI/CD configuration for building the C# project\n>\n> （C#プロジェクトを構築するためのGitLab CI/CD設定を表示してください）\n\n![C#プロジェクトを構築するためのGitLab CI/CD設定のチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image16_aHR0cHM6_1750097645349.png)\n\nこの例では、チャットは、具体的な変更をリクエストするよう促しています。.NET SDK 6.0の代わりに、.NET SDK 8.0を使用するようリクエストしましょう。\n\n> In the above example, please use the .NET SDK 8.0 image\u003Cbr>\n> （上記の例では、次を使用してください。.NET SDK 8.0イメージ）\n\n![.NET SDK 8.0を使用するためのチャットプロンプトと回答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image32_aHR0cHM6_1750097645350.png)\n\nCI/CD設定で.NETコマンドラインインターフェース（CLI）が使用されます。もしかしたら、プロジェクトやテストの構造を作成するコマンドの効率化にも使えるかもしれません。\n\n> Explain how to create projects and test structure on the CL\n>\n> （CLIでプロジェクトとテスト構造を作成する方法を説明してください）\n\n![CLIでプロジェクトとテスト構造を作成する方法を説明するよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image14_aHR0cHM6_1750097645351.png)\n\nもちろん、これらのコマンドをターミナルで実行することもできますが、引き続きVS Codeを使用したい場合はどうすればよいでしょうか。チャットに尋ねましょう。\n\n> Explain how to open a new terminal in VS Code\n>\n> （VS Codeで新しいターミナルを開く方法を説明してください）\n\n![VS Codeで新しいターミナルを開く方法を説明するよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097645351.png)\n\n### 2. 効率を上げるためにプロンプトを絞り込む\n\nGitLab Duoチャットを人間と同じように考え、あなたの考えや質問に関してできるだけ多くの文脈を伝えられるよう、文章でやり取りしてください。\n\nブラウザで頻繁に検索する方は、クエリに対するこのアプローチをご存知かもしれません。質問を組み立て、さらに用語を追加して範囲を絞り込み、たくさんのタブが表示された上で検索を再開します。\n\nブラウザ検索では、おそらく4つから5つの検索ウィンドウが表示されるでしょう。\n\n```markdown\nc# start project best practices\nc# .gitignore\nc# gitlab cicd\nc# gitlab security scanning\nc# solutions and projects, application and tests\n```\n\nチャットでの会話でも、同じ戦略を採用できます。より多くの文脈を加え、会話的なアプローチにする必要があります。GitLab Duoチャットでは、1回の会話リクエストで複数の質問ができます。例：上記の検索と同様、新しいC#プロジェクトから始めて、ベストプラクティスを適用し、`.gitignore` ファイルを追加し、CI/CDとセキュリティスキャンを設定する必要があります。チャットでは、質問を1つのリクエストにまとめることができます。\n\n> How can I get started creating an empty C# console application in VS Code? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示し、GitLabのセキュリティスキャンを追加してください。C#のソリューションとプロジェクトがどのように動作するのかに加え、CLIでテストプロジェクトを追加する方法を説明してください）\n\n![より多くの文脈を加えたチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image37_aHR0cHM6_1750097645352.png)\n\nこの応答で、チャットは会話のフォローアップの質問で具体的な設定例を尋ねるよう提案しています。応用：フォローアップの質問を作成しましょう。同じチャットセッションでは、コンテキストとしてC#を省略することができます。\n\n> Please show an example for a .gitignore. Please show a CI/CD configuration. Include the SAST template.\n>\n>   （gitignoreの例を示してください。CI/CDの設定を示してください。SASTテンプレートを含めてください）\n\n### 3. プロンプトのパターンに従う\n\n「プロンプト命令文、助けを求めて、追加のリクエストをする」というパターンに従ってください。最初の質問ですべての答えが得られるとは限りません。閉塞感を感じないよう、最初は「プロンプト命令文、助けを求める」を繰り返すことから始めましょう。\n\n> I need to fulfill compliance requirements. How can I get started with Codeowners and approval rules?\n>\n> （コンプライアンス要件を満たす必要があります。CODEOWNERSと承認ルールの使い始め方を教えてください）\n\n![CODEOWNERSと承認ルールを使い始めるためのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image19_aHR0cHM6_1750097645352.png)\n\n回答は役に立つものの、明らかに一般的な内容です。そこで、チーム用の設定について具体的な内容を教えてもらうこともできます。\n\n> Please show an example for Codeowners with different teams: backend, frontend, release managers.\n>\n> (バックエンド、フロントエンド、リリースマネージャーといった異なるチームのCODEOWNERSの例を示してください)\n\n![バックエンド、フロントエンド、リリースマネージャーといった異なるチームのCODEOWNERSの例を示すよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image31_aHR0cHM6_1750097645353.png)\n\nもう1つの方法は、自分が置かれている状況を説明し、意見を求めることです。STARモデル（状況、タスク、アクション、結果）に従うと、うまく質問ができるでしょう。\n\n> I have a [Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/) cluster integrated in GitLab. Please generate a Yaml configuration for a [Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/) service deployment. Explain how GitOps works as a second step. How to verify the results?\n>\n> （GitLabに統合されたKubernetesクラスターがあります。[Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/)サービスをデプロイするためのYAML設定を生成してください。2つ目のステップとしてGitOpsがどのように動作するかを説明してください。結果を検証する方法は？）\n\n![複数の質問を含むチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image27_aHR0cHM6_1750097645354.png)\n\n### 4. ローコンテキストコミュニケーションを使用する\n\n回答するためになるべく多くのコンテキストを提供します。以前の履歴または開かれたソースコードからは、そういった有用なコンテキストが得られない場合もあります。より効率的に質問するために、GitLabのオールリモート環境でのコミュニケーションで使用される[ローコンテキストコミュニケーション](https://handbook.gitlab.com/handbook/company/culture/all-remote/effective-communication/#understanding-low-context-communication)のパターンを適用します。\n\n次の質問の場合、C++プロジェクトにおいて十分なコンテキストを提供できていません。\n\n> Should I use virtual override instead of just override?\n>\n> （単にオーバーライドをつかうのではなく、仮想オーバーライドをつかったほうがいいですか？）\n\n![ユーザーが上書きの代わりに仮想の上書きを使用する必要があるかどうかを尋ねるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image34_aHR0cHM6_1750097645354.png)\n\n代わりに、より多くのコンテキストを追加してみてください。\n\n> When implementing a pure virtual function in an inherited class, should I use virtual function override, or just function override? Context is C++.\n>\n> （継承クラスに純粋な仮想関数を実装する場合、仮想関数の上書きを使用する必要がありますか、それとも単に関数の上書きを使用する必要がありますか？コンテキストはC++です）\n\n![詳細情報を含むチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image36_aHR0cHM6_1750097645355.png)\n\nこの例は、[GitLab Duoコーヒーチャット：抽象的なデータベース処理のためにC++関数をOOPクラスにリファクタリングする](https://youtu.be/Z9EJh0J9358?t=2190)でもご紹介しています。\n\n### 5. 繰り返す\n\nAIは予測できないものです。想定した結果が返されない場合や、コンテキストが不足しているためソースコードの例や設定スニペットが生成されない場合があります。質問を繰り返し、要件を絞り込んでいくことをおすすめします。\n\n以下の例では、C#アプリケーションを作成します。最初の試行では、アプリケーションタイプを指定しませんでした。C#を使用してコンソール/ターミナルだけでなく、UIアプリケーションも作成できます。また、回答結果には、空のサンプルソースコードも表示されませんでした。2つ目に再度入力するプロンプトでは、「コンソール」と「空」の2つの単語を追加します。\n\n> How can I get started creating an C# application in VSCode?\n>\n> （VS CodeでC#アプリケーションを作成するにはどうすればよいですか？）\n>\n> How can I get started creating an empty C# console application in VSCode?\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？）\n\nプロンプトの結果は異なります。最初の質問への回答内容は、VS Codeウィンドウの手順に従って開始するのに役立ちますが、ソースコードの場所と変更方法は示されません。改良したプロンプトを改めて入力することで、回答内容が修正され、デフォルトのテンプレートを 「hello world」コードで上書きする方法が示されます。\n\n![修正したプロンプトを改めて入力したチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image28_aHR0cHM6_1750097645355.png)\n\n質問を繰り返したり洗練させることで、アプリケーションコードやテストの例を表示するよう、チャットにリクエストもできます。\n\n> How can I get started creating an empty C# console application in VSCode? Please show an example for application and tests.\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？アプリケーションとテストの例を示してください）\n\n![アプリケーションとテストの例を求めるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097645356.png)\n\n#### 一般的な質問を繰り返します\n\n一般的な技術的質問を尋ねた場合、GitLab Duoチャットでは対応できないことがあります。次のシナリオでは、Javaのビルドツールとフレームワークに関する提案を得ようとしたものの、うまくいきませんでした。この質問への答えは数多く考えられます。ビルドツールとしてはMaven、Gradleなどがあり、テクノロジースタックや要件によっては[100以上のJavaフレームワーク](https://en.wikipedia.org/wiki/List_of_Java_frameworks)があります。\n\n![Javaのビルドツールとフレームワークに関するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097645356.png)\n\nでは、[Java Spring Boot](https://spring.io/projects/spring-boot)を使った顧客環境に焦点を当てたいと想定してみます。\n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください）\n\n![Hello Worldの例を含め、追加情報を求めるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image26_aHR0cHM6_1750097645357.png)\n\nすでに素晴らしい結果が返って来ています。応用として、プロンプトを繰り返し、アプリケーションのデプロイ方法を尋ね、それぞれのステップでさらに改良を加えてください。別の方法として、フォローアップの会話にする方法もあります。\n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください）\n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。コンテナイメージを使用して、CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください）\n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images. Use Kubernetes and GitOps in GitLab.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。コンテナイメージを使用して、CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください。示します。GitLabで[Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/)とGitOpsを使用してください）\n### 6. 焦らない\n\n1つの単語または短い文章すると、[このビデオの例に示すように]（https://youtu.be/JketELxLNEw?t=1220）、望ましい結果が得られない場合があります。GitLab Duo Chatは、利用可能なデータから推測を行うことができる場合がありますが、より多くのコンテキストの提供を主張する場合もあります。\n\n例：`labels` はGitLabのドキュメントの内容に一致します。\n\n![ラベルと応答に関するチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image12_aHR0cHM6_1750097645357.png)\n\n指示内容をブラッシュアップしてイシューボードでの使用法についてさらなる改良を行います。\n\n> Explain labels in GitLab. Provide an example for efficient usage with issue boards.\n>\n> （GitLabのラベルを説明してください。イシューボードで効率的に使用できる例をください）\n\n![例と回答を求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image21_aHR0cHM6_1750097645358.png)\n\nまたは、問題を記述し、その後に質問をして、追加の例を尋ねます。\n\n> I don't know how to use labels in GitLab. Please provide examples, and how to use them for filters in different views. Explain these views with examples.\n>\n> （GitLabでラベルを使用する方法が分かりません。さまざまなビューのフィルターにラベルを使用する方法の例をください。これらのビューを例で説明してください）\n\n![問題文と回答を含むチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097645358.png)\n\nまた、「はい/いいえ」の質問を避け、代わりに特定のコンテキストを追加します。\n\n> Can you help me fix performance regressions?\n>\n> （パフォーマンスのレグレッションを修正するのを手伝ってもらえますか？）\n\n![パフォーマンスのリグレッションと応答を修正するための助けを求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image18_aHR0cHM6_1750097645359.png)\n\n代わりに、プログラミング言語、フレームワーク、テクノロジースタック、および環境を含む、パフォーマンスレグレッションのコンテキストを提供します。次の例では、数年前の環境を使用していますが、現在でも十分正確です。\n\n> My PHP application encounters performance regressions using PHP 5.6 and MySQL 5.5. Please explain potential root causes, and how to address them. The app is deployed on Linux VMs.\n>\n> （私のPHPアプリケーションは、PHP 5.6とMySQL 5.5を使用してパフォーマンスのリグレッションに遭遇しています。潜在的な根本原因とそれらに対処する方法を説明してください。このアプリはLinux VMにデプロイされています）\n\n![詳細と回答を含むチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image24_aHR0cHM6_1750097645360.png)\n\n### 7. リセットして再起動\n\n時々、チャット履歴を見る限り、意図しない学習経路を辿ってしまったが故に、フォローアップの質問のコンテキストが間違っている場合があります。または、GitLab Duoチャットが回答を提供できない特定の質問をした可能性があります。生成系AIは予測不可能であり、特定の例を提供することができなかったかもしれませんが、将来の応答でそれらを提供していけるようになるでしょう（チャットベータで観察）。基礎となる大規模言語モデル（LLM）は、時には無限ループに陥ってしまう場合もあります。\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.\n>\n> （VSCodeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示し、GitLabのセキュリティスキャンを追加してください。C#のソリューションとプロジェクトがどのように機能するのか、CLIでテストプロジェクトを追加する方法を説明してください）\n\n上記の内容で質問をした後、よりカスタマイズされた応答を得るために、質問の範囲を縮小したいと思いました。チャットはコンテキストでチャット履歴を把握しており、以前の回答を参照しているため、期待どおりに機能しませんでした。\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#.\n>\n> （VSCodeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示してください）\n\n![設定例と応答を求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image23_aHR0cHM6_1750097645360.png)\n\nチャットを新しいコンテキストに強制的に追加するには、`/reset` をスラッシュ（/） コマンドとして使用してセッションをリセットし、質問を繰り返してより良い結果を得ていくことになります。`/clean` または `/clear` を使用して、会話内のすべてのメッセージを削除することもできます。\n\n### 8. IDEのスラッシュコマンドで効率化\n\n#### コードを説明する\n\n- 質問：生成されたコードですか？既存のコードですか？従来のコードですか？\n- 回答：[IDEの`/explain`スラッシュ（/） コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#explain-code-in-the-ide)を使用します。\n- 回答2：より焦点を当てた応答でプロンプトを絞り込む。例： `/explain focus on potential shortcomings or bugs. （/explain 潜在的な欠点やバグに焦点を当てる）`\n\n![/explainスラッシュ（/） コマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/gitlab_duo_chat_slash_commands_explain_01_aHR0cHM6_1750097645361.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097645361.png)\n\n#### コードのリファクタリング\n\n- 質問：読みづらいコードですか？長いスパゲッティコードですか？テストカバレッジはゼロですか？\n- 回答：[IDEの`/refactor`スラッシュ（/） コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#refactor-code-in-the-ide)を使用します。\n- 回答2 ：よりターゲットを絞ったアクションのプロンプトを絞り込む。例：オブジェクト指向パターン：`/refactor into object-oriented classes with methods and attributes`。\n\n![/refactor slashコマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image35_aHR0cHM6_1750097645362.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image30_aHR0cHM6_1750097645362.png)\n\n#### テストを生成\n\n- 質問：テスト可能なコードですが、テストの作成に時間がかかりすぎますか？\n- 回答：[IDEの`/tests`スラッシュ(/) コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#write-tests-in-the-ide)を使用します。\n- 回答2：特定のテストフレームワーク、またはテストターゲットのプロンプトを絞り込む。プロンプトにリファクタリングに焦点を当てるように指示し、次にテストを生成することもできます。`/tests`はコードを関数にリファクタリングし、テストを生成することに焦点を当てます。\n\n![/testsスラッシュ(/) コマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image29_aHR0cHM6_1750097645363.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097645363.png)\n\n完全な開発ワークフローのより実用的な例は、[GitLab Duoの例](https://docs.gitlab.com/ja-jp/user/gitlab_duo_examples/)のドキュメンテーションで入手できます。\n\n### 9. スラッシュコマンドのプロンプトを絞り込む\n\nこのブログ記事には、洗練されたプロンプトのヒントが数多くあったことでしょう。これらは、AIを活用したワークフロー効率を向上させるための要素の1つです。スラッシュ(/) コマンドを賢く使うことで、GitLab Duoチャットでより良い結果が得られます。\n\nあるお客様は最近、次のように尋ねました。「`/explain` を使用したコードの説明は、コード内にコメントを作成できますか？」 答えは「いいえ」です。ただし、チャットプロンプトを使用してフォローアップの質問をしたり、コード内に記述できるコメント形式でコードの要約を求めることができます。その場合は、言語の指定が必要でしょう。\n\n[curlライブラリを使用したC++ HTTPクライアントコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5cc9bdd65ee8ee16c548bea0402c18f8209d4d06/chat/slash-commands/c++/cli.cpp)の次の例には、より多くのドキュメント（指示内容）が必要です。コード内のコメントを追加して、より洗練した指示内容を/explainコマンドに渡すことで、よりよい結果が得られ、その結果をエディタ内に貼り付けていく、という方法もよいでしょう。\n\n> /explain add documentation, rewrite the code snippet\n> （/explain ドキュメントを追加し、コードスニペットを書き換えてください）\n\n![ドキュメントを追加し、コードスニペットと応答を書き換えるためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image13_aHR0cHM6_1750097645363.png)\n\nまたは、チャットにソースコードを `/refactor` するように依頼し、洗練されたプロンプトを使用して不足しているコードコメントを生成することもできます。\n\n> /refactor add code comments and documentation\n>\n> （/refactor コードのコメントとドキュメントを追加してください）\n\n![ソースコードをリファクタリングし、コードコメントを生成するためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image15_aHR0cHM6_1750097645364.png)\n\n### 10. スラッシュコマンドでクリエイティブに\n\nチャットプロンプトがソースコードまたはプログラミング言語に関する質問への回答が得られない場合は、スラッシュ(/) コマンド `/explain`、`/explain`、`/tests` を試してみて、それらがコンテキスト作りに役に立つかどうかみてみましょう。\n\n以下の例では、C++のコード内でSQLクエリ文字列が1行で作成されます。読みやすさを高め、将来的にはより多くのデータベース列を追加できるようにするには、書式を複数行の文字列に変更すると便利です。\n\n> std::string sql = \"CREATE TABLE IF NOT EXISTS users （id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL）\";\n\nたとえば、次の質問をその後に続けてGitLab Duo Chatに尋ねられます。\n\n> How to create a string in C++ using multiple lines?\u003Cbr>\n>（複数行を使用してC++で文字列を作成する方法）\n\nチャット自体は、説明文とオプションでソースコードの例で回答してくれるでしょう。ただ、この場合は、単にその文字列を\"¥n\"を間に入れて複数行にすればいい、という解釈をするでしょう。でも、私達が求めているのは、そうではなく、ソースコード上で見やすくするために「複数行」にしてほしい、ということですよね。\n\nVSCodeとWeb IDEには、追加のコンテキストの代替案があります。問題のソースコードを選択し、右クリックして、[GitLab Duoチャット]> [リファクタリング]に移動します。これにより、チャットプロンプトが開き、`/refactor`コードタスクがすぐに開始されます。\n\nただし、コードタスクは期待される結果をもたらさない可能性があります。1行のSQL文字列をリファクタリングすることは、読みやすさのために複数行を使用すること、定数を作成することなど、多くを意味するからです。\n\nコードタスクには、プロンプトを絞り込むオプションがあります。`/refactor` コマンドの後にテキストを追加し、GitLab Duoチャットに特定のコードタイプ、アルゴリズム、またはデザインパターンを使用するように指示できます。\n\nもう一度やり直してみましょう。ソースコードを選択し、フォーカスをチャットに変更し、次のプロンプトを入力して、`[Enter]`を押します。\n\n> /refactor into a multi-line written string. Show different approaches for all C++ standards.\n>\n>（/refactor 複数行の書き込み文字列に変換します。すべてのC++標準に異なるアプローチを示します）\n\n![複数行の文字列と応答にリファクタリングするためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image17_aHR0cHM6_1750097645364.png)\n\n**ヒント：** GitLab Duoのコード提案を使用して、リファクタリング後にソースコードをさらに洗練することも、あるいは、かわりに `/refactor` プロンプトの絞り込みを使用することもできます。\n\n> /refactor into a multi-line written string, show different approaches\n>\n> （/refactor 複数行の文字列に変換し、さまざまなC++標準のアプローチを表示してください）\n>\n> /refactor into multi-line string, not using raw string literals\n>\n> （/refactor 複数行の文字列に変換し、生の文字列リテラルを使用しないでください）\n>\n>/refactor into a multi-line written string. Make the table name parametrizable\n>\n>（/refactor 複数行の書き込み文字列に変換してください。テーブル名はパラメータ化してください）\n\n`stringstream` タイプの代替アプローチは、[GitLab Duoコーヒーチャット：抽象的なデータベース処理のためにC++関数をOOPクラスにリファクタリングする](https://www.youtube.com/watch?v=Z9EJh0J9358)、[MR差分](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-coffee-chat/gitlab-duo-coffee-chat-2024-01-23/-/commit/7ea233138aed46d77e6ce0d930dd8e10560134eb#4ce01e4c84d4b62df8eed159c2db3768ad4ef8bf_33_35)に記載されています。\n\n#### 脆弱性の説明\n\n常に機能するとは限りませんが、セキュリティの脆弱性の説明については、`/explain` スラッシュ(/) コマンドも尋ねることができます。この例では、[Cコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c)には、strcpy()バッファオーバーフロー、ワールド書き込み可能なファイルアクセス許可、競合条件攻撃などの複数の脆弱性が含まれています。\n\n>/explain why this code has multiple vulnerabilitie\u003Cbr>\n>（/explain このコードに複数の脆弱性がある理由を説明してください）\n\n![/コードの複数の脆弱性についてのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image20_aHR0cHM6_1750097645365.png)\n\n#### CコードをRustにリファクタリングする\n\nRustはメモリの安全性を提供します。`refactor into Rust` を使用して、脆弱な[Cコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c)をRustにリファクタリングするようにDuo Chatに依頼できます。より良い結果を得るために、より洗練されたプロンプトで練習してください。\n\n> /refactor into Rust and use high level libraries\n>\n> （/refactor Rustに変換し、高レベルのライブラリを使用してください）\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097645366.png)\n\n### ショートカット\n\nこれらのショートカットを読者の環境で試し、GitLab Duoチャットを使用して応用例を試してみてください。\n\n1. CVEからの脆弱性に基づいてコードを調べ、`/explain why is this code vulnerable` を使用して、それが何をし、どのように修正するかを尋ねます。\n**ヒント：** GitLab Duoチャットのコード説明を利用するには、GitLabでオープンソースプロジェクトをインポートしてください。\n2. レガシーコードの移行計画を支援するために、コードを新しいプログラミング言語にリファクタリングしてみてください。\n3. `/refactor into GitLab CI/CD configuration` を使用して、Jenkins設定をGitLab CI/CDにリファクタリングすることもできます。\n\n### 試してみよう\n\nクリッピーのように振る舞うよう、チャットを説得してみてください。\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image22_aHR0cHM6_1750097645366.png)\n\nGitLabのミッション、「誰でも貢献できます」について尋ねてください。\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image33_aHR0cHM6_1750097645367.png)\n\n### 詳細\n\nいろいろなところに情報が記載されています。より実用的な例で[GitLab Duoチャットドキュメンテーション](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/)を更新し、チャットを含むAI搭載のDevSecOpsワークフローを深く掘り下げる新しい[GitLab Duoの例](https://docs.gitlab.com/ja-jp/user/gitlab_duo_examples/)セクションを追加しました。\n\nGitLab Duoの学習は、遊び心のあるチャレンジと実際の本番環境のコードを通じて最も効果的に機能します。新しい学習シリーズ、GitLab Duoコーヒーチャットは、2024年も続きます。本人確認ができるまでは、[このYouTubeプレイリスト](https://www.youtube.com/playlist?list=PL05JrBw4t0Kp5uj_JgQiSvHw1jQu0mSVZ)で録画を見ることができます。GitLabのお客様で、GitLab Duoコーヒーチャットに参加して一緒に学ぶことに興味がある場合は、[この計画のエピック](https://gitlab.com/groups/gitlab-com/marketing/developer-relations/-/epics/476)でお知らせください。\n\n*監修：小松原 つかさ\u003Cbr>\n（GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト）*\n\n> GitLab Duoチャットを試してみませんか？[今すぐ無料トライアルを開始](https://about.gitlab.com/sales/)。","ai-ml",{"template":13,"slug":14,"featured":15},"BlogPost","10-best-practices-for-using-ai-powered-gitlab-duo-chat",true,{"title":5,"description":17,"authors":18,"heroImage":19,"tags":20,"category":11,"date":25,"updatedDate":26,"body":10},"AI搭載のDevSecOpsワークフローにGitLab Duoチャットを統合するためのヒントとコツをご覧ください。さらに、最高の結果を得るためにチャットプロンプトを絞り込む方法に関する専門家のアドバイスもご紹介します。",[9],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097639/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_77JeTV9gAmbXM0224acirV_1750097638765.png",[21,22,23,24],"AI/ML","tutorial","DevSecOps platform","features","2024-04-02","2024-05-23","md",null,{},"/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat","---\nseo:\n  title: AI搭載のGitLab Duoチャットを使用するためのベストプラクティス【10選】\n  description: >-\n    AI搭載のDevSecOpsワークフローにGitLab\n    Duoチャットを統合するためのヒントとコツをご覧ください。さらに、最高の結果を得るためにチャットプロンプトを絞り込む方法に関する専門家のアドバイスもご紹介します。\n  ogTitle: AI搭載のGitLab Duoチャットを使用するためのベストプラクティス【10選】\n  ogDescription: >-\n    AI搭載のDevSecOpsワークフローにGitLab\n    Duoチャットを統合するためのヒントとコツをご覧ください。さらに、最高の結果を得るためにチャットプロンプトを絞り込む方法に関する専門家のアドバイスもご紹介します。\n  noIndex: false\n  ogImage: >-\n    https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097639/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_77JeTV9gAmbXM0224acirV_1750097638765.png\n  ogUrl: >-\n    https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat\n  ogSiteName: https://about.gitlab.com\n  ogType: article\n  canonicalUrls: >-\n    https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat\ntitle: AI搭載のGitLab Duoチャットを使用するためのベストプラクティス【10選】\ndescription: AI搭載のDevSecOpsワークフローにGitLab Duoチャットを統合するためのヒントとコツをご覧ください。さらに、最高の結果を得るためにチャットプロンプトを絞り込む方法に関する専門家のアドバイスもご紹介します。\nauthors:\n  - Michael Friedrich\nheroImage: https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097639/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_77JeTV9gAmbXM0224acirV_1750097638765.png\ntags:\n  - AI/ML\n  - tutorial\n  - DevSecOps platform\n  - features\ncategory: ai-ml\ndate: '2024-04-02'\nupdatedDate: '2024-05-23'\nslug: 10-best-practices-for-using-ai-powered-gitlab-duo-chat\nfeatured: true\ntemplate: BlogPost\n---\n\nAIと会話を交わすのはチャレンジングかもしれません。どのような質問から始めるべきでしょうか？どのように質問を組み立てますか？どのくらいのコンテキストが必要でしょうか？会話により最高かつ最適な結果を得られるのでしょうか？\n\nこのチュートリアルでは、AI搭載のDevSecOpsワークフローにGitLab Duoチャットを統合し、最良な結果を得るためにプロンプトを洗練させる上で役立つヒントとベストプラクティス10選をご紹介します。\n\n[始める：GitLab Duoチャットを開いたままにしておく](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#始める：GitLab-Duoチャットを開いたままにしておく)\n\n[GitLab Duoチャットを使用するためのベストプラクティス10選](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#GitLab-Duoチャットを使用するためのベストプラクティス10選)\n\n1. [会話を交わす](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#1.-会話を交わす)\n2. [効率を上げるためにプロンプトを絞り込む](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#2.-効率を上げるためにプロンプトを絞り込む)\n3. [プロンプトのパターンに従う](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#3.-プロンプトのパターンに従う)\n4. [ローコンテキストコミュニケーションを使用する](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#4.-ローコンテキストコミュニケーションを使用する)\n5. [繰り返す](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#5.-繰り返す)\n6. [焦らない](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#6.-焦らない)\n7. [リセットして再起動](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#7.-リセットして再起動)\n8. [IDEのスラッシュコマンドで効率化](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#8.-IDEのスラッシュコマンドで効率化)\n9. [スラッシュコマンドのプロンプトを絞り込む](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#9.-スラッシュコマンドのプロンプトを絞り込む)\n10. [スラッシュコマンドでクリエイティブに](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#10.-スラッシュコマンドでクリエイティブに)\n\nボーナスコンテンツ：\n- [ショートカット](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#ショートカット)\n- [試してみよう](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#試してみよう)\n- [詳細](https://about.gitlab.com/ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/#詳細)\n\n> AIで進化する最新のGitlab １７とGitLab Duoを、ライブ中継で観てみませんか？\u003Cbr> [__＞日本時間6月28日のイベントに今すぐ登録する＜__](https://about.gitlab.com/eighteen/)\n\n## 始める：GitLab Duoチャットを開いたままにしておく\n\n[GitLab Duoチャット](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/)は、GitLab UI、Web IDE、およびVS CodeなどのサポートされているプログラミングIDEで利用できます。\n\nVS Codeでは、デフォルトの左ペインでGitLab Duoチャットを開くことができます。アイコンを右側のペインにドラッグアンドドロップすることもできます。これにより、コードを書いたり、ファイルツリーを移動したり、Gitアクションを実行したりしている間も、チャットを開いたままにしておくことが可能です。チャットの場所をリセットするには、コマンドパレットを開きます。macOSの場合は `[Command] + [Shift] + [P]`、Windows/Linuxの場合は `[Ctrl] + [Shift] + [P]` キーボードショートカットを押し、`View: Reset View Locations` と入力します。以下の短いビデオで、その方法を説明します。\n\n\u003C!-- 空白行 -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/foZpUvWPRJQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- 空白行 -->\n\nWeb IDEとVS Codeは同じフレームワークを共有しています。Web IDEでは同じメソッドを使用でき、より効率的なワークフローを実現できます。\n\n![Web IDEのチャット](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097645344.png)\n\n## GitLab Duoチャットを使用するためのベストプラクティス10選\n\n### 1. 会話を交わす\n\nチャットは会話形式で行うべきであり、検索フォームではありません。\n\n会話の始め方としては、ブラウザでの検索と同様の検索用語から始めて、応答と出力を試してみることをおすすめします。この例では、C#プロジェクトとベストプラクティスから始めましょう。\n\n> c# start project best practices\n>\n> （c#プロジェクト スタート時のベストプラクティス）\n\n![C#スタートプロジェクトのベストプラクティスのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097646/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097645345.png)\n\nこの回答は、C#の幅広いスコープを理解するのには役立ちますが、すぐに実践できるベストプラクティスを提示しているわけではありません。次は、同じコンテキストで、より焦点を絞った質問をしてみましょう。\n\n> Please show the project structure for the C# project.\n>\n> （C#プロジェクトのプロジェクト構造を示してください）\n\n![C#プロジェクトの構造のチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097645346.png)\n\nこの回答は参考になります。次に、同じ質問の構成でGitに関する質問をしてみましょう。何かを表示してほしいと指示します。\n\n> Show an example for a .gitignore for C#\n>\n> （C#の.gitignoreの例を示してください）\n\n![C#の.gitignoreのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image25_aHR0cHM6_1750097645347.png)\n\nCI/CDに進み、C#プロジェクトを構築する方法を尋ねます。\n\n> Show a GitLab CI/CD configuration for building the C# project\n>\n> （C#プロジェクトを構築するためのGitLab CI/CD設定を表示してください）\n\n![C#プロジェクトを構築するためのGitLab CI/CD設定のチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image16_aHR0cHM6_1750097645349.png)\n\nこの例では、チャットは、具体的な変更をリクエストするよう促しています。.NET SDK 6.0の代わりに、.NET SDK 8.0を使用するようリクエストしましょう。\n\n> In the above example, please use the .NET SDK 8.0 image\u003Cbr>\n> （上記の例では、次を使用してください。.NET SDK 8.0イメージ）\n\n![.NET SDK 8.0を使用するためのチャットプロンプトと回答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image32_aHR0cHM6_1750097645350.png)\n\nCI/CD設定で.NETコマンドラインインターフェース（CLI）が使用されます。もしかしたら、プロジェクトやテストの構造を作成するコマンドの効率化にも使えるかもしれません。\n\n> Explain how to create projects and test structure on the CL\n>\n> （CLIでプロジェクトとテスト構造を作成する方法を説明してください）\n\n![CLIでプロジェクトとテスト構造を作成する方法を説明するよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image14_aHR0cHM6_1750097645351.png)\n\nもちろん、これらのコマンドをターミナルで実行することもできますが、引き続きVS Codeを使用したい場合はどうすればよいでしょうか。チャットに尋ねましょう。\n\n> Explain how to open a new terminal in VS Code\n>\n> （VS Codeで新しいターミナルを開く方法を説明してください）\n\n![VS Codeで新しいターミナルを開く方法を説明するよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097645351.png)\n\n### 2. 効率を上げるためにプロンプトを絞り込む\n\nGitLab Duoチャットを人間と同じように考え、あなたの考えや質問に関してできるだけ多くの文脈を伝えられるよう、文章でやり取りしてください。\n\nブラウザで頻繁に検索する方は、クエリに対するこのアプローチをご存知かもしれません。質問を組み立て、さらに用語を追加して範囲を絞り込み、たくさんのタブが表示された上で検索を再開します。\n\nブラウザ検索では、おそらく4つから5つの検索ウィンドウが表示されるでしょう。\n\n```markdown\nc# start project best practices\nc# .gitignore\nc# gitlab cicd\nc# gitlab security scanning\nc# solutions and projects, application and tests\n```\n\nチャットでの会話でも、同じ戦略を採用できます。より多くの文脈を加え、会話的なアプローチにする必要があります。GitLab Duoチャットでは、1回の会話リクエストで複数の質問ができます。例：上記の検索と同様、新しいC#プロジェクトから始めて、ベストプラクティスを適用し、`.gitignore` ファイルを追加し、CI/CDとセキュリティスキャンを設定する必要があります。チャットでは、質問を1つのリクエストにまとめることができます。\n\n> How can I get started creating an empty C# console application in VS Code? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示し、GitLabのセキュリティスキャンを追加してください。C#のソリューションとプロジェクトがどのように動作するのかに加え、CLIでテストプロジェクトを追加する方法を説明してください）\n\n![より多くの文脈を加えたチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image37_aHR0cHM6_1750097645352.png)\n\nこの応答で、チャットは会話のフォローアップの質問で具体的な設定例を尋ねるよう提案しています。応用：フォローアップの質問を作成しましょう。同じチャットセッションでは、コンテキストとしてC#を省略することができます。\n\n> Please show an example for a .gitignore. Please show a CI/CD configuration. Include the SAST template.\n>\n>   （gitignoreの例を示してください。CI/CDの設定を示してください。SASTテンプレートを含めてください）\n\n### 3. プロンプトのパターンに従う\n\n「プロンプト命令文、助けを求めて、追加のリクエストをする」というパターンに従ってください。最初の質問ですべての答えが得られるとは限りません。閉塞感を感じないよう、最初は「プロンプト命令文、助けを求める」を繰り返すことから始めましょう。\n\n> I need to fulfill compliance requirements. How can I get started with Codeowners and approval rules?\n>\n> （コンプライアンス要件を満たす必要があります。CODEOWNERSと承認ルールの使い始め方を教えてください）\n\n![CODEOWNERSと承認ルールを使い始めるためのチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image19_aHR0cHM6_1750097645352.png)\n\n回答は役に立つものの、明らかに一般的な内容です。そこで、チーム用の設定について具体的な内容を教えてもらうこともできます。\n\n> Please show an example for Codeowners with different teams: backend, frontend, release managers.\n>\n> (バックエンド、フロントエンド、リリースマネージャーといった異なるチームのCODEOWNERSの例を示してください)\n\n![バックエンド、フロントエンド、リリースマネージャーといった異なるチームのCODEOWNERSの例を示すよう指示するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image31_aHR0cHM6_1750097645353.png)\n\nもう1つの方法は、自分が置かれている状況を説明し、意見を求めることです。STARモデル（状況、タスク、アクション、結果）に従うと、うまく質問ができるでしょう。\n\n> I have a [Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/) cluster integrated in GitLab. Please generate a Yaml configuration for a [Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/) service deployment. Explain how GitOps works as a second step. How to verify the results?\n>\n> （GitLabに統合されたKubernetesクラスターがあります。[Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/)サービスをデプロイするためのYAML設定を生成してください。2つ目のステップとしてGitOpsがどのように動作するかを説明してください。結果を検証する方法は？）\n\n![複数の質問を含むチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image27_aHR0cHM6_1750097645354.png)\n\n### 4. ローコンテキストコミュニケーションを使用する\n\n回答するためになるべく多くのコンテキストを提供します。以前の履歴または開かれたソースコードからは、そういった有用なコンテキストが得られない場合もあります。より効率的に質問するために、GitLabのオールリモート環境でのコミュニケーションで使用される[ローコンテキストコミュニケーション](https://handbook.gitlab.com/handbook/company/culture/all-remote/effective-communication/#understanding-low-context-communication)のパターンを適用します。\n\n次の質問の場合、C++プロジェクトにおいて十分なコンテキストを提供できていません。\n\n> Should I use virtual override instead of just override?\n>\n> （単にオーバーライドをつかうのではなく、仮想オーバーライドをつかったほうがいいですか？）\n\n![ユーザーが上書きの代わりに仮想の上書きを使用する必要があるかどうかを尋ねるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image34_aHR0cHM6_1750097645354.png)\n\n代わりに、より多くのコンテキストを追加してみてください。\n\n> When implementing a pure virtual function in an inherited class, should I use virtual function override, or just function override? Context is C++.\n>\n> （継承クラスに純粋な仮想関数を実装する場合、仮想関数の上書きを使用する必要がありますか、それとも単に関数の上書きを使用する必要がありますか？コンテキストはC++です）\n\n![詳細情報を含むチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image36_aHR0cHM6_1750097645355.png)\n\nこの例は、[GitLab Duoコーヒーチャット：抽象的なデータベース処理のためにC++関数をOOPクラスにリファクタリングする](https://youtu.be/Z9EJh0J9358?t=2190)でもご紹介しています。\n\n### 5. 繰り返す\n\nAIは予測できないものです。想定した結果が返されない場合や、コンテキストが不足しているためソースコードの例や設定スニペットが生成されない場合があります。質問を繰り返し、要件を絞り込んでいくことをおすすめします。\n\n以下の例では、C#アプリケーションを作成します。最初の試行では、アプリケーションタイプを指定しませんでした。C#を使用してコンソール/ターミナルだけでなく、UIアプリケーションも作成できます。また、回答結果には、空のサンプルソースコードも表示されませんでした。2つ目に再度入力するプロンプトでは、「コンソール」と「空」の2つの単語を追加します。\n\n> How can I get started creating an C# application in VSCode?\n>\n> （VS CodeでC#アプリケーションを作成するにはどうすればよいですか？）\n>\n> How can I get started creating an empty C# console application in VSCode?\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？）\n\nプロンプトの結果は異なります。最初の質問への回答内容は、VS Codeウィンドウの手順に従って開始するのに役立ちますが、ソースコードの場所と変更方法は示されません。改良したプロンプトを改めて入力することで、回答内容が修正され、デフォルトのテンプレートを 「hello world」コードで上書きする方法が示されます。\n\n![修正したプロンプトを改めて入力したチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image28_aHR0cHM6_1750097645355.png)\n\n質問を繰り返したり洗練させることで、アプリケーションコードやテストの例を表示するよう、チャットにリクエストもできます。\n\n> How can I get started creating an empty C# console application in VSCode? Please show an example for application and tests.\n>\n> （VS Codeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？アプリケーションとテストの例を示してください）\n\n![アプリケーションとテストの例を求めるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097645356.png)\n\n#### 一般的な質問を繰り返します\n\n一般的な技術的質問を尋ねた場合、GitLab Duoチャットでは対応できないことがあります。次のシナリオでは、Javaのビルドツールとフレームワークに関する提案を得ようとしたものの、うまくいきませんでした。この質問への答えは数多く考えられます。ビルドツールとしてはMaven、Gradleなどがあり、テクノロジースタックや要件によっては[100以上のJavaフレームワーク](https://en.wikipedia.org/wiki/List_of_Java_frameworks)があります。\n\n![Javaのビルドツールとフレームワークに関するチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097645356.png)\n\nでは、[Java Spring Boot](https://spring.io/projects/spring-boot)を使った顧客環境に焦点を当てたいと想定してみます。\n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください）\n\n![Hello Worldの例を含め、追加情報を求めるチャットプロンプトと応答](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image26_aHR0cHM6_1750097645357.png)\n\nすでに素晴らしい結果が返って来ています。応用として、プロンプトを繰り返し、アプリケーションのデプロイ方法を尋ね、それぞれのステップでさらに改良を加えてください。別の方法として、フォローアップの会話にする方法もあります。\n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください）\n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。コンテナイメージを使用して、CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください）\n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images. Use Kubernetes and GitOps in GitLab.\n>\n> （JavaのSpring Bootアプリケーションを作りたいです。プロジェクトの構造を説明し、Hello Worldの例を示してください。コンテナイメージを使用して、CI/CDでアプリケーションをビルドおよびデプロイする方法を示してください。示します。GitLabで[Kubernetes](https://about.gitlab.com/ja-jp/blog/what-is-kubernetes/)とGitOpsを使用してください）\n### 6. 焦らない\n\n1つの単語または短い文章すると、[このビデオの例に示すように]（https://youtu.be/JketELxLNEw?t=1220）、望ましい結果が得られない場合があります。GitLab Duo Chatは、利用可能なデータから推測を行うことができる場合がありますが、より多くのコンテキストの提供を主張する場合もあります。\n\n例：`labels` はGitLabのドキュメントの内容に一致します。\n\n![ラベルと応答に関するチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image12_aHR0cHM6_1750097645357.png)\n\n指示内容をブラッシュアップしてイシューボードでの使用法についてさらなる改良を行います。\n\n> Explain labels in GitLab. Provide an example for efficient usage with issue boards.\n>\n> （GitLabのラベルを説明してください。イシューボードで効率的に使用できる例をください）\n\n![例と回答を求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image21_aHR0cHM6_1750097645358.png)\n\nまたは、問題を記述し、その後に質問をして、追加の例を尋ねます。\n\n> I don't know how to use labels in GitLab. Please provide examples, and how to use them for filters in different views. Explain these views with examples.\n>\n> （GitLabでラベルを使用する方法が分かりません。さまざまなビューのフィルターにラベルを使用する方法の例をください。これらのビューを例で説明してください）\n\n![問題文と回答を含むチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097645358.png)\n\nまた、「はい/いいえ」の質問を避け、代わりに特定のコンテキストを追加します。\n\n> Can you help me fix performance regressions?\n>\n> （パフォーマンスのレグレッションを修正するのを手伝ってもらえますか？）\n\n![パフォーマンスのリグレッションと応答を修正するための助けを求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image18_aHR0cHM6_1750097645359.png)\n\n代わりに、プログラミング言語、フレームワーク、テクノロジースタック、および環境を含む、パフォーマンスレグレッションのコンテキストを提供します。次の例では、数年前の環境を使用していますが、現在でも十分正確です。\n\n> My PHP application encounters performance regressions using PHP 5.6 and MySQL 5.5. Please explain potential root causes, and how to address them. The app is deployed on Linux VMs.\n>\n> （私のPHPアプリケーションは、PHP 5.6とMySQL 5.5を使用してパフォーマンスのリグレッションに遭遇しています。潜在的な根本原因とそれらに対処する方法を説明してください。このアプリはLinux VMにデプロイされています）\n\n![詳細と回答を含むチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image24_aHR0cHM6_1750097645360.png)\n\n### 7. リセットして再起動\n\n時々、チャット履歴を見る限り、意図しない学習経路を辿ってしまったが故に、フォローアップの質問のコンテキストが間違っている場合があります。または、GitLab Duoチャットが回答を提供できない特定の質問をした可能性があります。生成系AIは予測不可能であり、特定の例を提供することができなかったかもしれませんが、将来の応答でそれらを提供していけるようになるでしょう（チャットベータで観察）。基礎となる大規模言語モデル（LLM）は、時には無限ループに陥ってしまう場合もあります。\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.\n>\n> （VSCodeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示し、GitLabのセキュリティスキャンを追加してください。C#のソリューションとプロジェクトがどのように機能するのか、CLIでテストプロジェクトを追加する方法を説明してください）\n\n上記の内容で質問をした後、よりカスタマイズされた応答を得るために、質問の範囲を縮小したいと思いました。チャットはコンテキストでチャット履歴を把握しており、以前の回答を参照しているため、期待どおりに機能しませんでした。\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#.\n>\n> （VSCodeで空のC#コンソールアプリケーションを作成するにはどうすればよいですか？.gitignoreと.gitlab-ci.ymlの設定をC#用のステップで表示してください）\n\n![設定例と応答を求めるチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image23_aHR0cHM6_1750097645360.png)\n\nチャットを新しいコンテキストに強制的に追加するには、`/reset` をスラッシュ（/） コマンドとして使用してセッションをリセットし、質問を繰り返してより良い結果を得ていくことになります。`/clean` または `/clear` を使用して、会話内のすべてのメッセージを削除することもできます。\n\n### 8. IDEのスラッシュコマンドで効率化\n\n#### コードを説明する\n\n- 質問：生成されたコードですか？既存のコードですか？従来のコードですか？\n- 回答：[IDEの`/explain`スラッシュ（/） コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#explain-code-in-the-ide)を使用します。\n- 回答2：より焦点を当てた応答でプロンプトを絞り込む。例： `/explain focus on potential shortcomings or bugs. （/explain 潜在的な欠点やバグに焦点を当てる）`\n\n![/explainスラッシュ（/） コマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/gitlab_duo_chat_slash_commands_explain_01_aHR0cHM6_1750097645361.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097645361.png)\n\n#### コードのリファクタリング\n\n- 質問：読みづらいコードですか？長いスパゲッティコードですか？テストカバレッジはゼロですか？\n- 回答：[IDEの`/refactor`スラッシュ（/） コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#refactor-code-in-the-ide)を使用します。\n- 回答2 ：よりターゲットを絞ったアクションのプロンプトを絞り込む。例：オブジェクト指向パターン：`/refactor into object-oriented classes with methods and attributes`。\n\n![/refactor slashコマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image35_aHR0cHM6_1750097645362.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image30_aHR0cHM6_1750097645362.png)\n\n#### テストを生成\n\n- 質問：テスト可能なコードですが、テストの作成に時間がかかりすぎますか？\n- 回答：[IDEの`/tests`スラッシュ(/) コマンド](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/#write-tests-in-the-ide)を使用します。\n- 回答2：特定のテストフレームワーク、またはテストターゲットのプロンプトを絞り込む。プロンプトにリファクタリングに焦点を当てるように指示し、次にテストを生成することもできます。`/tests`はコードを関数にリファクタリングし、テストを生成することに焦点を当てます。\n\n![/testsスラッシュ(/) コマンドのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image29_aHR0cHM6_1750097645363.png)\n\n![洗練されたプロンプトでチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097645363.png)\n\n完全な開発ワークフローのより実用的な例は、[GitLab Duoの例](https://docs.gitlab.com/ja-jp/user/gitlab_duo_examples/)のドキュメンテーションで入手できます。\n\n### 9. スラッシュコマンドのプロンプトを絞り込む\n\nこのブログ記事には、洗練されたプロンプトのヒントが数多くあったことでしょう。これらは、AIを活用したワークフロー効率を向上させるための要素の1つです。スラッシュ(/) コマンドを賢く使うことで、GitLab Duoチャットでより良い結果が得られます。\n\nあるお客様は最近、次のように尋ねました。「`/explain` を使用したコードの説明は、コード内にコメントを作成できますか？」 答えは「いいえ」です。ただし、チャットプロンプトを使用してフォローアップの質問をしたり、コード内に記述できるコメント形式でコードの要約を求めることができます。その場合は、言語の指定が必要でしょう。\n\n[curlライブラリを使用したC++ HTTPクライアントコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5cc9bdd65ee8ee16c548bea0402c18f8209d4d06/chat/slash-commands/c++/cli.cpp)の次の例には、より多くのドキュメント（指示内容）が必要です。コード内のコメントを追加して、より洗練した指示内容を/explainコマンドに渡すことで、よりよい結果が得られ、その結果をエディタ内に貼り付けていく、という方法もよいでしょう。\n\n> /explain add documentation, rewrite the code snippet\n> （/explain ドキュメントを追加し、コードスニペットを書き換えてください）\n\n![ドキュメントを追加し、コードスニペットと応答を書き換えるためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image13_aHR0cHM6_1750097645363.png)\n\nまたは、チャットにソースコードを `/refactor` するように依頼し、洗練されたプロンプトを使用して不足しているコードコメントを生成することもできます。\n\n> /refactor add code comments and documentation\n>\n> （/refactor コードのコメントとドキュメントを追加してください）\n\n![ソースコードをリファクタリングし、コードコメントを生成するためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image15_aHR0cHM6_1750097645364.png)\n\n### 10. スラッシュコマンドでクリエイティブに\n\nチャットプロンプトがソースコードまたはプログラミング言語に関する質問への回答が得られない場合は、スラッシュ(/) コマンド `/explain`、`/explain`、`/tests` を試してみて、それらがコンテキスト作りに役に立つかどうかみてみましょう。\n\n以下の例では、C++のコード内でSQLクエリ文字列が1行で作成されます。読みやすさを高め、将来的にはより多くのデータベース列を追加できるようにするには、書式を複数行の文字列に変更すると便利です。\n\n> std::string sql = \"CREATE TABLE IF NOT EXISTS users （id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL）\";\n\nたとえば、次の質問をその後に続けてGitLab Duo Chatに尋ねられます。\n\n> How to create a string in C++ using multiple lines?\u003Cbr>\n>（複数行を使用してC++で文字列を作成する方法）\n\nチャット自体は、説明文とオプションでソースコードの例で回答してくれるでしょう。ただ、この場合は、単にその文字列を\"¥n\"を間に入れて複数行にすればいい、という解釈をするでしょう。でも、私達が求めているのは、そうではなく、ソースコード上で見やすくするために「複数行」にしてほしい、ということですよね。\n\nVSCodeとWeb IDEには、追加のコンテキストの代替案があります。問題のソースコードを選択し、右クリックして、[GitLab Duoチャット]> [リファクタリング]に移動します。これにより、チャットプロンプトが開き、`/refactor`コードタスクがすぐに開始されます。\n\nただし、コードタスクは期待される結果をもたらさない可能性があります。1行のSQL文字列をリファクタリングすることは、読みやすさのために複数行を使用すること、定数を作成することなど、多くを意味するからです。\n\nコードタスクには、プロンプトを絞り込むオプションがあります。`/refactor` コマンドの後にテキストを追加し、GitLab Duoチャットに特定のコードタイプ、アルゴリズム、またはデザインパターンを使用するように指示できます。\n\nもう一度やり直してみましょう。ソースコードを選択し、フォーカスをチャットに変更し、次のプロンプトを入力して、`[Enter]`を押します。\n\n> /refactor into a multi-line written string. Show different approaches for all C++ standards.\n>\n>（/refactor 複数行の書き込み文字列に変換します。すべてのC++標準に異なるアプローチを示します）\n\n![複数行の文字列と応答にリファクタリングするためのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image17_aHR0cHM6_1750097645364.png)\n\n**ヒント：** GitLab Duoのコード提案を使用して、リファクタリング後にソースコードをさらに洗練することも、あるいは、かわりに `/refactor` プロンプトの絞り込みを使用することもできます。\n\n> /refactor into a multi-line written string, show different approaches\n>\n> （/refactor 複数行の文字列に変換し、さまざまなC++標準のアプローチを表示してください）\n>\n> /refactor into multi-line string, not using raw string literals\n>\n> （/refactor 複数行の文字列に変換し、生の文字列リテラルを使用しないでください）\n>\n>/refactor into a multi-line written string. Make the table name parametrizable\n>\n>（/refactor 複数行の書き込み文字列に変換してください。テーブル名はパラメータ化してください）\n\n`stringstream` タイプの代替アプローチは、[GitLab Duoコーヒーチャット：抽象的なデータベース処理のためにC++関数をOOPクラスにリファクタリングする](https://www.youtube.com/watch?v=Z9EJh0J9358)、[MR差分](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-coffee-chat/gitlab-duo-coffee-chat-2024-01-23/-/commit/7ea233138aed46d77e6ce0d930dd8e10560134eb#4ce01e4c84d4b62df8eed159c2db3768ad4ef8bf_33_35)に記載されています。\n\n#### 脆弱性の説明\n\n常に機能するとは限りませんが、セキュリティの脆弱性の説明については、`/explain` スラッシュ(/) コマンドも尋ねることができます。この例では、[Cコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c)には、strcpy()バッファオーバーフロー、ワールド書き込み可能なファイルアクセス許可、競合条件攻撃などの複数の脆弱性が含まれています。\n\n>/explain why this code has multiple vulnerabilitie\u003Cbr>\n>（/explain このコードに複数の脆弱性がある理由を説明してください）\n\n![/コードの複数の脆弱性についてのチャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image20_aHR0cHM6_1750097645365.png)\n\n#### CコードをRustにリファクタリングする\n\nRustはメモリの安全性を提供します。`refactor into Rust` を使用して、脆弱な[Cコード](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c)をRustにリファクタリングするようにDuo Chatに依頼できます。より良い結果を得るために、より洗練されたプロンプトで練習してください。\n\n> /refactor into Rust and use high level libraries\n>\n> （/refactor Rustに変換し、高レベルのライブラリを使用してください）\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097645366.png)\n\n### ショートカット\n\nこれらのショートカットを読者の環境で試し、GitLab Duoチャットを使用して応用例を試してみてください。\n\n1. CVEからの脆弱性に基づいてコードを調べ、`/explain why is this code vulnerable` を使用して、それが何をし、どのように修正するかを尋ねます。\n**ヒント：** GitLab Duoチャットのコード説明を利用するには、GitLabでオープンソースプロジェクトをインポートしてください。\n2. レガシーコードの移行計画を支援するために、コードを新しいプログラミング言語にリファクタリングしてみてください。\n3. `/refactor into GitLab CI/CD configuration` を使用して、Jenkins設定をGitLab CI/CDにリファクタリングすることもできます。\n\n### 試してみよう\n\nクリッピーのように振る舞うよう、チャットを説得してみてください。\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image22_aHR0cHM6_1750097645366.png)\n\nGitLabのミッション、「誰でも貢献できます」について尋ねてください。\n\n![チャットプロンプト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image33_aHR0cHM6_1750097645367.png)\n\n### 詳細\n\nいろいろなところに情報が記載されています。より実用的な例で[GitLab Duoチャットドキュメンテーション](https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/)を更新し、チャットを含むAI搭載のDevSecOpsワークフローを深く掘り下げる新しい[GitLab Duoの例](https://docs.gitlab.com/ja-jp/user/gitlab_duo_examples/)セクションを追加しました。\n\nGitLab Duoの学習は、遊び心のあるチャレンジと実際の本番環境のコードを通じて最も効果的に機能します。新しい学習シリーズ、GitLab Duoコーヒーチャットは、2024年も続きます。本人確認ができるまでは、[このYouTubeプレイリスト](https://www.youtube.com/playlist?list=PL05JrBw4t0Kp5uj_JgQiSvHw1jQu0mSVZ)で録画を見ることができます。GitLabのお客様で、GitLab Duoコーヒーチャットに参加して一緒に学ぶことに興味がある場合は、[この計画のエピック](https://gitlab.com/groups/gitlab-com/marketing/developer-relations/-/epics/476)でお知らせください。\n\n*監修：小松原 つかさ\u003Cbr>\n（GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト）*\n\n> GitLab Duoチャットを試してみませんか？[今すぐ無料トライアルを開始](https://about.gitlab.com/sales/)。\n",{"title":5,"description":17,"ogTitle":5,"ogDescription":17,"noIndex":33,"ogImage":19,"ogUrl":34,"ogSiteName":35,"ogType":36,"canonicalUrls":34},false,"https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat","https://about.gitlab.com","article","ja-jp/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat",[39,22,40,24],"aiml","devsecops-platform",[21,22,23,24],"oxcTz9GyfyC47CG7zEOW0-NHi5_zUE6tBHJx3RB7-PI",{"logo":44,"freeTrial":49,"sales":54,"login":59,"items":64,"search":384,"minimal":417,"duo":434,"switchNav":443,"pricingDeployment":454},{"config":45},{"href":46,"dataGaName":47,"dataGaLocation":48},"/ja-jp/","gitlab logo","header",{"text":50,"config":51},"無料トライアルを開始",{"href":52,"dataGaName":53,"dataGaLocation":48},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":55,"config":56},"お問い合わせ",{"href":57,"dataGaName":58,"dataGaLocation":48},"/ja-jp/sales/","sales",{"text":60,"config":61},"サインイン",{"href":62,"dataGaName":63,"dataGaLocation":48},"https://gitlab.com/users/sign_in/","sign in",[65,94,196,201,304,365],{"text":66,"config":67,"menu":69},"プラットフォーム",{"dataNavLevelOne":68},"platform",{"type":70,"columns":71},"cards",[72,78,86],{"title":66,"description":73,"link":74},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":75,"config":76},"プラットフォームを探索",{"href":77,"dataGaName":68,"dataGaLocation":48},"/ja-jp/platform/",{"title":79,"description":80,"link":81},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":82,"config":83},"GitLab Duoのご紹介",{"href":84,"dataGaName":85,"dataGaLocation":48},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":87,"description":88,"link":89},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":90,"config":91},"詳細はこちら",{"href":92,"dataGaName":93,"dataGaLocation":48},"/ja-jp/why-gitlab/","why gitlab",{"text":95,"left":15,"config":96,"menu":98},"製品",{"dataNavLevelOne":97},"solutions",{"type":99,"link":100,"columns":104,"feature":175},"lists",{"text":101,"config":102},"すべてのソリューションを表示",{"href":103,"dataGaName":97,"dataGaLocation":48},"/ja-jp/solutions/",[105,130,153],{"title":106,"description":107,"link":108,"items":113},"自動化","CI/CDと自動化でデプロイを加速",{"config":109},{"icon":110,"href":111,"dataGaName":112,"dataGaLocation":48},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[114,118,121,126],{"text":115,"config":116},"CI/CD",{"href":117,"dataGaLocation":48,"dataGaName":115},"/ja-jp/solutions/continuous-integration/",{"text":79,"config":119},{"href":84,"dataGaLocation":48,"dataGaName":120},"gitlab duo agent platform - product menu",{"text":122,"config":123},"ソースコード管理",{"href":124,"dataGaLocation":48,"dataGaName":125},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":127,"config":128},"自動化されたソフトウェアデリバリー",{"href":111,"dataGaLocation":48,"dataGaName":129},"Automated software delivery",{"title":131,"description":132,"link":133,"items":138},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":134},{"href":135,"dataGaName":136,"dataGaLocation":48,"icon":137},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[139,143,148],{"text":140,"config":141},"アプリケーションセキュリティテスト",{"href":135,"dataGaName":142,"dataGaLocation":48},"Application security testing",{"text":144,"config":145},"ソフトウェアサプライチェーンの安全性",{"href":146,"dataGaLocation":48,"dataGaName":147},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":149,"config":150},"ソフトウェアコンプライアンス",{"href":151,"dataGaName":152,"dataGaLocation":48},"/ja-jp/solutions/software-compliance/","software compliance",{"title":154,"link":155,"items":160},"測定",{"config":156},{"icon":157,"href":158,"dataGaName":159,"dataGaLocation":48},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[161,165,170],{"text":162,"config":163},"可視性と測定",{"href":158,"dataGaLocation":48,"dataGaName":164},"Visibility and Measurement",{"text":166,"config":167},"バリューストリーム管理",{"href":168,"dataGaLocation":48,"dataGaName":169},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":171,"config":172},"分析とインサイト",{"href":173,"dataGaLocation":48,"dataGaName":174},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":176,"type":99,"items":177},"GitLabが活躍する場所",[178,184,190],{"text":179,"config":180},"エンタープライズ",{"icon":181,"href":182,"dataGaLocation":48,"dataGaName":183},"Building","/ja-jp/enterprise/","enterprise",{"text":185,"config":186},"スモールビジネス",{"icon":187,"href":188,"dataGaLocation":48,"dataGaName":189},"Work","/ja-jp/small-business/","small business",{"text":191,"config":192},"公共部門",{"icon":193,"href":194,"dataGaLocation":48,"dataGaName":195},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":197,"config":198},"価格",{"href":199,"dataGaName":200,"dataGaLocation":48,"dataNavLevelOne":200},"/ja-jp/pricing/","pricing",{"text":202,"config":203,"menu":205},"リソース",{"dataNavLevelOne":204},"resources",{"type":99,"link":206,"columns":210,"feature":290},{"text":207,"config":208},"すべてのリソースを表示",{"href":209,"dataGaName":204,"dataGaLocation":48},"/ja-jp/resources/",[211,244,262],{"title":212,"items":213},"はじめに",[214,219,224,229,234,239],{"text":215,"config":216},"インストール",{"href":217,"dataGaName":218,"dataGaLocation":48},"/ja-jp/install/","install",{"text":220,"config":221},"クイックスタートガイド",{"href":222,"dataGaName":223,"dataGaLocation":48},"/ja-jp/get-started/","quick setup checklists",{"text":225,"config":226},"学ぶ",{"href":227,"dataGaLocation":48,"dataGaName":228},"https://university.gitlab.com/","learn",{"text":230,"config":231},"製品ドキュメント",{"href":232,"dataGaName":233,"dataGaLocation":48},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":235,"config":236},"ベストプラクティスビデオ",{"href":237,"dataGaName":238,"dataGaLocation":48},"/ja-jp/getting-started-videos/","best practice videos",{"text":240,"config":241},"インテグレーション",{"href":242,"dataGaName":243,"dataGaLocation":48},"/ja-jp/integrations/","integrations",{"title":245,"items":246},"検索する",[247,252,257],{"text":248,"config":249},"お客様成功事例",{"href":250,"dataGaName":251,"dataGaLocation":48},"/ja-jp/customers/","customer success stories",{"text":253,"config":254},"ブログ",{"href":255,"dataGaName":256,"dataGaLocation":48},"/ja-jp/blog/","blog",{"text":258,"config":259},"リモート",{"href":260,"dataGaName":261,"dataGaLocation":48},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":263,"items":264},"つなげる",[265,270,275,280,285],{"text":266,"config":267},"GitLabサービス",{"href":268,"dataGaName":269,"dataGaLocation":48},"/ja-jp/services/","services",{"text":271,"config":272},"コミュニティ",{"href":273,"dataGaName":274,"dataGaLocation":48},"/community/","community",{"text":276,"config":277},"フォーラム",{"href":278,"dataGaName":279,"dataGaLocation":48},"https://forum.gitlab.com/","forum",{"text":281,"config":282},"イベント",{"href":283,"dataGaName":284,"dataGaLocation":48},"/events/","events",{"text":286,"config":287},"パートナー",{"href":288,"dataGaName":289,"dataGaLocation":48},"/ja-jp/partners/","partners",{"config":291,"text":294,"image":295,"link":299},{"background":292,"textColor":293},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":296,"config":297},"ソースプロモカード",{"src":298},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":300,"config":301},"最新情報を読む",{"href":302,"dataGaName":303,"dataGaLocation":48},"/ja-jp/the-source/","the source",{"text":305,"config":306,"menu":308},"会社情報",{"dataNavLevelOne":307},"company",{"type":99,"columns":309},[310],{"items":311},[312,317,323,325,330,335,340,345,350,355,360],{"text":313,"config":314},"GitLabについて",{"href":315,"dataGaName":316,"dataGaLocation":48},"/ja-jp/company/","about",{"text":318,"config":319,"footerGa":322},"採用情報",{"href":320,"dataGaName":321,"dataGaLocation":48},"/jobs/","jobs",{"dataGaName":321},{"text":281,"config":324},{"href":283,"dataGaName":284,"dataGaLocation":48},{"text":326,"config":327},"経営陣",{"href":328,"dataGaName":329,"dataGaLocation":48},"/company/team/e-group/","leadership",{"text":331,"config":332},"チーム",{"href":333,"dataGaName":334,"dataGaLocation":48},"/company/team/","team",{"text":336,"config":337},"ハンドブック",{"href":338,"dataGaName":339,"dataGaLocation":48},"https://handbook.gitlab.com/","handbook",{"text":341,"config":342},"投資家向け情報",{"href":343,"dataGaName":344,"dataGaLocation":48},"https://ir.gitlab.com/","investor relations",{"text":346,"config":347},"トラストセンター",{"href":348,"dataGaName":349,"dataGaLocation":48},"/ja-jp/security/","trust center",{"text":351,"config":352},"AI Transparency Center",{"href":353,"dataGaName":354,"dataGaLocation":48},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":356,"config":357},"ニュースレター",{"href":358,"dataGaName":359,"dataGaLocation":48},"/company/contact/#contact-forms","newsletter",{"text":361,"config":362},"プレス",{"href":363,"dataGaName":364,"dataGaLocation":48},"/press/","press",{"text":55,"config":366,"menu":367},{"dataNavLevelOne":307},{"type":99,"columns":368},[369],{"items":370},[371,374,379],{"text":55,"config":372},{"href":57,"dataGaName":373,"dataGaLocation":48},"talk to sales",{"text":375,"config":376},"サポートを受ける",{"href":377,"dataGaName":378,"dataGaLocation":48},"https://support.gitlab.com","support portal",{"text":380,"config":381},"カスタマーポータル",{"href":382,"dataGaName":383,"dataGaLocation":48},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":385,"login":386,"suggestions":393},"閉じる",{"text":387,"link":388},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":389,"config":390},"GitLab.com",{"href":62,"dataGaName":391,"dataGaLocation":392},"search login","search",{"text":394,"default":395},"提案",[396,398,403,405,409,413],{"text":79,"config":397},{"href":84,"dataGaName":79,"dataGaLocation":392},{"text":399,"config":400},"コード提案（AI）",{"href":401,"dataGaName":402,"dataGaLocation":392},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":115,"config":404},{"href":117,"dataGaName":115,"dataGaLocation":392},{"text":406,"config":407},"GitLab on AWS",{"href":408,"dataGaName":406,"dataGaLocation":392},"/ja-jp/partners/technology-partners/aws/",{"text":410,"config":411},"GitLab on Google Cloud",{"href":412,"dataGaName":410,"dataGaLocation":392},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":414,"config":415},"GitLabを選ぶ理由",{"href":92,"dataGaName":416,"dataGaLocation":392},"Why GitLab?",{"freeTrial":418,"mobileIcon":422,"desktopIcon":427,"secondaryButton":430},{"text":50,"config":419},{"href":420,"dataGaName":53,"dataGaLocation":421},"https://gitlab.com/-/trials/new/","nav",{"altText":423,"config":424},"GitLabアイコン",{"src":425,"dataGaName":426,"dataGaLocation":421},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":423,"config":428},{"src":429,"dataGaName":426,"dataGaLocation":421},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":212,"config":431},{"href":432,"dataGaName":433,"dataGaLocation":421},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":435,"mobileIcon":439,"desktopIcon":441},{"text":436,"config":437},"GitLab Duoの詳細について",{"href":84,"dataGaName":438,"dataGaLocation":421},"gitlab duo",{"altText":423,"config":440},{"src":425,"dataGaName":426,"dataGaLocation":421},{"altText":423,"config":442},{"src":429,"dataGaName":426,"dataGaLocation":421},{"button":444,"mobileIcon":449,"desktopIcon":451},{"text":445,"config":446},"/switch",{"href":447,"dataGaName":448,"dataGaLocation":421},"#contact","switch",{"altText":423,"config":450},{"src":425,"dataGaName":426,"dataGaLocation":421},{"altText":423,"config":452},{"src":453,"dataGaName":426,"dataGaLocation":421},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":455,"mobileIcon":460,"desktopIcon":462},{"text":456,"config":457},"価格ページに戻る",{"href":199,"dataGaName":458,"dataGaLocation":421,"icon":459},"back to pricing","GoBack",{"altText":423,"config":461},{"src":425,"dataGaName":426,"dataGaLocation":421},{"altText":423,"config":463},{"src":429,"dataGaName":426,"dataGaLocation":421},{"title":465,"button":466,"config":471},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":467,"config":468},"6月10日のGitLab Transcendに申し込む",{"href":469,"dataGaName":470,"dataGaLocation":48},"/ja-jp/releases/whats-new/#sign-up","transcend event",{"layout":472,"icon":473,"disabled":33},"release","AiStar",{"data":475},{"text":476,"source":477,"edit":483,"contribute":488,"config":493,"items":498,"minimal":701},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":478,"config":479},"ページのソースを表示",{"href":480,"dataGaName":481,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":484,"config":485},"このページを編集",{"href":486,"dataGaName":487,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":489,"config":490},"ご協力をお願いします",{"href":491,"dataGaName":492,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":494,"facebook":495,"youtube":496,"linkedin":497},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[499,544,597,640,667],{"title":197,"links":500,"subMenu":515},[501,505,510],{"text":502,"config":503},"プランの表示",{"href":199,"dataGaName":504,"dataGaLocation":482},"view plans",{"text":506,"config":507},"Premiumを選ぶ理由",{"href":508,"dataGaName":509,"dataGaLocation":482},"/ja-jp/pricing/premium/","why premium",{"text":511,"config":512},"Ultimateを選ぶ理由",{"href":513,"dataGaName":514,"dataGaLocation":482},"/ja-jp/pricing/ultimate/","why ultimate",[516],{"title":55,"links":517},[518,520,522,524,529,534,539],{"text":55,"config":519},{"href":57,"dataGaName":58,"dataGaLocation":482},{"text":375,"config":521},{"href":377,"dataGaName":378,"dataGaLocation":482},{"text":380,"config":523},{"href":382,"dataGaName":383,"dataGaLocation":482},{"text":525,"config":526},"ステータス",{"href":527,"dataGaName":528,"dataGaLocation":482},"https://status.gitlab.com/","status",{"text":530,"config":531},"利用規約",{"href":532,"dataGaName":533,"dataGaLocation":482},"/terms/","terms of use",{"text":535,"config":536},"プライバシーに関する声明",{"href":537,"dataGaName":538,"dataGaLocation":482},"/ja-jp/privacy/","privacy statement",{"text":540,"config":541},"Cookie 優先設定",{"dataGaName":542,"dataGaLocation":482,"id":543,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":95,"links":545,"subMenu":554},[546,550],{"text":547,"config":548},"DevSecOpsプラットフォーム",{"href":77,"dataGaName":549,"dataGaLocation":482},"devsecops platform",{"text":551,"config":552},"AI支援開発",{"href":84,"dataGaName":553,"dataGaLocation":482},"ai-assisted development",[555],{"title":556,"links":557},"トピック",[558,562,567,572,577,582,587,592],{"text":115,"config":559},{"href":560,"dataGaName":561,"dataGaLocation":482},"/ja-jp/topics/ci-cd/","cicd",{"text":563,"config":564},"GitOps",{"href":565,"dataGaName":566,"dataGaLocation":482},"/ja-jp/topics/gitops/","gitops",{"text":568,"config":569},"DevOps",{"href":570,"dataGaName":571,"dataGaLocation":482},"/ja-jp/topics/devops/","devops",{"text":573,"config":574},"バージョン管理",{"href":575,"dataGaName":576,"dataGaLocation":482},"/ja-jp/topics/version-control/","version control",{"text":578,"config":579},"DevSecOps",{"href":580,"dataGaName":581,"dataGaLocation":482},"/ja-jp/topics/devsecops/","devsecops",{"text":583,"config":584},"クラウドネイティブ",{"href":585,"dataGaName":586,"dataGaLocation":482},"/ja-jp/topics/cloud-native/","cloud native",{"text":588,"config":589},"コーディングのためのAI",{"href":590,"dataGaName":591,"dataGaLocation":482},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":593,"config":594},"エージェント型AI",{"href":595,"dataGaName":596,"dataGaLocation":482},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":598,"links":599},"ソリューション",[600,603,605,610,614,617,620,623,625,627,630,635],{"text":140,"config":601},{"href":135,"dataGaName":602,"dataGaLocation":482},"Application Security Testing",{"text":127,"config":604},{"href":111,"dataGaName":112,"dataGaLocation":482},{"text":606,"config":607},"アジャイル開発",{"href":608,"dataGaName":609,"dataGaLocation":482},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":611,"config":612},"SCM",{"href":124,"dataGaName":613,"dataGaLocation":482},"source code management",{"text":115,"config":615},{"href":117,"dataGaName":616,"dataGaLocation":482},"continuous integration & delivery",{"text":166,"config":618},{"href":168,"dataGaName":619,"dataGaLocation":482},"value stream management",{"text":563,"config":621},{"href":622,"dataGaName":566,"dataGaLocation":482},"/ja-jp/solutions/gitops/",{"text":179,"config":624},{"href":182,"dataGaName":183,"dataGaLocation":482},{"text":185,"config":626},{"href":188,"dataGaName":189,"dataGaLocation":482},{"text":628,"config":629},"公共機関",{"href":194,"dataGaName":195,"dataGaLocation":482},{"text":631,"config":632},"教育",{"href":633,"dataGaName":634,"dataGaLocation":482},"/ja-jp/solutions/education/","education",{"text":636,"config":637},"金融サービス",{"href":638,"dataGaName":639,"dataGaLocation":482},"/ja-jp/solutions/finance/","financial services",{"title":202,"links":641},[642,644,646,648,651,653,655,657,659,661,663,665],{"text":215,"config":643},{"href":217,"dataGaName":218,"dataGaLocation":482},{"text":220,"config":645},{"href":222,"dataGaName":223,"dataGaLocation":482},{"text":225,"config":647},{"href":227,"dataGaName":228,"dataGaLocation":482},{"text":230,"config":649},{"href":232,"dataGaName":650,"dataGaLocation":482},"docs",{"text":253,"config":652},{"href":255,"dataGaName":256,"dataGaLocation":482},{"text":248,"config":654},{"href":250,"dataGaName":251,"dataGaLocation":482},{"text":258,"config":656},{"href":260,"dataGaName":261,"dataGaLocation":482},{"text":266,"config":658},{"href":268,"dataGaName":269,"dataGaLocation":482},{"text":271,"config":660},{"href":273,"dataGaName":274,"dataGaLocation":482},{"text":276,"config":662},{"href":278,"dataGaName":279,"dataGaLocation":482},{"text":281,"config":664},{"href":283,"dataGaName":284,"dataGaLocation":482},{"text":286,"config":666},{"href":288,"dataGaName":289,"dataGaLocation":482},{"title":305,"links":668},[669,671,673,675,677,679,681,685,690,692,694,696],{"text":313,"config":670},{"href":315,"dataGaName":307,"dataGaLocation":482},{"text":318,"config":672},{"href":320,"dataGaName":321,"dataGaLocation":482},{"text":326,"config":674},{"href":328,"dataGaName":329,"dataGaLocation":482},{"text":331,"config":676},{"href":333,"dataGaName":334,"dataGaLocation":482},{"text":336,"config":678},{"href":338,"dataGaName":339,"dataGaLocation":482},{"text":341,"config":680},{"href":343,"dataGaName":344,"dataGaLocation":482},{"text":682,"config":683},"Sustainability",{"href":684,"dataGaName":682,"dataGaLocation":482},"/sustainability/",{"text":686,"config":687},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":688,"dataGaName":689,"dataGaLocation":482},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":346,"config":691},{"href":348,"dataGaName":349,"dataGaLocation":482},{"text":356,"config":693},{"href":358,"dataGaName":359,"dataGaLocation":482},{"text":361,"config":695},{"href":363,"dataGaName":364,"dataGaLocation":482},{"text":697,"config":698},"現代奴隷制の透明性に関する声明",{"href":699,"dataGaName":700,"dataGaLocation":482},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":702},[703,705,708],{"text":530,"config":704},{"href":532,"dataGaName":533,"dataGaLocation":482},{"text":706,"config":707},"Cookieの設定",{"dataGaName":542,"dataGaLocation":482,"id":543,"isOneTrustButton":15},{"text":535,"config":709},{"href":537,"dataGaName":538,"dataGaLocation":482},[711],{"id":712,"title":9,"body":28,"config":713,"content":715,"description":28,"extension":719,"meta":720,"navigation":15,"path":721,"seo":722,"stem":723,"__hash__":724},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":714},"BlogAuthor",{"name":9,"config":716},{"headshot":717,"ctfId":718},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[726,739,754],{"content":727,"config":737},{"title":728,"description":729,"authors":730,"heroImage":732,"date":733,"body":734,"category":11,"tags":735},"GitLabとAnthropic：エンタープライズ開発のためのガバナンスAI","GitLabがAnthropicとのClaude統合を強化。ガバナンス・コンプライアンス・監査証跡を組み込んだプラットフォームで、最新Claudeモデルへのアクセス、そしてGoogle CloudやAWSを通じた柔軟なクラウド展開をエンタープライズに提供します。",[731],"Stuart Moncada","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-04-28","エンタープライズや公共セクターのリーダーにとって、この緊張関係は見慣れたものです。ソフトウェアチームはAIを活用してスピードを上げる必要がある一方、セキュリティ、コンプライアンス、規制上の要求はますます厳しくなっています。GitLabはAnthropicとのClaude統合を強化し、新たにリリースされたClaudeモデルへのアクセスを、ガバナンス・コンプライアンス・監査証跡がすでに組み込まれたGitLabのインテリジェントオーケストレーションプラットフォーム上で提供します。\n\nClaudeはGitLab Duo Agent Platformにおけるデフォルトモデルとして、コード生成・レビューからエージェント型チャット、脆弱性の解消まで、幅広いユースケースで機能を支えています。GitLab Duoをご利用いただいている方は、Duoエージェントがソフトウェア開発ライフサイクル（SDLC）全体にわたってワークフローを自動化する様子をすでにご体験いただいています。\n\nこの統合強化により、ClaudeのコアAI機能をGitLabにより迅速に統合し、エンタープライズが展開できる幅を広げるとともに、GitLabがソフトウェア開発・エンジニアリングプラットフォームとして本質的に異なる点を改めて示します。それは、すべてのAIインタラクションに組み込まれたガバナンス・コンプライアンス・監査証跡です。\n\n> 「GitLab Duoにより、チームの計画・構築・リリースのスピードが格段に上がりました。AnthropicのClaudeとGitLabのプラットフォームを組み合わせることで、働き方やガバナンスの仕組みを変えることなく、より高度なAIを活用できています。」 \\\n> – Mans Booijink氏、オペレーションマネージャー、Cube社\n\n## 真の差別化要因：ガバナンスAI\n\nGitLabでは、ガバナンスコントロールと監査機能がSDLCに組み込まれています。GitLab Duo Agent PlatformでClaudeがコード変更を提案する場合、その提案は他のあらゆる変更と同様に、マージリクエストのプロセス、承認ルール、セキュリティスキャン、そして監査証跡を経由します。AIはコントロールを迂回することはできません。AIはコントロールの枠組みの中で動作します。\n\nGitLabがエージェント型ソフトウェア開発、すなわちAIが明確に定義されたタスクを自律的に処理する開発手法へと深く踏み込む中、ガバナンスレイヤーの重要性はさらに増しています。マージリクエストのオープン、脆弱性の解消支援、サービスのリファクタリングを担えるAIエージェントには、人間の開発者と同様に、監査可能性・帰属明確性・ポリシー適用が求められます。この要件はGitLabが当初から下したアーキテクチャ上の決断であり、AIエージェントが担う責務の範囲が広がるにつれて、その重要性はさらに高まっています。\n\n## エンタープライズ向けデプロイの柔軟性\n\nまた、この統合強化により、組織がGitLabを通じて最新のClaudeモデルにアクセスする方法も広がります。GitLab内でのClaudeはGoogle CloudのVertex AIおよびAWS Bedrockを通じて利用可能であり、企業はすでに導入済みのハイパースケーラーとの契約やクラウドガバナンスフレームワークを通じてAIワークロードをルーティングできます。別途ベンダー契約は不要です。データレジデンシーに関する新たな懸念もありません。既存のGCPまたはAWSの関係がそのままオンランプとなります。\n\nGitLabは[Claude Marketplace](https://claude.com/platform/marketplace)にも参加しました。これにより、お客様はGitLabクレジットを購入してAnthropicへの既存の支出コミットメントに充てることができ、AIコストを一元管理しながら、Anthropicへの投資と並行してGitLabを手軽に見つけ、調達できるようになります。\n\n## エージェント型の未来へ\n\n計画・コーディング・テスト・セキュリティ確保・デプロイにわたり、AIが定義されたタスクを自律的にこなすエージェント型ソフトウェア開発というGitLabのビジョンを実現するには、高度な推論能力・信頼性・安全性を備えたモデルが必要です。そして、それらの自律的アクションが完全にガバナンスされるプラットフォームも不可欠です。\n\nエージェント型ワークフローには、高度な推論能力・信頼性・安全性を備えたモデルが求められます。これらの基準は、GitLabがAIモデルパートナーを選定・統合する際の指針となっています。また、GitLabのガバナンスフレームワークにより、AIエージェントがより高度な開発作業を担うようになっても、エンタープライズはエージェントの行動・実行タイミング・変更の追跡方法について完全な可視性とコントロールを維持できます。\n\n## GitLabをご利用のお客様への意味\n\nすでにGitLab Duo Agent Platformをご利用の方は、ソフトウェア開発ライフサイクル全体にわたってClaudeモデルへのアクセスとより深いAIアシスタンスを、これまで通りのガバナンスフレームワークの中でご活用いただけます。\n\nAI活用型ソフトウェア開発プラットフォームを評価中の方は、高度なAI機能とエンタープライズコントロールのどちらかを選ぶ必要はありません。この戦略的連携は、その両方を実現するために構築されています。\n\n> GitLab Duo Agent Platformについてさらに詳しく知りたい方は、[デモのご依頼または無料トライアルのお申し込みはこちら](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/)からどうぞ。",[21,736,289],"product",{"featured":15,"template":13,"slug":738},"gitlab-and-anthropic-governed-ai-for-enterprise-development",{"content":740,"config":752},{"title":741,"description":742,"authors":743,"body":746,"heroImage":747,"date":748,"category":11,"tags":749},"GitLabとVertex AI on Google Cloud：エージェント型ソフトウェア開発の加速","Google CloudのVertex AIとGitLab Duo Agent Platformを組み合わせることで、ファウンデーションモデル、エンタープライズ制御、Model Gardenの豊富なモデルを活用したエージェント型開発が実現します。\n",[744,745],"Regnard Raquedan","Rajesh Agadi","GitLab Duo Agent Platformは、組織がソフトウェアをビルド、セキュア化、そして提供する方法を再定義しつつあります。2026年1月の一般提供開始以来、このプラットフォームはソフトウェア開発ライフサイクルのあらゆる段階にエージェント型AIをもたらしています。Duo Agent Platformは、ソフトウェアチームと専門エージェントが連携して計画、コーディング、レビュー、セキュリティ脆弱性の修正を行う、インテリジェントなオーケストレーションレイヤーです。\n\nこのパートナーシップを通じて、[GitLab Duo Agent Platform](https://about.gitlab.com/gitlab-duo-agent-platform/)はVertex AI on Google Cloudとの統合によりソフトウェア開発のオーケストレーションとライフサイクルコンテキストを自動化します。Vertex AIはエージェント呼び出しのモデル層を担い、ソフトウェアチームはすでに定義済みのGoogle Cloudポリシーに従って推論を実行しながら、イシュー、マージリクエスト、パイプライン、セキュリティワークフローの作業を継続できます。\n\nGoogle CloudのVertex AIモデルの進化により、Google CloudユーザーはGitLab Duo Agent Platformをさらに活用できるようになっています。GitLabではAIを活用したDevSecOpsコントロールプレーンを、Vertex AIの急速に進化するAIインフラ基盤と、Duo Agent Platformの柔軟なデプロイ・統合オプションが支えています。この組み合わせにより、エンタープライズスケールで動作する、より高度でガバナンスの効いたエージェント型ワークフローが実現します。\n\n![Google CloudのVertex AIと連携してエージェント型ソフトウェア開発とガバナンスを備えたAIワークフローを実現するGitLab Duo Agent Platformの概念図](https://res.cloudinary.com/about-gitlab-com/image/upload/v1776165990/b7jlux9kydafncwy8spc.png)\n\n## 開発ライフサイクル全体にわたるエージェント\n\n多くのAIツールは、コードをより速く生成するという単一のタスクに集中しています。GitLab Duo Agent Platformはそれをさらに超え、計画からセキュリティレビュー、リリースまで、ソフトウェア開発ライフサイクル（SDLC）全体にわたってAIエージェントをオーケストレーションします。これは、多数のプロジェクトとリリースを抱える多くのチームを対象としています。このスケールにおいて、AIコーディングアシスタントは継続的なイノベーションに必要ではありますが、それだけでは十分ではありません。\n\n単一目的のコーディングアシスタントがプロジェクトの全体像を把握することはほとんどありません。バックログの状況、オープン中のマージリクエスト、失敗したジョブ、セキュリティの検出結果はGitLabに蓄積されていますが、コーディングアシスタント内の別のチャットウィンドウはSDLCのその全体像を引き継ぐことができません。このギャップは、手動によるハンドオフ、コンテキストを持たないAIへの重複した説明、そして一つのシステムとして設計されたわけではないツール間のデータフローをマッピングしようとするガバナンスチームという形で表れます。\n\nGitLab Duo Agent Platformは、エンジニアが日々使用するオブジェクト上でエージェントとフローを動作させることで、このギャップを埋めます。Google Cloudを推論の基盤として選択している場合、Vertex AIはエージェントが呼び出すモデルとサービスを提供し、GitLabのAI Gatewayがアクセスを仲介することで管理者はどこに何が接続されているかを明確に把握できます。例えば、GitLab Duo Planner Agentはバックログを分析し、エピックを構造化タスクに分解し、優先順位付けフレームワークを適用することで、次に何を構築するかをチームが判断するのを支援します。Security Analyst Agentは脆弱性をトリアージし、平易な言葉でリスクを説明し、優先順位に従って修正を推奨します。ビルトインのフローはこれらのエージェントをエンドツーエンドのプロセスへと連結し、開発者がすべてのハンドオフを手動で管理する必要をなくします。\n\nGitLab Duo Agent PlatformのAgentic Chatは、開発者にとって統合された体験を提供します。自然言語でクエリを投げかけることで、プロジェクトのイシュー、マージリクエスト、パイプライン、セキュリティの検出結果、コードベースといった全体像を踏まえた多段階の推論に基づくコンテキスト対応の回答が得られます。GitLabがSDLCの統一データモデルを持つ記録システムとして機能しているため、GitLab Duoエージェントは、スタンドアロンのツール固有AIアシスタントでは到達できないライフサイクルコンテキストをもとに動作します。\n\n### Vertex AIによる能力の拡張\n\nGitLab Duo Agent Platformはモデルフレキシブルな設計となっており、タスクごとに最適なパフォーマンスを発揮するモデルへと異なる機能をルーティングします。このアーキテクチャの選択はGoogle Cloud上で効果を発揮します。Vertex AIはファウンデーションモデルと関連サービスのマネージド環境として機能し、幅広いモデルエコシステムとマネージドインフラを提供することでプラットフォームの能力をさらに引き出します。\n\nVertex AIを通じて利用できる最新世代のAIモデルは、以前のバージョンと比較して推論、ツール使用、長文コンテキスト理解において大幅な改善をもたらします。これらはまさに、GitLabのエージェントが大規模で複雑なコードベースを持つ多くのプロジェクトとチームにわたって依拠するプロパティです。基盤モデルにおけるより長いコンテキストウィンドウと豊富なツール連携により、エージェントが一度のパスで達成できることが広がり、深いバックログ分析やモノレポのセキュリティレビューといったワークロードに特に重要な意味を持ちます。\n\n幅広いファウンデーションモデルへのアクセスを提供する[Vertex AI Model Garden](https://cloud.google.com/model-garden)により、ベンダーロックインではなく、パフォーマンス、コスト、規制要件に基づいてこれらの選択を行う自由がお客様に与えられます。\n\nさらに、GitLabのお客様はDuo Agent PlatformにBYOM（Bring Your Own Model）を利用することで、承認済みのプロバイダーとゲートウェイをセキュリティモデルが期待する場所に配置できます。[18.9リリースにおけるセルフホスト型Duo Agent PlatformとBYOMの解説](https://about.gitlab.com/blog/agentic-ai-enterprise-control-self-hosted-duo-agent-platform-and-byom/)では、その仕組みが詳しく説明されています。このデプロイオプションにより、お客様はソフトウェア開発プロセスに合わせてカスタマイズできるより広いモデルの選択肢へのアクセスを得られます。適切なワークフローに、適切なモデルを、適切なガードレールとともに。\n\nGitLabがVertex AIを基盤として選択したのは、エンタープライズグレードの信頼性と比類ないモデルの幅広さへのニーズによるものです。Vertex AIとModel Gardenは、LLMホスティングの重労働を完全に抽象化し、迅速なバージョン提供、堅牢なセキュリティ、厳格なガバナンスをシームレスに統合に組み込んでいます。Geminiモデルの提供にとどまらず、Vertex AIはサードパーティおよびオープンソースモデルの豊富なカタログへのグローバルかつ低レイテンシのアクセスを提供します。\n\nGoogleCloudの業界をリードするデータプライバシーとモデル保護へのアプローチと組み合わせることで、Vertex AIはGitLabの次世代デベロッパーエクスペリエンスを支える明確な選択肢として浮上しました。\n\nVertex AI Model GardenをバックエンドへIntegrateすることで、GitLabはDevSecOpsプラットフォームを強化しながら、その複雑さをユーザーに負わせることがありません。開発チームは基盤となるLLMの評価や管理に煩わされることなく、アプリケーション構築のための効率的なAI支援ワークフローを体験できます。\n\nGitLabはクラウドオーケストレーションを完全に抽象化し、開発者が優れたコードの記述に集中できる環境を提供する一方、Vertex AIはその支援となる機能を動かしています。\n\n## Google Cloudをご利用のお客様への意義\n\nGitLab Duo Agent Platformはすでに、一つのガバナンスの効いた記録システムの中でソフトウェアライフサイクル全体にわたって動作するAIエージェントを提供しています。Google Cloud上では、Vertex AIがモデルとインフラ層を継続的に進化させながら、迅速なイノベーションを可能にします。\n\nGoogle Cloudをご利用のお客様にとって、この統合は厳格なエンタープライズガバナンスを維持しながらソフトウェア提供を効率化することを意味します。プラットフォームエンジニアリンググループにとっては、クライアントサイドのツールを数十種類カタログ化するのではなく、GitLab内の提案、分析、修正を担うVertex AI連携モデルを標準化することを意味します。セキュリティプログラムは、エージェントが開発者がすでに検出結果をトリアージしている場所と同じ場所で修正を提案・検証することで、頭の切り替えを減らし、管理されていないチャネルへ流出していた作業を削減できます。\n\nクラウドの費用対効果とポリシーの観点から、GitLab内からVertexへのエージェント推論をまとめることで、Google Cloud上ですでに運用している契約や統制に近い形で使用量を管理でき、調達プロセスを迂回する重複支出やシャドーパスを回避するのに役立ちます。\n\nVertex AIはGitLab Duo Agent Platformの基盤インフラプロバイダーであるため、組織はAIツールチェーンの断片化を管理するオーバーヘッドとリスクなしに、デベロッパーの生産性を大幅に向上させることができます。チームは単一のセキュアな記録システムの中で足並みを揃え、アプリケーションをより速くビルドし、確信を持ってリリースできるようになります。\n\nGitLabとGoogle Cloudのコラボレーションは2018年から続いています。今日、これはAIの実験から、Google Cloud上での完全にガバナンスが効いたエージェント型ソフトウェア開発へと移行する組織にとって、最も包括的なパスの一つとなっています。GitLabがエージェントオーケストレーションとデベロッパーコンテキストを拡充し、Vertex AIがモデル能力とエージェントインフラの限界を押し広げていく中で、共同顧客にとっての価値は今後も成長し続けるでしょう。\n\n> [GitLab Duo Agent Platformの無料トライアルを開始](https://about.gitlab.com/free-trial/)して、Google Cloud上でのGitLabとVertex AIのパワーをぜひご体験ください。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663121/Blog/Hero%20Images/LogoLockupPlusLight.png","2026-04-14",[21,289,750,751,736],"google","news",{"featured":15,"template":13,"slug":753},"gitlab-and-vertex-ai-on-google-cloud",{"content":755,"config":765},{"heroImage":756,"body":757,"authors":758,"updatedDate":760,"date":761,"title":762,"tags":763,"description":764,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643639/sapu29gmlgtwvhggmj6k.png","ソフトウェア開発の管理では、複数のツールを同時に扱うことが求められます。Jiraで課題を追跡し、IDEでコードを記述し、GitLabでコラボレーションするといった具合です。こうしたプラットフォーム間のコンテキストの切り替えは集中力を妨げ、デリバリーを遅らせます。\n\nGitLab Duo Agent Platformの[MCP](https://about.gitlab.com/topics/ai/model-context-protocol/)サポートにより、Jiraをはじめ、MCPに対応するあらゆるツールを、AIを活用した開発環境に直接接続できるようになりました。課題の照会、チケットの更新、ワークフローの同期など、すべてを自然言語で、IDEを離れることなく実行できます。\n\n## この記事で学べること\n\nこのチュートリアルでは、以下の内容を解説します。\n\n* **Jira/Atlassian OAuthアプリケーションのセットアップ** — セキュアな認証を設定します\n* **GitLab Duo Agent Platformの設定** — GitLab Duo Agent PlatformをMCPクライアントとして設定します\n* **3つの実践的なユースケース** — 実際のワークフローのデモをご覧ください\n\n## 前提条件\n\n開始する前に、以下の要件を満たしていることをご確認ください。\n\n| 要件 | 詳細 |\n| ---- | ----- |\n| **GitLabインスタンス** | Duo Agent Platformが有効なGitLab 18.8以降 |\n| **Jiraアカウント** | OAuthアプリケーションを作成できる管理者権限を持つJira Cloudインスタンス |\n| **IDE** | GitLab Workflow拡張機能がインストールされたVisual Studio Code |\n| **MCPサポート** | GitLabでMCPサポートが有効化済み |\n\n\n## アーキテクチャの概要\n\nGitLab Duo Agent Platformは**MCPクライアント**として機能し、Atlassian MCPサーバーに接続してJiraのプロジェクト管理データにアクセスします。Atlassian MCPサーバーは認証を処理し、自然言語のリクエストをAPI呼び出しに変換して、構造化されたデータをGitLab Duo Agent Platformに返します。このプロセス全体を通じて、セキュリティと監査管理が維持されます。\n\n## パート1：Jira OAuthアプリケーションの設定\n\nGitLab Duo Agent PlatformをJiraインスタンスに安全に接続するには、Atlassian Developer ConsoleでOAuth 2.0アプリケーションを作成する必要があります。これにより、GitLabのMCPサーバーにJiraデータへの認可されたアクセス権が付与されます。\n\n### セットアップ手順\n\n手動で設定する場合は、以下の手順に従ってください。\n\n1. **Atlassian Developer Consoleへのアクセス**\n\n   * [developer.atlassian.com/console/myapps](https://developer.atlassian.com/console/myapps)にアクセスします。\n\n   * Atlassianアカウントでサインインします。\n\n2. **新しいOAuth 2.0アプリの作成**\n\n   * 「**Create**」→「**OAuth 2.0 integration**」をクリックします。\n\n   * アプリ名を入力します（例：「gitlab-dap-mcp」）。\n\n   * 利用規約に同意し、「**Create**」をクリックします。\n\n3. **権限の設定**\n\n   * 左サイドバーの「**Permissions**」に移動します。\n\n   * 「**Jira API**」を追加し、以下のスコープを設定します。\n\n     * `read:jira-work` — 課題、プロジェクト、ボードの読み取り\n\n     * `write:jira-work` — 課題の作成と更新\n\n     * `read:jira-user` — ユーザー情報の読み取り\n\n4. **認可の設定**\n\n   * 左サイドバーの「**Authorization**」に移動します。\n\n   * お使いの環境のコールバックURLを追加します（`https://gitlab.com/oauth/callback`）。\n\n   * 変更を保存します。\n\n5. **認証情報の取得**\n\n   * 「**Settings**」に移動します。\n\n   * 「**Client ID**」と「**Client Secret**」をコピーします。\n\n   * これらの認証情報はMCP設定に必要なため、安全な場所に保管してください。\n\n\n### インタラクティブウォークスルー：Jira OAuthのセットアップ\n\n以下の画像をクリックして開始してください。\n\n\n[![Jira OAuthセットアップツアー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772644850/wnzfoq43nkkfmgdqldmr.png)](https://gitlab.navattic.com/jira-oauth-setup)\n\n\n## パート2：GitLab Duo Agent PlatformのMCPクライアントの設定\n\nOAuth認証情報の準備ができたら、GitLab Duo Agent PlatformをAtlassian MCPサーバーに接続するための設定を行います。\n\n### MCP設定ファイルの作成\n\nGitLabプロジェクトの `.gitlab/duo/mcp.json` にMCP設定ファイルを作成します。\n\n\n```json\n{\n  \"mcpServers\": {\n    \"atlassian\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.atlassian.com/v1/mcp\",\n      \"auth\": {\n        \"type\": \"oauth2\",\n        \"clientId\": \"YOUR_CLIENT_ID\",\n        \"clientSecret\": \"YOUR_CLIENT_SECRET\",\n        \"authorizationUrl\": \"https://auth.atlassian.com/oauth/authorize\",\n        \"tokenUrl\": \"https://auth.atlassian.com/oauth/token\"\n      },\n      \"approvedTools\": true\n    }\n  }\n}\n```\n\n`YOUR_CLIENT_ID` と `YOUR_CLIENT_SECRET` は、パート1で生成した認証情報に置き換えてください。\n\n### GitLabでMCPを有効化\n\n1. 「**グループ設定**」→「**GitLab Duo**」→「**Configuration**」に移動します。\n2. 「Allow external MCP tools」にチェックが入っていることを確認します。\n\n### 接続の確認\n\nVS Codeでプロジェクトを開いてGitLab Duo Agent Platformのチャットで次のように入力してください。\n\n```text\nWhat MCP tools do you have access to?\n```\n\n次に、以下のように入力します。\n\n```text\nTest the MCP JIRA configuration in this project\n```\n\nこの時点で、IDEからAtlassian MCPウェブサイトにリダイレクトされ、アクセスの承認を求められます。\n\n![Atlassian MCPウェブサイトへのリダイレクト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/z5acqjgguh0damnnde9g.png \"MCPのAtlassianウェブサイトへのリダイレクト\")\n\n\u003Cbr>\u003C/br>\n\n![アクセスの承認](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/rwowamm8nsubhpixtn3i.png \"アクセスの承認\")\n\n\u003Cbr>\u003C/br>\n\n![JIRAインスタンスを選択して承認](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643461/chuzqd0jeptfwvoj7wjr.png \"JIRAインスタンスを選択して承認\")\n\n\u003Cbr>\u003C/br>\n\n![成功！](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/bsgti5iste2bzck19o5y.png \"成功！\")\n\n\u003Cbr>\u003C/br>\n\n### MCPダッシュボードでの確認\n\nGitLabには、IDEに組み込みの**MCPダッシュボード**も用意されています。\n\nVS CodeまたはVSCodiumで、コマンドパレット（macOSでは `Cmd+Shift+P`、Windows/Linuxでは `Ctrl+Shift+P`）を開いて「**GitLab: Show MCP Dashboard**」を検索してください。ダッシュボードは新しいエディタータブで表示され、以下の情報を確認できます。\n\n* 設定済みの各MCPサーバーの**接続ステータス**\n* サーバーが公開している**利用可能なツール**（例：`jira_get_issue`、`jira_create_issue`）\n* **サーバーログ** — リアルタイムで呼び出されているツールを確認可能\n\n![MCPサーバーのダッシュボードとステータス](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/mmvdfchucacsydivowvn.png \"MCPサーバーのダッシュボードとステータス\")\n\n\u003Cbr>\u003C/br>\n\n![サーバーの詳細と権限](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643462/tcocgdvovp2dl42pvfn8.png \"サーバーの詳細と権限\")\n\n\u003Cbr>\u003C/br>\n\n\n![MCPサーバーログ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772643466/mougvqqk1bozchaufsci.png \"MCPサーバーログ\")\n\n\u003Cbr>\u003C/br>\n\n### インタラクティブウォークスルー：MCPのテスト\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005495?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Testing MCP\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## パート3：実践的なユースケース\n\n統合の設定が完了したら、JiraをGitLab Duo Agent Platformへの接続を実現できる3つの実践的なワークフローを見ていきましょう。\n\n### プランニングアシスタント\n\n**シナリオ：** スプリントプランニングの準備として、バックログをすばやく評価し、優先事項を把握し、ブロッカーを特定する必要があります。\n\nこのデモでは以下の操作を紹介します。\n\n* バックログの照会\n* 未割り当ての高優先度課題の特定\n* AIによるスプリント推奨の取得\n\n#### プロンプト例\n\nGitLab Duo Agent Platformのチャットで以下のプロンプトをお試しください。\n\n```text\nList all the unassigned issues in JIRA for project GITLAB\n```\n\n```text\nSuggest the two top issues to prioritize and summarize them. Assign them to me.\n```\n\n### インタラクティブウォークスルー：プロジェクトプランニング\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005462?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Project Planning\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player. js\">\u003C/script>\n\n### コードからの課題トリアージと作成\n\n**シナリオ：** コードレビュー中にバグを発見し、IDEを離れることなく、関連するコンテキストに沿ってJiraの課題を作成したい場合です。\n\nこのデモでは以下の手順を紹介します。\n\n* コーディング中のバグの特定\n* 自然言語を使ったJira課題の詳細な作成\n* コードのコンテキストに沿った課題フィールドの自動入力\n* 現在のブランチへの課題のリンク\n\n#### プロンプト例\n\n```text\nSearch in JIRA for a bug related to: Null pointer exception in PaymentService.processRefund().\nIf it does not exist create it with all the context needed from the code. Find possible blockers that this bug may cause.\n```\n\n```text\nCreate a new branch called issue-gitlab-18, checkout, and link it to the issue we just created. Assign the JIRA issue to me and mark it as in-progress.\n```\n\n### インタラクティブウォークスルー：バグレビューとタスク自動化\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005368?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Bug Review\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n### クロスシステムのインシデント調査\n\n**シナリオ：** 本番環境でインシデントが発生し、Jira（インシデントチケット）、GitLabプロジェクト管理、コードベース、マージリクエストからの情報を照合して根本原因を特定する必要があります。\n\nこのデモでは以下を実演します。\n\n* Jiraからのインシデント詳細の取得\n* GitLabの最近のマージリクエストとの照合\n* 関連する可能性のあるコード変更の特定\n* インシデントタイムラインの生成\n* 修正計画の設計とGitLabのワークアイテムとしての作成\n\n#### プロンプト例\n\n```text\n\"We have a production incident INC-1 about checkout failures. Can you help me investigate with all available context?\"\n```\n\n```text\nCreate a timeline of events for incident INC-1 including related Jira issues and recent deployments\n```\n\n```text\nPropose a remediation plan\n```\n\n### インタラクティブウォークスルー：クロスシステムのトラブルシューティングと修正\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1170005413?badge=0&amp;autopause=0&amp; player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Cross System Investigation\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## トラブルシューティング\n\nよくあるセットアップの問題と解決策を以下にまとめます。\n\n| 問題 | 解決策 |\n| ----- | ----- |\n| 「MCP server not found」 | `mcp.json` ファイルが正しい場所にあり、適切にフォーマットされていることを確認してください。 |\n| 「Authentication failed」 | OAuth認証情報を再確認し、Atlassianでスコープが正しく設定されていることを確認してください。 |\n| 「No Jira tools available」 | `mcp.json` を更新後にVS Codeを再起動し、GitLabでMCPが有効になっていることを確認してください。 |\n| 「Connection timeout」 | `mcp.atlassian.com` へのネットワーク接続を確認してください。 |\n\n\u003Cbr/> 詳細なトラブルシューティングについては、[GitLab MCPクライアントのドキュメント](https://docs.gitlab.com/ja-jp/user/gitlab_duo/model_context_protocol/mcp_clients/)をご参照ください。\n\n\n## セキュリティに関する考慮事項\n\nJiraをGitLab Duo Agent Platformと統合する際は、以下の点にご注意ください。\n\n* **OAuthトークン** — 認証情報を安全に管理してください。\n* **最小権限の原則** — Jiraスコープは必要最小限のみ付与してください。\n* **トークンのローテーション** — セキュリティ管理の一環として、OAuth認証情報を定期的にローテーションしてください。\n\n\n## まとめ\n\nMCPを通じてGitLab Duo Agent Platformをさまざまなツールに接続することで、開発ライフサイクルとのインタラクションが大きく変わります。この記事では、以下の方法を学びました。\n\n* **自然言語による課題の照会** — バックログ、スプリント、インシデントについて自然言語で質問できます。\n* **DevSecOps環境全体での課題の作成と更新** — IDEを離れることなくバグを報告し、チケットを更新できます。\n* **システム間の情報照合** — JiraのデータをGitLabのプロジェクト管理、マージリクエスト、パイプラインと組み合わせることで、全体的な可視性が得られます。\n* **コンテキスト切り替えの削減** — プロジェクト管理とのつながりを維持しながら、コードに集中できます。\n\nこの統合は、MCPの可能性を体現するものです。AIを通じてツールへの標準化されたセキュアなアクセスを提供し、ガバナンスやセキュリティを損なうことなく、デベロッパーがより効率的に作業できる環境を実現します。\n\n\n## 関連リソース\n\n* [Model Context Protocol統合](https://about.gitlab.com/ja-jp/blog/duo-agent-platform-with-mcp/)\n\n* [Model Context Protocolとは](https://about.gitlab.com/topics/ai/model-context-protocol/)\n\n* [エージェント型AIに関するガイドとリソース](https://about.gitlab.com/ja-jp/blog/agentic-ai-guides-and-resources/)\n\n* [GitLab MCPクライアントのドキュメント](https://docs.gitlab.com/ja-jp/user/gitlab_duo/model_context_protocol/mcp_clients/)\n\n* [GitLab Duo Agent Platformを始める：完全ガイド](https://about.gitlab.com/ja-jp/blog/gitlab-duo-agent-platform-complete-getting-started-guide/)",[759],"Albert Rabassa","2026-03-30","2026-03-05","MCPであらゆるツールを接続してGitLab Duo Agent Platformを拡張",[736,22],"MCPを使用して外部ツールをGitLab Duo Agent Platformに接続する方法を解説します。3つの実践的なワークフローデモを含むステップバイステップのセットアップガイドです。",{"featured":33,"template":13,"slug":766},"extend-gitlab-duo-agent-platform-connect-any-tool-with-mcp",{"header":768,"blurb":769,"button":770,"secondaryButton":774},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":50,"config":771},{"href":772,"dataGaName":53,"dataGaLocation":773},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":55,"config":775},{"href":57,"dataGaName":58,"dataGaLocation":773},{"promotions":777},[778,791,802,814],{"id":779,"categories":780,"header":781,"text":782,"button":783,"image":788},"ai-modernization",[11],"Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":784,"config":785},"Get your AI maturity score",{"href":786,"dataGaName":787,"dataGaLocation":256},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":789},{"src":790},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":792,"categories":793,"header":794,"text":782,"button":795,"image":799},"devops-modernization",[736,581],"Are you just managing tools or shipping innovation?",{"text":796,"config":797},"Get your DevOps maturity score",{"href":798,"dataGaName":787,"dataGaLocation":256},"/assessments/devops-modernization-assessment/",{"config":800},{"src":801},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":803,"categories":804,"header":806,"text":782,"button":807,"image":811},"security-modernization",[805],"security","Are you trading speed for security?",{"text":808,"config":809},"Get your security maturity score",{"href":810,"dataGaName":787,"dataGaLocation":256},"/assessments/security-modernization-assessment/",{"config":812},{"src":813},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":815,"paths":816,"header":819,"text":820,"button":821,"image":826},"github-azure-migration",[817,818],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":822,"config":823},"See how GitLab compares to GitHub",{"href":824,"dataGaName":825,"dataGaLocation":256},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":827},{"src":801},1777934832318]