{"id":707035,"date":"2026-05-13T11:14:09","date_gmt":"2026-05-13T10:14:09","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=ai&#038;p=707035"},"modified":"2026-05-13T11:14:13","modified_gmt":"2026-05-13T10:14:13","slug":"our-2026-direction-ai-and-classic-workflows-in-jetbrains-ides","status":"publish","type":"ai","link":"https:\/\/blog.jetbrains.com\/ja\/ai\/2026\/05\/our-2026-direction-ai-and-classic-workflows-in-jetbrains-ides\/","title":{"rendered":"2026 \u5e74\u306e\u65b9\u91dd: JetBrains IDE \u306b\u304a\u3051\u308b AI \u3068\u5f93\u6765\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc"},"content":{"rendered":"\n<p><strong>\u6709\u52b9\u306a\u30b3\u30fc\u30c9\u306e\u4f5c\u6210\u65b9\u6cd5\u306f 2 \u3064\u3042\u308a\u307e\u3059\u304c\u3001 \u30b3\u30fc\u30c9\u3092\u7ba1\u7406\u3059\u308b\u5834\u6240\u306f 1 \u3064\u3057\u304b\u3042\u308a\u307e\u305b\u3093\u3002<\/strong><\/p>\n\n\n\n<div class=\"jb-quick-controls\" data-jb-quick-controls>\n  <p>\n    <strong>AI \u95a2\u9023\u306e\u30cb\u30e5\u30fc\u30b9\u3092\u8aad\u307f\u98fd\u304d\u305f\u65b9\u306e\u305f\u3081\u306e\u7c21\u6613\u7248:<\/strong>\n    <button type=\"button\" class=\"jb-quick-toggle\" aria-pressed=\"false\">\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af<\/button>\n    <span class=\"jb-quick-status\" aria-live=\"polite\"><\/span>\n  <\/p>\n<\/div>\n\n<style>\n  .jb-quick-controls {\n    display: none;\n    margin: 0 0 1em;\n  }\n\n  .jb-quick-controls.jb-quick-ready {\n    display: block;\n  }\n\n  .jb-quick-controls p {\n    margin: 0 0 1em;\n  }\n\n  .jb-quick-controls button {\n    -webkit-appearance: none;\n    appearance: none;\n    border: 0;\n    background: none;\n    padding: 0;\n    margin: 0 0 0 .25em;\n    color: inherit;\n    font: inherit;\n    cursor: pointer;\n    text-decoration: underline;\n    text-underline-offset: .12em;\n  }\n\n  .jb-quick-controls .jb-quick-toggle {\n    position: relative;\n    display: inline-block;\n    color: #6B57FF;\n    text-decoration: none;\n    box-shadow: inset 0 -1px 0 currentColor;\n  }\n\n  .jb-quick-controls .jb-quick-toggle:hover {\n    box-shadow: inset 0 -2px 0 currentColor;\n  }\n\n  .jb-quick-controls[data-jb-mode=\"short\"] .jb-quick-toggle {\n    color: #19191C;\n    background-image: none;\n    -webkit-text-fill-color: currentColor;\n    box-shadow: inset 0 -1px 0 currentColor;\n    animation: none;\n  }\n\n  .jb-quick-controls[data-jb-mode=\"short\"] .jb-quick-toggle::after {\n    display: none;\n  }\n\n  .jb-quick-controls button:focus {\n    outline: 2px solid currentColor;\n    outline-offset: 2px;\n  }\n\n  .jb-quick-controls .jb-quick-status {\n    margin-left: .5em;\n    opacity: .7;\n    font-size: .95em;\n  }\n\n  .jb-quick-hide {\n    overflow: hidden;\n  }\n\n  .jb-matrix-host {\n    position: fixed;\n    left: 0;\n    top: 0;\n    width: 0;\n    height: 0;\n    overflow: visible;\n    pointer-events: none;\n    z-index: 2147483000;\n  }\n\n  .jb-matrix-wrap {\n    position: fixed;\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n    overflow: visible;\n    pointer-events: none;\n    z-index: 1;\n    color: inherit;\n    -webkit-transform: translateZ(0);\n    transform: translateZ(0);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    contain: layout style paint;\n  }\n\n  .jb-matrix-wrap > * {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .jb-matrix-wrap.jb-matrix-active {\n    animation-name: jbMatrixBlockOut;\n    animation-duration: 980ms;\n    animation-timing-function: cubic-bezier(.2, .72, .22, 1);\n    animation-fill-mode: forwards;\n  }\n\n  @keyframes jbMatrixBlockOut {\n    0% {\n      opacity: 1;\n      transform: translate3d(0, 0, 0);\n    }\n    35% {\n      opacity: .94;\n      transform: translate3d(0, 0, 0);\n    }\n    72% {\n      opacity: .74;\n      transform: translate3d(0, 4px, 0);\n    }\n    100% {\n      opacity: 0;\n      transform: translate3d(0, 14px, 0);\n    }\n  }\n\n  @keyframes jbQuickGradientShift {\n    0% {\n      background-position: 0% 50%;\n    }\n\n    50% {\n      background-position: 100% 50%;\n    }\n\n    100% {\n      background-position: 0% 50%;\n    }\n  }\n\n  @supports ((-webkit-background-clip: text) or (background-clip: text)) {\n    .jb-quick-controls .jb-quick-toggle {\n      background-image: linear-gradient(90deg, #6B57FF 0%, #00A3FF 28%, #39CC8F 55%, #FF7A00 78%, #6B57FF 100%);\n      background-size: 260% 100%;\n      background-position: 0% 50%;\n      -webkit-background-clip: text;\n      background-clip: text;\n      -webkit-text-fill-color: transparent;\n      box-shadow: none;\n      animation: jbQuickGradientShift 9s ease-in-out infinite;\n    }\n\n    .jb-quick-controls .jb-quick-toggle::after {\n      content: '';\n      position: absolute;\n      left: 0;\n      right: 0;\n      bottom: .05em;\n      height: 1px;\n      background-image: linear-gradient(90deg, #6B57FF 0%, #00A3FF 28%, #39CC8F 55%, #FF7A00 78%, #6B57FF 100%);\n      background-size: 260% 100%;\n      background-position: 0% 50%;\n      animation: jbQuickGradientShift 9s ease-in-out infinite;\n      opacity: .95;\n    }\n\n    .jb-quick-controls .jb-quick-toggle:hover::after {\n      height: 2px;\n    }\n  }\n<\/style>\n\n<script>\n(function () {\n  function ready(fn) {\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', fn);\n    } else {\n      fn();\n    }\n  }\n\n  function toArray(list) {\n    if (list) {\n      return Array.prototype.slice.call(list);\n    }\n    return [];\n  }\n\n  function findAncestorByClass(node, className) {\n    while (node) {\n      if (node === document.body) {\n        break;\n      }\n\n      if (node.classList) {\n        if (node.classList.contains(className)) {\n          return node;\n        }\n      }\n\n      node = node.parentNode;\n    }\n\n    return null;\n  }\n\n  function isSupported() {\n    if (!document.querySelector) {\n      return false;\n    }\n\n    if (!document.addEventListener) {\n      return false;\n    }\n\n    if (!window.requestAnimationFrame) {\n      return false;\n    }\n\n    if (!window.getComputedStyle) {\n      return false;\n    }\n\n    if (!document.body) {\n      return false;\n    }\n\n    var styleProbe = document.createElement('span').style;\n    var hasTransform = false;\n    var hasAnimation = false;\n\n    if (typeof styleProbe.transform !== 'undefined') {\n      hasTransform = true;\n    } else {\n      if (typeof styleProbe.webkitTransform !== 'undefined') {\n        hasTransform = true;\n      }\n    }\n\n    if (typeof styleProbe.animationName !== 'undefined') {\n      hasAnimation = true;\n    } else {\n      if (typeof styleProbe.webkitAnimationName !== 'undefined') {\n        hasAnimation = true;\n      }\n    }\n\n    if (!hasTransform) {\n      return false;\n    }\n\n    if (!hasAnimation) {\n      return false;\n    }\n\n    return true;\n  }\n\n  function prefersReducedMotion() {\n    var result = false;\n\n    try {\n      if (window.matchMedia) {\n        result = !!window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      }\n    } catch (error) {\n      result = false;\n    }\n\n    return result;\n  }\n\n  function isRectOnScreen(rect) {\n    if (rect.bottom <= -40) {\n      return false;\n    }\n\n    if (rect.top >= window.innerHeight + 40) {\n      return false;\n    }\n\n    if (rect.right <= -40) {\n      return false;\n    }\n\n    if (rect.left >= window.innerWidth + 40) {\n      return false;\n    }\n\n    return true;\n  }\n\n  function removeUiNoise(node) {\n    if (!node) {\n      return;\n    }\n\n    if (node.nodeType !== 1) {\n      return;\n    }\n\n    if (node.removeAttribute) {\n      node.removeAttribute('id');\n      node.removeAttribute('aria-describedby');\n      node.removeAttribute('aria-labelledby');\n    }\n\n    var selectors = [\n      'script',\n      'style',\n      'noscript',\n      'button',\n      '.copy-button',\n      '.sr-only',\n      '[aria-hidden=\"true\"]'\n    ];\n\n    var i;\n    for (i = 0; i < selectors.length; i += 1) {\n      var matches = node.querySelectorAll(selectors[i]);\n      var j;\n\n      for (j = matches.length - 1; j >= 0; j -= 1) {\n        var currentMatch = matches[j];\n\n        if (currentMatch) {\n          if (currentMatch.parentNode) {\n            currentMatch.parentNode.removeChild(currentMatch);\n          }\n        }\n      }\n    }\n\n    var descendants = node.getElementsByTagName('*');\n    for (i = 0; i < descendants.length; i += 1) {\n      descendants[i].removeAttribute('id');\n      descendants[i].removeAttribute('aria-describedby');\n      descendants[i].removeAttribute('aria-labelledby');\n    }\n  }\n\n  function copyBoxTextStyle(source, target) {\n    var computed = window.getComputedStyle(source);\n    var props = [\n      'fontFamily',\n      'fontSize',\n      'fontStyle',\n      'fontWeight',\n      'lineHeight',\n      'letterSpacing',\n      'textAlign',\n      'textTransform',\n      'color',\n      'paddingTop',\n      'paddingRight',\n      'paddingBottom',\n      'paddingLeft',\n      'listStyleType',\n      'listStylePosition'\n    ];\n    var i;\n\n    for (i = 0; i < props.length; i += 1) {\n      try {\n        target.style[props[i]] = computed[props[i]];\n      } catch (error) {}\n    }\n\n    target.style.marginTop = '0px';\n    target.style.marginBottom = '0px';\n  }\n\n  function cleanText(text) {\n    var value = text ? text : '';\n    value = value.replace(\/Copy heading link\/g, ' ');\n    value = value.replace(\/\\s+\/g, ' ');\n    value = value.replace(\/^\\s+\/, '');\n    value = value.replace(\/\\s+$\/, '');\n    return value;\n  }\n\n  function shouldSkipTextWalkElement(node) {\n    if (!node) {\n      return true;\n    }\n\n    if (node.nodeType !== 1) {\n      return false;\n    }\n\n    var tag = node.tagName;\n    if (tag === 'SCRIPT') {\n      return true;\n    }\n    if (tag === 'STYLE') {\n      return true;\n    }\n    if (tag === 'NOSCRIPT') {\n      return true;\n    }\n    if (tag === 'BUTTON') {\n      return true;\n    }\n\n    return false;\n  }\n\n  function collectTextNodes(root, maxCharacters) {\n    var items = [];\n    var total = 0;\n\n    function walk(node) {\n      if (total >= maxCharacters) {\n        return;\n      }\n\n      if (!node) {\n        return;\n      }\n\n      if (node.nodeType === 3) {\n        var value = node.nodeValue;\n        if (value) {\n          if (\/\\S\/.test(value)) {\n            items.push({ node: node, original: value });\n            total += value.length;\n          }\n        }\n        return;\n      }\n\n      if (shouldSkipTextWalkElement(node)) {\n        return;\n      }\n\n      var child = node.firstChild;\n      while (child) {\n        walk(child);\n        if (total >= maxCharacters) {\n          break;\n        }\n        child = child.nextSibling;\n      }\n    }\n\n    walk(root);\n    return items;\n  }\n\n  function scrambleValue(value, progress) {\n    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#%*+-\/=';\n    var keepRatio = progress * progress;\n    var output = '';\n    var i;\n\n    for (i = 0; i < value.length; i += 1) {\n      var ch = value.charAt(i);\n\n      if (\/\\s\/.test(ch)) {\n        output += ch;\n      } else {\n        if (Math.random() < keepRatio) {\n          output += ch;\n        } else {\n          output += chars.charAt(Math.floor(Math.random() * chars.length));\n        }\n      }\n    }\n\n    return output;\n  }\n\n  function runMatrixTextPass(root) {\n    var items = collectTextNodes(root, 1400);\n    var startTime = 0;\n    var duration = 680;\n    var lastUpdate = 0;\n\n    function tick(now) {\n      var i;\n\n      if (!startTime) {\n        startTime = now;\n      }\n\n      var elapsed = now - startTime;\n      var progress = elapsed \/ duration;\n\n      if (progress > 1) {\n        progress = 1;\n      }\n\n      if (now - lastUpdate > 36) {\n        lastUpdate = now;\n        for (i = 0; i < items.length; i += 1) {\n          items[i].node.nodeValue = scrambleValue(items[i].original, progress);\n        }\n      }\n\n      if (progress < 1) {\n        if (root.parentNode) {\n          requestAnimationFrame(tick);\n        }\n      } else {\n        for (i = 0; i < items.length; i += 1) {\n          items[i].node.nodeValue = items[i].original;\n        }\n      }\n    }\n\n    requestAnimationFrame(tick);\n  }\n\n  function buildFixedCloneFromElement(element, host) {\n    var rect = element.getBoundingClientRect();\n\n    if (!isRectOnScreen(rect)) {\n      return null;\n    }\n\n    if (rect.width < 12) {\n      return null;\n    }\n\n    if (rect.height < 8) {\n      return null;\n    }\n\n    var wrapper = document.createElement('div');\n    wrapper.className = 'jb-matrix-wrap';\n    wrapper._jbSourceElement = element;\n    wrapper.setAttribute('aria-hidden', 'true');\n    wrapper.style.left = rect.left + 'px';\n    wrapper.style.top = rect.top + 'px';\n    wrapper.style.width = rect.width + 'px';\n    wrapper.style.minHeight = rect.height + 'px';\n\n    var computed = window.getComputedStyle(element);\n    wrapper.style.color = computed.color;\n\n    var clone = element.cloneNode(true);\n    removeUiNoise(clone);\n    copyBoxTextStyle(element, clone);\n\n    wrapper.appendChild(clone);\n    host.appendChild(wrapper);\n\n    return wrapper;\n  }\n\n  function shouldUseIntroCandidate(candidate, controls) {\n    if (!candidate) {\n      return false;\n    }\n\n    if (controls.contains(candidate)) {\n      return false;\n    }\n\n    if (findAncestorByClass(candidate, 'jb-quick-hide')) {\n      return false;\n    }\n\n    if (findAncestorByClass(candidate, 'author-post')) {\n      return false;\n    }\n\n    if (findAncestorByClass(candidate, 'content__row')) {\n      return false;\n    }\n\n    if (findAncestorByClass(candidate, 'content__form')) {\n      return false;\n    }\n\n    if (findAncestorByClass(candidate, 'form-subscribe')) {\n      return false;\n    }\n\n    var text = cleanText(candidate.textContent);\n    if (text.length < 8) {\n      return false;\n    }\n\n    return true;\n  }\n\n  function collectIntroCandidates(contentRoot, controls) {\n    var result = [];\n    var candidates = contentRoot.querySelectorAll('h1, p, ol, ul');\n    var started = false;\n    var i;\n\n    for (i = 0; i < candidates.length; i += 1) {\n      var candidate = candidates[i];\n\n      if (!shouldUseIntroCandidate(candidate, controls)) {\n        continue;\n      }\n\n      var candidateText = cleanText(candidate.textContent);\n      var tagName = candidate.tagName ? candidate.tagName.toUpperCase() : '';\n\n      if (!started) {\n        if (tagName === 'H1') {\n          started = true;\n        } else {\n          if (candidateText.indexOf('Two valid ways of writing code') !== -1) {\n            started = true;\n          } else {\n            if (candidateText.indexOf('There are two ways developers create code now') !== -1) {\n              started = true;\n            }\n          }\n        }\n      }\n\n      if (!started) {\n        continue;\n      }\n\n      result.push(candidate);\n\n      if (candidateText.indexOf('Either way, one thing') !== -1) {\n        break;\n      }\n    }\n\n    return result;\n  }\n\n  function buildFallbackIntroClones(introCandidates, host, controls) {\n    var wrappers = [];\n    var controlRect = controls.getBoundingClientRect();\n    var top = controlRect.bottom + 18;\n    var i;\n\n    if (top < 24) {\n      top = 24;\n    }\n\n    if (top > window.innerHeight - 160) {\n      top = Math.max(24, window.innerHeight - 260);\n    }\n\n    for (i = 0; i < introCandidates.length; i += 1) {\n      var candidate = introCandidates[i];\n      var candidateText = cleanText(candidate.textContent);\n      var tagName = candidate.tagName ? candidate.tagName.toUpperCase() : '';\n\n      if (tagName === 'H1') {\n        continue;\n      }\n\n      if (controls.contains(candidate)) {\n        continue;\n      }\n\n      var rect = candidate.getBoundingClientRect();\n      if (rect.width < 12) {\n        continue;\n      }\n      if (rect.height < 8) {\n        continue;\n      }\n\n      var wrapper = document.createElement('div');\n      wrapper.className = 'jb-matrix-wrap';\n      wrapper._jbSourceElement = null;\n      wrapper.setAttribute('aria-hidden', 'true');\n      wrapper.style.left = rect.left + 'px';\n      wrapper.style.top = top + 'px';\n      wrapper.style.width = rect.width + 'px';\n      wrapper.style.minHeight = rect.height + 'px';\n\n      var computed = window.getComputedStyle(candidate);\n      wrapper.style.color = computed.color;\n\n      var clone = candidate.cloneNode(true);\n      removeUiNoise(clone);\n      copyBoxTextStyle(candidate, clone);\n\n      wrapper.appendChild(clone);\n      host.appendChild(wrapper);\n      wrappers.push(wrapper);\n\n      top += rect.height + 16;\n\n      if (candidateText.indexOf('Either way, one thing') !== -1) {\n        break;\n      }\n\n      if (wrappers.length >= 6) {\n        break;\n      }\n\n      if (top > window.innerHeight - 16) {\n        break;\n      }\n    }\n\n    return wrappers;\n  }\n\n  function buildIntroClones(contentRoot, controls, host) {\n    var wrappers = [];\n    var introCandidates = collectIntroCandidates(contentRoot, controls);\n    var i;\n\n    for (i = 0; i < introCandidates.length; i += 1) {\n      var candidate = introCandidates[i];\n      var rect = candidate.getBoundingClientRect();\n\n      if (!isRectOnScreen(rect)) {\n        continue;\n      }\n\n      var wrapper = buildFixedCloneFromElement(candidate, host);\n      if (wrapper) {\n        wrappers.push(wrapper);\n      }\n    }\n\n    if (!wrappers.length) {\n      wrappers = buildFallbackIntroClones(introCandidates, host, controls);\n    }\n\n    return wrappers;\n  }\n\n  function sourceIsHiddenSection(source) {\n    if (!source) {\n      return false;\n    }\n\n    if (source.classList) {\n      if (source.classList.contains('jb-quick-hide')) {\n        return true;\n      }\n    }\n\n    if (findAncestorByClass(source, 'jb-quick-hide')) {\n      return true;\n    }\n\n    return false;\n  }\n\n  function collectSourcesFromWrappers(wrappers) {\n    var sources = [];\n    var i;\n\n    for (i = 0; i < wrappers.length; i += 1) {\n      var wrapper = wrappers[i];\n      var source = wrapper ? wrapper._jbSourceElement : null;\n\n      if (!source) {\n        continue;\n      }\n\n      var alreadyAdded = false;\n      var j;\n      for (j = 0; j < sources.length; j += 1) {\n        if (sources[j] === source) {\n          alreadyAdded = true;\n          break;\n        }\n      }\n\n      if (!alreadyAdded) {\n        sources.push(source);\n      }\n    }\n\n    return sources;\n  }\n\n  function rememberSourceOpacity(source) {\n    if (!source) {\n      return;\n    }\n\n    if (source._jbQuickOpacityMemory) {\n      return;\n    }\n\n    source._jbQuickOpacityMemory = {\n      opacity: source.style.opacity,\n      transition: source.style.transition,\n      webkitTransition: source.style.webkitTransition\n    };\n  }\n\n  function fadeSourcesToZero(wrappers) {\n    var sources = collectSourcesFromWrappers(wrappers);\n    var i;\n\n    for (i = 0; i < sources.length; i += 1) {\n      rememberSourceOpacity(sources[i]);\n      sources[i].style.webkitTransition = 'opacity 460ms cubic-bezier(.22, 1, .36, 1)';\n      sources[i].style.transition = 'opacity 460ms cubic-bezier(.22, 1, .36, 1)';\n    }\n\n    requestAnimationFrame(function () {\n      var j;\n      for (j = 0; j < sources.length; j += 1) {\n        sources[j].style.opacity = '0';\n      }\n    });\n  }\n\n  function restoreSourcesFromZero(wrappers) {\n    var sources = collectSourcesFromWrappers(wrappers);\n    var i;\n\n    for (i = 0; i < sources.length; i += 1) {\n      var source = sources[i];\n      if (sourceIsHiddenSection(source)) {\n        continue;\n      }\n\n      rememberSourceOpacity(source);\n      source.style.webkitTransition = 'opacity 420ms cubic-bezier(.22, 1, .36, 1)';\n      source.style.transition = 'opacity 420ms cubic-bezier(.22, 1, .36, 1)';\n      source.style.opacity = '1';\n    }\n\n    window.setTimeout(function () {\n      var j;\n      for (j = 0; j < sources.length; j += 1) {\n        var current = sources[j];\n        var memory = current ? current._jbQuickOpacityMemory : null;\n\n        if (!memory) {\n          continue;\n        }\n\n        if (sourceIsHiddenSection(current)) {\n          continue;\n        }\n\n        current.style.opacity = memory.opacity;\n        current.style.transition = memory.transition;\n        current.style.webkitTransition = memory.webkitTransition;\n        current._jbQuickOpacityMemory = null;\n      }\n    }, 460);\n  }\n\n  function animateWrapper(wrapper) {\n    if (wrapper.classList) {\n      wrapper.classList.add('jb-matrix-active');\n    } else {\n      wrapper.className += ' jb-matrix-active';\n    }\n\n    runMatrixTextPass(wrapper);\n    return 1020;\n  }\n\n  function setTocVisibility(section, visible) {\n    var toc = document.querySelector('.js-toc');\n    if (!toc) {\n      return;\n    }\n\n    var headings = section.querySelectorAll('h1, h2, h3, h4, h5, h6');\n    var links = toc.querySelectorAll('a');\n    var i;\n\n    for (i = 0; i < headings.length; i += 1) {\n      var heading = headings[i];\n      if (!heading.id) {\n        continue;\n      }\n\n      var j;\n      for (j = 0; j < links.length; j += 1) {\n        var href = links[j].getAttribute('href') ? links[j].getAttribute('href') : '';\n        if (href.indexOf('#' + heading.id) !== -1) {\n          var item = findAncestorByClass(links[j], 'toc-list-item');\n          if (!item) {\n            item = links[j].parentNode;\n          }\n          if (item) {\n            item.style.display = visible ? '' : 'none';\n          }\n        }\n      }\n    }\n  }\n\n  function collapseSection(section, immediate) {\n    var computedStyle = window.getComputedStyle(section);\n\n    section.setAttribute('data-jb-height', section.offsetHeight);\n    section.setAttribute('data-jb-margin-top', computedStyle.marginTop);\n    section.setAttribute('data-jb-margin-bottom', computedStyle.marginBottom);\n\n    section.style.height = section.offsetHeight + 'px';\n    section.style.marginTop = computedStyle.marginTop;\n    section.style.marginBottom = computedStyle.marginBottom;\n    if (section.style.opacity === '0') {\n      section.style.opacity = '0';\n    } else {\n      section.style.opacity = '1';\n    }\n    section.style.visibility = 'hidden';\n    section.style.pointerEvents = 'none';\n    section.style.overflow = 'hidden';\n\n    if (immediate) {\n      section.style.height = '0px';\n      section.style.marginTop = '0px';\n      section.style.marginBottom = '0px';\n      section.style.opacity = '0';\n      return;\n    }\n\n    section.style.webkitTransition = 'height 460ms ease, margin 460ms ease, opacity 220ms ease';\n    section.style.transition = 'height 460ms ease, margin 460ms ease, opacity 220ms ease';\n\n    requestAnimationFrame(function () {\n      section.style.height = '0px';\n      section.style.marginTop = '0px';\n      section.style.marginBottom = '0px';\n      section.style.opacity = '0';\n    });\n  }\n\n  function expandSection(section, immediate) {\n    var targetHeight = section.getAttribute('data-jb-height') ? section.getAttribute('data-jb-height') : section.scrollHeight;\n    var targetMarginTop = section.getAttribute('data-jb-margin-top') ? section.getAttribute('data-jb-margin-top') : '';\n    var targetMarginBottom = section.getAttribute('data-jb-margin-bottom') ? section.getAttribute('data-jb-margin-bottom') : '';\n\n    section.style.display = '';\n    section.style.overflow = 'hidden';\n    section.style.pointerEvents = 'none';\n    section.style.visibility = '';\n\n    if (immediate) {\n      section.style.height = '';\n      section.style.marginTop = '';\n      section.style.marginBottom = '';\n      section.style.opacity = '';\n      section.style.visibility = '';\n      section.style.pointerEvents = '';\n      section.style.overflow = '';\n      section.style.webkitTransition = '';\n      section.style.transition = '';\n      section._jbQuickOpacityMemory = null;\n      return;\n    }\n\n    section.style.height = '0px';\n    section.style.marginTop = '0px';\n    section.style.marginBottom = '0px';\n    section.style.opacity = '0';\n    section.style.webkitTransition = 'height 460ms ease, margin 460ms ease, opacity 260ms ease';\n    section.style.transition = 'height 460ms ease, margin 460ms ease, opacity 260ms ease';\n\n    requestAnimationFrame(function () {\n      section.style.height = targetHeight + 'px';\n      section.style.marginTop = targetMarginTop;\n      section.style.marginBottom = targetMarginBottom;\n      section.style.opacity = '1';\n    });\n\n    window.setTimeout(function () {\n      section.style.height = '';\n      section.style.marginTop = '';\n      section.style.marginBottom = '';\n      section.style.opacity = '';\n      section.style.visibility = '';\n      section.style.pointerEvents = '';\n      section.style.overflow = '';\n      section.style.webkitTransition = '';\n      section.style.transition = '';\n      section._jbQuickOpacityMemory = null;\n    }, 520);\n  }\n\n  ready(function () {\n    var controls = document.querySelector('[data-jb-quick-controls]');\n    if (!controls) {\n      return;\n    }\n\n    if (!isSupported()) {\n      controls.style.display = 'none';\n      return;\n    }\n\n    var toggleButton = controls.querySelector('.jb-quick-toggle');\n    var status = controls.querySelector('.jb-quick-status');\n    var sections = toArray(document.querySelectorAll('.jb-quick-hide'));\n\n    if (!toggleButton) {\n      controls.style.display = 'none';\n      return;\n    }\n\n    if (!status) {\n      controls.style.display = 'none';\n      return;\n    }\n\n    if (!sections.length) {\n      controls.style.display = 'none';\n      return;\n    }\n\n    var contentRoot = findAncestorByClass(controls, 'js-toc-content');\n    if (!contentRoot) {\n      contentRoot = findAncestorByClass(controls, 'content');\n    }\n    if (!contentRoot) {\n      contentRoot = document.body;\n    }\n\n    var overlayHost = contentRoot.querySelector('.jb-matrix-host');\n    if (!overlayHost) {\n      overlayHost = document.createElement('div');\n      overlayHost.className = 'jb-matrix-host';\n      overlayHost.setAttribute('aria-hidden', 'true');\n      contentRoot.appendChild(overlayHost);\n    }\n\n    if (controls.classList) {\n      controls.classList.add('jb-quick-ready');\n    } else {\n      controls.className += ' jb-quick-ready';\n    }\n\n    controls.setAttribute('data-jb-mode', 'full');\n\n    var shortModeOn = false;\n    var busy = false;\n    var reduceMotion = prefersReducedMotion();\n\n    function runVisibleMatrixPass() {\n      var pass = { wrappers: [], longestAnimation: 0 };\n      var i;\n\n      if (reduceMotion) {\n        return pass;\n      }\n\n      pass.wrappers = buildIntroClones(contentRoot, controls, overlayHost);\n\n      if (pass.wrappers.length) {\n        fadeSourcesToZero(pass.wrappers);\n      }\n\n      for (i = 0; i < pass.wrappers.length; i += 1) {\n        var animationTime = animateWrapper(pass.wrappers[i]);\n        if (animationTime > pass.longestAnimation) {\n          pass.longestAnimation = animationTime;\n        }\n      }\n\n      return pass;\n    }\n\n    function cleanupMatrixPass(wrappers) {\n      var i;\n\n      restoreSourcesFromZero(wrappers);\n\n      for (i = 0; i < wrappers.length; i += 1) {\n        var currentWrapper = wrappers[i];\n        if (currentWrapper) {\n          if (currentWrapper.parentNode) {\n            currentWrapper.parentNode.removeChild(currentWrapper);\n          }\n        }\n      }\n    }\n\n    function hideMode() {\n      if (busy) {\n        return;\n      }\n\n      if (shortModeOn) {\n        return;\n      }\n\n      busy = true;\n      status.textContent = '';\n\n      var wrappers = [];\n      var i;\n      var longestAnimation = 0;\n\n      if (!reduceMotion) {\n        for (i = 0; i < sections.length; i += 1) {\n          setTocVisibility(sections[i], false);\n\n          var sectionWrapper = buildFixedCloneFromElement(sections[i], overlayHost);\n          if (sectionWrapper) {\n            wrappers.push(sectionWrapper);\n          }\n        }\n\n        if (!wrappers.length) {\n          wrappers = buildIntroClones(contentRoot, controls, overlayHost);\n        }\n\n        if (wrappers.length) {\n          fadeSourcesToZero(wrappers);\n        }\n\n        for (i = 0; i < wrappers.length; i += 1) {\n          var animationTime = animateWrapper(wrappers[i]);\n          if (animationTime > longestAnimation) {\n            longestAnimation = animationTime;\n          }\n        }\n      } else {\n        for (i = 0; i < sections.length; i += 1) {\n          setTocVisibility(sections[i], false);\n        }\n      }\n\n      var collapseDelay = longestAnimation + 40;\n      if (collapseDelay < 180) {\n        collapseDelay = 180;\n      }\n\n      window.setTimeout(function () {\n        var j;\n        for (j = 0; j < sections.length; j += 1) {\n          collapseSection(sections[j], reduceMotion);\n        }\n      }, reduceMotion ? 0 : collapseDelay);\n\n      var cleanupDelay = longestAnimation + 90;\n      if (cleanupDelay < 900) {\n        cleanupDelay = 900;\n      }\n\n      window.setTimeout(function () {\n        cleanupMatrixPass(wrappers);\n\n        shortModeOn = true;\n        busy = false;\n        controls.setAttribute('data-jb-mode', 'short');\n        toggleButton.textContent = '\u53d6\u308a\u6d88\u3059';\n        toggleButton.setAttribute('aria-pressed', 'true');\n        status.textContent = '\u7c21\u6613\u7248\u304c\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002';\n      }, reduceMotion ? 40 : cleanupDelay);\n    }\n\n    function showMode() {\n      if (busy) {\n        return;\n      }\n\n      if (!shortModeOn) {\n        return;\n      }\n\n      busy = true;\n      status.textContent = '';\n\n      var matrixPass = runVisibleMatrixPass();\n      var expandDelay = matrixPass.longestAnimation ? 160 : 0;\n\n      window.setTimeout(function () {\n        var i;\n        for (i = 0; i < sections.length; i += 1) {\n          setTocVisibility(sections[i], true);\n          expandSection(sections[i], reduceMotion);\n        }\n      }, reduceMotion ? 0 : expandDelay);\n\n      var cleanupDelay = matrixPass.longestAnimation + 90;\n      if (cleanupDelay < 900) {\n        cleanupDelay = 900;\n      }\n\n      window.setTimeout(function () {\n        cleanupMatrixPass(matrixPass.wrappers);\n\n        shortModeOn = false;\n        busy = false;\n        controls.setAttribute('data-jb-mode', 'full');\n        toggleButton.textContent = '\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af';\n        toggleButton.setAttribute('aria-pressed', 'false');\n        status.textContent = '\u901a\u5e38\u7248\u306b\u623b\u308a\u307e\u3057\u305f';\n      }, reduceMotion ? 40 : cleanupDelay);\n    }\n\n    toggleButton.addEventListener('click', function () {\n      if (shortModeOn) {\n        showMode();\n      } else {\n        hideMode();\n      }\n    });\n  });\n}());\n<\/script>\n\n\n<p>\u73fe\u5728\u3001\u958b\u767a\u8005\u304c\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306b\u306f\u4ee5\u4e0b\u306e 2 \u3064\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ol>\n<li>\u5f93\u6765\u306e\u65b9\u6cd5: \u5165\u529b\u3001\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3001\u30c7\u30d0\u30c3\u30b0\u3092\u884c\u3044\u306a\u304c\u3089 1 \u884c\u305a\u3064\u610f\u56f3\u3092\u5f62\u6210\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u4f5c\u6210\u3059\u308b\u3002<\/li>\n<li>\u65b0\u3057\u3044\u65b9\u6cd5: AI \u3068\u306e\u5354\u50cd\u4f5c\u696d\u3092\u901a\u3057\u3066\u4f5c\u6210\u3059\u308b\u3002\u81ea\u52d5\u88dc\u5b8c\u3092\u4f7f\u7528\u3057\u305f\u308a\u3001\u307e\u3068\u307e\u3063\u305f\u91cf\u306e\u6210\u679c\u7269\u3092\u4e0b\u66f8\u304d\u3067\u304d\u308b\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u305f\u308a\u3059\u308b\u3002<\/li>\n<\/ol>\n<p><strong>\u5f53\u793e\u306f\u3069\u3061\u3089\u304b\u4e00\u65b9\u304c\u512a\u308c\u3066\u3044\u308b\u3068\u306f\u8003\u3048\u3066\u3044\u307e\u305b\u3093\u3002<\/strong><\/p>\n<p>\u4e21\u65b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u304c\u59a8\u3052\u5408\u3046\u3053\u3068\u306a\u304f <strong>JetBrains IDE \u5185\u3067\u5171\u5b58<\/strong>\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3092\u76ee\u6a19\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u5b9f\u969b\u306e\u958b\u767a\u3067\u306f\u3001\u4ee5\u4e0b\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li>\u30e6\u30fc\u30b6\u30fc\u304c\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u5834\u5408\u3001IDE \u306f\u30b3\u30fc\u30c9\u306e\u4f5c\u6210\u306e\u307f\u306b\u6ce8\u529b\u3057\u3001AI \u306b\u3088\u3063\u3066\u57fa\u672c\u7684\u306a\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u304c\u640d\u306a\u308f\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002<\/li>\n<li>\u30e6\u30fc\u30b6\u30fc\u304c AI \u3067\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u5834\u5408\uff08\u307e\u305f\u306f\u30bf\u30b9\u30af\u3092\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u59d4\u4efb\u3059\u308b\u5834\u5408\uff09\u3001IDE \u306f UX \u3068\u6a5f\u80fd\u306e\u4e21\u9762\u3067\u81ea\u7136\u3067\u5f37\u529b\u306b\u611f\u3058\u3089\u308c\u308b\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3002<\/li>\n<\/ul>\n<p>\u3044\u305a\u308c\u306b\u3057\u3066\u3082\u3001<strong>\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30b3\u30fc\u30c9\u306e\u8cac\u4efb\u306f\u4eba\u9593\u304c\u8ca0\u3046 <\/strong>\u3068\u3044\u3046\u3053\u3068\u306f\u5909\u308f\u308a\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u305d\u306e\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u53d6\u308a\u3001\u7406\u89e3\u3057\u3001\u7ba1\u7406\u3059\u308b\u5834\u6240\u304c IDE \u3067\u3042\u308b\u3053\u3068\u306b\u3082\u5909\u308f\u308a\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<div class=\"wp-block-group jb-quick-hide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group__inner-container\"><hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h2 class=\"wp-block-heading\"><strong>\u8a87\u5f35\u3084\u307e\u3084\u304b\u3057\u3092\u6392\u3057\u305f\u3001\u300cIDE \u306b\u304a\u3051\u308b AI\u300d\u3068\u306f<\/strong><\/h2>\n<p>\u5f53\u793e\u306f 1 \u3064\u306e\u300c\u6b63\u5f0f\u306a\u300d\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u5236\u9650\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 1 \u3064\u306b\u7d5e\u308b\u306b\u306f\u5e02\u5834\u306e\u5909\u5316\u304c\u901f\u3059\u304e\u307e\u3059\u3057\u3001\u958b\u767a\u8005\u306e\u591a\u69d8\u6027\u306e\u5e45\u304c\u5e83\u3059\u304e\u308b\u305f\u3081\u3001\u4e07\u80fd\u306a\u5bfe\u5fdc\u3092\u53d6\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u305d\u306e\u305f\u3081\u3001\u5f53\u793e\u304c\u8a00\u3046\u3068\u3053\u308d\u306e\u300cJetBrains IDE \u306b\u304a\u3051\u308b AI\u300d\u3068\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u3088\u308b\u4ed8\u52a0\u4fa1\u5024\u3001\u3064\u307e\u308a\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u4ee5\u4e0b\u306e\u5834\u6240\u3067\u4f7f\u7528\u53ef\u80fd\u306b\u306a\u308b UX \u3068\u6a5f\u80fd\u3092\u6307\u3057\u307e\u3059\u3002<\/p>\n<ul>\n<li><em>AI Chat<\/em>\uff08AI \u30c1\u30e3\u30c3\u30c8\uff09\u30c4\u30fc\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u3002<strong>\u30c1\u30e3\u30c3\u30c8\u4e3b\u5c0e<\/strong>\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3068\u3057\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002<\/li>\n<li><strong>IDE<\/strong> <strong>\u30bf\u30fc\u30df\u30ca\u30eb<\/strong>\u3002\u3059\u3067\u306b\u591a\u6570\u306e\u958b\u767a\u8005\u304c\u30bf\u30fc\u30df\u30ca\u30eb\u3067 CLI \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<li>\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578b\u30b7\u30b9\u30c6\u30e0\u7528\u306b\u4f5c\u6210\u3055\u308c\u305f\u65b0\u3057\u3044<strong>\u30aa\u30d7\u30c8\u30a4\u30f3\u30e2\u30fc\u30c9<\/strong>\u3002\u3053\u306e\u30e2\u30fc\u30c9\u3067\u306f\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u5b9f\u884c\u3057\u3001\u6570\u6642\u9593\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<p>1 \u3064\u306e IDE \u306e\u4e2d\u306b AI \u3092\u4f7f\u7528\u3057\u3066\u4f5c\u696d\u3092\u5b8c\u4e86\u3059\u308b\u624b\u6bb5\u304c\u8907\u6570\u5b58\u5728\u3059\u308b\u3068\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u624b\u6bb5\u3092\u9078\u629e\u3057\u3001\u30c1\u30fc\u30e0\u3067\u8abf\u6574\u3092\u884c\u3044\u3001\u5b9f\u969b\u306e\u958b\u767a\u8981\u4ef6\u306b\u5f93\u3063\u3066\u5236\u7d04\u3092\u304b\u3051\u308b\u306e\u3067\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<div class=\"wp-block-group jb-quick-hide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group__inner-container\"><hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h2 class=\"wp-block-heading\"><strong>AI \u6226\u7565: \u30d9\u30f3\u30c0\u30fc\u30ed\u30c3\u30af\u30a4\u30f3\u3092\u56de\u907f\u3057\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u4e92\u63db\u6027\u3092\u7dad\u6301<\/strong><\/h2>\n<p>1 \u3064\u3060\u3051\u78ba\u304b\u306a\u306e\u306f\u3001\u73fe\u6642\u70b9\u3067\u300c\u6700\u826f\u300d\u306e\u30e2\u30c7\u30eb\u3001\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3001\u307e\u305f\u306f\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u3044\u3064\u307e\u3067\u3082\u6700\u826f\u3067\u3042\u308a\u7d9a\u3051\u308b\u3053\u3068\u306f\u306a\u304f\u3001\u6765\u6708\u3067\u3059\u3089\u6700\u826f\u304b\u3069\u3046\u304b\u306f\u5206\u304b\u3089\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002<\/p>\n<p>\u305d\u306e\u305f\u3081\u3001\u5f53\u793e\u306f\u3042\u308b\u7279\u5b9a\u306e\u30d9\u30f3\u30c0\u30fc\u306e\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\u306b<strong>\u4f9d\u5b58\u3057\u306a\u3044<\/strong> IDE \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u610f\u56f3\u7684\u306b\u76ee\u6307\u3057\u3066\u958b\u767a\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u969b\u306b\u306f\u3001JetBrains \u306e AI \u30c1\u30e3\u30c3\u30c8\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u5229\u7528\u898f\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u5185\u5bb9\u3084\u30e6\u30fc\u30b6\u30fc\u306e\u5b9f\u969b\u306e\u8981\u671b\u306b\u5fdc\u3058\u3066\u8907\u6570\u306e\u63a5\u7d9a\u65b9\u6cd5\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u3092\u610f\u56f3\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li><strong>JetBrains AI \u304c\u7ba1\u7406\u3059\u308b\u69cb\u6210<\/strong>\uff08JetBrains AI \u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\uff09<\/li>\n<li><strong>BYOK<\/strong>: Bring Your Own Key \u65b9\u5f0f\u306e API \u30ad\u30fc<\/li>\n<li><strong>OAuth \u30b5\u30a4\u30f3\u30a4\u30f3<\/strong>: \u30b5\u30dd\u30fc\u30c8\u5bfe\u8c61\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\uff08\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\uff09<\/li>\n<li><strong>ACP \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/strong>: \u6a19\u6e96\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u901a\u3058\u3066\u5916\u90e8\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p>\u5b9f\u60c5\u306e\u88dc\u8db3: <strong>OAuth \u306f\u5fc5\u305a\u3057\u3082\u4f7f\u7528\u3067\u304d\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093<\/strong>\u3002 \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c OAuth \u3092\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\uff08\u307e\u305f\u306f IDE \u304c\u4f7f\u7528\u3067\u304d\u308b\u65b9\u6cd5\u3067\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\uff09\u5834\u5408\u3001\u5f53\u793e\u304c\u63a5\u7d9a\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<\/div>\n<\/div>\n<div class=\"wp-block-group jb-quick-hide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group__inner-container\"><hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h2 class=\"wp-block-heading\">\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb\uff08ACP\uff09:\u300c\u72ec\u81ea\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u4f7f\u7528\u300d<\/h2>\n<p>ACP \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u6a19\u6e96\u7684\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u901a\u3058\u3066\u5916\u90e8\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092 JetBrains IDE \u306b\u63a5\u7d9a\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001IDE \u3067\u500b\u3005\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u500b\u5225\u306b\u7d71\u5408\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u7cbe\u9078\u3055\u308c\u305f<a href=\"https:\/\/github.com\/agentclientprotocol\/registry\" target=\"_blank\" rel=\"noopener\">\u30ec\u30b8\u30b9\u30c8\u30ea<\/a>\u304b\u3089\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u307e\u305f\u306f\u624b\u52d5\u3067\u69cb\u6210\uff09\u3059\u308b\u3068\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092 AI \u30c1\u30e3\u30c3\u30c8\u5185\u3067\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u00a0<\/p>\n<p>\u30e6\u30fc\u30b6\u30fc\u304c\u8981\u671b\u3057\u3066\u3044\u305f\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u5b9f\u4f8b\u306b\u306f\u3001<strong>Cursor \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/strong>\u304c\u3042\u308a\u307e\u3059\u3002 Cursor \u306f\u3059\u3067\u306b ACP \u3092\u901a\u3058\u3066 JetBrains IDE \u5185\u3067 AI \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u9078\u629e\u30e1\u30cb\u30e5\u30fc\u3067\u3053\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u3068\u3001JetBrains IDE \u5185\u3067\u3053\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u578b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u00a0<\/p>\n<p>\u5f53\u793e\u304c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u65b9\u91dd\u3092\u3068\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li>\u30e6\u30fc\u30b6\u30fc\u304c\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u307e\u305f\u306f\u30c1\u30fc\u30e0\u306b\u6700\u9069\u306a\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u3002<\/li>\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u3059\u3067\u306b\u4f7f\u7528\u3057\u3066\u3044\u308b IDE \u5185\u3067\u4f5c\u696d\u3092\u7d99\u7d9a\u3059\u308b\u3002<\/li>\n<li>\u300c\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30e2\u30fc\u30c9\u300d\u306b\u3088\u3063\u3066\u5f93\u6765\u306e IDE \u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u304c\u6392\u9664\u3055\u308c\u306a\u3044\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"wp-block-group jb-quick-hide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group__inner-container\"><hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h2 class=\"wp-block-heading\"><strong>\u3088\u308a\u5f37\u3044\u8cac\u4efb\u304c\u6c42\u3081\u3089\u308c\u308b\u300cAI \u306b\u3088\u308b\u696d\u52d9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u300d<\/strong><\/h2>\n<p>JetBrains \u304c\u5bfe\u6297\u3057\u3066\u3044\u308b\u306e\u306f AI \u3067\u306f\u306a\u304f\u3001 \u6df7\u4e71\u3067\u3059\u3002<\/p>\n<p>\u3042\u308b\u7a2e\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u6210\u679c\u7269\u3092\u4f7f\u3044\u6368\u3066\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u9069\u5207\u306a\u72b6\u6cc1\u4e0b\u3067\u306f\u975e\u5e38\u306b\u6709\u52b9\u3067\u3059\u3002 \u3057\u304b\u3057\u3001JetBrains IDE \u306f\u4f7f\u3044\u6368\u3066\u306e\u30b3\u30fc\u30c9\u3067\u306f\u306a\u304f\u3001\u9577\u671f\u7684\u306a\u4f7f\u7528\u3092\u610f\u56f3\u3057\u305f\u30b3\u30fc\u30c9\u3092\u60f3\u5b9a\u3057\u3066\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5f53\u793e\u306f<strong>\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u304c\u5b9f\u969b\u306e\u30b3\u30fc\u30c9\u3068\u540c\u3058\u3088\u3046\u306b\u6271\u308f\u308c\u308b\u3079\u304d\u3060 <\/strong>\u3068\u3044\u3046\u8a2d\u8a08\u539f\u5247\u306b\u5f93\u3063\u3066\u3044\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u53ef\u80fd\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002<\/p>\n<ul>\n<li>\u30b3\u30fc\u30c9\u306e\u8aad\u307f\u53d6\u308a<\/li>\n<li>\u30b3\u30fc\u30c9\u306e\u30ec\u30d3\u30e5\u30fc<\/li>\n<li>\u30b3\u30fc\u30c9\u306e\u5909\u66f4<\/li>\n<li>\u8aa4\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u5143\u306b\u623b\u3059<\/li>\n<li>\u30b3\u30fc\u30c9\u306e\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306b\u5bfe\u3059\u308b\u5f71\u97ff\u3092\u7406\u89e3\u3059\u308b<\/li>\n<\/ul>\n<p>\u5b9f\u969b\u306b\u306f\u3001JetBrains \u304c\u6c42\u3081\u308b\u6700\u4f4e\u6761\u4ef6\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\uff08\u826f\u3044\u610f\u5473\u3067\uff09\u5e73\u51e1\u306a\u3082\u306e\u3067\u3059\u3002<\/p>\n<ul>\n<li>\u5909\u66f4\u304c<strong>\u53ef\u8996\u5316<\/strong>\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/li>\n<li>\u5909\u66f4\u3092<strong>\u5143\u306b\u623b\u305b\u308b<\/strong>\u3053\u3068<\/li>\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u7834\u7dbb\u3057\u305f\u307e\u307e\u653e\u7f6e\u3055\u308c\u306a\u3044\u3053\u3068\uff08\u307e\u305a\u306f\u300c\u8d64\u6587\u5b57\u306e\u30b3\u30fc\u30c9\u3092\u306a\u304f\u3059\u300d\u3053\u3068\u3092\u826f\u3057\u3068\u3059\u308b\uff09<\/li>\n<\/ul>\n<p>\u305d\u3057\u3066\u5f53\u7136\u306a\u304c\u3089\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306f\u591a\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3067\u304d\u307e\u3059\u3002 \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306f\u975e\u5e38\u306b\u5f79\u306b\u7acb\u3061\u307e\u3059\u304c\u3001\u305d\u308c\u306f\u30e6\u30fc\u30b6\u30fc\u304c\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3092\u5341\u5206\u306b\u691c\u67fb\u3057\u3001\u7406\u89e3\u3057\u3001\u8a02\u6b63\u3067\u304d\u308b\u5834\u5408\u306b\u9650\u308a\u307e\u3059\u3002 \u3053\u3053\u3067\u91cd\u8981\u3068\u306a\u308b\u306e\u304c IDE \u3067\u3059\u3002IDE \u306f\u4eba\u9593\u307e\u305f\u306f AI \u304c\u751f\u6210\u3057\u305f\u30b3\u30fc\u30c9\u3092\u53ef\u8996\u5316\u3057\u3001\u5236\u5fa1\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h2 class=\"wp-block-heading\">\u30e6\u30fc\u30b6\u30fc\u306e\u89b3\u70b9\u3067\u52d5\u4f5c\u3059\u308b AI: \u5f53\u793e\u306e\u88fd\u54c1\u3078\u306e\u53d6\u308a\u7d44\u307f<\/h2>\n<h3 class=\"wp-block-heading\">1. AI \u3068\u5f93\u6765\u306e\u30e2\u30fc\u30c9\u3092\u5171\u5b58\u3055\u305b\u308b\u00a0<\/h3>\n<p>\u5165\u529b\u4e3b\u5c0e\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3082 AI \u4e3b\u5c0e\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3082\u6709\u52b9\u306a\u624b\u6cd5\u3067\u3059\u3002 \u5f53\u793e\u306f\u958b\u767a\u8005\u3092\u7f6e\u304d\u63db\u3048\u308b\u3068\u3044\u3046\u30ca\u30e9\u30c6\u30a3\u30d6\u306b\u6cbf\u3063\u3066\u958b\u767a\u3057\u3066\u304a\u3089\u305a\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u552f\u4e00\u306e\u300c\u627f\u8a8d\u3055\u308c\u305f\u300d\u4f5c\u696d\u65b9\u6cd5\u3092\u4fc3\u3059 IDE \u3082\u958b\u767a\u3057\u3066\u3044\u307e\u305b\u3093\u3002 \u5f53\u793e\u306f\u4e21\u65b9\u306e\u624b\u6cd5\u3092\u5c0a\u91cd\u3057\u3066\u3044\u307e\u3059\u3002\u00a0<\/p>\n<h3 class=\"wp-block-heading\">2. AI \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b IDE \u306e\u57fa\u790e\u3092\u5c0a\u91cd\u3055\u305b\u308b<\/h3>\n<p>\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u79fb\u884c\u3059\u308b\u306b\u3042\u305f\u308a\u3001\u9ad8\u5ea6\u306a\u30b3\u30fc\u30c9\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30b9\u3001\u5b89\u5168\u306a\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3001\u30c7\u30d0\u30c3\u30b0\u3001\u79fb\u52d5\u64cd\u4f5c\u3001\u30a4\u30f3\u30b9\u30da\u30af\u30b7\u30e7\u30f3\u3001\u30ec\u30d3\u30e5\u30fc\u306a\u3069\u3001\u696d\u52d9\u958b\u767a\u3092\u69cb\u6210\u3059\u308b IDE \u306e\u57fa\u790e\u3092\u640d\u306a\u308f\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<div class=\"wp-block-group jb-quick-hide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group__inner-container\">\n<h3 class=\"wp-block-heading\">3. \u30d9\u30f3\u30c0\u30fc\u30ed\u30c3\u30af\u30a4\u30f3\u3092\u306a\u304f\u3059<\/h3>\n<p>\u8907\u6570\u306e\u6709\u52b9\u5316\u65b9\u6cd5\uff08\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3\u3001BYOK\u3001\u53ef\u80fd\u306a\u5834\u5408\u306e OAuth\u3001ACP \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\uff09\u306f\u300c\u3042\u308b\u3068\u826f\u3044\u300d\u3067\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002 \u5f53\u793e\u306f\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u304c 1 \u3064\u306e\u30d9\u30f3\u30c0\u30fc\u306b\u7e1b\u3089\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3 class=\"wp-block-heading\">4. \u6d41\u884c\u3088\u308a\u3082\u9577\u671f\u7684\u306a\u5b9f\u7528\u6027\u3092\u91cd\u8996\u3059\u308b<\/h3>\n<p>\u524d\u8ff0\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u304c\u6570\u9031\u9593\u5f8c\u3082\u7d99\u7d9a\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u5834\u5408\uff08\u5b9f\u969b\u306e\u5b9a\u7740\u7387\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6570\uff09\u3001\u305d\u306e\u6709\u52b9\u6027\u304c\u5b9f\u8a3c\u3055\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002 \u4eca\u65e5\u306e AI \u99c6\u52d5\u578b\u306e\u591a\u304f\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u6d41\u884c\u308a\u3082\u306e\u306b\u904e\u304e\u307e\u305b\u3093\uff08ralph-loop \u306e\u3053\u3068\u3067\u3059\uff09\u3002\u00a0<\/p>\n<h3 class=\"wp-block-heading\">5. \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304b\u3089\u306e\u7387\u76f4\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u512a\u5148\u3059\u308b<\/h3>\n<p>JetBrains \u306f Reddit \u30e6\u30fc\u30b6\u30fc\u3001Marketplace \u306e\u30ec\u30d3\u30e5\u30fc\u6295\u7a3f\u8005\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u306e\u7387\u76f4\u3067\u6b63\u76f4\u306a\u610f\u898b\u3092\u5927\u5207\u306b\u3057\u3066\u304a\u308a\u3001 \u307e\u3055\u306b\u305d\u306e\u3088\u3046\u306a\u30e6\u30fc\u30b6\u30fc\u306b\u5f53\u793e\u306e\u53d6\u308a\u7d44\u307f\u3092\u8a55\u4fa1\u3057\u3066\u3044\u305f\u3060\u304d\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<p>AI \u306f\u5927\u91cf\u306e\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u3082\u306f\u3084\u4e88\u6e2c\u3067\u306f\u306a\u304f\u30012026 \u5e74 4 \u6708\u6642\u70b9\u306e\u73fe\u5b9f\u3067\u3059\u3002<\/p>\n<p>\u3068\u306f\u8a00\u3048\u3001\u305d\u306e\u30b3\u30fc\u30c9\u306b\u5bfe\u3059\u308b\u8cac\u4efb\u3092\u8ab0\u304b\u304c\u53d6\u3089\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u306b\u5909\u308f\u308a\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u5f93\u6765\u901a\u308a\u3001\u30b3\u30fc\u30c9\u3092\u30de\u30fc\u30b8\u3059\u308b\u524d\u306b\u67fb\u8aad\u3059\u308b\u4eba\u304c\u5fc5\u8981\u306a\u306e\u3067\u3059\u3002 \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u529b\u3092\u501f\u308a\u3066\u4f5c\u696d\u3092\u7d20\u65e9\u304f\u9032\u3081\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3082\u306e\u306e\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u30e6\u30fc\u30b6\u30fc\u306e\u4ee3\u308f\u308a\u306b\u30ea\u30b9\u30af\u3092\u8ca0\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u305d\u306e\u305f\u3081\u3001\u5f53\u793e\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5358\u7d14\u660e\u5feb\u306a\u53d6\u308a\u7d44\u307f\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><strong>\u4eca\u5f8c\u3082\u958b\u767a\u3092\u52a0\u901f\u3059\u308b AI \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u69cb\u7bc9\u3057\u7d9a\u3051\u3001IDE \u3092\u51fa\u8377\u3055\u308c\u308b\u30b3\u30fc\u30c9\u306e\u30ec\u30d3\u30e5\u30fc\u3001\u7406\u89e3\u3001\u7ba1\u7406\u306b\u6700\u9069\u306a\u5834\u6240\u3068\u3057\u3066\u5f37\u5316\u3057\u7d9a\u3051\u307e\u3059\u3002<\/strong><\/p>\n<p>\u3069\u306e\u7a0b\u5ea6\u306e AI \u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u304b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u6c7a\u65ad\u306b\u59d4\u306d\u3089\u308c\u3066\u3044\u307e\u3059\u3002 AI \u652f\u63f4\u578b\u306e\u624b\u6cd5\u3068\u5f93\u6765\u306e\u624b\u6cd5\u306e\u4e21\u65b9\u304c\u3046\u307e\u304f\u9023\u643a\u3057\u5408\u3048\u308b\u3088\u3046\u306b\u3057\u3064\u3064\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u597d\u307f\u306e\u65b9\u6cd5\u3092\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n<p><strong>\u30aa\u30ea\u30b8\u30ca\u30eb\uff08\u82f1\u8a9e\uff09\u30d6\u30ed\u30b0\u6295\u7a3f\u8a18\u4e8b\u306e\u4f5c\u8005\uff1a<\/strong><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/10\/IMG_6963-e1759851102680-200x200.jpg\" width=\"200\" height=\"200\" alt=\"Denis Shiryaev\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Denis Shiryaev<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":1394,"featured_media":707108,"comment_status":"closed","ping_status":"closed","template":"","categories":[8899],"tags":[8168],"cross-post-tag":[6256],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/ai\/707035"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/ai"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/types\/ai"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/users\/1394"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/comments?post=707035"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/ai\/707035\/revisions"}],"predecessor-version":[{"id":707132,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/ai\/707035\/revisions\/707132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media\/707108"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=707035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=707035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=707035"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=707035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}