こんにちは!プロダクトデザインとフロントエンドの境界線を溶かすような、シームレスな開発フローを作るのが大好きな先輩エンジニアです。
今回は、Macの定番デザインツール「Sketch」と、チームのナレッジハブである「Notion」を連携させ、デザインアセットと仕様書を完全に同期させる「裏技」を伝授します。
「デザインはSketchにあるけれど、最新の仕様書はどこだっけ?」「Slackで『デザイン更新しました』って流れたけど、Notionのタスクに反映するのを忘れた……」
そんなチームの共通の悩み、今日で終わりにしましょう。これをマスターすれば、毎日の面倒な手作業が劇的に楽になり、デザインとドキュメントの乖離(かいり)が奇跡のように消えていきますよ。
—
1. なぜSketchとNotionを同期させるのか?(エンジニア的視点のメリット)
現代のプロダクト開発において最大の敵は、「情報のサイロ化(孤立)」です。
デザイナーはSketch(またはFigma)で画面を作り、プロダクトマネージャー(PdM)やエンジニアはNotionで仕様を管理する。この2つの世界が分断されていると、以下のような無駄なコストが発生します。
- デザインが変更されるたびに、Notionの仕様書にスクショを貼り直す手間。
- 「どのアイコンが最新のSVGだっけ?」とエンジニアがチャットを探す時間。
- 仕様と実装、そしてデザインの「三者三様ズレ」による手戻り。
これを解決するのが「自動化(同期)」です。
Sketch上のコンポーネントやドキュメント情報を、Webhookやサードパーティ製ツールを経由してNotionのデータベースへ自動的に流し込む。これにより、「Sketchが唯一無二の真実の源(Single Source of Truth:SSOT)であり、Notionがそのカタログ兼仕様書になる」という理想郷が完成します。
—
2. ツール選定と基本セットアップ
まずは、今回の魔法を起こすための道具を揃えましょう。初心者の方でも迷わないよう、ステップ・バイ・ステップで解説します。
準備するもの
1. Sketch: お使いのMacにインストールされていること。
2. Notion: ワークスペースの管理者権限、またはページ作成権限があること。
3. 連携ツール(今回はZapier、または軽量なWebhook + Node.jsスクリプトを使用): ノーコードでサクッとつなぐならZapierが一番手軽です。
Step 1: Notion側の受け皿(データベース)を作る
まずはNotion側に、Sketchのアセットや仕様を受け取るためのデータベースを作ります。
1. Notionで新しいページを開き、`/database` と入力して 「データベース – インライン」 を選択します。
2. プロパティ(列)を以下のように設定します。
- `Name` (タイトル): アセット名や画面名
- `Status` (セレクト): `Draft`, `Ready for Dev`, `In Progress`, `Done`
- `Preview` (ファイル&メディア): Sketchから書き出した画像のアップロード先
- `Last Updated` (最終更新日時): 自動記録用
Step 2: Notion Integration(連携トークン)の取得
Notion APIと外部を繋ぐための「鍵」を作ります。
1. [Notion Developers](https://www.developers.notion.com/) にアクセスし、マイインテグレーションから「新しいインテグレーション」を作成します。
2. ワークスペースを選択し、機能(コンテンツの読み取り・書き込み)を付与したら「シークレット(Internal Integration Secret)」をコピーします。(※この文字列は絶対に他人に教えないでください!)
3. 先ほど作ったNotionのデータベースに戻り、右上の「…」メニューから「接続の追加」で、今作ったインテグレーションを選択してアクセス権を与えます。
—
3. 実践!自動化フローの設定手順(HelloWorld的アプローチ)
ここでは、最も堅実かつ拡張性の高い「SketchからJSON/画像を書き出し、Node.jsの軽量スクリプト(またはZapier)経由でNotionにデータを飛ばす」基本のフローを解説します。
初心者の方には「コードを書くの?」と身構えてしまうかもしれませんが、コピペで動くシンプルなものですので安心してください。
動作確認のゴール (HelloWorld)
「Sketchで特定の名前をつけたアートボードを保存すると、そのプレビュー画像とタイトルが、自動的にNotionのデータベースにカードとして追加される」という現象を起こします。
手順A: Sketchプラグイン(またはExport機能)の活用
Sketchには強力なJavaScript APIや、クラウド連携機能があります。今回は一番シンプルな「ローカル書き出し + 監視スクリプト」の思想を学びましょう。
1. Sketchで適当なアートボードを作成し、名前を `[Sync] Login Screen` のように命名規則(`[Sync]`プレフィックス)をつけます。
2. このアートボードをPNGとしてローカルの特定フォルダ(例: `~/Desktop/SketchAssets/`)に書き出すように設定します。
手順B: 自動同期スクリプトの作成(Node.js)
お使いのPCのターミナルを開き、以下のコードを記述した `sync.js` を作成します。これが、あなたのデザインとNotionを繋ぐ架け橋になります。
/
- Sketch to Notion Sync Script (HelloWorld Edition)
- 概要: ローカルフォルダを監視し、新しいデザインが書き出されたら
- Notionのデータベースに自動でページを作成するスクリプトです。
/
const { Client } = require(‘@notionhq/client’);
const fs = require(‘fs’);
const path = require(‘path’);
// 1. Notionクライアントの初期化(先ほど取得したシークレットを設定)
const notion = new Client({ auth: ‘secret_your_notion_integration_token_here’ });
// 2. 連携先のNotionデータベースID
const DATABASE_ID = ‘your_notion_database_id_here’;
async function createNotionPage(assetName, filePath) {
try {
// Notionのデータベースに新しい行(ページ)を追加
const response = await notion.pages.create({
parent: { database_id: DATABASE_ID },
properties: {
Name: {
title: [
{
text: {
content: assetName,
},
},
],
},
Status: {
select: {
name: ‘Ready for Dev’, // デフォルトのステータス
},
},
‘Last Updated’: {
date: {
start: new Date().toISOString(),
},
},
},
});
console.log(‘✅ 成功!Notionにページが作成されました:’, response.id);
} catch (error) {
console.error(‘❌ エラーが発生しました:’, error.body || error);
}
}
// 実行テスト(HelloWorldとして、固定の文字列で関数を叩いてみる)
createNotionPage(‘Login Screen (v1.0)’, ‘./sample.png’);
【動かし方】
1. ターミナルで `@notionhq/client` をインストールします (`npm install @notionhq/client`)。
2. スクリプト内の `secret_…` と `database_id_…` をご自身の環境の値に書き換えます。
3. `node sync.js` を実行します。
Notionのデータベースを開いてみてください。「Login Screen (v1.0)」というカードがピコンと追加されていれば、無事にHelloWorld(連携の成功)達成です!
—
4. チームの運用コストを劇的に下げるプロの知見
さて、技術的な仕組みが分かったところで、これを「実際の開発現場」でどう運用するかという、最も重要なノウハウをお伝えします。
1. 命名規則(Naming Convention)をチームで厳格化する
すべてを同期させようとすると、Notion側がゴミ屋敷になります。「開発に回すステータスになったものだけ」を同期させるために、Sketch側でのレイヤー名やアートボード名にルールを設けましょう。
- `[Sync]` がついているものだけをスクリプトやZapierが拾うようにフィルターをかける。
- バージョン管理(`v1.1`など)を名前に含めることで、Notionの履歴がスッキリする。
2. デザインの「変更履歴」をNotionのコメント欄に集約する
Notionのページが作られたら、エンジニアはそのページに対して「ここの余白、実装だと8pxより16pxの方が綺麗に見えそうですがどうでしょう?」といった議論を吹き出し(コメント)で残せます。
Slackだと流れてしまうフィードバックが、デザインの成果物(Notion上のカード)と一対一で紐づくため、仕様変更のトラッキングが圧倒的に楽になります。
3. 「手動の安心感」を残すハイブリッド設計
すべてを完全自動化しようとしてエラーで止まると、チームの信頼を損ねます。最初は「Sketchのアセット書き出し ➡️ Notionへのドラフト作成(ステータスはDraft)」までを自動化し、最終的に「Ready for Dev」に変えるのは人間の手で行う、という「半自動(Human-in-the-loop)」から始めるのが、実務で最も破綻しないコツです。
—
おわりに:デザインとコードの境界線をなくす旅へ
いかがだったでしょうか?
「Sketch」という最高のアートボード環境と、「Notion」という最強のナレッジベースをAPIやスクリプトで結びつけるだけで、チームのコミュニケーションコストは驚くほど激減します。
「ツールの使い方を覚える」段階から、「ツール同士を組み合わせて自分たちのワークスペースをハックする」段階へ進むと、エンジニアリングもデザインも、何倍も楽しく、クリエイティブになりますよ。
これをマスターすれば、毎日の作業が劇的に楽になりますよ。ぜひ、今日の午後から試してみてくださいね!