メインコンテンツへスキップ

AI開発

GitHub Actionsを減らしたら、品質が落ちると思っていた。実際には逆だった。

AIエージェント時代のCIを、 9分31秒から2分09秒へ

公開日:2026年8月19日 更新日:2026年8月20日 著者:飯田 友広(Tomohiro Iida)

この記事の結論

  • AIエージェントでcommitとpushが増えると、CIの実行回数と重複そのものがボトルネックになります。

  • docs-onlyの実PRでは通常CIを9分31秒から2分09秒へ短縮し、経過時間を77.4%削減しました。

  • 減らしたのは品質ゲートではなく、Draft中の重複、不要な実行基盤、同じ目的の二重検査です。

  • UNKNOWNはfull pathへ倒し、skipした検査はPASS扱いせず、Final Candidateでexact-SHAの証拠を揃えます。

  • Controllerやcron、post-mergeまでイベント連鎖を監査し、起動しても状態を変えられないrunnerも止めました。

  • CIの品質はrunner minutesではなく、現在の変更に対して必要な欠陥を確実に止められるかで評価します。

GitHub Actionsを減らす話が出たとき、私は少し怖かった。

CIは多いほど安全だと思っていたからです。

lint、typecheck、全テスト、ブラウザテスト、データベース検査、セキュリティ確認、本番ビルド。変更のたびに全部走らせれば、見落としは減る。少なくとも、そう考えていました。

ところが、Claude CodeやCodexを使って開発速度を上げると、別の問題が起きました。

AIは人間より短い間隔でcommitし、pushし、Pull Requestを更新します。一つの修正に対して、途中経過のcommit、レビュー修正、テスト修正、再レビューが次々に入り、そのたびにGitHub Actionsが起動します。

気づけば、コードより先にCIが詰まっていました。

それでも最初は、品質のための待ち時間だから仕方がないと思っていました。

しかし調べると、実際には同じ検査を重複して走らせ、古いSHAの結果を量産し、必要な失敗を見つけにくくしていました。

検査を増やしたことで、品質が上がるどころか、証拠が濁っていた。

そこでGitHub Actionsを減らしました。

正確には、検査そのものを捨てたのではありません。

必要のないタイミング、必要のない変更、同じ目的の重複実行を止めた。

結果として、docs-onlyの実PRでは9分31秒かかっていた通常CIが2分09秒になりました。77.4%の短縮です。

そして重要だったのは、品質ゲートを薄くしたのではなく、何を確認したのかが以前より明確になったことでした。

CIが多いほど安心するという思い込み

CIがGREENになると安心します。

ただ、GREENという色だけを見るようになると危険です。

見るべきなのは、何を検査したのか、どのSHAを検査したのか、本番と同じ条件なのか、失敗しても握りつぶされる経路がないか、そして現在の変更と関係のある検査なのかです。

私たちの環境では、AIエージェントはGitHub Actionsを使いすぎる状態になっていました。

通常CIとexact-head検証が同じ重いsuiteを走らせ、docs-onlyでもPostgresが起動し、browserが不要でもChromiumを導入していました。さらに、変更内容を分類する頃にはnpm ciまで終わっていました。

これは安全というより、全員を毎回同じ検査場へ通している状態でした。

AIが速くなると、CIの前提が壊れる

人間が数時間に一度pushする開発では、毎回広い検査をしても実行回数は限られます。

AIエージェントは違います。

Builder A → commit → push
Builder B → commit → push
Builder C → commit → push
レビュー修正 → commit → push
テスト修正 → commit → push

実装能力が増えれば、CIへ流れ込むイベントも増えます。

ここで、一回のテストを20%速くするだけでは足りません。発火回数が二倍、三倍になれば、内部を高速化しても全体は詰まります。

先に問うべきなのは、テストコードの速度ではありませんでした。

この検査は、いま本当に走るべきか。

ここを設計しないままAIエージェントだけ増やしたため、GitHub Actionsが新しいボトルネックになりました。

9分31秒から2分09秒へ

Path-aware CIを入れたあと、docsだけを変更する実際のPull Requestでcanaryを行いました。

9分31秒から2分09秒へ
指標従来のFull pathDocs-only差分
通常CIの完了時間9分31秒2分09秒7分22秒短縮
削減率--77.4%
Postgres起動起動なし省略
Chromium導入導入なし省略
lint実行省略対象外
typecheck実行省略対象外
コード全テスト実行省略対象外

