LESSON 30分

ストーリー

田中VPoE
技術標準を策定する前に、まず「今、何がどこで使われているか」を正確に把握する必要がある。棚卸しだ
あなた
各チームにヒアリングすればいいんですか?
田中VPoE
ヒアリングは重要だが、それだけでは不十分だ。人は自分が使っている技術を正確に把握していないことが多い。依存ライブラリの数、使われなくなったサービス、シャドーITで使われている技術…体系的なアプローチが必要だ
あなた
どういう方法で棚卸しを進めるんですか?
田中VPoE
3つのアプローチを組み合わせる。自動収集、ヒアリング、そしてコードベースの分析だ

技術スタック棚卸しの全体像

3つのアプローチ

アプローチ概要精度カバレッジ
自動収集リポジトリ・インフラから技術情報を自動抽出高い高い
ヒアリングチームリーダーへのインタビューとアンケート中程度中程度
コードベース分析ソースコード・設定ファイルの直接分析非常に高い非常に高い
棚卸しプロセス:

Phase 1: 自動収集(1-2日)
  ├── リポジトリ一覧の取得
  ├── package.json / go.mod / requirements.txt の解析
  ├── Dockerfileの解析
  └── インフラ構成の確認(Terraform / CloudFormation)

Phase 2: ヒアリング(3-5日)
  ├── チームリーダーへの技術スタックヒアリング
  ├── 技術選定の理由と経緯
  ├── 現在の課題・不満
  └── 今後の技術的展望

Phase 3: コードベース分析(2-3日)
  ├── 依存ライブラリの詳細分析
  ├── バージョン情報の確認
  ├── セキュリティ脆弱性のスキャン
  └── 非推奨APIの使用状況

Phase 1: 自動収集

リポジトリスキャン

組織が管理するリポジトリをスキャンし、技術情報を自動収集します。

収集対象情報ソース抽出できる情報
言語GitHub Linguist / ファイル拡張子使用言語と割合
フレームワークpackage.json, go.mod 等フレームワークとバージョン
データベースdocker-compose, Terraform使用DB種別とバージョン
クラウドサービスTerraform, CloudFormation利用AWSサービス一覧
CI/CD.github/workflows, Jenkinsfileパイプライン構成
監視ツール設定ファイル、依存関係Datadog, Prometheus 等

インフラ情報の収集

収集すべきインフラ情報:

コンピュート:
├── EC2 / ECS / EKS / Lambda
├── インスタンスタイプ・サイズ
└── オートスケーリング設定

データストア:
├── RDS(エンジン種別・バージョン)
├── DynamoDB テーブル
├── ElastiCache(Redis / Memcached)
├── S3 バケット
└── Elasticsearch / OpenSearch

ネットワーク:
├── VPC構成
├── CDN(CloudFront等)
└── API Gateway

メッセージング:
├── SQS / SNS
├── Kafka / MSK
└── EventBridge

Phase 2: ヒアリング

ヒアリングシートの設計

チームリーダーに対して以下の項目をヒアリングします。

カテゴリ質問項目目的
技術選定の経緯なぜこの技術を選んだか?意思決定プロセスの把握
満足度現在の技術スタックに満足しているか(1-5)?変更の必要性の評価
課題技術的に困っていることは何か?ペインポイントの特定
依存関係他チームの技術に依存しているか?相互依存性の把握
人材この技術を扱えるメンバーは何人か?バス係数の評価
将来展望技術を変更したい意向はあるか?移行計画への入力

ヒアリング時の注意点

注意点理由
批判的にならない「なぜそんな技術を使っているのか」という姿勢は反発を招く
経緯を尊重する当時の判断には当時の合理性があったことを認識する
本音を引き出す「本当はこう変えたい」という声を拾う
定量的に記録する「困っている」ではなく「月に何時間の工数がかかっているか」

Phase 3: コードベース分析

依存関係の深堀り

依存関係分析で確認すべきポイント:

バージョン鮮度:
├── 最新バージョンとの乖離
├── サポート切れのバージョンの使用
└── セキュリティパッチの適用状況

依存の深さ:
├── 直接依存の数
├── 間接(transitive)依存の数
└── 重複依存の有無

