[{"data":1,"prerenderedAt":706},["ShallowReactive",2],{"/ja-jp/blog/how-gitlab-duo-agent-platform-transforms-dataops":3,"navigation-ja-jp":34,"banner-ja-jp":448,"footer-ja-jp":461,"footer-source-/ja-jp/blog/how-gitlab-duo-agent-platform-transforms-dataops/":671,"Dennis van Rooijen":677,"next-steps-ja-jp":691},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"config":23,"_id":27,"_type":28,"title":29,"_source":30,"_file":31,"_stem":32,"_extension":33},"/ja-jp/blog/how-gitlab-duo-agent-platform-transforms-dataops","blog",false,"",{"title":9,"description":10},"GitLab Duo Agent PlatformがDataOpsを変革する方法","本ブログでは、dbtモデル作成方法を詳しく解説し、何時間もかかっていた手動コーディングを、わずか数分の自動生成に変える方法をご紹介します。",{"heroImage":12,"body":13,"authors":14,"updatedDate":16,"date":17,"title":9,"tags":18,"description":10,"category":22},"blog/hero%20images/workflow_1800x945.png","dbtモデルの手動作成は、データエンジニアにとって何時間も取られる単調な作業です。特に大きなビジネス変換がない場合、エンジニアのデータ業務の中でも最もやりがいを感じにくい部分と言えるでしょう。\n\n\nしかし、このプロセス全体を自動化できるとしたらどうでしょうか？本ブログでは、[GitLab Duo Agent Platform](https://about.gitlab.com/gitlab-duo/agent-platform/)を使用して、適切な構造、テスト、ドキュメントを含む包括的なdbtモデルをわずか数分で生成する方法を詳しく解説します。\n\n\n## 何を構築するのか\n\n\nマーケティングチームは、広告投資を効果的に管理・最適化したいと考えています。広告プラットフォームの一つがRedditであるため、Reddit Ads APIからエンタープライズ[データプラットフォーム](https://handbook.gitlab.com/handbook/enterprise-data/platform/)Snowflakeにデータを抽出しています。GitLabでは、3つのストレージレイヤーがあります：\n\n\n1. `raw`レイヤー - 外部ソースからの未処理データの最初の着陸地点。ビジネス用途に準備されていない\n\n2. `prep`レイヤー - ソースモデルを含む最初の変換レイヤー。まだ一般的なビジネス用途には準備されていない\n\n3. `prod`レイヤー - ビジネス用途とTableauレポート用に準備された最終変換データ\n\n\n![ストレージレイヤーのチャート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1758030995/zo7vespktzfdtdtiauz7.png)\n\n\nこの実践ガイドでは、データは既に抽出ツールFivetranによってrawレイヤーに配置されており、`prep`レイヤーから`prod`レイヤーまでデータを処理するdbtモデルを生成します。\n\n\n一行のdbtコードを自分で書くことなく、このガイドを最後まで進めると以下が完成します：\n\n\n* prepレイヤーの**ソースモデル**\n\n* prodレイヤーの**ワークスペースモデル**\n\n* Reddit Adsデータセットのすべての13テーブル（112列を含む）の**完全なdbt構成**\n\n* 結果を検証する**テストクエリ**\n\n\nプロセス全体は10分以内で完了します。手動では通常数時間かかる作業です。以下の手順に従ってください：\n\n\n## 1. データ構造の準備\n\n\nGitLab Duoがモデルを生成する前に、完全なテーブル構造を理解する必要があります。そこで重要になるのが、Snowflakeの情報スキーマに対してクエリを実行することです。現在、GitLab DuoをModel Context Protocol（[MCP](https://about.gitlab.com/topics/ai/model-context-protocol/)）経由でSnowflakeインスタンスに接続する方法を検討中です：\n\n\n```sql\n\nSELECT \n    table_name,\n    column_name,\n    data_type,\n    is_nullable,\n    CASE \n        WHEN is_nullable = 'NO' THEN 'PRIMARY_KEY'\n        ELSE NULL \n    END as key_type\nFROM raw.information_schema.columns\n\n\nWHERE table_schema = 'REDDIT_ADS'\n\n\nORDER BY table_name, ordinal_position;\n\n```\n\n\nこのクエリは以下を取得します：\n\n\n* すべてのテーブル名と列名\n\n* 適切なモデル構造のためのデータ型\n\n* NULL制約\n\n* 主キーの識別（このデータセットでは非NULL列）\n\n\n**ポイント：** Reddit Adsデータセットでは、すべての非NULL列が主キーとして機能するパターンになっています。実際に`ad_group`などのテーブルを確認したところ、このテーブルには2つの非NULL列（`account_id`と`id`）があり、両方とも主キーとしてマークされています。このクエリを実行すると112行のメタデータが返されたため、それらをCSVファイルとしてエクスポートしてモデル生成に使用しました。この手動ステップは現在は問題なく機能していますが、MCPを介してデータプラットフォームとGitLab Duoの直接統合を調査して、このプロセスの完全自動化を目指して取り組んでいます。\n\n\n## 2. GitLab Duoのセットアップ\n\n\n[GitLab Duo](https://docs.gitlab.com/user/get_started/getting_started_gitlab_duo/)と対話する方法は2つあります：\n\n\n1. **Web UIチャット機能**\n\n2. **Visual Studio Codeプラグイン**\n\n\ndbtモデルをローカルで実行してテストできるため、VS Codeプラグインを選択しました。\n\n\n## 3. 「効果的な」プロンプトの入力\n\n\nすべてのdbtコードを生成するために使用した実際のプロンプトは以下の通りです：\n\n\n```yaml\n\nCreate dbt models for all the tables in the file structure.csv.（structure.csvファイル内のすべてのテーブルに対してdbtモデルを作成してください）\n\n\n\nI want to have the source models created, with a filter that dedupes the data based on the primary key. Create these in a new folder reddit_ads.（主キーに基づいてデータの重複を除去するフィルターを使用してソースモデルを作成したいです。これらを新しいフォルダーreddit_adsに作成してください。）\n\n\nI want to have workspace models created and store these in the workspace_marketing schema.（ワークスペースモデルを作成し、これらをworkspace_marketingスキーマに保存してください。）\n\n\n\nTake this MR as example: [I've referenced to previous source implementation]. Here is the same done for Source A, but now it needs to be done for Reddit Ads. \n\n\n（このMRを例として参考にしてください： [以前のソース実装を参照]。これはSource Aで実施した内容ですが、同様の処理をReddit Adsに対して行う必要があります。）\n\n\n\nPlease check the dbt style guide when creating the code: https://handbook.gitlab.com/handbook/enterprise-data/platform/dbt-guide/（コードを作成する際は、dbtスタイルガイドをチェックしてください）\n\n```\n\n\nこのプロンプトが効果的だった理由：\n\n\n* ソースモデルとワークスペースモデル両方の**明確な仕様**\n\n* 以前の類似マージリクエストからの**参考例**\n\n* コードの品質と一貫性を確保するための**スタイルガイド参照**\n\n* 適切な構成管理のための**特定のスキーマ指定**\n\n\n## 4. GitLab Duoのプロセス\n\n\nプロンプトを送信した後、GitLab Duoが作業を開始しました。生成プロセス全体は数分かかり、その間にGitLab Duoは以下を行いました：\n\n\n1. CSV入力ファイルを**読み取り分析**\n\n2. メタデータから**テーブル構造を調査**\n\n3. コーディング標準について**dbtスタイルガイドを参照**\n\n4. 適切な構造化のために**類似のマージリクエストを考慮**\n\n5. すべての13テーブルの**ソースモデルを生成**\n\n6. すべての13テーブルの**ワークスペースモデルを作成**\n\n7. **dbtサポートファイルを生成**：\n\n   * `sources.yml`構成\n   * テストとドキュメントを含む`schema.yml`ファイル\n   * スキーマ参照で`dbt_project.yml`を更新\n\n## 結果\n\n\n出力は素晴らしいものでした：\n\n\n* **変更ファイル1個：** dbt_project.yml（reddit_adsスキーマ構成を追加）\n\n* **新しいファイル29個：**\n\n  * **dbtモデル26個**（ソース13個 + ワークスペース13個）\n  * **YAMLファイル3個**\n* **900行近くのコード**が自動生成\n\n* 主キー列の一意制約を含む**組み込みデータテスト**\n\n* すべてのモデルと列の**汎用説明**\n\n* ソースモデルの**適切な重複除去ロジック**\n\n* GitLab dbtスタイルガイドに従った**クリーンで一貫したコード構造**\n\n\n```yaml\n\ntransform/snowflake-dbt/\n\n\n├── dbt_project.yml                                                    [MODIFIED]（変更）\n\n\n└── models/\n    ├── sources/\n    │   └── reddit_ads/\n    │       ├── reddit_ads_ad_group_source.sql                        [NEW]（新規）\n    │       ├── reddit_ads_ad_source.sql                              [NEW]\n    │       ├── reddit_ads_business_account_source.sql                [NEW]\n    │       ├── reddit_ads_campaign_source.sql                        [NEW]\n    │       ├── reddit_ads_custom_audience_history_source.sql         [NEW]\n    │       ├── reddit_ads_geolocation_source.sql                     [NEW]\n    │       ├── reddit_ads_interest_source.sql                        [NEW]\n    │       ├── reddit_ads_targeting_community_source.sql             [NEW]\n    │       ├── reddit_ads_targeting_custom_audience_source.sql       [NEW]\n    │       ├── reddit_ads_targeting_device_source.sql                [NEW]\n    │       ├── reddit_ads_targeting_geolocation_source.sql           [NEW]\n    │       ├── reddit_ads_targeting_interest_source.sql              [NEW]\n    │       ├── reddit_ads_time_zone_source.sql                       [NEW]\n    │       ├── schema.yml                                            [NEW]\n    │       └── sources.yml                                           [NEW]\n    └── workspaces/\n        └── workspace_marketing/\n            └── reddit_ads/\n                ├── schema.yml                                        [NEW]\n                ├── wk_reddit_ads_ad.sql                              [NEW]\n                ├── wk_reddit_ads_ad_group.sql                        [NEW]\n                ├── wk_reddit_ads_business_account.sql                [NEW]\n                ├── wk_reddit_ads_campaign.sql                        [NEW]\n                ├── wk_reddit_ads_custom_audience_history.sql         [NEW]\n                ├── wk_reddit_ads_geolocation.sql                     [NEW]\n                ├── wk_reddit_ads_interest.sql                        [NEW]\n                ├── wk_reddit_ads_targeting_community.sql             [NEW]\n                ├── wk_reddit_ads_targeting_custom_audience.sql       [NEW]\n                ├── wk_reddit_ads_targeting_device.sql                [NEW]\n                ├── wk_reddit_ads_targeting_geolocation.sql           [NEW]\n                ├── wk_reddit_ads_targeting_interest.sql              [NEW]\n                └── wk_reddit_ads_time_zone.sql                       [NEW]\n```\n\n\n### 生成されたコードのサンプル\n\n\n生成されたコード品質の例をご紹介します。`time_zone`テーブルについて、GitLab Duoは以下を作成しました：\n\n\n**Prepレイヤーソースモデル**\n\n\n```sql\n\nWITH source AS (\n  SELECT *\n  FROM {{ source('reddit_ads','time_zone') }}\n  QUALIFY ROW_NUMBER() OVER (PARTITION BY id ORDER BY _fivetran_synced DESC) = 1\n),\n\n\n\nrenamed AS (\n  SELECT\n    id::VARCHAR                               AS time_zone_id,\n    code::VARCHAR                             AS time_zone_code,\n    dst_offset::NUMBER                        AS time_zone_dst_offset,\n    is_dst_active::BOOLEAN                    AS is_time_zone_dst_active,\n    name::VARCHAR                             AS time_zone_name,\n    offset::NUMBER                            AS time_zone_offset,\n    _fivetran_synced::TIMESTAMP               AS fivetran_synced_at\n  FROM source\n)\n\n\n\nSELECT * FROM renamed\n\n```\n\n\n**Schema.yml**\n\n\n```yaml\n\nmodels:\n  - name: reddit_ads_time_zone_source\n    description: Time zone data from Reddit Ads system（Reddit Adsシステムからのタイムゾーンデータ）\n    columns:\n      - name: time_zone_id\n        description: Time zone data from Reddit Ads system（タイムゾーンレコードの一意識別子）\n        data_tests:\n          - unique\n          - not_null\n      - name: time_zone_code\n        description: Code for the time zone（タイムゾーンのコード）\n      - name: time_zone_dst_offset\n        description: Daylight saving time offset for the time zone（タイムゾーンの夏時間オフセット）\n      - name: is_time_zone_dst_active\n        description: Flag indicating if daylight saving time is active（夏時間がアクティブかどうかを示すフラグ）\n      - name: time_zone_name\n        description: Name of the time zone（タイムゾーンの名前）\n      - name: time_zone_offset\n        description: Offset for the time zone（タイムゾーンのオフセット）\n      - name: fivetran_synced_at\n        description: Timestamp when the record was last synced by Fivetran（レコードがFivetranによって最後に同期されたタイムスタンプ）\n```\n\n\n**Source.yml**\n\n\n```yaml\n\nsources:\n  - name: reddit_ads\n    database: RAW\n    schema: reddit_ads\n    loaded_at_field: _fivetran_synced\n    loader: fivetran\n    description: Reddit Ads data\n\n    quoting:\n      database: true\n      schema: false\n      identifier: false\n\n    tables:\n      - name: time_zone\n```\n\n\n**ワークスペースモデル**\n\n\n```sql\n\nWITH source AS (\n  SELECT *\n  FROM {{ ref('reddit_ads_time_zone_source') }}\n)\n\n\n\nSELECT * FROM source\n\n```\n\n\n## 5. 品質検証\n\n\nコードに問題がないことを確認し、MRにプッシュして[CIテストパイプライン](https://handbook.gitlab.com/handbook/enterprise-data/platform/ci-jobs/#build_changes)を実行し、コードのテストと結果検証を行いました。GitLab Duoに検証クエリの作成を依頼しました：\n\n\n```yaml\n\nCreate a test query to test the row counts between the raw layer and the workspace layer. Keep in mind that we do deduplication, so we can compare both using distinct on the primary keys.（rawレイヤーとworkspaceレイヤー間の行数をテストするクエリを作成してください。重複除去を実施しているため、主キーに対してdistinctを使用して比較できます。）\n\n```\n\n\nAIが生成した包括的な検証クエリには、以下が含まれています：\n\n\n* rawレイヤーとワークスペースレイヤー間の行数を比較\n\n* 重複除去ロジックに対応\n\n* 全13テーブルをテスト\n\n* データ保持率を算出\n\n\n\u003Cdetails>\n\n\n\u003Csummary>生成されたSQLテストクエリ\u003C/summary>\n\n\n```sql\n\n-- Reddit Ads Row Count Validation Test（Reddit Ads行数検証テスト）\n\n\n-- Compares distinct counts between RAW layer and WORKSPACE_MARKETING layer（RAWレイヤーとWORKSPACE_MARKETINGレイヤー間の一意カウントを比較）\n\n\n-- Accounts for deduplication logic in source models（ソースモデルの重複除去ロジックを考慮）\n\n\n\nWITH raw_counts AS (\n  -- Single primary key tables（単一主キーテーブル）\n  SELECT 'ad' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.AD\n  \n  UNION ALL\n  \n  SELECT 'business_account' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.BUSINESS_ACCOUNT\n  \n  UNION ALL\n  \n  SELECT 'campaign' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.CAMPAIGN\n  \n  UNION ALL\n  \n  SELECT 'custom_audience_history' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.CUSTOM_AUDIENCE_HISTORY\n  \n  UNION ALL\n  \n  SELECT 'geolocation' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.GEOLOCATION\n  \n  UNION ALL\n  \n  SELECT 'interest' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.INTEREST\n  \n  UNION ALL\n  \n  SELECT 'time_zone' AS table_name, COUNT(DISTINCT id) AS raw_count\n  FROM RAW.REDDIT_ADS.TIME_ZONE\n  \n  -- Composite primary key tables（複合主キーテーブル）\n  UNION ALL\n  \n  SELECT 'ad_group' AS table_name, COUNT(DISTINCT CONCAT(account_id, '|', id)) AS raw_count\n  FROM RAW.REDDIT_ADS.AD_GROUP\n  \n  UNION ALL\n  \n  SELECT 'targeting_community' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', community_id)) AS raw_count\n  FROM RAW.REDDIT_ADS.TARGETING_COMMUNITY\n  \n  UNION ALL\n  \n  SELECT 'targeting_custom_audience' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', custom_audience_id)) AS raw_count\n  FROM RAW.REDDIT_ADS.TARGETING_CUSTOM_AUDIENCE\n  \n  UNION ALL\n  \n  SELECT 'targeting_device' AS table_name, COUNT(DISTINCT _fivetran_id) AS raw_count\n  FROM RAW.REDDIT_ADS.TARGETING_DEVICE\n  \n  UNION ALL\n  \n  SELECT 'targeting_geolocation' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', geolocation_id)) AS raw_count\n  FROM RAW.REDDIT_ADS.TARGETING_GEOLOCATION\n  \n  UNION ALL\n  \n  SELECT 'targeting_interest' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', interest_id)) AS raw_count\n  FROM RAW.REDDIT_ADS.TARGETING_INTEREST\n),\n\n\n\nworkspace_counts AS (\n  -- Workspace layer counts using primary keys from schema.yml（schema.ymlの主キーを使用したワークスペースレイヤーカウント）\n  SELECT 'ad' AS table_name, COUNT(DISTINCT ad_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_AD\n  \n  UNION ALL\n  \n  SELECT 'business_account' AS table_name, COUNT(DISTINCT business_account_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_BUSINESS_ACCOUNT\n  \n  UNION ALL\n  \n  SELECT 'campaign' AS table_name, COUNT(DISTINCT campaign_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_CAMPAIGN\n  \n  UNION ALL\n  \n  SELECT 'custom_audience_history' AS table_name, COUNT(DISTINCT custom_audience_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_CUSTOM_AUDIENCE_HISTORY\n  \n  UNION ALL\n  \n  SELECT 'geolocation' AS table_name, COUNT(DISTINCT geolocation_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_GEOLOCATION\n  \n  UNION ALL\n  \n  SELECT 'interest' AS table_name, COUNT(DISTINCT interest_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_INTEREST\n  \n  UNION ALL\n  \n  SELECT 'time_zone' AS table_name, COUNT(DISTINCT time_zone_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TIME_ZONE\n  \n  -- Composite primary key tables（複合主キーテーブル）\n  UNION ALL\n  \n  SELECT 'ad_group' AS table_name, COUNT(DISTINCT CONCAT(ad_group_account_id, '|', ad_group_id)) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_AD_GROUP\n  \n  UNION ALL\n  \n  SELECT 'targeting_community' AS table_name, COUNT(DISTINCT CONCAT(targeting_community_ad_group_id, '|', targeting_community_id)) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_COMMUNITY\n  \n  UNION ALL\n  \n  SELECT 'targeting_custom_audience' AS table_name, COUNT(DISTINCT CONCAT(targeting_custom_audience_ad_group_id, '|', targeting_custom_audience_id)) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_CUSTOM_AUDIENCE\n  \n  UNION ALL\n  \n  SELECT 'targeting_device' AS table_name, COUNT(DISTINCT targeting_device_fivetran_id) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_DEVICE\n  \n  UNION ALL\n  \n  SELECT 'targeting_geolocation' AS table_name, COUNT(DISTINCT CONCAT(targeting_geolocation_ad_group_id, '|', targeting_geolocation_id)) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_GEOLOCATION\n  \n  UNION ALL\n  \n  SELECT 'targeting_interest' AS table_name, COUNT(DISTINCT CONCAT(targeting_interest_ad_group_id, '|', targeting_interest_id)) AS workspace_count\n  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_INTEREST\n)\n\n\n\n-- Final comparison with validation results（検証結果との最終比較）\n\n\nSELECT \n  r.table_name,\n  r.raw_count,\n  w.workspace_count,\n  r.raw_count - w.workspace_count AS count_difference,\n  CASE \n    WHEN r.raw_count = w.workspace_count THEN '✅ PASS（成功）'\n    WHEN r.raw_count > w.workspace_count THEN '⚠️ RAW > WORKSPACE (Expected due to deduplication 重複除去のため正常)'\n    ELSE '❌ FAIL（失敗） - WORKSPACE > RAW (Unexpected 異常)'\n  END AS validation_status,\n  ROUND((w.workspace_count::FLOAT / r.raw_count::FLOAT) * 100, 2) AS data_retention_percentage\nFROM raw_counts r\n\n\nJOIN workspace_counts w ON r.table_name = w.table_name\n\n\nORDER BY r.table_name;\n\n```\n\n\n\u003C/details>\n\n\n![クエリ結果テーブル](https://res.cloudinary.com/about-gitlab-com/image/upload/v1758030995/guicjhzwvrz3czwjs3xo.png)\n\n\nこのクエリを実行した結果：\n\n\n* 重複除去後の行数に**差異なし**\n\n* 全テーブルで**100%のデータ保持**\n\n* **すべてのテスト**が正常に完了\n\n\n## 結論：大幅な時間短縮\n\n\n* **従来のアプローチ：** 手動コーディング、テスト、デバッグで6-8時間\n\n* **GitLab Duoを活用：** 生成 + レビュー時間で6-8分\n\n\n開発効率が60倍に向上（6-8時間から6-8分へ）し、高品質なコードを確保できます。\n\n\n## 成功のためのベストプラクティス\n\n\n本事例から得られた主要な推奨事項：\n\n\n### メタデータの準備\n\n\n* データ型や制約を含む完全なテーブル構造を抽出する\n\n* 主キーと関係を事前に特定する\n\n* クリーンで適切にフォーマットされたCSV入力ファイルをエクスポートする\n\n\n**注：** GitLab DuoをMCP経由で（メタ）データに接続することで、この手動ステップを省略できる可能性があります。\n\n\n### 明確なコンテキストの提供\n\n\n* 可能な限り既存のMR例を参照例として示す\n\n* コーディング標準とスタイルガイドを明示する\n\n* フォルダー構造と命名規則について明確に指定する\n\n\n### 徹底的な検証\n\n\n* データ整合性を確認する検証クエリを必ず作成する\n\n* マージ前にローカルでテストする\n\n* CI/CDパイプラインを実行して問題を検出する\n\n\n### AIを活用したフォローアップ作業\n\n\n* テストクエリを自動生成する\n\n* ドキュメントテンプレートを作成する\n\n* 検証スクリプトを構築する\n\n\n## 今後の展開\n\n\n本ガイドでは、GitLab DuoをはじめとするAI搭載開発ツールがデータエンジニアリングワークフローをいかに変革しているかを示しました。テスト、ドキュメント、適切な構造を含む数百行の本番対応コードを数分で生成できる能力は、反復的な開発タスクへのアプローチの根本的な転換を表しています。\n\n\nAIにdbtモデル作成の反復作業を委ねることで、データエンジニアはデータモデリング戦略、パフォーマンス最適化、ビジネスロジック実装などといった、より価値の高い業務に専念できます。\n\n\n**ぜひお試しください** 小さなデータセットから着手し、メタデータを慎重に準備することで、GitLab Duoが何時間の作業をわずか数分の自動生成に変える様子を実感できます。\n\n\n> [GitLab Duo Agent Platformを今すぐお試しください。](https://about.gitlab.com/gitlab-duo/agent-platform/)\n\n\n## さらに読む\n\n\n* [GitLab 18.3: ソフトウェアエンジニアリングにおけるAIオーケストレーションの拡張](https://about.gitlab.com/ja-jp/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/)\n\n* [GitLab Duo Agent Platform ベータ版：次世代AIオーケストレーション](https://about.gitlab.com/ja-jp/blog/gitlab-duo-agent-platform-public-beta/)\n",[15],"Dennis van Rooijen","2025-09-30","2025-09-16",[19,20,21],"product","tutorial","features","ai-ml",{"slug":24,"featured":25,"template":26},"how-gitlab-duo-agent-platform-transforms-dataops",true,"BlogPost","content:ja-jp:blog:how-gitlab-duo-agent-platform-transforms-dataops.yml","yaml","How Gitlab Duo Agent Platform Transforms Dataops","content","ja-jp/blog/how-gitlab-duo-agent-platform-transforms-dataops.yml","ja-jp/blog/how-gitlab-duo-agent-platform-transforms-dataops","yml",{"_path":35,"_dir":36,"_draft":6,"_partial":6,"_locale":7,"data":37,"_id":444,"_type":28,"title":445,"_source":30,"_file":446,"_stem":447,"_extension":33},"/shared/ja-jp/main-navigation","ja-jp",{"logo":38,"freeTrial":43,"sales":48,"login":53,"items":58,"search":388,"minimal":422,"duo":435},{"config":39},{"href":40,"dataGaName":41,"dataGaLocation":42},"/ja-jp/","gitlab logo","header",{"text":44,"config":45},"無料トライアルを開始",{"href":46,"dataGaName":47,"dataGaLocation":42},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":49,"config":50},"お問い合わせ",{"href":51,"dataGaName":52,"dataGaLocation":42},"/ja-jp/sales/","sales",{"text":54,"config":55},"サインイン",{"href":56,"dataGaName":57,"dataGaLocation":42},"https://gitlab.com/users/sign_in/","sign in",[59,103,200,205,310,370],{"text":60,"config":61,"cards":63,"footer":86},"プラットフォーム",{"dataNavLevelOne":62},"platform",[64,70,78],{"title":60,"description":65,"link":66},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":67,"config":68},"プラットフォームを詳しく見る",{"href":69,"dataGaName":62,"dataGaLocation":42},"/ja-jp/platform/",{"title":71,"description":72,"link":73},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":74,"config":75},"GitLab Duoのご紹介",{"href":76,"dataGaName":77,"dataGaLocation":42},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":79,"description":80,"link":81},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":82,"config":83},"詳細はこちら",{"href":84,"dataGaName":85,"dataGaLocation":42},"/ja-jp/why-gitlab/","why gitlab",{"title":87,"items":88},"利用を開始：",[89,94,99],{"text":90,"config":91},"プラットフォームエンジニアリング",{"href":92,"dataGaName":93,"dataGaLocation":42},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":95,"config":96},"開発者の経験",{"href":97,"dataGaName":98,"dataGaLocation":42},"/ja-jp/developer-experience/","Developer experience",{"text":100,"config":101},"MLOps",{"href":102,"dataGaName":100,"dataGaLocation":42},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":104,"left":25,"config":105,"link":107,"lists":111,"footer":182},"製品",{"dataNavLevelOne":106},"solutions",{"text":108,"config":109},"すべてのソリューションを表示",{"href":110,"dataGaName":106,"dataGaLocation":42},"/ja-jp/solutions/",[112,138,160],{"title":113,"description":114,"link":115,"items":120},"自動化","CI/CDと自動化でデプロイを加速",{"config":116},{"icon":117,"href":118,"dataGaName":119,"dataGaLocation":42},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[121,125,129,134],{"text":122,"config":123},"CI/CD",{"href":124,"dataGaLocation":42,"dataGaName":122},"/ja-jp/solutions/continuous-integration/",{"text":126,"config":127},"AIアシストによる開発",{"href":76,"dataGaLocation":42,"dataGaName":128},"AI assisted development",{"text":130,"config":131},"ソースコード管理",{"href":132,"dataGaLocation":42,"dataGaName":133},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":135,"config":136},"自動化されたソフトウェアデリバリー",{"href":118,"dataGaLocation":42,"dataGaName":137},"Automated software delivery",{"title":139,"description":140,"link":141,"items":146},"セキュリティ","セキュリティを損なうことなくコードをより迅速に完成",{"config":142},{"href":143,"dataGaName":144,"dataGaLocation":42,"icon":145},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[147,151,156],{"text":148,"config":149},"Application Security Testing",{"href":143,"dataGaName":150,"dataGaLocation":42},"Application security testing",{"text":152,"config":153},"ソフトウェアサプライチェーンの安全性",{"href":154,"dataGaLocation":42,"dataGaName":155},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":157,"config":158},"Software Compliance",{"href":159,"dataGaName":157,"dataGaLocation":42},"/ja-jp/solutions/software-compliance/",{"title":161,"link":162,"items":167},"測定",{"config":163},{"icon":164,"href":165,"dataGaName":166,"dataGaLocation":42},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[168,172,177],{"text":169,"config":170},"可視性と測定",{"href":165,"dataGaLocation":42,"dataGaName":171},"Visibility and Measurement",{"text":173,"config":174},"バリューストリーム管理",{"href":175,"dataGaLocation":42,"dataGaName":176},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":178,"config":179},"分析とインサイト",{"href":180,"dataGaLocation":42,"dataGaName":181},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":183,"items":184},"GitLabが活躍する場所",[185,190,195],{"text":186,"config":187},"Enterprise",{"href":188,"dataGaLocation":42,"dataGaName":189},"/ja-jp/enterprise/","enterprise",{"text":191,"config":192},"スモールビジネス",{"href":193,"dataGaLocation":42,"dataGaName":194},"/ja-jp/small-business/","small business",{"text":196,"config":197},"公共機関",{"href":198,"dataGaLocation":42,"dataGaName":199},"/ja-jp/solutions/public-sector/","public sector",{"text":201,"config":202},"価格",{"href":203,"dataGaName":204,"dataGaLocation":42,"dataNavLevelOne":204},"/ja-jp/pricing/","pricing",{"text":206,"config":207,"link":209,"lists":213,"feature":297},"関連リソース",{"dataNavLevelOne":208},"resources",{"text":210,"config":211},"すべてのリソースを表示",{"href":212,"dataGaName":208,"dataGaLocation":42},"/ja-jp/resources/",[214,247,269],{"title":215,"items":216},"はじめに",[217,222,227,232,237,242],{"text":218,"config":219},"インストール",{"href":220,"dataGaName":221,"dataGaLocation":42},"/ja-jp/install/","install",{"text":223,"config":224},"クイックスタートガイド",{"href":225,"dataGaName":226,"dataGaLocation":42},"/ja-jp/get-started/","quick setup checklists",{"text":228,"config":229},"学ぶ",{"href":230,"dataGaLocation":42,"dataGaName":231},"https://university.gitlab.com/","learn",{"text":233,"config":234},"製品ドキュメント",{"href":235,"dataGaName":236,"dataGaLocation":42},"https://docs.gitlab.com/","product documentation",{"text":238,"config":239},"ベストプラクティスビデオ",{"href":240,"dataGaName":241,"dataGaLocation":42},"/ja-jp/getting-started-videos/","best practice videos",{"text":243,"config":244},"インテグレーション",{"href":245,"dataGaName":246,"dataGaLocation":42},"/ja-jp/integrations/","integrations",{"title":248,"items":249},"検索する",[250,255,259,264],{"text":251,"config":252},"お客様成功事例",{"href":253,"dataGaName":254,"dataGaLocation":42},"/ja-jp/customers/","customer success stories",{"text":256,"config":257},"ブログ",{"href":258,"dataGaName":5,"dataGaLocation":42},"/ja-jp/blog/",{"text":260,"config":261},"リモート",{"href":262,"dataGaName":263,"dataGaLocation":42},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":265,"config":266},"TeamOps",{"href":267,"dataGaName":268,"dataGaLocation":42},"/ja-jp/teamops/","teamops",{"title":270,"items":271},"つなげる",[272,277,282,287,292],{"text":273,"config":274},"GitLabサービス",{"href":275,"dataGaName":276,"dataGaLocation":42},"/ja-jp/services/","services",{"text":278,"config":279},"コミュニティ",{"href":280,"dataGaName":281,"dataGaLocation":42},"/community/","community",{"text":283,"config":284},"フォーラム",{"href":285,"dataGaName":286,"dataGaLocation":42},"https://forum.gitlab.com/","forum",{"text":288,"config":289},"イベント",{"href":290,"dataGaName":291,"dataGaLocation":42},"/events/","events",{"text":293,"config":294},"パートナー",{"href":295,"dataGaName":296,"dataGaLocation":42},"/ja-jp/partners/","partners",{"backgroundColor":298,"textColor":299,"text":300,"image":301,"link":305},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":302,"config":303},"ソースプロモカード",{"src":304},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":306,"config":307},"最新情報を読む",{"href":308,"dataGaName":309,"dataGaLocation":42},"/ja-jp/the-source/","the source",{"text":311,"config":312,"lists":314},"会社情報",{"dataNavLevelOne":313},"company",[315],{"items":316},[317,322,328,330,335,340,345,350,355,360,365],{"text":318,"config":319},"GitLabについて",{"href":320,"dataGaName":321,"dataGaLocation":42},"/ja-jp/company/","about",{"text":323,"config":324,"footerGa":327},"採用情報",{"href":325,"dataGaName":326,"dataGaLocation":42},"/jobs/","jobs",{"dataGaName":326},{"text":288,"config":329},{"href":290,"dataGaName":291,"dataGaLocation":42},{"text":331,"config":332},"経営陣",{"href":333,"dataGaName":334,"dataGaLocation":42},"/company/team/e-group/","leadership",{"text":336,"config":337},"チーム",{"href":338,"dataGaName":339,"dataGaLocation":42},"/company/team/","team",{"text":341,"config":342},"ハンドブック",{"href":343,"dataGaName":344,"dataGaLocation":42},"https://handbook.gitlab.com/","handbook",{"text":346,"config":347},"投資家向け情報",{"href":348,"dataGaName":349,"dataGaLocation":42},"https://ir.gitlab.com/","investor relations",{"text":351,"config":352},"トラストセンター",{"href":353,"dataGaName":354,"dataGaLocation":42},"/ja-jp/security/","trust center",{"text":356,"config":357},"AI Transparency Center",{"href":358,"dataGaName":359,"dataGaLocation":42},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":361,"config":362},"ニュースレター",{"href":363,"dataGaName":364,"dataGaLocation":42},"/company/contact/","newsletter",{"text":366,"config":367},"プレス",{"href":368,"dataGaName":369,"dataGaLocation":42},"/press/","press",{"text":49,"config":371,"lists":372},{"dataNavLevelOne":313},[373],{"items":374},[375,378,383],{"text":49,"config":376},{"href":51,"dataGaName":377,"dataGaLocation":42},"talk to sales",{"text":379,"config":380},"サポートを受ける",{"href":381,"dataGaName":382,"dataGaLocation":42},"/support/","get help",{"text":384,"config":385},"カスタマーポータル",{"href":386,"dataGaName":387,"dataGaLocation":42},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":389,"login":390,"suggestions":397},"閉じる",{"text":391,"link":392},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":393,"config":394},"GitLab.com",{"href":56,"dataGaName":395,"dataGaLocation":396},"search login","search",{"text":398,"default":399},"提案",[400,403,408,410,414,418],{"text":71,"config":401},{"href":76,"dataGaName":402,"dataGaLocation":396},"GitLab Duo (AI)",{"text":404,"config":405},"コード提案（AI）",{"href":406,"dataGaName":407,"dataGaLocation":396},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":122,"config":409},{"href":124,"dataGaName":122,"dataGaLocation":396},{"text":411,"config":412},"GitLab on AWS",{"href":413,"dataGaName":411,"dataGaLocation":396},"/ja-jp/partners/technology-partners/aws/",{"text":415,"config":416},"GitLab on Google Cloud",{"href":417,"dataGaName":415,"dataGaLocation":396},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":419,"config":420},"GitLabを選ぶ理由",{"href":84,"dataGaName":421,"dataGaLocation":396},"Why GitLab?",{"freeTrial":423,"mobileIcon":427,"desktopIcon":432},{"text":44,"config":424},{"href":425,"dataGaName":47,"dataGaLocation":426},"https://gitlab.com/-/trials/new/","nav",{"altText":428,"config":429},"GitLabアイコン",{"src":430,"dataGaName":431,"dataGaLocation":426},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":428,"config":433},{"src":434,"dataGaName":431,"dataGaLocation":426},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":436,"mobileIcon":440,"desktopIcon":442},{"text":437,"config":438},"GitLab Duoの詳細について",{"href":76,"dataGaName":439,"dataGaLocation":426},"gitlab duo",{"altText":428,"config":441},{"src":430,"dataGaName":431,"dataGaLocation":426},{"altText":428,"config":443},{"src":434,"dataGaName":431,"dataGaLocation":426},"content:shared:ja-jp:main-navigation.yml","Main Navigation","shared/ja-jp/main-navigation.yml","shared/ja-jp/main-navigation",{"_path":449,"_dir":36,"_draft":6,"_partial":6,"_locale":7,"title":450,"button":451,"config":456,"_id":458,"_type":28,"_source":30,"_file":459,"_stem":460,"_extension":33},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能になりました！",{"text":452,"config":453},"ベータ版を試す",{"href":454,"dataGaName":455,"dataGaLocation":42},"/ja-jp/gitlab-duo/agent-platform/","duo banner",{"layout":457},"release","content:shared:ja-jp:banner.yml","shared/ja-jp/banner.yml","shared/ja-jp/banner",{"_path":462,"_dir":36,"_draft":6,"_partial":6,"_locale":7,"data":463,"_id":667,"_type":28,"title":668,"_source":30,"_file":669,"_stem":670,"_extension":33},"/shared/ja-jp/main-footer",{"text":464,"source":465,"edit":471,"contribute":476,"config":481,"items":486,"minimal":659},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":466,"config":467},"ページのソースを表示",{"href":468,"dataGaName":469,"dataGaLocation":470},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":472,"config":473},"このページを編集",{"href":474,"dataGaName":475,"dataGaLocation":470},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":477,"config":478},"ご協力をお願いします",{"href":479,"dataGaName":480,"dataGaLocation":470},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":482,"facebook":483,"youtube":484,"linkedin":485},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[487,510,564,596,631],{"title":60,"links":488,"subMenu":493},[489],{"text":490,"config":491},"DevSecOpsプラットフォーム",{"href":69,"dataGaName":492,"dataGaLocation":470},"devsecops platform",[494],{"title":201,"links":495},[496,500,505],{"text":497,"config":498},"プランの表示",{"href":203,"dataGaName":499,"dataGaLocation":470},"view plans",{"text":501,"config":502},"Premiumを選ぶ理由",{"href":503,"dataGaName":504,"dataGaLocation":470},"/ja-jp/pricing/premium/","why premium",{"text":506,"config":507},"Ultimateを選ぶ理由",{"href":508,"dataGaName":509,"dataGaLocation":470},"/ja-jp/pricing/ultimate/","why ultimate",{"title":511,"links":512},"ソリューション",[513,518,521,523,528,533,537,540,543,548,550,552,554,559],{"text":514,"config":515},"デジタルトランスフォーメーション",{"href":516,"dataGaName":517,"dataGaLocation":470},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":519,"config":520},"セキュリティとコンプライアンス",{"href":143,"dataGaName":150,"dataGaLocation":470},{"text":135,"config":522},{"href":118,"dataGaName":119,"dataGaLocation":470},{"text":524,"config":525},"アジャイル開発",{"href":526,"dataGaName":527,"dataGaLocation":470},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":529,"config":530},"クラウドトランスフォーメーション",{"href":531,"dataGaName":532,"dataGaLocation":470},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":534,"config":535},"SCM",{"href":132,"dataGaName":536,"dataGaLocation":470},"source code management",{"text":122,"config":538},{"href":124,"dataGaName":539,"dataGaLocation":470},"continuous integration & delivery",{"text":173,"config":541},{"href":175,"dataGaName":542,"dataGaLocation":470},"value stream management",{"text":544,"config":545},"GitOps",{"href":546,"dataGaName":547,"dataGaLocation":470},"/ja-jp/solutions/gitops/","gitops",{"text":186,"config":549},{"href":188,"dataGaName":189,"dataGaLocation":470},{"text":191,"config":551},{"href":193,"dataGaName":194,"dataGaLocation":470},{"text":196,"config":553},{"href":198,"dataGaName":199,"dataGaLocation":470},{"text":555,"config":556},"教育",{"href":557,"dataGaName":558,"dataGaLocation":470},"/ja-jp/solutions/education/","education",{"text":560,"config":561},"金融サービス",{"href":562,"dataGaName":563,"dataGaLocation":470},"/ja-jp/solutions/finance/","financial services",{"title":206,"links":565},[566,568,570,572,575,577,580,582,584,586,588,590,592,594],{"text":218,"config":567},{"href":220,"dataGaName":221,"dataGaLocation":470},{"text":223,"config":569},{"href":225,"dataGaName":226,"dataGaLocation":470},{"text":228,"config":571},{"href":230,"dataGaName":231,"dataGaLocation":470},{"text":233,"config":573},{"href":235,"dataGaName":574,"dataGaLocation":470},"docs",{"text":256,"config":576},{"href":258,"dataGaName":5},{"text":578,"config":579},"お客様の成功事例",{"href":253,"dataGaLocation":470},{"text":251,"config":581},{"href":253,"dataGaName":254,"dataGaLocation":470},{"text":260,"config":583},{"href":262,"dataGaName":263,"dataGaLocation":470},{"text":273,"config":585},{"href":275,"dataGaName":276,"dataGaLocation":470},{"text":265,"config":587},{"href":267,"dataGaName":268,"dataGaLocation":470},{"text":278,"config":589},{"href":280,"dataGaName":281,"dataGaLocation":470},{"text":283,"config":591},{"href":285,"dataGaName":286,"dataGaLocation":470},{"text":288,"config":593},{"href":290,"dataGaName":291,"dataGaLocation":470},{"text":293,"config":595},{"href":295,"dataGaName":296,"dataGaLocation":470},{"title":597,"links":598},"Company",[599,601,603,605,607,609,611,615,620,622,624,626],{"text":318,"config":600},{"href":320,"dataGaName":313,"dataGaLocation":470},{"text":323,"config":602},{"href":325,"dataGaName":326,"dataGaLocation":470},{"text":331,"config":604},{"href":333,"dataGaName":334,"dataGaLocation":470},{"text":336,"config":606},{"href":338,"dataGaName":339,"dataGaLocation":470},{"text":341,"config":608},{"href":343,"dataGaName":344,"dataGaLocation":470},{"text":346,"config":610},{"href":348,"dataGaName":349,"dataGaLocation":470},{"text":612,"config":613},"Sustainability",{"href":614,"dataGaName":612,"dataGaLocation":470},"/sustainability/",{"text":616,"config":617},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":618,"dataGaName":619,"dataGaLocation":470},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":351,"config":621},{"href":353,"dataGaName":354,"dataGaLocation":470},{"text":361,"config":623},{"href":363,"dataGaName":364,"dataGaLocation":470},{"text":366,"config":625},{"href":368,"dataGaName":369,"dataGaLocation":470},{"text":627,"config":628},"現代奴隷制の透明性に関する声明",{"href":629,"dataGaName":630,"dataGaLocation":470},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":49,"links":632},[633,635,637,639,644,649,654],{"text":49,"config":634},{"href":51,"dataGaName":52,"dataGaLocation":470},{"text":379,"config":636},{"href":381,"dataGaName":382,"dataGaLocation":470},{"text":384,"config":638},{"href":386,"dataGaName":387,"dataGaLocation":470},{"text":640,"config":641},"ステータス",{"href":642,"dataGaName":643,"dataGaLocation":470},"https://status.gitlab.com/","status",{"text":645,"config":646},"利用規約",{"href":647,"dataGaName":648,"dataGaLocation":470},"/terms/","terms of use",{"text":650,"config":651},"プライバシーに関する声明",{"href":652,"dataGaName":653,"dataGaLocation":470},"/ja-jp/privacy/","privacy statement",{"text":655,"config":656},"Cookieの設定",{"dataGaName":657,"dataGaLocation":470,"id":658,"isOneTrustButton":25},"cookie preferences","ot-sdk-btn",{"items":660},[661,663,665],{"text":645,"config":662},{"href":647,"dataGaName":648,"dataGaLocation":470},{"text":650,"config":664},{"href":652,"dataGaName":653,"dataGaLocation":470},{"text":655,"config":666},{"dataGaName":657,"dataGaLocation":470,"id":658,"isOneTrustButton":25},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":672,"content":673,"config":676,"_id":27,"_type":28,"title":29,"_source":30,"_file":31,"_stem":32,"_extension":33},{"title":9,"description":10},{"heroImage":12,"body":13,"authors":674,"updatedDate":16,"date":17,"title":9,"tags":675,"description":10,"category":22},[15],[19,20,21],{"slug":24,"featured":25,"template":26},[678],{"_path":679,"_dir":680,"_draft":6,"_partial":6,"_locale":7,"content":681,"config":684,"_id":687,"_type":28,"title":688,"_source":30,"_file":689,"_stem":690,"_extension":33},"/en-us/blog/authors/dennis-van-rooijen","authors",{"name":15,"config":682},{"headshot":683},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758031391/muvwg1sxetzekmuhqdql.png",{"template":685,"gitlabHandle":686},"BlogAuthor","dvanrooijen2","content:en-us:blog:authors:dennis-van-rooijen.yml","Dennis Van Rooijen","en-us/blog/authors/dennis-van-rooijen.yml","en-us/blog/authors/dennis-van-rooijen",{"_path":692,"_dir":36,"_draft":6,"_partial":6,"_locale":7,"header":693,"eyebrow":694,"blurb":695,"button":696,"secondaryButton":700,"_id":702,"_type":28,"title":703,"_source":30,"_file":704,"_stem":705,"_extension":33},"/shared/ja-jp/next-steps","より優れたソフトウェアをより速く提供","フォーチュン100企業の50%以上がGitLabを信頼","インテリジェントなDevSecOpsプラットフォームで\n\n\nチームの可能性を広げましょう。\n",{"text":44,"config":697},{"href":698,"dataGaName":47,"dataGaLocation":699},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":49,"config":701},{"href":51,"dataGaName":52,"dataGaLocation":699},"content:shared:ja-jp:next-steps.yml","Next Steps","shared/ja-jp/next-steps.yml","shared/ja-jp/next-steps",1760988336225]