分類結果は次でした。

needs_code=false
needs_browser=false
needs_database=false

ただし、何も確認しなかったわけではありません。

公開情報や契約表現の整合、workflow safety、deploy policy、CI coverage、Agent運用ルール、静的なRLS coverageなど、Markdown変更でも壊れうる検査は残しました。

つまり、docs-onlyだから雑に通したのではなく、その変更が影響しない実行基盤だけを起動しなかったということです。

最初にDraftのrunnerを止めた

作業中のDraft PRへ毎回full CIを投入しても、その結果は次のpushで古くなります。

従来はこうでした。

Draft PR
  ↓
push #1 → CI
  ↓
push #2 → CI
  ↓
push #3 → CI
  ↓
Ready → CI

変更後はこうです。

Draft PR
  ↓
push #1 → runnerなし
  ↓
push #2 → runnerなし
  ↓
push #3 → runnerなし
  ↓
Ready → CI

作業中の検査自体を捨てたわけではありません。ローカルや専用環境で変更範囲に応じた検査を行い、GitHub-hosted runnerはReady時の統合証拠へ寄せました。

「全部走らせる」を「変更を分類する」に変えた

CIの最初に、変更pathだけを見る軽量なclassify jobを置きました。

判定するのは三つです。

needs_code
needs_browser
needs_database

重要なのは、この判定をnpm ciより前に行うことです。

以前も後半のテストをskipする仕組みはありました。しかしskipを判断する頃にはrunnerが起動し、Postgresが立ち上がり、依存関係の導入まで終わっていました。

「走らせなかった」のに、費用と待ち時間の大半はもう使っていたわけです。

変更分類を入口へ移したことで、必要な実行基盤だけを起動できるようになりました。

分類器をPR側から実行しない

path-aware CIには重要な攻撃面があります。

PRが分類器自身を書き換えられると、自分を安全と判定して重い検査を消せます。

そのため分類器はPR headではなく、PR base SHA側の信頼済み版を実行します。

CIや分類器そのものを変更するPull Requestは自己免除できないようfull pathへ倒します。

さらに、未知のpath、変更一覧取得失敗、分類不能、package.jsonやlockfile、Playwright設定なども安全側へ倒します。

SAFEと証明できる → skip可能
分からない        → run

速くするために、安全側のデフォルトを反転させないことが重要です。

exact-head検証をfull CIのコピーにしない

Pull Requestの現在HEADと、検証対象SHAが同じであることは重要です。

しかし同一性を確認するために、通常CIと同じfull suiteをもう一度走らせる必要はありません。

以前は同じHEADへ二つの重い検査が入っていました。

同じPR head
├─ 通常CI:lint / typecheck / 全テスト / Chromium
└─ exact-head CI:lint / typecheck / 全テスト / Chromium

役割を分けました。

Ready PR
├─ integration CI
└─ exact-head identity

Final Candidate
└─ exact-SHA full gate

同じ証拠を二重に作らない。必要な段階で、一度だけ強い検査を行う。この方が、どの結果を最終判断に使うのかも明確になります。

skipはPASSではない

この設計で、技術的な最適化と同じくらい重要だったのが証拠の意味です。

browser suiteをskipしたPRについて、browser: PASSとは記録しません。実行していないからです。

正しくはNOT_RUNです。なぜ省略できたのかを別の証拠として記録します。

同様に、Postgresを起動しなかったPRについて、DB検査が成功したとは言えません。

実行量の削減と、証拠の強度は別に管理する。

Final Candidateでは別のfull exact-SHA gateを持ち、必要な証拠を同じSHAへ揃えます。

検査を減らしたことで、欠陥が見えやすくなった

CIが多すぎると、失敗が情報ではなく騒音になります。

無関係なflaky testが落ちる。古いrunがキャンセルされる。同じSHAへ複数workflowが走る。どの赤が今回の変更に由来するのか、切り分ける仕事が増えます。

その結果、本当に見るべき欠陥より、CIをGREENに戻す作業へ時間を使います。

逆に、変更内容に近い検査を狭く確実に走らせると、失敗の意味が強くなります。