ライセンス:
├── OSSライセンスの種別
├── 商用利用制限の有無
└── コピーレフト型ライセンスの検出

メンテナンス状態:
├── 最終コミット日
├── メンテナ数
├── Issue / PR の対応状況
└── 後継ライブラリの有無

技術スタック分類テンプレート

棚卸しの結果を整理するためのテンプレートです。

カテゴリ技術名バージョン使用チーム数状態バス係数備考
言語TypeScript5.x8Activeフロントエンド全チーム
言語Go1.223ActiveAPIサービス
言語Python3.112Activeデータパイプラインのみ
言語Java111Legacyレガシーサービス1つ
FWReact18.x6Active
FWVue.js2.x2Deprecated移行計画なし
DBPostgreSQL157ActiveメインDB
DBMongoDB6.x2Active特定サービスのみ
DBMySQL5.71LegacyEOL間近

状態の定義

状態定義対応
Active積極的に使用中。新規採用も可維持・強化
Stable使用中だが新規採用は推奨しない現状維持
Deprecated非推奨。段階的に移行を計画移行計画策定
Legacyレガシー。早期の移行が望ましい移行実行
Experimental実験的に導入。評価中評価継続

棚卸し結果の可視化

技術スタックマップ

棚卸し結果を一覧表だけでなく、アーキテクチャの観点から可視化します。

技術スタックマップ(例):

┌─────────────── クライアント ───────────────┐
│ Web: React + TypeScript                    │
│ Mobile: React Native                       │
│ Admin: Vue.js(Deprecated)                │
└────────────────────────────────────────────┘
        ↕ API Gateway(Kong)
┌─────────────── バックエンド ───────────────┐
│ User Service:     Go + gRPC               │
│ Product Service:  Go + gRPC               │
│ Order Service:    TypeScript + REST        │
│ Legacy Service:   Java + REST             │
│ Data Pipeline:    Python + Airflow        │
└────────────────────────────────────────────┘

┌─────────────── データストア ───────────────┐
│ Primary DB:    PostgreSQL 15              │
│ Search:        OpenSearch 2.x            │
│ Cache:         Redis 7.x                 │
│ Queue:         Amazon SQS                │
│ Object Store:  Amazon S3                 │
└────────────────────────────────────────────┘

┌─────────────── インフラ ──────────────────┐
│ Container:     ECS on Fargate            │
│ CI/CD:         GitHub Actions            │
│ IaC:           Terraform                 │
│ Monitoring:    Datadog                   │
│ Logging:       CloudWatch Logs           │
└────────────────────────────────────────────┘

棚卸し結果からの洞察

分析の観点

観点確認すべきことリスク指標
集中度特定技術に過度に依存していないか1つの技術に依存チーム80%以上
分散度同じ用途に技術が乱立していないか同一レイヤーに3種類以上
鮮度EOL/サポート切れの技術がないかサポート終了まで6ヶ月以内
バス係数特定の人しか扱えない技術がないかバス係数1の技術が存在
セキュリティ既知の脆弱性を持つバージョンがないかCVSSスコア7以上の脆弱性

「棚卸しの結果は組織の技術的な健康診断書だ。数字で語れなければ改善もできない」 — 田中VPoE


まとめ

ポイント内容
3つのアプローチ自動収集、ヒアリング、コードベース分析を組み合わせる
自動収集リポジトリ・インフラからの技術情報の自動抽出
ヒアリング選定経緯、満足度、課題、人材状況を定量的に把握
コードベース分析依存関係、バージョン鮮度、ライセンス、メンテナンス状態
可視化技術スタックマップで全体像を一目で把握できるようにする

チェックリスト

  • 棚卸しの3つのアプローチを理解した
  • 自動収集で取得すべき情報を理解した
  • ヒアリングシートの設計ポイントを理解した
  • 技術の状態分類(Active/Stable/Deprecated/Legacy/Experimental)を理解した
  • 分析の観点(集中度、分散度、鮮度、バス係数、セキュリティ)を理解した

次のステップへ

次は「テクノロジーレーダーの構築」を学びます。棚卸し結果を元に、組織の技術戦略を可視化するテクノロジーレーダーを構築する方法を身につけましょう。


推定読了時間: 30分