📑

今更ながらNotionをチーム開発に導入してみた

に公開

はじめに

タイトルの通り、本当に今更ながら小規模のチーム開発にNotionを導入してみました。

開発がスタートし始めた段階だったため、議事録、仕様メモ、タスク、ナレッジなどを置く場所としてNotionを使うことにしました。

いまやNotionは、チーム運用や社内Wikiでの利用として珍しいものではありません。
ただ、私個人としては、開発でNotionを使った経験はなく、これまでは個人的なメモ書き程度の利用にとどまっていました。

そのため、チーム開発でどう使うか、権限をどうするか、データベースをどう設計するかなどは、1から調べながら進めました。

この記事では、小規模チーム開発でNotionを導入するにあたって、実際に作ったもの、設定したこと、試した連携について書きます。

ワークスペースのメンバーとゲストの違いと料金体系

最初に確認したのが、ワークスペースの「メンバー」と「ゲスト」の違いでした。

ざっくり言うと、メンバーはワークスペースに所属する利用者で、ゲストは特定のページに招待される利用者です。

無料プランでワークスペースに複数人のメンバーを追加すると、ブロック数に制限がかかります。
執筆時点の5月25日では、フリープランの1人ワークスペースではブロックを無制限に使えますが、複数人のワークスペースでは1,000ブロックの制限があるようでした。

https://www.notion.com/ja/help/understanding-block-usage

今回は無料で利用する想定だったため、開発メンバー全員をワークスペースのメンバーとして追加する運用は避けました。

調査した結果、ワークスペースの管理者にあたる1人だけをメンバーにし、残りの開発メンバーはゲストとして招待する構成にしました。
フリープランでもゲストを10人まで招待できるようだったため、小規模チームではこの形で十分でした。

https://www.notion.com/ja/pricing

具体的には、ワークスペースの管理者を1人だけ置き、開発メンバーはゲストとして招待します。
そのうえで、チーム用のトップページを作成し、その配下に用語集、バックログ、仕様メモなどを配置しました。
ゲストには、必要なページ単位で権限を付与しています。

ページの作成、編集、閲覧を中心に使う範囲では、この構成で運用を開始できました。
ただし、後述する外部サービスとの連携では、ゲスト権限のままだと操作できない場面がありました。

料金や制限は変わる可能性があるため、実際に導入する場合はNotion公式の最新情報を確認してください。

とりあえず社内ナレッジを貯める

まず、社内ナレッジを置く場所を作りました。

最初に用意したのは用語集です。
Notionのデータベースで作成し、用語名、説明、所属、カテゴリ、ステータス、備考を持たせました。
用語は社員の方に協力してもらいながらGoogleフォーム+スプレッドシートで収集し、Notionのデータベースに登録していきました。

用語集
用語集のデータベース構成。記入してもらった社員の所属も記載することで、同じ用語でも所属によって微妙にニュアンスが異なることが分かるなど、面白い発見も。

収集したデータをCSVでエクスポート、それをそのままNotionへインポートできます。
また、用語の追加があればデータベースから直接ページ作成して書いちゃいます。
こういった構造化できるナレッジであればデータベースでサクサクっと書けますね。


次に、業務フローなどの業務知識を書くページを作りました。
このページには、調査メモ、会議メモ、業務フロー、既存運用のメモ、画面や機能のメモ、確認が必要な事項などを書いています。

文章はMarkdownに近い形で記述しました。
NotionではMermaidも使えるため、フロー図やER図のたたき台もページ内に置いています。

画像やdraw.ioで作った図も、Notionページに埋め込めます。
draw.ioの図については、Chrome拡張機能を使い、Notion上で直接編集できる形にしました。

https://chromewebstore.google.com/detail/drawio-for-notion/plhaalebpkihaccllnkdaokdoeaokmle?hl=ja


さらに、仕様書や設計書にあたるページも作成しました。

開発がスタートし始めた段階だったため、正式な仕様書や設計書というよりは、仕様案、設計メモ、検討メモを中心にしています。

機能ごとの仕様案、画面項目案、テーブル設計案、ER図、未確認事項、後で決めることなどをNotionに書いていきました。