例えば、Next.jsのroute moduleへ余分なexportを置くと本番ビルドだけが落ちる問題がありました。毎Pull Requestで重い本番ビルドを追加する代わりに、同じ型の欠陥だけを数秒で検出する静的Gateを作りました。

重要なのは、検査時間の長さではありません。

過去に実際に起きた欠陥を、次に確実に止められるか。

ここを基準にすると、広く重い検査を毎回走らせるより、壊れ方に対応した小さなGateの方が強い場合があります。

起動しても状態を変えられないrunnerも止める

PR側のCIを軽くしても、周辺workflowが同じイベントへ反応すれば固定消費は残ります。

私たちのAgent Integration Controllerは、複数のAIエージェントが作ったPull Requestを評価し、統合可能なものをmainへ送るsingle-writerです。

以前はReady PRへpushした直後にもControllerが起動していました。しかしその時点ではCIが実行中なので、正常に動いてもmergeできません。

そこで通常の統合判断を、成功したCIの完了イベントへ寄せました。

Ready PR push
  ↓
CI
  ↓
CI success
  ↓
Controller 1回

Draft PRのCIがskipされたとき、CIがfailureやcancelledで終わったとき、Ready PRの新しいheadでまだCIが完了していないときはController runnerを起動しません。

Draft側で通常CIのrunnerを止めても、そのskip通知を受けて別のControllerが起動していたら固定消費は消えません。イベント連鎖全体を見る必要があります。

10分cronはrecovery fallbackへ落とした

Controllerにはイベント取りこぼしや一時障害から状態を再評価するscheduleもありました。

従来は10分ごとでした。

144回 / 日
4,320回 / 30日

通常の統合はPRイベントとCI完了イベントで即時に起動できます。scheduleは通常処理ではなく、イベントを取りこぼしたときの回復経路です。

そこで1時間ごとへ落としました。

24回 / 日
720回 / 30日

定期起動回数は83.3%削減です。

通常のPR統合待ち時間は増やさず、イベント駆動を通常経路として残し、cronは最大約1時間で再評価するrecovery fallbackへ役割を限定しました。

ここで得た原則は単純です。

このjobは必要か、だけでなく、いま起動してこのjobは状態を変えられるかを見る。

merge後のpost-merge checkにも同じ固定燃焼が残る

PR側を軽くしても、mainへmergeされるたびに別のpost-merge workflowが重い準備を無条件で始めれば、最適化は途中で終わります。

main postmerge checkも、変更分類を依存導入より前へ移しました。

docs-only / README-onlyでは、npm ci、事実整合チェック、lint / typecheck cacheのrestore、lint、typecheckを省略します。

一方、conflict marker検査は依存不要なので常時維持します。未知path、差分取得不能、分類不能はfail-closedでコード変更側へ倒します。

ここでも新しいdocs専用classifierを作らず、PR CIと同じ分類器を正本にしました。分類ロジックをworkflowごとに増やすと、片方だけ安全判定が緩むからです。

Draft → Ready → merge → Controller → post-mergeまで、ライフサイクル全体で「必要になる前に高価な準備を始めない」ようにする。

AIエージェント開発でActionsを削るときは、PR workflowだけでなく、merge後に連鎖するworkflowまで同じ発火予算で監査する必要があります。

品質は何分使ったかでは測れない

GitHub Actionsの利用時間が多いと、よく検査しているように見えます。

しかし品質を守るのはrunner minutesではありません。

見るべきなのは、どの欠陥を止める検査か、現在のSHAを検査しているか、必要な環境で実行したか、失敗が必ずGateへ届くか、そして省略した理由を説明できるかです。

この基準で見ると、重複実行を減らすことは品質低下ではありませんでした。

証拠の鮮度と意味を上げる改善でした。

減らしたのは品質ではなく、儀式だった

CIを減らすとき、一番危険なのは、速くしたいから検査を消すことです。それは手抜きになります。

必要なのは、各検査について次を説明できることです。

  1. どの欠陥を止めるのか
  2. どの変更で必要になるのか
  3. どの段階で証拠が必要か
  4. 省略したとき、別のGateで守られるか
  5. 判定に失敗した場合は安全側へ倒れるか

この説明ができないworkflowは、残っていても安心の儀式になりやすい。

私は以前、CIを多く走らせることを品質管理だと思っていました。

今は、品質管理とは、必要な欠陥を、必要な場所で、現在の変更に対して止めることだと考えています。

