【入門編】NotionとGitHubの双方向連携:issueやPull Requestをデータベースでリアルタイム管理する高度なワークフロー – プロジェクト・ナレッジ管理活用バイブル

こんにちは!開発現場の「情報のサイロ化」や「ツール間の行ったり来たり」に、密かにストレスを感じていませんか?

「仕様書はNotonにあるのに、実装の進捗はGitHubのIssueを見ないと分からない」
「PR(プルリクエスト)のレビュー依頼がチャットで流れてしまい、タスクの文脈が消えていく……」

これを解決するのが、NotionとGitHubの双方向連携です。
今回は、NotionのデータベースとGitHubのIssue / Pull Requestを完全に同期させ、あなたのワークスペースを「開発の唯一の真実の源(Single Source of Truth)」に仕立て上げる高度な連携術を、優しく論理的に解説していきます。

これをマスターすれば、毎日の面倒なステータス更新作業から解放され、開発チームのベロシティが劇的に跳ね上がりますよ。さあ、一緒に扉を開けましょう!

—

1. ツールの役割:なぜNotionとGitHubを繋ぐのか?

まずは、それぞれのツールが持つ「本来の強み」を正しく理解することから始めましょう。

  • GitHubの役割:コードと変更履歴の「真実の源」
  • コードのバージョン管理、CI/CD、コードレビュー、そして実装単位のタスクである「Issue」。エンジニアにとっては息をするように触る場所です。
  • Notionの役割:文脈とナレッジの「真実の源」
  • プロダクトのロードマップ、要件定義、デザインカンプ、そしてチーム全体のタスク管理。非エンジニアも含めた全員が共通言語を持てる場所です。

この2つを「手動」で同期させようとすると、人間は必ず疲弊します。だからこそ、GitHub ActionsとNotion APIの力を借りて、完全に自動化するのです。

—

2. 基礎セットアップ:NotionデータベースとAPIの準備

まずは、GitHubからデータを迎え入れるための「器(Notionデータベース)」と「鍵(APIトークン)」を用意します。一歩ずつ進めましょう。

Step A: Notionデータベースの作成

Notion上で新規ページを作り、インラインの「データベース(テーブルビュー)」を作成してください。プロパティは以下のように設定します。

| プロパティ名 | 型 (Type) | 用途 |
| :— | :— | :— |
| `Task Name` | タイトル (Title) | Issueやタスクのタイトル |
| `Status` | ステータス (Status) | `Not started` / `In progress` / `Done` |
| `GitHub Issue` | URL | 連携するGitHub Issueのリンク |
| `PR Number` | 数値 (Number) | 紐付くPull Requestの番号 |

Step B: Notionインテグレーションの作成と連携

