GitHub Agentic Workflowsでリポジトリ横断ドキュメントを自動化|仕様差分・互換性・導入条件

GitHub Agentic Workflowsでリポジトリをまたいだドキュメント更新を自動化したいものの、「AIにどこまで権限を渡してよいのか」「既存のGitHub Actionsを変更する必要があるのか」と悩む担当者は少なくありません。

結論からいうと、今回の公式情報は、すべての利用者に移行を求める破壊的変更ではありません。GitHubとMicrosoftのAspireチームが、製品リポジトリの変更から別リポジトリのドキュメントPull Requestを安全に作成する方法を、本番事例として公開したものです。既存のGitHub Actionsを直ちに作り直す必要はありませんが、広い権限を持つPATで複数リポジトリを操作している組織や、AIに直接書き込み権限を渡している組織は、設計を見直す価値があります。

本記事では、2026年7月9日に日本語圏で確認された公式情報を基に解説します。なお、GitHub Blog上の公開日は2026年7月8日です。公開内容から分かる仕様上のポイント、既存実装との互換性、導入条件、テスト方法、対応要否の判断基準を整理します。(The GitHub Blog)

目次

GitHub Agentic Workflowsの今回の公式情報で何が変わるのか

今回の情報を「GitHub Agentic Workflowsの新機能が全利用者に強制適用された」と捉えるのは正確ではありません。

公式記事が示したのは、GitHub Agentic Workflowsを使って、次の一連の処理を安全に自動化する実装パターンです。

  • 製品リポジトリでマージされたPull Requestを検知する
  • ドキュメント更新が必要かAIが判断する
  • 対象のリリースブランチを決定する
  • 別のドキュメントリポジトリを編集する
  • ドラフトPull Requestを作成する
  • 製品変更を承認したエンジニアにレビューを依頼する

GitHub Agentic Workflows自体はPublic Previewであり、公式ドキュメントにも今後大きく変更される可能性があると明記されています。そのため、今回の事例は有力な設計例として参考にしつつ、掲載された設定をそのままコピーするのではなく、利用中のCLIバージョンで検証する必要があります。(GitHub)

利用状況対応の優先度推奨する対応
GitHub Agentic Workflowsを利用していない今すぐの変更は不要。ドキュメント遅延が課題なら検証候補にする
同一リポジトリ内でのみ利用しているバージョン固定、権限、Safe Outputsの設定を確認する
製品とドキュメントが別リポジトリにある今回事例を参考にPoCを実施する
広範囲のPATで複数リポジトリへ書き込んでいるリポジトリ限定のGitHub Appへ移行できるか検討する
AIが直接コミットや自動マージを行うドラフトPRと人間レビューを挟む設計へ見直す

Aspireチームが実現したリポジトリ横断のドキュメント自動化

公式記事で紹介されたAspireチームでは、製品コードをmicrosoft/aspire、ドキュメントをmicrosoft/aspire.devで管理しています。

従来は、製品機能が完成してからドキュメント担当者が変更内容を追いかけ、Pull Requestの差分やIssueを読み直していました。この方式では、変更を実装したエンジニアが次の作業へ移った後に確認が発生し、ドキュメント公開が製品リリースに遅れやすくなります。

そこで、製品Pull Requestのマージを起点として、ドキュメントの下書きを自動生成するAgentic Workflowを構築しました。

実際の処理フロー

公式事例の処理は、次の順序で進みます。