GitHub Actionsを減らしたら、検査が薄くなったのではありません。

何を確認しているのかが以前よりはっきりしました。

速いCIより、走らないCIを設計する

今回の改善で変えたのは、テストの品質ではなく、検査を発火させる条件です。

  • DraftではGitHub-hosted runnerを起動しない
  • Readyで変更pathをnpm ciより前に分類する
  • code、browser、databaseを別軸にする
  • exact-headはidentity確認とfull validationを分離する
  • 未知の変更とCI自己変更はfull pathへ倒す
  • 分類失敗をrequired checkのFAILへ変える
  • skipをPASSとして扱わない
  • Final Candidateで必要なexact-SHA証拠を揃える
  • 状態を変えられないタイミングではController runnerも起動しない
  • cronを通常経路にせず、イベント駆動のrecovery fallbackへ限定する
  • post-mergeも依存導入前に分類する

この結果、docs-onlyの実PRでは通常CIを9分31秒から2分09秒へ短縮できました。

これからのCIで最初に問うべきは、どう速く走らせるかではなく、「この検査は、いま本当に走るべきか」です。

必要な証拠は、必要な瞬間にだけ完全に揃える。

AIエージェントの速度をrunner待ちと請求額へ変えず、事業の速度へ変えるには、ここまでを設計対象にする必要があります。

この記事の著者

飯田 友広

飯田 友広

代表取締役

Netsujo株式会社 代表取締役。京都発のWeb3・AI実装スタートアップを2023年6月に創業。Webサイトを営業基盤として捉え、経営・営業・検索・生成AI・コンバージョン・計測を横断して課題と改善優先順位を整理する「Netsujo SIGNAL」を設計・運営。さらに、ChatGPT・Codex・Claude Codeを状態再構築、競合回避、独立QC、Exact-head検証、停止、復旧まで含む制御ループで運用する社内AI開発基盤「Netsujo Agent OS」を設計・実運転。Netsujoとして京都ビッグデータ活用プラットフォームに参画(小規模企業会員(ベンチャー))し、同プラットフォーム発のワーキンググループ「Chain Up KYOTO」にも参画(2026年3月10日〜)。IVS2026サイドイベント「なぜ京都でWeb3.0ビジネスなのか」はNetsujoとして京都府庁旧議場で主催・企画・登壇・運営(2026年7月2日/京都府 総合政策環境部 デジタル政策推進課は共催)。京都美術工芸大学・龍谷大学での講義に加え、京都高度技術研究所(ASTEM)、旅館業界、就労支援施設、Open Source Conference等で登壇実績。ITコミュニティ「みやこでIT」(connpassメンバー637名・イベント174件・2019年2月から運営)運営。NPO法人NEMTUS理事、BAR KRYPTO運営。Netsujoはソーシャル企業認証制度「S認証」の認証企業(2026年2月認証・2026年4月公表)。技術領域はWeb3/ブロックチェーン/DID/NFT/生成AI/コミュニティ運営。

プロフィールを見る

この記事が向いている方

  • Claude CodeやCodexなどのAIコーディングエージェントでPull Requestとpushの頻度が増えている開発責任者

  • GitHub Actionsの利用量を減らしたいが、required checkや品質ゲートを弱めたくないITエンジニア

  • 複数AIエージェントの開発フローを、トークン・CI・Previewを含む実行予算として設計したい方

— 壁打ち相談

読者のよくある相談

記事を読んだ後に「自分の状況だとどう判断すべきか」を整理するための壁打ち相談を受け付けています。下記のような相談例が当てはまる方は、お気軽にご連絡ください。

Q. AIエージェントを増やしたら、GitHub Actionsの実行回数まで急増した

テスト時間だけでなく、Draft・Ready・Final Candidateごとのworkflow発火回数と重複を先に確認します。

Q. docs-only変更でもPostgresやbrowser testまで毎回走っている

変更pathを依存導入前に分類し、code・browser・databaseを別軸で起動します。

Q. CIを省略すると品質が落ちそうで怖い

SAFEと証明できる範囲だけ省略し、UNKNOWNとCI自己変更はfull pathへ倒します。skipはPASS証拠にしません。

上記いずれかが該当する場合、初回30分の壁打ち相談で論点整理に対応します。記事に書ききれない個別事情を踏まえた判断材料が必要な段階こそ、壁打ちが活きやすいフェーズです。

