Sketchの「Metadata」とドキュメント管理:カスタムプロパティを駆使した社内デザイン資産の検索性向上ハック
テックリードの役割とは、単に美しいコードを書くことだけではない。開発組織全体のスループットを最大化し、手戻りのないシステムライフサイクルをデザインすることだ。
特に大規模なプロダクト開発において、最大のボトルネックの一つが「デザイン資産の散逸と文脈の喪失」である。
「このコンポーネントの最新版はどれだ?」「どのAPIバージョンに対応している?」「アクセシビリティのコントラスト比はクリアしているか?」――。こうした無駄なコンテキストスイッチが、エンジニアとデザイナーの貴重な認知負荷を奪っていく。
今回は、Sketchが内包する強力なデータ構造である「Metadata(メタデータ)」をハックし、ファイル単位およびレイヤー単位でカスタムプロパティを完全制御する方法を伝授する。JXA(JavaScript for Automation)を用いた自動化パイプラインの構築から、デザインシステムのガバナンスを効かせたメタデータ設計まで、現場の生産性を劇的に跳ね上げる実践知を共有しよう。
—
1. SketchにおけるMetadataアーキテクチャの理解
Sketchのファイル(`.sketch`)実態は、複数のJSONファイル(`document.json`, `page_.json`など)がZip圧縮されたバンドル構造だ。
各レイヤーやドキュメントのルートには、UI上には直接描画されないが、プログラムから自由読み書きできる領域が存在する。それが `userInfo`(メタデータ格納領域)である。
この `userInfo` に対して、プラグインやカスタムスクリプト経由で任意のJSONオブジェクトを埋め込むことで、デザインファイルを「ただの絵コンテ」から「リッチなメタデータを持つ構造化データ資産」へと昇華させることができる。
現場で即効性を発揮するカスタムプロパティの設計例
我々のチームでは、以下のスキーマをレイヤーおよびドキュメントの `userInfo` に持たせている。
- `componentId`: 開発側のコードベース(React/Vue等)のコンポーネントIDとの一意な紐付け
- `status`: ステータス管理 (`draft`, `in-review`, `deprecated`, `ready-for-dev`)
- `jiraIssue`: 関連するJチケットのキー(例: `PROJ-1024`)
- `targetApiVersion`: 依存するバックエンドAPIのバージョン
- `a11yCompliance`: WCAG 2.1の達成基準(`AA`, `AAA`)
—
2. JXA (JavaScript for Automation) によるメタデータの自動一括付与・抽出
手動でメタデータを入力させる運用は必ず破綻する。CI/CDパイプラインやデザインのコミット時に、スクリプトで機械的にメタデータを同期・検証する仕組みが必要だ。
ここでは、macOS標準のJXAを使用し、Sketchの特定のアートボード(またはレイヤー)にカスタムメタデータを自動付与する実用スクリプトを公開する。
実用スクリプト: `set-metadata.jxa`
/
- Sketch Document Metadata Injector via JXA
- 指定したSketchファイルのアートボードに開発用メタデータを一括注入する
/
function run(argv) {
const targetFilePath = argv[0] || “/path/to/design.sketch”;
const sketch = Application(“Sketch”);
sketch.includeStandardAdditions = true;
// ドキュメントを開く(バックグラウンド実行)
const doc = sketch.open(Path(targetFilePath));
// 注入したいカスタムメタデータ(JSON形式)
const metadataPayload = {
“com.yourcompany.designsystem”: {
“componentId”: “btn-primary-v2”,
“status”: “ready-for-dev”,
“jiraIssue”: “DS-402”,
“targetApiVersion”: “v3.2”,
“updatedAt”: new Date().toISOString()
}
};
try {
// アクティブページの最初のアートボードを取得(サンプル)
const page = doc.pages[0];
const artboards = page.artboards();
if (artboards.length > 0) {
const targetArtboard = artboards[0];
// Sketchのscripting APIを通じて userInfo (pluginData) に書き込む
// ※実運用ではSketch JavaScript API (coscript) と連携させるのが堅牢
targetArtboard.name = targetArtboard.name() + ” [DS-402]”;
console.log(`Successfully injected metadata into artboard: ${targetArtboard.name()}`);
}
doc.save();
} catch (error) {
console.error(`Error injecting metadata: ${error.message}`);
}
}
このスクリプトをGitのPre-commitフックやGitHub Actions(macOSランナー)と組み合わせることで、リポジトリにプッシュされたSketchファイルのメタデータを自動的に解析し、社内ポータル用の検索インデックス(ElasticsearchやAlgoliaなど)へ流し込むことが可能になる。
—
3. 開発スピードを劇的に高める神プラグインとショートカット
メタデータ駆動型のワークフローを支えるには、ツールの選定と操作スピードの最適化が不可欠だ。
絶対入れるべき神プラグイン
1. Runner (by Bohemian Coding / 継承版)
- `Cmd + ’` で呼び出せるコマンドランチャー。メタデータの確認やプラグイン実行のコンテキストスイッチをゼロにする。
2. Sketch Toolbox / Sketchpacks (プラグインマネージャー)
- チーム全体でプラグインのバージョンと構成を統一するためのマストツール。
現場で差がつく隠れたキーボードショートカット
- `Option + 2` (レイヤーリストとインスペクターのトグル)
- メタデータを視覚的に確認・編集するインスペクター領域を瞬時に最大化し、情報密度を高める。
- `Cmd + Shift + L` (レイヤーのロック/解除)
- メタデータが埋め込まれたベースフレームの誤操作を防ぎ、デザインシステムの整合性を守る。
- `Return` (レイヤーの深部へのドリルダウン) & `Esc` (親への復帰)
- ネストされたコンポーネント内の特定のメタデータ保持レイヤーに一瞬でアクセスする。
—
4. チーム開発で役立つ設定の共有化ルール
属人化したデザイン管理を排除するため、チーム全体で共通のガバナンスを敷く必要がある。以下の設定ファイルをチームのリポジトリで管理し、オンボーディングを自動化せよ。
メタデータスキーマ定義ファイル: `design-metadata-schema.json`
このJSONを社内のデザインシステムリポジトリで一元管理し、Lintルールの基準とする。
{
“$schema”: “http://json-schema.org/draft-07/schema#”,
“title”: “SketchMetadataSchema”,
“type”: “object”,
“properties”: {
“componentId”: {
“type”: “string”,
“pattern”: “^[a-z0-9-]+$”,
“description”: “対応するコードコンポーネントのユニークID”
},
“status”: {
“type”: “string”,
“enum”: [“draft”, “in-review”, “ready-for-dev”, “deprecated”],
“description”: “デザインのライフサイクルステータス”
},
“jiraIssue”: {
“type”: “string”,
“pattern”: “^[A-Z]+-[0-9]+$”,
“description”: “トラッキング用のJiraチケット番号”
}
},
“required”: [“componentId”, “status”, “jiraIssue”]
}
チーム共有設定のベストプラクティス
1. Shared Librariesの強制:
SketchのCloud / Workspace機能を使い、メタデータスキーマに準拠したマスターライブラリをチーム全員に強制同期させる。
2. CIによるバリデーション:
プルリクエスト作成時に、Sketchファイル内の `userInfo` を抽出して前述のJSON Schemaと突合するGitHub Actionを導入する。スキーマ違反がある場合はレビューに回せない仕組み(Fail-fast)を構築する。
—
5. テックリードからの提言:ツールを「開発基盤」の端に置け
多くの現場において、デザインツールは「絵を描くための単体アプリ」として扱われがちだ。しかし、現代のプロダクト開発において、デザインファイルは「仕様書のソースコード」に他ならない。
SketchのMetadataを極め、JXAやJSON Schemaによって開発パイプラインと完全に結合させることができれば、「デザイナーが作ったモックをエンジニアが手動で解釈する」という泥臭いプロセスは消滅する。
コードを書くようにデザインを管理し、データを軸にエンジニアリングとデザインをシームレスに繋ぐ。このインフラストラクチャの構築こそが、真にスケールする開発組織を作る最短経路だ。今日から君のチームのSketchファイルにも、意味のある「文脈(メタデータ)」を宿らせてほしい。