また会議中に出た内容や、まだ仕様として固まっていない内容、とりあえずのメモ書きなどは、ブレスト用のメモとしてNotionのデータベースに残しています。
こうしておくことで、後から振り返って仕様検討やルール決めに使えるようにしました。

Notionのメモ書きのし易さは、書き残すということの心理的ハードルを大幅に下げてくれるので、こういう運用に最適だと思いました。

バックログを作ってみる

次に、進捗・タスクの見える化の一環としてバックログを作りました。

スクラム開発をきっちり回しているわけではないので、厳密な意味でのプロダクトバックログというよりは、タスク一覧に近い形です。

バックログはNotionのデータベースで作成しました。
タイトル、ステータス、担当者、優先度、カテゴリ、関連するGitHub Issue、メモなどを持たせています。

ビューは、テーブルビューとボードビューを作成しました。
テーブルビューではタスク一覧として確認できるようにし、ボードビューではステータスごとにタスクを並べて、カンバンに近い形で見られるようにしています。

用途に応じてビューを変更できるのは便利ですね。
より厳密にスクラムに合わせたバックログ管理の方法もありそうですが、小規模チーム+開発走りたてであればこれで十分に思えます。

ChatGPTと連携してみる

Notionに情報が溜まってきたので、ChatGPTにその内容を参照させる方法を調べました。

最初はMCP連携のような形を試しましたが、ゲストユーザーではNotion MCPを利用できませんでした。


調べた結果、GPTsのActionsを利用すれば、Notion APIを介してNotionの情報を取得できることが分かりました。
(その代わりこのGPTsでProモデルを選択できないのが玉に瑕・・・)

Actionsの内容についてもChatGPT自身に書かせ、細かい部分を修正しながら実装しました。

ソースコードについては長くなりすぎるので割愛させていただきます。

短時間で連続してリクエストを送るとリクエスト制限に引っかかるため、GPTsのプロンプトには、リクエスト間隔を空けるよう指示しています。

この連携により、以下の操作ができるようになりました。

  • Notionページの検索
  • Notionページ本文の取得
  • データベース情報の取得
  • データベース内の検索
  • 関連ページの読み込み

APIトークンやデータベースIDなどは、外部に出さないように管理しています。

GitHubと連携してみる

実装タスクはGitHub Issueに置き、仕様や背景はNotionに置く形にしました。

そのため、GitHub Actionsを使って、IssueとNotionのバックログを連携する仕組みを作りました。

GitHub Issueが作成・更新されたら、Notion側のバックログにもタスクチケットを作る形です。

連携では、Issue作成時にNotion側へページを作成し、Issue更新時やコメント追加時にはNotion側のページ本文へその内容を追加します。

また、Notion側から関連Issueをたどって参照できるようにしました。

この連携も、ChatGPT連携と同じくNotion APIを介して実装しています。

Notion・GitHub・ChatGPTをつなげてみる

Notion、GitHub、ChatGPTをそれぞれ連携させました。

Notionには仕様や背景を書き、GitHubにはIssueや実装を置きます。
そのうえで、ChatGPTからそれぞれを参照できるようにしました。

この構成により、Notionの仕様メモをもとに画面モックのたたき台を作成したり、GitHub上の実装内容を確認してレビュー補助に使ったりできるようになりました。
また回答の精度を高めるために、Notionのエクスポート機能で全ページデータをそのままエクスポートし
それをそのままChatGPTに食わせ仕様や現実装の構成、思想などを指示することで、システム仕様などをある程度把握したうえで回答してくれるようになります。
もちろんChatGPTから出てきた内容をそのまま利用するには精度などの問題がありますが、補助や確認に使う分には申し分ないレベルです。

おわりに

小規模チームですとNotionの簡単に書ける・データベースを扱えるという点がかなり使いやすさに直結する気がしました。
他にもいろいろ機能がありますが、必要最低限の機能でとりあえず始められるのが良い点ですね。

また最近はNotionのAIミーティング機能を試したところ、かなり便利でしたので
現在はAIミーティング機能を利用するため、ワークスペースのメンバー課金も行っています。
このAIミーティング機能で書き起こされた内容もChatGPTから読み込めるので
ミーティング→実装確認・仕様検討→チケット起こし・モック作成の流れまでChatGPTにある程度任せられるのがとても良いですね。

Discussion