ストーリー
ThoughtWorks Technology Radarとは
Technology Radarは、技術やツールを4つのリングに分類して可視化するフレームワークです。
// Technology Radarの構造
enum Ring {
ADOPT = "Adopt", // 積極的に採用すべき
TRIAL = "Trial", // プロジェクトで試すべき
ASSESS = "Assess", // 調査・評価すべき
HOLD = "Hold", // 新規採用を控えるべき
}
enum Quadrant {
TECHNIQUES = "Techniques", // 技法・プラクティス
TOOLS = "Tools", // ツール
PLATFORMS = "Platforms", // プラットフォーム
LANGUAGES_FRAMEWORKS = "Languages & Frameworks", // 言語・フレームワーク
}
interface RadarItem {
name: string;
ring: Ring;
quadrant: Quadrant;
description: string;
movedFrom?: Ring; // 前回からの移動
isNew: boolean;
}
4つのリングの判断基準
## Adopt(採用)
- 業界で広く使われ、十分に成熟している
- チーム内に経験者が複数いる
- 本番環境で実績がある
- 例: TypeScript, React, PostgreSQL, Docker
## Trial(試用)
- 有望だが、本番環境での実績が限定的
- PoCで良い結果が出ている
- 次のプロジェクトで積極的に試したい
- 例: Bun, Deno, tRPC, Turborepo
## Assess(評価)
- 興味深いが、まだ十分に理解していない
- 技術ブログや勉強会で情報収集中
- PoCの実施を検討する段階
- 例: HTMX, Tauri, Effect-TS
## Hold(保留)
- 新規プロジェクトでの採用を控える
- 既存プロジェクトではメンテナンスのみ
- より良い代替手段がある
- 例: jQuery(新規), Moment.js, Enzyme
自チームのTechnology Radarを作る
// チーム固有のRadar作成
interface TeamRadar {
teamName: string;
updatedAt: string;
items: RadarItem[];
decisionLog: RadarDecision[];
}
interface RadarDecision {
item: string;
previousRing: Ring;
newRing: Ring;
reason: string;
decidedBy: string;
date: string;
}
const teamRadar: TeamRadar = {
teamName: "プロダクト開発チーム",
updatedAt: "2025-Q1",
items: [
// Adopt
{
name: "TypeScript",
ring: Ring.ADOPT,
quadrant: Quadrant.LANGUAGES_FRAMEWORKS,
description: "全プロジェクトで標準採用。型安全性による品質向上を実証済み",
isNew: false,
},
{
name: "Next.js",
ring: Ring.ADOPT,
quadrant: Quadrant.LANGUAGES_FRAMEWORKS,
description: "React製アプリの標準フレームワーク。SSR/SSG対応",
isNew: false,
},
{
name: "GitHub Actions",
ring: Ring.ADOPT,
quadrant: Quadrant.PLATFORMS,
description: "CI/CDの標準。全リポジトリで使用",
isNew: false,
},
// Trial
{
name: "Biome",
ring: Ring.TRIAL,
quadrant: Quadrant.TOOLS,
description: "ESLint + Prettier の代替。高速な lint/format",
movedFrom: Ring.ASSESS,
isNew: false,
},
{
name: "Hono",
ring: Ring.TRIAL,
quadrant: Quadrant.LANGUAGES_FRAMEWORKS,
description: "軽量WebフレームワークEdge Workers との相性良好",
isNew: true,
},
// Assess
{
name: "Effect-TS",
ring: Ring.ASSESS,
quadrant: Quadrant.LANGUAGES_FRAMEWORKS,
description: "型安全なエラーハンドリング。学習コストが課題",
isNew: true,
},
// Hold
{
name: "Moment.js",
ring: Ring.HOLD,
quadrant: Quadrant.LANGUAGES_FRAMEWORKS,
description: "新規採用禁止。date-fns に移行",
isNew: false,
},
],
decisionLog: [
{
item: "Biome",
previousRing: Ring.ASSESS,
newRing: Ring.TRIAL,
reason: "PoCで lint 速度が10倍向上。副プロジェクトで検証開始",
decidedBy: "テクニカルリード",
date: "2025-01-15",
},
],
};
Radarの運用プロセス
| フェーズ | 内容 | 頻度 |
|---|---|---|
| 収集 | チームメンバーから技術提案を収集 | 常時 |
| 議論 | 月次のTech Radar会議で議論 | 月1回 |
| 更新 | リングの移動を決定、理由を記録 | 四半期に1回 |
| 共有 | 全社に公開、他チームと情報交換 | 更新時 |
## Tech Radar会議のアジェンダ(月次/60分)
1. **新規提案の紹介(15分)**
- 提案者が技術を3分で紹介
- チームからの質問
2. **既存項目の見直し(20分)**
- Trial → Adopt に昇格する候補はあるか
- 新たに Hold に移すべきものはあるか
3. **PoC計画(15分)**
- Assess → Trial に移すためのPoC計画を議論
4. **アクションアイテム(10分)**
- 次回までの調査担当を決める
技術トレンドの情報源
| 情報源 | 特徴 | 頻度 |
|---|---|---|
| ThoughtWorks Technology Radar | 業界標準のRadar | 半年ごと |
| State of JS / CSS / HTML | 開発者アンケート | 年次 |
| GitHub Octoverse | GitHubの利用統計 | 年次 |
| Stack Overflow Survey | 開発者トレンド調査 | 年次 |
| InfoQ Trends Report | 技術トレンドの分析 | 四半期 |
| Hacker News / Reddit | コミュニティの反応 | 日次 |
| カンファレンス | 最新の実践事例 | 随時 |
まとめ
| ポイント | 内容 |
|---|---|
| Technology Radar | 技術を4リング × 4象限で分類する手法 |
| 4つのリング | Adopt → Trial → Assess → Hold |
| チーム独自のRadar | 自チームの文脈で技術を評価・分類 |
| 運用 | 月次議論、四半期更新、決定理由の記録 |
チェックリスト
- Technology Radarの4つのリングを説明できる
- 自チームのRadarの作り方を理解した
- Radar運用のプロセスを把握した
- 技術トレンドの情報源を確認した
次のステップへ
次は「ベンダーロックインの回避」を学びます。技術選定で見落としがちな長期的リスクについて理解を深めましょう。
推定読了時間: 30分