AI導入・PoC・業務実装のご相談

AIエージェントの速度を、運用コストへ変えない

AIエージェントの役割分担、Git運用、品質ゲート、CI、最終判断者までを一つの運用として設計します。構想段階からのご相談も可能です。

連載補章

AIエージェントを増やしたら、私の仕事が増えた

Task CompilerとPlanner Agentがない現場では、人間が差分吸収装置になる

同じGoalから複数の正解と重複PRが生まれ、人間が最終統合係になった実例から、Task Contract、Claim、canonical owner、Dependency Graphを設計します。

Incident Card

AIエージェントを増やした目的は、私の作業時間を減らすことでした。調査を並列化し、実装を分担し、Reviewを独立させる。ところが実際には私の仕事が増えました。

複数のAgentから同時に報告が届く。同じ問題に対して異なる修正案が作られる。片方の修正がもう片方の前提を壊す。それぞれは自分の変更が正しいと説明する。最後に私が差分を読み、正本を決め、重複を捨て、必要な要素だけを統合する。

Incident Card
項目発生したこと
symptom同じroot causeに複数のPull Requestが作られた
direct impactReview、CI、統合作業が重複した
hidden impact誰がcanonical ownerか分からなくなった
wrong premise同じGoalを伝えればAgent同士が自然に担当範囲を理解する

AIエージェントは実装を進めていました。私はAgent同士が生み出した差分を吸収する装置になっていました。

曖昧な依頼は並列化すると複数の正解に分裂する

人間が一人のエンジニアへProduction Goal Smokeの前提不足を本番変更前に検出してほしいと依頼すれば、周辺コードを調査し、一つの実装方針を選びます。同じ依頼を複数Agentへ渡すと、それぞれが異なる正解を作ります。

  • readiness専用Workflowを作る
  • 既存Workflowの冒頭にpreflightを置く
  • secret参照境界を変える

どれも問題の一部を解決します。しかし依頼には、正本となる実装場所、変更してよい範囲、canonical owner、他Agentの提案先、完了判定Evidenceが定義されていません。

自然言語のGoalは共有されていても、実行契約は共有されていませんでした。

Task Compilerが必要だった

Task Compilerの仕事は人間の文章を短く要約することではありません。Intentを、複数Agentが同じ意味で扱えるTask Contractへ変換することです。

Task Contractには最低限、次を持たせます。

  • task IDとclaim key
  • objectiveとexpected outcome
  • canonical owner
  • in scope / out of scope
  • constraints
  • acceptance criteria
  • required evidence
  • allowed / forbidden actions
  • risk class
  • stop conditions
  • contract version

たとえばProduction Goal SmokeのTaskなら、objectiveは「本番変更開始前に必要前提の不足を検知し、不完全な状態で本番変更へ進まない」とします。Scopeはreadiness判定、preflight、secret参照可否へ限定し、smoke test本体の全面改修やsecret値変更はOut of Scopeへ置きます。

この契約があれば、別Agentがより良い案を思いついても、新しいPull Requestを作る必要はありません。正規ownerへProposalを送ればよい。

Task Claimは担当中という札では足りない

重複作業を防ぐためにTask Claimを置くだけでは不十分です。Agent Aが停止した場合、期限のないClaimはTaskを永久占有します。反対にClaimが弱ければ別Agentが無視して着手します。

Task Claimには次を含めます。

  • claim key
  • holder / session ID
  • lease ID
  • expected HEAD SHA
  • branch
  • worktree
  • write scope
  • acquired at / expires at
  • heartbeat

Agentが動いている間はheartbeatでLeaseを更新する。停止したら期限切れにする。別Agentへ移管する場合はCurrent State、branch、HEAD、Evidenceをセットで渡す。

これによりClaimは人間向けの札ではなく、Mutation権限を管理する仕組みになります。

1 task = 1 owner = 1 branch = 1 worktree = 1 write scope

この原則は、全作業を一人へ限定するという意味ではありません。読み取り調査、Review、検証は複数Agentで並列化できます。制限するのはMutationです。

同じMutable Work Itemに複数Writerを許可すると、一方の変更で他方のexpected HEADとEvidenceが失効します。無関係commitがbranchへ混入し、最終的にどちらが正規の変更か判断できません。