段階実行内容AIに任せるか
トリガーmainまたはrelease/*へのPull Requestがマージされたか確認任せない
ブランチ判定マイルストーン、関連Issue、ベースブランチから対象ブランチを決定任せない
更新要否の判定ユーザー向け変更か、ドキュメントが必要かを判断任せる
原稿作成差分やIssueを読み、既存ルールに沿って文書を編集任せる
PR作成許可されたリポジトリとブランチにドラフトPRを作成Safe Outputsが実行
内容確認機能変更を理解しているエンジニアがレビュー人間が実行

特に重要なのは、リリースブランチの選択をAIに任せていない点です。

Aspireチームの実装では、AIが起動する前に通常のBash処理を実行し、次の優先順位でドキュメントの対象ブランチを決めています。

  1. 製品Pull Requestのマイルストーン
  2. FixesClosesResolvesで関連付けられたIssueのマイルストーン
  3. release/X.Y形式のベースブランチ
  4. いずれにも該当しない場合はmain

AIが得意な「変更内容の理解」と、通常のプログラムが得意な「ルールに基づく分岐」を分離していることが、今回の実装の中核です。(The GitHub Blog)

82件のドキュメントPRがすべてマージされた

公式記事によると、2026年5月3日から6月2日までの30日間に、製品側では396件のPull Requestがマージされました。そのうち、Agentic Workflowがドキュメント更新を必要と判断して作成したドラフトPRは82件です。

記事公開時点では、82件すべてがマージされ、ドキュメントPRが作成されてからマージされるまでの中央値は44.8時間でした。また、38%が24時間以内、96%が7日以内にマージされています。(The GitHub Blog)

ただし、この数値をGitHub Agentic Workflows全体の性能指標として扱うべきではありません。Aspireチームのリポジトリ構成、プロンプト、ドキュメント規約、レビュー体制を含めた結果です。

実務で注目すべきなのは、396件すべてにドキュメントPRを作成したのではなく、82件だけを選別している点です。AIを「文章を書く仕組み」としてだけでなく、「ドキュメントが必要な変更を見分ける仕組み」として使用しています。

仕様差分として押さえておきたい重要ポイント

Markdownから通常のGitHub Actionsワークフローを生成する

GitHub Agentic Workflowsでは、ワークフローの定義元をMarkdownファイルとして作成します。

Markdownの上部にYAML形式のfrontmatterを記述し、その下にAIへ渡す指示を書きます。その後、gh aw compileを実行すると、通常のGitHub Actionsとして実行される.lock.ymlファイルが生成されます。

.github/workflows/pr-docs-check.md
.github/workflows/pr-docs-check.lock.yml

.md.lock.ymlは、原則として両方をリポジトリへコミットします。

現行ドキュメントでは、Markdown本文の指示は実行時に読み込まれるため、プロンプト本文だけの変更であれば再コンパイルは不要とされています。一方、トリガー、権限、ツール、Safe Outputsなどのfrontmatterを変更した場合は、再コンパイルが必要です。(GitHub Pages)

AIにGitHubへの直接書き込み権限を渡さない

一般的な自動化では、処理を実行するジョブがそのままGitHub APIを呼び出し、Pull RequestやIssueを作成します。

GitHub Agentic Workflowsでは、AIエージェントと書き込み処理が分離されています。

AIエージェントは、作成したいPull Request、Issue、コメントなどをJSON形式の「意図」として出力します。その内容を別のSafe Outputsジョブが検査し、許可された操作だけをGitHub上へ反映します。

エージェントは読み取り中心の権限で動き、書き込み用の資格情報は分離された後続ジョブで使用されます。これにより、リポジトリ内の悪意ある記述やプロンプトインジェクションがあっても、AIが直ちに任意のリポジトリへ書き込む設計を避けられます。(The GitHub Blog)

従来型の自動化との違い

論点一般的な既存実装Aspireチームの実装
ワークフロー定義YAMLとスクリプトMarkdownから.lock.ymlを生成
対象ブランチスクリプトまたはAIが判断AI起動前にBashで確定
リポジトリ認証PATや共通トークン対象を限定したGitHub App
AIの書き込みAPIやGit操作を直接実行する場合があるSafe Outputsへ意図を渡す
出力形式コミット、PR、自動マージなどドラフトPRのみ
レビュー担当者を固定する場合がある元の製品PRを理解するSMEへ依頼
保護対象独自スクリプトで除外protected-filesで変更を制限
PR作成失敗ログだけで終了する場合があるIssue作成へのフォールバックを設定

GitHub Appは対象リポジトリを限定する

別リポジトリのチェックアウト、情報の読み取り、Pull Requestの作成には、追加の認証が必要です。GitHub Agentic WorkflowsはPATにも対応していますが、公式事例では、対象を製品リポジトリとドキュメントリポジトリの2つに限定したGitHub Appを使用しています。(GitHub Pages)

実務では、次のように考えると分かりやすくなります。

  • AIエンジンの利用資格情報
  • GitHub上の情報を読む資格情報
  • Safe Outputsが別リポジトリへ書き込む資格情報

これらを同じ広範囲のトークンに集約しないことが重要です。

また、tools.github.allowed-reposを省略した場合、現行リファレンスでは既定値がallとされています。安全側に倒すなら、対象リポジトリを明示的に列挙するべきです。(GitHub Pages)

公式ブログと現行リファレンスで記法が異なる点に注意する

Public Preview中のサービスであるため、公式ブログの掲載例と現行リファレンスの間にも記法の違いがあります。

2026年7月8日付の公式ブログでは、GitHub Appの設定例にapp-idが使われています。一方、現行の認証リファレンスでは、github-app配下の項目としてclient-idが掲載されています。(The GitHub Blog)

github-app:
  client-id: ${{ vars.APP_ID }}
  private-key: ${{ secrets.APP_PRIVATE_KEY }}

したがって、ブログ記事の設定例をそのままコピーするのではなく、次の条件をそろえる必要があります。

  • 組織で承認したgh-awのバージョンを固定する
  • そのバージョンに対応するリファレンスを確認する
  • gh aw validate --strictで検証する
  • コンパイル結果の差分をレビューする

同様に、Aspireチームの記事では、Safe Outputsがドキュメントリポジトリを確実に再発見できるよう、対象リポジトリを2か所へチェックアウトしたと説明されています。現行リファレンスでは、checkout:に対象リポジトリとpath:を指定する手順が明文化されています。古い回避策を機械的に残す、または削除するのではなく、固定したバージョンで実際の書き込み経路をテストしてください。(The GitHub Blog)

既存実装との互換性

既存のGitHub Actionsはそのまま併用できる

GitHub Agentic Workflowsは、既存のGitHub Actionsを置き換えることだけを目的とした仕組みではありません。

コンパイル後の.lock.ymlは通常のGitHub Actionsワークフローとして実行されます。既存のビルド、テスト、デプロイ、静的解析などを維持したまま、変更内容の分類やドキュメント下書きといったAI向きの処理を追加できます。

公式サイトも、既存の決定論的なCI/CDをAgentic Workflowsで拡張する位置付けを示しています。(GitHub)

特に、次の処理は既存のスクリプトとして残すのが安全です。

  • 対象ブランチの決定
  • リポジトリ名や環境名の検証
  • マイルストーンからリリース番号への変換
  • 許可されたファイルパスの確認
  • ビルド、テスト、リンクチェック
  • 必須ラベルや承認状態の判定

一方、次の処理はAIに向いています。

  • 変更がユーザー向けかどうかの判断
  • 複数ファイルの差分要約
  • 関連Issueを含めた変更意図の理解
  • 既存文書の更新箇所の特定
  • 文体やテンプレートに沿った下書き作成

既存のAgentic WorkflowはCLIとlockファイルを分けて管理する

GitHub Agentic Workflowsには、ローカルやCIで使うgh aw CLIと、GitHub Actionsで実行される.lock.ymlの2つのバージョン層があります。それぞれ独立して管理されるため、ローカルCLIだけを更新しても、既存のコンパイル済みワークフローが自動的にすべて更新されるわけではありません。(GitHub Pages)

既存環境を更新するときは、次の順序が安全です。

# 現在のバージョンを確認
gh aw version

# 認証とリポジトリ設定を診断
gh aw doctor

# 非推奨設定や依存関係を確認
gh aw upgrade --audit

# 更新内容をPull Requestとして作成
gh aw upgrade --create-pull-request

# 厳格モードで検証
gh aw validate --strict

# コンパイルと検証を実施
gh aw compile --validate --strict

gh aw upgradeは、ツール関連ファイルの更新、非推奨構文の変換、再コンパイルなどを行います。いきなり既定ブランチへ適用せず、--create-pull-requestを使って差分レビューを挟む運用が適しています。(GitHub Pages)

.lock.ymlを手動修正しない

.lock.ymlはコンパイラが管理する生成物です。

動作不良を一時的に直すために.lock.ymlだけを編集すると、次回のコンパイルで変更が失われたり、Markdown側の設定と実行内容が食い違ったりします。公式ドキュメントも、.lock.ymlを手動編集しないよう明記しています。(GitHub Pages)

変更は原則として次の場所で行います。

  • AIへの指示は.mdの本文
  • トリガー、権限、ツール、出力制限は.mdのfrontmatter
  • 固定的な判定処理はpre-agent-stepsなどの決定論的処理
  • 生成された.lock.ymlはレビューのみ

GitHub Agentic Workflowsの導入条件

公式Quick Startでは、AIサービスのアカウント、書き込み可能なGitHubリポジトリ、GitHub Actions、GitHub CLI 2.0.0以上、GitHub CLIへのログインが必要とされています。対応環境にはLinux、macOS、WindowsのWSLが挙げられています。(GitHub Pages)

リポジトリ横断のドキュメント自動化では、それに加えて次の準備が必要です。

項目確認内容
GitHubリポジトリ製品側とドキュメント側の両方を操作できること
GitHub Actions組織ポリシーで実行が許可されていること
AIエンジンCopilot、Claude、Codex、Geminiなどの利用条件を満たすこと
認証別リポジトリを読む、チェックアウトする、PRを作る権限があること
GitHub App対象リポジトリと必要な権限だけに限定すること
ブランチ構成mainrelease/*など、許可するブランチを定義できること
ドキュメント規約文体、ファイル構成、MDX記法、禁止ファイルを明文化できること
レビュー体制AIが作ったドラフトを確認するSMEを決められること
コスト管理Actions実行時間とAI利用量を確認できること

AIエンジンの認証と、GitHubリポジトリを操作する認証は別物です。例えば、Codexを使う場合はAI推論用の資格情報が必要ですが、それだけでは別リポジトリへPull Requestを作成できません。GitHub Appや必要範囲に限定したトークンを別途設定します。(GitHub Pages)

安全なドキュメント自動化を設計する手順

対象業務を限定する

最初から「すべての変更を自動文書化する」と定義すると、不要なPull Requestが大量に作られやすくなります。

初期導入では、次のような対象に限定するのが現実的です。

  • ユーザーが操作する新機能
  • 公開APIの追加や変更
  • 設定ファイルの公開項目の変更
  • CLIコマンドやオプションの変更
  • 既存動作に影響する非推奨化
  • リリースノートへの記載が必要な変更

反対に、ドキュメント対象外の例もプロンプトへ明記します。

  • CI設定だけの変更
  • 内部リファクタリング
  • テストコードだけの変更
  • 依存パッケージの定期更新
  • ログ出力だけの変更
  • コード整形やコメント修正

Aspireチームも、初期段階では内部変更に対して不要なドキュメントPRを作成してしまい、69件中9件がマージされずにクローズされました。その後、CI、内部ヘルパー、テストのみの変更などを否定例として追加し、判定を改善しています。(The GitHub Blog)

ブランチ判定はAIの外側に置く

対象ブランチをAIに自由記述させると、存在しないブランチや誤ったリリースブランチを選ぶ可能性があります。

次のような優先順位を、BashやJavaScriptなどの固定処理として実装します。

PRのマイルストーン
  ↓ なければ
関連Issueのマイルストーン
  ↓ なければ
PRのベースブランチ
  ↓ 条件に合わなければ
main

AIには、確定済みの対象ブランチを入力として渡します。これにより、AIは文章作成に集中でき、ルーティングの再現性も高まります。

書き込み先と操作内容を固定する

Safe Outputsでは、少なくとも次の制限を設けます。

tools:
  github:
    toolsets: [repos, issues, pull_requests]
    min-integrity: approved
    allowed-repos:
      - example-org/product
      - example-org/docs
    github-app:
      client-id: ${{ vars.DOCS_APP_CLIENT_ID }}
      private-key: ${{ secrets.DOCS_APP_PRIVATE_KEY }}
      owner: example-org
      repositories: [product, docs]

safe-outputs:
  github-app:
    client-id: ${{ vars.DOCS_APP_CLIENT_ID }}
    private-key: ${{ secrets.DOCS_APP_PRIVATE_KEY }}
    owner: example-org
    repositories: [product, docs]

  create-pull-request:
    target-repo: example-org/docs
    title-prefix: "[docs] "
    draft: true
    base-branch: main
    allowed-base-branches:
      - main
      - "release/*"
    protected-files: blocked
    fallback-as-issue: true

上記は設計イメージです。Public Preview中はスキーマが変わる可能性があるため、使用中のgh-awバージョンに対応したリファレンスを確認し、必ずコンパイルと検証を行ってください。

安全性を優先するなら、次の条件を維持します。

  • target-repoを固定する
  • allowed-reposを明示する
  • draft: trueにする
  • 自動マージしない
  • 許可するベースブランチを限定する
  • protected-filesを有効にする
  • 作成失敗時はIssueへフォールバックする
  • 元の製品PRを理解している人をレビュー担当にする

テスト時に注意すべきポイント

構文確認だけでは不十分

まず、CLIで静的な検証を行います。

gh aw doctor
gh aw validate --strict
gh aw compile --validate --strict

gh aw validateは、lockファイルを生成せずにコンパイラとリンターによる検証を行います。gh aw compile --validate --strictでは、生成まで含めて厳格に確認できます。(GitHub Pages)

ただし、これだけでは次の問題を発見できません。

  • GitHub Appが対象リポジトリにインストールされていない
  • 実際のブランチへ書き込む権限が不足している
  • ブランチ保護ルールによりPR作成が失敗する
  • 対象リポジトリのチェックアウト位置が正しくない
  • 再実行時に重複したPRやコメントを作成する
  • 大きな差分でAIの入力上限や予算に達する

stagedモードで出力内容を確認する

Safe Outputsには、GitHub上へ実際のリソースを作成せず、作成予定の内容をActionsのサマリーへ表示するstagedモードがあります。

safe-outputs:
  staged: true

  create-pull-request:
    target-repo: example-org/docs
    draft: true

公式ドキュメントでは、実際のイベントでワークフローを起動し、Actionsのサマリーに表示されるプレビューを確認しながら、プロンプトや設定を調整する流れが推奨されています。(GitHub Pages)

CLIからは、次のような事前確認も可能です。

# 実行内容を確認し、Actionsは起動しない
gh aw run pr-docs-check --dry-run

# 一時的な非公開リポジトリを利用した試験
gh aw trial .github/workflows/pr-docs-check.md

# trial自体の実行内容だけ確認
gh aw trial .github/workflows/pr-docs-check.md --dry-run

gh aw trialは、既定では一時的な非公開リポジトリを使ってワークフローを試験し、結果をtrials/へ保存します。(GitHub Pages)

stagedモードの後にシャドー環境で書き込みを試す

stagedモードで確認できるのは、「どの操作を実行しようとしたか」です。GitHub Appによる認証、Gitのpush、ブランチ保護、リポジトリ横断の書き込みまで正常に動くことは保証しません。

そのため、本番と同じ構成の検証用リポジトリを用意し、実際にドラフトPRを作成するシャドー評価を行います。

公式のSafe Rolloutでは、次の段階的な導入が示されています。

  1. レポート出力のみ
  2. stagedモード
  3. シャドー環境への実書き込み
  4. 本番環境への書き込み

特に、リポジトリ横断の権限や書き込み経路を確認する場合、stagedモードとシャドー評価は代替関係ではありません。シャドー評価で、実際の認証とGit操作を確認する必要があります。(GitHub Pages)

必ず試したいテストケース

テストケース期待する結果確認ポイント
ユーザー向け新機能ドラフトPRが作成される内容、対象ページ、レビュー担当
CI設定だけの変更PRを作成しない誤検知がないか
テストだけの変更PRを作成しない否定例が機能するか
PRにマイルストーンあり対応するリリースブランチを選ぶ文字列変換が正しいか
関連IssueだけにマイルストーンありIssue側からブランチを決めるIssue解析が正しいか
マイルストーンなしベースブランチまたはmainへ送るフォールバック順序
許可外リポジトリを指定書き込みが拒否されるallowed-reposの有効性
保護対象ファイルを変更PR作成を拒否またはIssueへ変換protected-filesの動作
同じイベントを再実行重複PRを作成しない冪等性、既存コメント処理
非常に大きな差分必要情報を要約して処理する入力サイズ、AI利用量
GitHub Appの秘密鍵がない明示的に失敗する意図しない権限へのフォールバックがないか
PR作成時に競合が発生Issueなどにフォールバックする処理が黙って消えないか

Aspireチームでは、大きな差分をそのままAIに渡すとプロンプトの予算を圧迫したため、関連Issue、マイルストーン、ベースブランチなどを事前処理で抽出し、小さな構造化データとして渡しています。大規模なモノレポでは、特に重要な対策です。(The GitHub Blog)

精度だけでなく運用指標も測定する

テストでは、文章の自然さだけを評価してはいけません。少なくとも次の指標を記録します。

指標判断できること
作成されたPRのマージ率ドキュメント要否判定の適合率
不要として閉じたPRの割合誤検知の多さ
手動で作成された未検出の文書更新見逃しの多さ
製品PRからドキュメントPR作成までの時間自動化による速度改善
ドキュメントPRのマージ時間レビュー工程を含む実効性
レビューでの修正量原稿品質と規約への適合度
1件の採用PR当たりのAI利用量費用対効果
権限エラーや再実行回数運用品質

gh aw auditを使うと、ワークフローのログ、MCPツールの利用状況、ネットワーク動作などを解析できます。複数の実行IDを渡せば、基準となる実行と変更後の実行を比較することも可能です。(GitHub Pages)

# 1回の実行を監査
gh aw audit <run-id>

# 変更前と変更後を比較
gh aw audit <baseline-run-id> <candidate-run-id>

# CIで扱えるJSONを出力
gh aw audit <run-id> --json

対応が必要かを判断する基準

今すぐの対応が不要なケース

次の条件に当てはまる場合、今回の情報だけを理由に既存環境を変更する必要はありません。

  • GitHub Agentic Workflowsを利用していない
  • 製品とドキュメントが同じリポジトリにある
  • 現在のドキュメント更新に大きな遅延がない
  • 通常のGitHub Actionsだけで要件を満たしている
  • AIにリポジトリへの書き込み権限を渡していない

ただし、将来的なPoCに備えて、製品Pull Requestとドキュメント更新の所要時間を計測しておくと、導入効果を比較しやすくなります。

PoCを優先したいケース

次の条件がある組織では、導入効果を得やすいと考えられます。

  • 製品コードとドキュメントが別リポジトリにある
  • リリースごとにドキュメントブランチが分かれている
  • ドキュメント担当者がPull Requestを後から読み直している
  • 機能を実装した担当者への聞き直しが頻発している
  • 公開APIやCLIの変更が多い
  • ドキュメント更新漏れを人手で点検している

最初のPoCでは、過去の20~50件程度のPull Requestを使い、「ドキュメントが必要か」という判定だけを実行すると、安全に精度を確認できます。その後、stagedモード、シャドー環境でのドラフトPR作成、本番でのドラフトPR作成へ進めます。

早めに設計を見直したいケース

次の実装がある場合は、今回の公式事例を参考に権限と書き込み経路を確認してください。

  • 組織全体へアクセスできるPATをAI処理で使用している
  • allowed-reposを設定していない
  • AIが任意の対象ブランチを決められる
  • AIが既定ブランチへ直接pushする
  • AIが作成したPull Requestを自動マージする
  • 依存関係ファイルやセキュリティ設定も変更できる
  • AIエージェントの実行環境に書き込み用シークレットを渡している
  • .lock.ymlを直接編集して運用している
  • gh-awを常に最新版へ自動更新し、差分を確認していない

導入時はAIより先に境界を設計する

今回の公式事例から得られる最大のポイントは、「高性能なモデルを選べばドキュメント自動化が成功する」ということではありません。

成功を支えているのは、次の境界設計です。

  • ブランチ選択は決定論的な処理で行う
  • AIは変更の理解と原稿作成に集中させる
  • 書き込みはSafe Outputsで分離する
  • GitHub Appの対象を必要なリポジトリだけに絞る
  • 出力はドラフトPull Requestに限定する
  • 保護対象ファイルを変更させない
  • 機能を理解しているエンジニアが最終確認する
  • stagedモードとシャドー環境を経て本番へ進める

まずは、製品リポジトリとドキュメントリポジトリの対応関係、リリースブランチの決定規則、ドキュメント対象となる変更、対象外となる変更を書き出してください。その上でgh-awのバージョンを固定し、限定されたGitHub Appと検証用リポジトリを用意して、書き込みを伴わない判定テストから始めるのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次