1. [Notion Developers](https://www.developers.notion.com/) にアクセスし、内部インテグレーション(Internal Integration)を新規作成します。
2. 権限として「コンテンツの読み取り」「コンテンツの更新」「コンテンツの挿入」にチェックを入れます。
3. 発行された `Secret(インテグレーションシークレット)` をコピーしておきます。
4. 先ほど作成したNotionデータベースの右上「…」メニューから「接続する(Add connections)」を開き、今作ったインテグレーションを追加します(これを行わないとAPIからアクセスできません)。
5. データベースのURLから、データベースID(`notion.so/myname/` の後の 32文字の英数字)を控えておきます。

—

3. 実践!GitHub ActionsでIssueをNotionに自動同期する

ここからが本番です。GitHubでIssueが作成・更新されたら、自動的にNotionのデータベースに反映される仕組みを構築します。

GitHubリポジトリの `.github/workflows/sync-to-notion.yml` に、以下の設定ファイルを配置してください。

GitHub Actions設定ファイル (`.github/workflows/sync-to-notion.yml`)

name: Sync GitHub Issue to Notion

GitHub側でIssueに何かしらのアクションがあったときに発火します
on:
issues:
types: [opened, edited, closed, reopened]

jobs:
notion-sync:
runs-on: ubuntu-latest
steps:

  • name: Checkout repository

uses: actions/checkout@v4

# 公式のNotion APIを叩くためのNode.jsスクリプトを実行します

  • name: Setup Node.js

uses: actions/setup-node@v4
with:
node-version: ’20’

  • name: Install Notion client

run: npm install @notionhq/client

  • name: Run synchronization script

uses: actions/github-script@v7
with:
script: |
const { Client } = require(‘@notionhq/client’);

// GitHub ActionsのSecretsからクレデンシャルを安全に取得
const notion = new Client({ auth: process.env.NOTION_API_KEY });
const databaseId = process.env.NOTION_DATABASE_ID;

const issue = context.payload.issue;

// ステータスのマッピング(GitHub -> Notion)
let notionStatus = ‘Not started’;
if (issue.state === ‘closed’) {
notionStatus = ‘Done’;
} else if (context.payload.action === ‘edited’) {
notionStatus = ‘In progress’;
}

console.log(`Syncing Issue #${issue.number}: ${issue.title}`);

// Notionデータベースにページを作成または更新する処理
// ここでは簡易的に新規作成のロジックを記載しています
await notion.pages.create({
parent: { database_id: databaseId },
properties: {
‘Task Name’: {
title: [
{
text: {
content: `#${issue.number} ${issue.title}`,
},
},
],
},
‘Status’: {
status: {
name: notionStatus,
},
},
‘GitHub Issue’: {
url: issue.html_url,
},
},
});
env:
NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
NOTION_DATABASE_ID: ${{ secrets.NOTION_DATABASE_ID }}

> 先輩からのアドバイス💡
> GitHubリポジトリの `Settings > Secrets and variables > Actions` から、`NOTION_API_KEY` と `NOTION_DATABASE_ID` を必ず登録しておいてくださいね。これがないと認証エラーになってしまいます。

—

4. 精度高いHelloWorld的な動作確認

仕組みができたら、正しく動くかテスト(HelloWorld)をしてみましょう。これがうまくいくと、思わず机の上でガッツポーズしたくなりますよ。

1. GitHubでテストIssueを作成する

  • あなたのGitHubリポジトリの「Issues」タブを開き、「New Issue」をクリック。
  • タイトルに `Notion連携のテストタスク` と入力し、作成(Submit new issue)します。

2. GitHub Actionsの実行ログを確認する

  • リポジトリの「Actions」タブを開き、先ほどのワークフローが走っている(黄色の丸 -> 緑のチェックマークになる)ことを確認します。

3. Notionを確認する

  • あなたのNotionデータベースを開いてみてください。
  • ジャジャン!見事に `#1 Notion連携のテストタスク` という行が自動追加されているはずです。

これで、GitHubの変更がリアルタイムでNotionに集約される基盤が整いました。

—

5. さらに高みへ:NotionからPRを紐付ける極意

ここまでの連携ができたら、次は「Notion上のタスクからブランチを生み出し、PRに繋げる」という逆方向のフローを意識してみましょう。

  • Notionのデータベースに、公式の GitHub連携プロパティ(GitHub integration property) を追加します。
  • Notionのタスク画面から直接「Link GitHub pull request」を選択し、該当のPRを紐付けることができるようになります。
  • これにより、「このドキュメント(要件)は、どのコードのどのPRで実装されたのか」が完全にトレーダブル(追跡可能)になり、将来のバグ調査や仕様変更のときに、タイムマシンに乗ったかのように素早く原因にたどり着けるようになります。

—

おわりに

今回は、NotionとGitHubを連携させて開発進捗を自動化するレシピをご紹介しました。
ツールの間を行ったり来たりする無駄なコンテキストスイッチを減らし、エンジニアが「コードを書くこと」と「本質的な設計を考えること」に集中できる環境を作る――これこそが、アジャイルなチームの最大の武器になります。

「これをマスターすれば、毎日の作業が劇的に楽になりますよ」。
ぜひ今日の開発環境に取り入れて、チームのベロシティを加速させてみてください。それでは、次の知見でお会いしましょう!

タイトルとURLをコピーしました