したがってMutable Work Itemには、Task ID、Owner Session、Branch、Worktree、Write Scope、Leaseを一対一で結び付けます。この対応が崩れた時点でbranch contaminationを疑います。

Planner Agentがなければ依存関係を人間が吸収する

Task Compilerが何を達成するかを定義した後、Planner Agentがどの順序で達成するかを決めます。

Production Goal Smokeなら、既存Workflowの責任範囲確認、前提不足の分類、readiness正本の決定、secret境界の決定、preflight実装、negative test、normal path regression、exact-head reviewという依存関係があります。

この順序を決めずに、Workflowを直す、secret境界を直す、testを追加する、と別々のAgentへ投げると、各Agentが異なる前提で実装を始めます。すべての変更が完成してから前提不一致が見つかり、人間が吸収します。

Planner Agentの役割はTaskを細かく分けることより、依存する判断を先に確定させることです。

並列化してよい仕事と直列化すべき仕事

初期調査は並列化できます。既存incident調査、Workflow構造調査、secret利用箇所調査は互いに独立しています。しかし正本設計が決まる前に三つのimplementation laneを走らせるべきではありません。

AIエージェント並列化で重要なのは、同時に始められる仕事を増やすことではありません。同時に始めても後で捨てずに済む仕事を見極めることです。

Plannerは各Stepについて、prerequisite、resource requirement、mutation boundary、verification point、evidence mapping、replan triggerを明示します。

別案はPull RequestではなくProposalとして扱う

複数Agentを使う価値の一つは異なる案を得られることです。しかし、案を得ることとすべての案をbranchへ実装することは分けます。

正規owner以外のAgentは、claim key、observation、suggested change、affected files、risk、submit targetを持つProposalを返します。canonical ownerが採用可否を判断し、必要な要素だけを取り込みます。採用されなかった案は実装branchを持たずに終了します。

これにより複数Agentの知見を得ながら、Writerを一つに保てます。

人間の役割を統合から例外判断へ移す

Task CompilerとPlanner Agentが弱いと、人間は同じ依頼かどうか、どのPRを残すか、どの差分を採用するか、誰をownerにするかを毎回判断します。これらは再現可能な制御処理です。

人間へ残すべきなのは、Goal自体を変えるか、複数の正当な設計方針からどれを選ぶか、高リスク例外を許容するか、追加投資をするかといった事業・仕様判断です。

重複判定、Owner決定、依存順序、Claim移管はシステム側で処理します。

Rule

自然言語のGoalをそのまま複数Agentへ配布しない。Task Compilerが境界付きTask Contractへ変換し、Planner Agentが依存関係と並列化可能範囲を決定する。

Guardrail

  • すべてのMutable Work Itemに一意なTask IDを付ける
  • 同一root causeを識別するclaim keyを持つ
  • 一つのclaim keyにcanonical ownerを一人だけ置く
  • Task Claimへ期限、heartbeat、移管手順を持たせる
  • branch、worktree、write scopeをClaimへ結び付ける
  • 正規owner以外の案はProposalとして提出する
  • 実装前にTask Graphを作る
  • 依存判断が終わる前に後続Mutationを開始しない
  • Scope変更はContract Version更新として扱う
  • 重複Pull Requestを作成前に検知する

Evidence

設計が機能していることは、次の指標で測ります。

  • 同一claimから作られたPull Request数
  • 重複実装を廃棄した時間
  • Scope外変更率
  • Claim競合の自動解消率
  • Humanによる正本選定回数
  • Proposalから採用された知見数
  • Replan発生理由の追跡率
  • canonical owner不明状態の継続時間

Agent数を増やしてHumanによる統合回数が増えているなら、オーケストレーションは機能していません。

Remaining Risk

Task Claimを厳格にしすぎるとcanonical ownerが新しいボトルネックになります。claim keyの粒度が粗すぎれば独立作業まで束ね、細かすぎれば実質的に同じ問題が別claimとして並走します。

Writerは一人に絞りながら、調査、Proposal、Reviewは複数Agentで独立して行う必要があります。One Writer, Multiple Readers, Multiple Reviewers, One Controllerという分離です。

AIエージェントを増やす前に仕事の境界をコンパイルする。それができなければ、増えるのは処理能力ではなく統合負債です。

AI導入について相談する