ガートナー社のマジック・クアドラント™ CDP日本語レポート - トレジャーデータ(Treasure Data)

トレジャーデータ
ガートナー社のマジック・クアドラント™で、CDPのリーダーに認定

ガートナー社のマジック・クアドラント™ CDP日本語レポート

CDP分野の日本語レポートを特別公開

トレジャーデータは、ガートナー社のマジック・クアドラント™で、カスタマーデータプラットフォーム(CDP)のリーダーに認定されたことをお知らせします。
このレポートでは、CDPベンダー17社を評価し、Treasure Data CDPが「ビジョンの完全性」と「ソリューションの強さ」でリーダーに位置づけられています。
今回特別に、ガートナー社マジック・クアドラントにて評価されたCDP分野のレポートを日本語版でご提供いたします。
分かりやすい日本語で詳しく解説しておりますので、ぜひこの機会にご覧ください。

ご入力のメールアドレス宛に、ダウンロードのご案内をお送りします。

<?php

add_shortcode('code_snippet_logo_slider', function($atts) {
  $atts = shortcode_atts(['id' => '', 'name' => '', 'format' => ''], $atts);

  // 投稿・固定・カスタム投稿の個別ページ以外では出力しない
  if (!is_singular()) return '';

  // ID=47 のときのみ処理
  if ((int)$atts['id'] !== 47) return '';

  ob_start();
  ?>

  <div class="lg:py-lg-vertical md:py-md-vertical py-sm-vertical">
    <div class="container mx-auto">
      <h2 id="loop-title" class="wp-block-heading has-text-align-center leading-card-header md:text-5xl text-mobile-5xl mb-[40px]">国内外の大手企業を中心に、<br class="br-loop-title">400社以上が導入</h2>
    </div>
    <div class="logo-slider-container">
      <div class="logo-slider-track" id="logoSliderTrack">
        <img src="/wp-content/uploads/2025/06/top_logo_loop_20250619-left.png" alt="導入顧客ロゴ一覧1">
        <img src="/wp-content/uploads/2025/06/top_logo_loop_20250620-right.png" alt="導入顧客ロゴ一覧2">
        <img src="/wp-content/uploads/2025/06/top_logo_loop_20250619-left.png" alt="導入顧客ロゴ一覧1">
        <img src="/wp-content/uploads/2025/06/top_logo_loop_20250620-right.png" alt="導入顧客ロゴ一覧2">
      </div>
    </div>
  </div>

  <style>
	/* ロゴスライダー全体 */
    .logo-slider-container {
      overflow: hidden; /* 画像のはみ出し非表示 */
      height: 350px; /* 高さ */
      width: 100%; /* 幅 */
      position: relative;
    }

	/* ロゴスライダーのトラック部分 */
    .logo-slider-track {
      display: flex; /* 横並び */
      width: max-content; /* 中身に応じて自動幅(画像合計分) */
      animation: slide-left linear infinite; /* @keyframesで定義した名前|速度|繰り返し回数 */
      align-items: center; /* 上下中央に揃える */
    }

	/* 画像 */
    .logo-slider-track img {
      height: 350px; /* 高さを親要素と揃える */
      object-fit: contain; /* アスペクト比維持 */
      display: block;
    }

	/* アニメーション:左に50%動かす */
    @keyframes slide-left {
      0%   { transform: translateX(0); } /* 開始位置 */
      100% { transform: translateX(-50%); } /* 左に半分(1セット分、画像2枚)移動 */
    }

	/* h2見出し改行 */
    .br-loop-title {
      display: none; /* h2改行タグ非表示 */
    }

	/* 画面幅768pxから1279pxまで */
    @media (max-width: 1279px) and (min-width: 768px) {
      .br-loop-title {
        display: block; /* h2改行タグ表示 */
      }
    }
  </style>

  <script>
    document.addEventListener("DOMContentLoaded", function () {
	  // スライダートラック要素を取得
      const logoTrack = document.getElementById("logoSliderTrack");
      if (!logoTrack) return; // 要素がなければ処理中止

	  // スライダートラック内のimg要素を取得
      const logoImages = logoTrack.querySelectorAll("img");
      let loadedCount = 0; // 読み込み完了した画像の数

	  // 各画像の読み込みを監視
      logoImages.forEach(img => {
        if (img.complete) {
		  // すでに読み込まれていればカウント
          loadedCount++;
        } else {
		  // 読み込みが完了したらカウントアップ
          img.onload = () => {
            loadedCount++;
            if (loadedCount === logoImages.length) initSlider(); // すべて読み終えたら実行
          };
        }
      });

	  // すでに全画像が読み込まれていた場合は初期化
      if (loadedCount === logoImages.length) initSlider();

	  // 初期化処理(スライダーアニメーション時間設定)
      function initSlider() {
        const logoTrackWidth = logoTrack.scrollWidth; // トラック全体の横幅(2セット分、画像4枚の長さ)を取得
        const logoSpeed = 50; // 1秒間に進めるスライド距離(px)
        const logoDuration = (logoTrackWidth / 2) / logoSpeed; // 画像1セット分(全体の半分)の幅を、logoSpeed で割ってアニメーション時間を算出
        logoTrack.style.animationDuration = `${logoDuration}s`; // animation-duration をJSで設定
      }
    });
  </script>

  <?php
  return ob_get_clean();
});