- 設計
技術選定の基準と進め方|比較表テンプレートと評価項目の重み付け
技術選定とは、作るものの要件に対して、言語・フレームワーク・データベースなどの候補を同じ物差しで比べ、理由を説明できる形で1つに決める作業です。 進め方は「先に足切り条件で落とす → 残った候補を重み付きの点数で比べる → 僅差なら撤退しやすい方を選ぶ」の3段階にすると、好みの議論に時間を取られず、決めた理由もあとから説明できます。
この記事では、評価項目20個と確認方法、空の比較表テンプレートと記入例、加重合計と感度分析(重みを変えたら順位が入れ替わるかの確認)のコードと実行結果、PoC(小さく作って確かめる検証)の合否基準までを、コピーして使える形でまとめます。
確認環境:Ubuntu 24.04、Python 3.11.15(計算例はすべてこの環境で実行、確認日 2026-10-05)。題材は架空の「社内の備品予約システム」です。
この記事の結論
| 段階 | やること | 決め方 |
|---|---|---|
| 1. 足切り | ライセンス・サポート期限・必須要件を満たさない候補を落とす | 1つでも満たさなければ対象外(点数を付けない) |
| 2. 点数 | 残った候補を、重み付きの評価項目で1〜5点で採点する | 加重合計の高い順に並べる |
| 3. 感度分析 | 重みを少し動かして、1位が入れ替わるかを見る | 入れ替わらなければ1位で決定 |
| 4. 僅差 | 入れ替わる、または点差が小さい | 撤退しやすい方(あとで別の技術へ移りやすい方)を選ぶ |
| 5. PoC | 点数では分からない項目だけを小さく作って確かめる | 事前に書いた合否基準で判定する |
技術選定の早見表
| 知りたいこと | 答え | 記事内の場所 |
|---|---|---|
| 最初に何をするか | 要件を「必須」と「できれば」に分け、必須を足切り条件にする | 進め方の5ステップ |
| 評価項目は何個か | 一覧は20個。1回の選定では足切り3〜5個+点数5〜8個に絞る | 評価項目一覧 |
| 重みの付け方 | 1〜5の整数。採点の前に決めて固定する | 重みの決め方 |
| 点数の付け方 | 1〜5点。各点数の意味を項目ごとに文章で決めておく | 点数の基準 |
| 僅差とは | 例:満点の5%以内の差、または感度分析で1位が入れ替わる | 僅差のときの決め方 |
| PoCをするか | 性能・連携・移行など「作らないと分からない必須項目」が残るときだけ | 比較表で決めるかPoCまで行うか |
| 何を残すか | 比較表・重みの理由・PoCの結果・選ばなかった理由 | 比較結果のまとめ方 |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「技術選定の基準と進め方|比較表テンプレートと評価項目の重み付け」
技術選定・製品選定・ベンダー選定の違い
言葉が似ているため、同じ比較表で済ませたくなりますが、比べる対象と重くなる評価項目が違います。
| 観点 | 技術選定 | 製品選定 | ベンダー選定 |
|---|---|---|---|
| 比べる対象 | 言語、フレームワーク、DB、ライブラリ、構成方式 | 完成したソフトウェアやサービス | 作業や提供を依頼する会社 |
| 主な決め手 | チームが作り続けられるか(習熟度・保守・情報量) | 機能の合致度と利用条件 | 体制・対応範囲・進め方 |
| 重くなる項目 | 習熟度、保守のしやすさ、撤退のしやすさ | 必須機能、費用、データの持ち出し | 体制、連絡の取りやすさ、契約条件 |
| 確かめ方 | 公式ドキュメント、小さな試作 | 試用版、機能一覧との突き合わせ | 提案書、質疑、面談 |
| 主な成果物 | 比較表、PoCの結果 | 機能適合表、費用の比較 | 提案の評価表 |
| 決めたあとの変更 | 作り直しを伴うため重い | 乗り換えにデータ移行が要る | 契約の節目で見直せる |
この記事は技術選定を扱います。製品やベンダーを比べるときも「足切り→点数→僅差の決め方」の流れは同じで、評価項目を入れ替えて使えます。
技術選定の進め方(5ステップ)
| ステップ | やること | 成果物 | 目安の時間(例) |
|---|---|---|---|
| 1. 要件を分ける | 要件を「必須」「できれば」に分ける。期限・人数・動かす環境も書く | 前提メモ | 半日 |
| 2. 候補を挙げる | 2〜4個に絞る。「今のまま」も候補に入れる | 候補一覧 | 半日 |
| 3. 足切り | 必須を満たさない候補を落とす | 足切り表 | 半日〜1日 |
| 4. 採点 | 重みを決めてから採点し、加重合計と感度分析を出す | 比較表 | 1〜2日 |
| 5. 確かめて決める | 必要ならPoC。僅差なら撤退しやすい方 | PoCの結果、結論 | 1〜10日 |
順番で大事なのは「重みを決めてから採点する」ことです。 採点したあとに重みを動かすと、望む結論に合わせて数字を作れてしまいます。重みは採点前に決めて、比較表に日付と一緒に書いておきます。
評価項目一覧(20項目と確認方法)
20項目すべてを使う必要はありません。足切りから3〜5個、点数から5〜8個を選びます。項目が多すぎると1項目あたりの重みが薄まり、差が見えなくなります。
足切り項目(満たさなければ対象外)
| No | 項目 | 見ること | 確認方法 |
|---|---|---|---|
| 1 | ライセンス | 利用形態(社内利用・配布・改変)に合うか | 公式リポジトリのライセンス文、依存ライブラリのライセンス一覧 |
| 2 | サポート期限 | 稼働予定の期間、修正が提供されるか | 公式のリリース方針・サポート期間のページ |
| 3 | 必須機能 | 必須要件を満たす手段があるか | 公式ドキュメントの該当ページを開いて確認 |
| 4 | 動作環境 | 決まっているOS・クラウド・DBの版で動くか | 公式の対応環境一覧 |
| 5 | 脆弱性への対応 | 修正の公開手順と窓口があるか | セキュリティ方針のページ、過去の修正の公開履歴 |
点数項目(1〜5点で採点)
| No | 項目 | 見ること | 確認方法 |
|---|---|---|---|
| 6 | 習熟度 | チームに書ける人が何人いるか | メンバーへの聞き取り(人数と年数) |
| 7 | 学習しやすさ | 初めての人が動かせるまでの時間 | 公式チュートリアルを1人が試した時間 |
| 8 | 開発速度 | 画面・APIを1つ作る手数 | 同じ小機能を各候補で作った時間 |
| 9 | 保守のしやすさ | 版を上げる手間、互換性の方針 | 移行ガイドと変更履歴の量 |
| 10 | 型・静的検査 | 実行前に見つかる誤りの範囲 | 型検査・リンターの有無と設定の手間 |
| 11 | テストのしやすさ | 自動テストの仕組みが標準か | 公式のテスト手順、実行時間 |
| 12 | 性能 | 目標の応答時間・同時利用数に届くか | 目標値を決めた負荷試験(PoC) |
| 13 | 拡張性 | 利用者やデータが増えたときの増やし方 | 構成の公式ガイド、PoC |
| 14 | 情報量 | 公式ドキュメント・日本語情報・書籍 | 公式ドキュメントの網羅度、質問サイトの件数 |
| 15 | エコシステム | 必要な周辺ライブラリがそろうか | 必要機能の一覧と対応ライブラリの有無 |
| 16 | 更新頻度 | 修正が継続して出ているか | 直近1年のリリース回数、未対応の不具合報告の数 |
| 17 | 運用のしやすさ | ログ・監視・デプロイの手順 | 既存の運用手順に載るかの確認 |
| 18 | 人の集めやすさ | 増員や引き継ぎがしやすいか | 社内の経験者数、求人の件数 |
| 19 | 費用 | 利用料・環境の費用・学習の費用 | 3年分の概算(初期+毎月) |
| 20 | 撤退のしやすさ | 別の技術へ移るときの作り直し範囲 | 独自記法・独自形式に依存する部分の洗い出し |
点数の基準(1〜5点の意味を先に決める)
点数は人によってぶれやすいので、項目ごとに「何なら何点か」を文章で決めてから採点します。
| 点数 | 習熟度の例 | 情報量の例 | 撤退のしやすさの例 |
|---|---|---|---|
| 5 | 半数以上が1年以上の経験 | 公式ドキュメントが網羅的で日本語情報も多い | 標準的な書き方のみで、移るときの書き直しが小さい |
| 4 | 2人以上が経験あり | 公式ドキュメントが網羅的 | 一部に独自の書き方があるが切り出せる |
| 3 | 1人が経験あり | 公式ドキュメントはあるが例が少ない | 画面かデータのどちらかは作り直し |
| 2 | 経験者はいないが近い技術の経験あり | 情報が英語中心で例が少ない | 画面もデータも作り直し |
| 1 | 経験者がいない | 情報がほとんど見つからない | データの取り出し手段が限られる |
重みの決め方
| 重み | 意味 | 付ける数の目安 |
|---|---|---|
| 5 | これが低いと期限・品質に直結する | 1〜2項目 |
| 4 | かなり重要 | 1〜2項目 |
| 3 | 標準 | 残りの大半 |
| 2 | あれば良い | 1〜2項目 |
| 1 | 参考程度(入れない方がよいことも多い) | 0〜1項目 |
全部を5にすると重みの意味がなくなります。「期限が短いなら習熟度を5」「長く使うなら保守のしやすさを5」のように、今回の前提から理由を1行書ける項目だけを4以上にします。
比較表テンプレート(空欄)
足切り表
| No | 足切り条件 | 候補A | 候補B | 候補C | 確認した資料・日付 |
|---|---|---|---|---|---|
| 1 | ライセンスが利用形態に合う | ||||
| 2 | 稼働予定の期間サポートされる | ||||
| 3 | 必須機能を満たす手段がある | ||||
| 4 | 決まっている環境で動く | ||||
| 判定 | すべて○なら採点へ進む |
No 足切り条件 候補A 候補B 候補C 確認した資料・日付
1 ライセンスが利用形態に合う
2 稼働予定の期間サポートされる
3 必須機能を満たす手段がある
4 決まっている環境で動く
判定 すべて○なら採点へ進む
点数表
| 評価項目 | 重み | 重みの理由 | 候補A 点 | 候補A 重み×点 | 候補B 点 | 候補B 重み×点 | 候補C 点 | 候補C 重み×点 | 根拠(確認方法) |
|---|---|---|---|---|---|---|---|---|---|
| 合計 | |||||||||
| 100点換算 |
評価項目 重み 重みの理由 候補A 点 候補A 重み×点 候補B 点 候補B 重み×点 候補C 点 候補C 重み×点 根拠(確認方法)
合計
100点換算
100点換算は「重み×点の合計 ÷(重みの合計×5)×100」です。項目数や重みを変えても、候補どうしを同じ目盛りで比べられます。
記入例:社内の備品予約システムのWebフレームワーク選定
前提(架空):開発者4人、期間4か月、利用者は社内の約300人、5年以上使う予定。候補は次の4つです。
| 候補 | 内容 |
|---|---|
| 候補A | チームが普段使っている言語のフレームワーク |
| 候補B | 型検査が標準で使える別言語のフレームワーク。経験者1人 |
| 候補C | 処理が速いことを特長とする新しめのフレームワーク。経験者なし |
| 候補D | 画面を組み立てて作る開発ツール |
足切り表の記入例
| No | 足切り条件 | 候補A | 候補B | 候補C | 候補D | 確認した資料・日付 |
|---|---|---|---|---|---|---|
| 1 | ライセンスが社内利用・改変に合う | ○ | ○ | ○ | ○ | 各公式のライセンス文(10/1) |
| 2 | 5年間サポートされる見込みがある | ○ | ○ | ○ | ○ | 各公式のリリース方針(10/1) |
| 3 | 既存の社員認証と連携できる | ○ | ○ | ○ | × | 各公式ドキュメントの認証の章(10/2) |
| 4 | 社内標準のDBで動く | ○ | ○ | ○ | ○ | 各公式の対応環境一覧(10/2) |
| 判定 | 採点へ | 採点へ | 採点へ | 対象外 |
No 足切り条件 候補A 候補B 候補C 候補D 確認した資料・日付
1 ライセンスが社内利用・改変に合う ○ ○ ○ ○ 各公式のライセンス文(10/1)
2 5年間サポートされる見込みがある ○ ○ ○ ○ 各公式のリリース方針(10/1)
3 既存の社員認証と連携できる ○ ○ ○ × 各公式ドキュメントの認証の章(10/2)
4 社内標準のDBで動く ○ ○ ○ ○ 各公式の対応環境一覧(10/2)
判定 採点へ 採点へ 採点へ 対象外
候補Dは必須の認証連携を満たさないため、ここで対象外です。足切りで落ちた候補には点数を付けません。 他の項目が高得点でも、必須を満たさない候補が合計点で上位に来ることを防げます。
点数表の記入例
| 評価項目 | 重み | 重みの理由 | A 点 | A 重み×点 | B 点 | B 重み×点 | C 点 | C 重み×点 | 根拠(確認方法) |
|---|---|---|---|---|---|---|---|---|---|
| 習熟度 | 5 | 期間が4か月と短い | 5 | 25 | 3 | 15 | 2 | 10 | メンバー4人への聞き取り |
| 保守のしやすさ | 4 | 5年以上使う | 3 | 12 | 5 | 20 | 4 | 16 | 移行ガイドと変更履歴 |
| 性能 | 3 | 利用者300人で標準 | 2 | 6 | 4 | 12 | 5 | 15 | 公式の説明(数値はPoCで確認) |
| 情報量 | 3 | 標準 | 5 | 15 | 4 | 12 | 2 | 6 | 公式ドキュメントの網羅度 |
| 運用のしやすさ | 3 | 標準 | 3 | 9 | 4 | 12 | 3 | 9 | 既存の運用手順との照合 |
| 費用 | 2 | 候補間の差が小さい | 4 | 8 | 3 | 6 | 4 | 8 | 3年分の概算 |
| 合計 | 20 | 75 | 77 | 64 | |||||
| 100点換算 | 75.0 | 77.0 | 64.0 | 合計÷(20×5)×100 |
評価項目 重み 重みの理由 A 点 A 重み×点 B 点 B 重み×点 C 点 C 重み×点 根拠(確認方法)
習熟度 5 期間が4か月と短い 5 25 3 15 2 10 メンバー4人への聞き取り
保守のしやすさ 4 5年以上使う 3 12 5 20 4 16 移行ガイドと変更履歴
性能 3 利用者300人で標準 2 6 4 12 5 15 公式の説明(数値はPoCで確認)
情報量 3 標準 5 15 4 12 2 6 公式ドキュメントの網羅度
運用のしやすさ 3 標準 3 9 4 12 3 9 既存の運用手順との照合
費用 2 候補間の差が小さい 4 8 3 6 4 8 3年分の概算
合計 20 75 77 64
100点換算 75.0 77.0 64.0 合計÷(20×5)×100
候補Bが77.0点、候補Aが75.0点で、差は2点です。この差で決めてよいかを、次の感度分析で確かめます。
加重合計と感度分析をPythonで計算する
感度分析とは、重みを少し動かしたときに結論(1位)が変わるかを確かめる作業です。 重みは人が決めた数字なので、1違うだけで順位が入れ替わるなら、その比較表だけでは決めきれないと分かります。
次のコードは標準ライブラリだけで動きます。ITEMS を自分の比較表の数字に書き換えて使ってください。
# 技術選定の加重合計と感度分析(Python 3 の標準ライブラリのみ)
from fractions import Fraction
from itertools import product
# 評価項目: (重み, {候補: 点数1〜5})
ITEMS = {
"習熟度": (5, {"A": 5, "B": 3, "C": 2}),
"保守のしやすさ": (4, {"A": 3, "B": 5, "C": 4}),
"性能": (3, {"A": 2, "B": 4, "C": 5}),
"情報量": (3, {"A": 5, "B": 4, "C": 2}),
"運用のしやすさ": (3, {"A": 3, "B": 4, "C": 3}),
"費用": (2, {"A": 4, "B": 3, "C": 4}),
}
CANDS = ["A", "B", "C"]
def totals(weights):
"""候補ごとの加重合計を100点満点に換算して返す(端数の誤差を避けるため分数で持つ)"""
wsum = sum(weights.values())
return {
c: Fraction(sum(weights[k] * ITEMS[k][1][c] for k in ITEMS) * 100, wsum * 5)
for c in CANDS
}
def winner(t):
"""1位の候補名を返す。同点のときは '同点' を返す"""
best = max(t.values())
tops = [c for c in CANDS if t[c] == best]
return tops[0] if len(tops) == 1 else "同点"
def show(t):
return " ".join(f"{c}={float(t[c]):.1f}" for c in CANDS)
base_w = {k: v[0] for k, v in ITEMS.items()}
base = totals(base_w)
top = winner(base)
print("== 加重合計(100点満点換算) ==")
for c in sorted(CANDS, key=lambda c: -base[c]):
print(f"候補{c}: {float(base[c]):.1f}")
print("\n== 感度分析1: 重みを1項目だけ ±1, ±2 動かす ==")
for k in ITEMS:
for d in (-2, -1, 1, 2):
w = {**base_w, k: base_w[k] + d}
if w[k] < 1:
continue
t = totals(w)
note = "" if winner(t) == top else f" <- 1位が {winner(t)} に変わる"
print(f"{k} {base_w[k]}->{w[k]}: {show(t)}{note}")
print("\n== 感度分析2: 全項目の重みを同時に -1/0/+1 動かす全組み合わせ ==")
count = {}
for ds in product((-1, 0, 1), repeat=len(ITEMS)):
w = {k: max(1, base_w[k] + d) for k, d in zip(ITEMS, ds)}
r = winner(totals(w))
count[r] = count.get(r, 0) + 1
n = sum(count.values())
for r in CANDS + ["同点"]:
print(f"1位が {r}: {count.get(r, 0)}/{n} 通り ({count.get(r, 0) / n * 100:.1f}%)")
print("\n== 感度分析3: 1項目の重みだけを1〜10に変えたとき、1位が変わる範囲 ==")
for k in ITEMS:
ws = [x for x in range(1, 11) if winner(totals({**base_w, k: x})) not in (top, "同点")]
if ws:
print(f"{k}(今の重み{base_w[k]}): 重み {ws[0]}〜{ws[-1]} で1位が変わる")
else:
print(f"{k}(今の重み{base_w[k]}): 変わらない")
実行結果(python3 select.py):
== 加重合計(100点満点換算) ==
候補B: 77.0
候補A: 75.0
候補C: 64.0
== 感度分析1: 重みを1項目だけ ±1, ±2 動かす ==
習熟度 5->3: A=72.2 B=78.9 C=66.7
習熟度 5->4: A=73.7 B=77.9 C=65.3
習熟度 5->6: A=76.2 B=76.2 C=62.9 <- 1位が 同点 に変わる
習熟度 5->7: A=77.3 B=75.5 C=61.8 <- 1位が A に変わる
保守のしやすさ 4->2: A=76.7 B=74.4 C=62.2 <- 1位が A に変わる
保守のしやすさ 4->3: A=75.8 B=75.8 C=63.2 <- 1位が 同点 に変わる
保守のしやすさ 4->5: A=74.3 B=78.1 C=64.8
保守のしやすさ 4->6: A=73.6 B=79.1 C=65.5
性能 3->1: A=78.9 B=76.7 C=60.0 <- 1位が A に変わる
性能 3->2: A=76.8 B=76.8 C=62.1 <- 1位が 同点 に変わる
性能 3->4: A=73.3 B=77.1 C=65.7
性能 3->5: A=71.8 B=77.3 C=67.3
情報量 3->1: A=72.2 B=76.7 C=66.7
情報量 3->2: A=73.7 B=76.8 C=65.3
情報量 3->4: A=76.2 B=77.1 C=62.9
情報量 3->5: A=77.3 B=77.3 C=61.8 <- 1位が 同点 に変わる
運用のしやすさ 3->1: A=76.7 B=76.7 C=64.4 <- 1位が 同点 に変わる
運用のしやすさ 3->2: A=75.8 B=76.8 C=64.2
運用のしやすさ 3->4: A=74.3 B=77.1 C=63.8
運用のしやすさ 3->5: A=73.6 B=77.3 C=63.6
費用 2->1: A=74.7 B=77.9 C=63.2
費用 2->3: A=75.2 B=76.2 C=64.8
費用 2->4: A=75.5 B=75.5 C=65.5 <- 1位が 同点 に変わる
== 感度分析2: 全項目の重みを同時に -1/0/+1 動かす全組み合わせ ==
1位が A: 163/729 通り (22.4%)
1位が B: 494/729 通り (67.8%)
1位が C: 0/729 通り (0.0%)
1位が 同点: 72/729 通り (9.9%)
== 感度分析3: 1項目の重みだけを1〜10に変えたとき、1位が変わる範囲 ==
習熟度(今の重み5): 重み 7〜10 で1位が変わる
保守のしやすさ(今の重み4): 重み 1〜2 で1位が変わる
性能(今の重み3): 重み 1〜1 で1位が変わる
情報量(今の重み3): 重み 6〜10 で1位が変わる
運用のしやすさ(今の重み3): 変わらない
費用(今の重み2): 重み 5〜10 で1位が変わる
結果の読み方
| 分析 | 見るところ | 今回の結果 |
|---|---|---|
| 加重合計 | 順位と点差 | B 77.0、A 75.0、C 64.0。BとAの差は2点 |
| 感度分析1 | 重みを1項目だけ動かして1位が変わるか | 23通りのうち3通りでAが1位、6通りで同点 |
| 感度分析2 | 全項目を同時に動かしたときの1位の割合 | B 67.8%、A 22.4%、同点 9.9%、C 0% |
| 感度分析3 | 1位が変わる重みの範囲 | 習熟度を7以上、保守のしやすさを2以下などでAが上回る |
読み取れることは3つです。
- 候補Cは、重みをどう動かしても1位になりません。 ここで候補から外せます。
- 候補BとAは僅差です。 重みを±1動かしただけで、約3割の組み合わせでBが単独1位ではなくなります。
- 運用のしやすさは、重みを1〜10のどれにしても候補Aが上回りません。 BとAの点差が1点しかない項目は、重みの議論に時間を使っても結論に影響しにくいと分かります。
僅差のときの決め方
「僅差」を先に定義しておくと、採点後に迷いません。次の表は一例です。
| 条件 | 判定 | 次にやること |
|---|---|---|
| 感度分析2で1位の割合が90%以上(例) | 明確な差 | 1位に決める |
| 1位の割合が90%未満、または点差が満点の5%以内(例) | 僅差 | 下の順で決める |
| 足切り後に候補が1つ | 比較不要 | その候補でPoCの要否だけ判断する |
僅差のときは、次の順に見ます。
| 順 | 見るもの | 選ぶ方 |
|---|---|---|
| 1 | 撤退のしやすさ(独自の書き方や形式への依存の少なさ) | 別の技術へ移るときの作り直しが小さい方 |
| 2 | 重み5の項目の点数 | 最重要の項目で点が高い方 |
| 3 | PoCの結果 | 合否基準を満たした方 |
| 4 | 現在使っている技術 | 変えない方(学び直しと移行が要らない) |
今回の例では、候補BとAが僅差でした。撤退のしやすさを比べると、候補Bは型の定義が残るため別のフレームワークへ移るときに業務ロジックを持ち出しやすく、候補Aは画面とロジックがフレームワーク独自の書き方に寄っている、という前提なら候補Bを選びます。そのうえで、候補Bの弱点である習熟度(3点)を、PoCで「経験の浅い2人が1週間で小機能を作れるか」として確かめます。
点数が高い方を機械的に選ぶのではなく、「差が小さいときは戻りやすい方」と先に決めておくことで、議論が長引きにくくなります。
比較表で決めるか、PoCまで行うか
| 状況 | 選ぶ進め方 | 理由 |
|---|---|---|
| 候補がチームの経験済みの技術どうし | 比較表だけで決める | 作らなくても点数の根拠がある |
| 感度分析で1位が安定している | 比較表だけで決める | 重みの付け方で結論が変わらない |
| 性能・同時利用数に数値の必須要件がある | PoCを行う | 公式の説明だけでは自分の条件での値が分からない |
| 既存システムとの連携・データ移行が必須 | PoCを行う | つなぐ相手ごとに挙動が違う |
| 経験者がいない候補が1位または僅差 | PoCを行う | 習熟度と学習しやすさの点数に根拠が要る |
| 小さな社内ツールで、作り直しが数日で済む | 比較表も簡略にして決める | 選び直す費用の方が小さい |
PoCで確かめる項目と合否基準
PoCは「触ってみる」ではなく、始める前に合否基準と終了条件を書いておく小さな試験です。数値は題材に合わせた例です。
| No | 確かめる項目 | 作るもの | 合否基準(例) | 測り方 | 結果 | 判定 |
|---|---|---|---|---|---|---|
| 1 | 認証連携 | 既存の社員認証でログインする画面 | ログインとログアウトが動き、権限2種類を区別できる | 手動で3ユーザーを確認 | ||
| 2 | 性能 | 予約一覧API(予約データ10万件) | 同時50人で95%の応答が500ミリ秒以内 | 負荷試験ツールで5分間 | ||
| 3 | 学習しやすさ | 予約登録の小機能 | 経験の浅い2人が5日以内にテスト付きで完成 | かかった日数を記録 | ||
| 4 | テスト | 上の小機能の自動テスト | テストが1分以内に終わり、CIで動く | CIの実行時間 | ||
| 5 | 運用 | 検証環境へのデプロイ | 既存の手順書の変更が10行以内で済む | 手順書の差分 | ||
| 6 | データ移行 | 既存の予約データの取り込み | 1万件を取り込み、件数と合計が一致 | 取り込み前後の集計SQL |
No 確かめる項目 作るもの 合否基準(例) 測り方 結果 判定
1 認証連携 既存の社員認証でログインする画面 ログインとログアウトが動き、権限2種類を区別できる 手動で3ユーザーを確認
2 性能 予約一覧API(予約データ10万件) 同時50人で95%の応答が500ミリ秒以内 負荷試験ツールで5分間
3 学習しやすさ 予約登録の小機能 経験の浅い2人が5日以内にテスト付きで完成 かかった日数を記録
4 テスト 上の小機能の自動テスト テストが1分以内に終わり、CIで動く CIの実行時間
5 運用 検証環境へのデプロイ 既存の手順書の変更が10行以内で済む 手順書の差分
6 データ移行 既存の予約データの取り込み 1万件を取り込み、件数と合計が一致 取り込み前後の集計SQL
PoCの終了条件
| 終了条件 | 内容 |
|---|---|
| 期間 | 例:10営業日。延長は1回、最大5営業日まで |
| 合格で終了 | 「必須」と付けた項目がすべて合格した時点で終える |
| 不合格で終了 | 必須項目が1つでも基準に届かず、設定の調整を2回試しても変わらないとき |
| 期間切れ | 判定できていない必須項目が残ったら、その候補は「確認できず」として次点を検討する |
| 捨てる前提 | PoCのコードは本番に持ち込まない。残すのは結果の表と気づきのメモ |
期間切れのときの扱いを先に決めておくのがポイントです。「もう少しで動きそう」という状態で延び続けることを防げます。
比較結果のまとめ方
決めるまでに作った表は、次の1枚にまとめておくと、あとから「なぜこれを選んだか」を聞かれたときにそのまま渡せます。決定そのものを記録する文書(ADRなど)には、この1枚へのリンクと結論だけを書けば足ります。
# 技術選定の比較結果:備品予約システムのWebフレームワーク
- 作成日:2026-10-05 作成者:(名前)
- 前提:開発者4人、期間4か月、利用者約300人、5年以上使う
## 結論
候補Bを選ぶ。候補Aとは僅差(77.0点と75.0点)のため、撤退のしやすさで決めた。
## 足切り
候補Dは既存の社員認証と連携できないため対象外。
## 点数(100点換算)
| 候補 | 点数 | 重みを±1動かしたときに1位になる割合 |
|---|---|---|
| B | 77.0 | 67.8% |
| A | 75.0 | 22.4% |
| C | 64.0 | 0% |
## PoCの結果
| 項目 | 合否基準 | 結果 | 判定 |
|---|---|---|---|
| (PoCの表から転記) | | | |
## 選ばなかった理由
- 候補A:点数は僅差。独自の書き方への依存が大きく、移るときの作り直し範囲が広い。
- 候補C:どの重みでも1位にならない。経験者がいない。
## 残る心配と対策
- 候補Bの経験者が1人:最初の2週間はペアで作業し、書き方の決まりを文書にする。
## 見直す時期
- 開発開始から2か月後に、習熟度の見込みが合っていたかを確認する。
確かめて分かったこと
- 同点は意外に多く出ます。 重みを全項目±1で動かした729通りのうち72通り(9.9%)が同点でした。重みが小さな整数だと合計がそろいやすいため、同点のときの決め方を先に用意しておく意味があります。
- 小数第1位に丸めた表示では「同点」と「わずかな差」の区別がつきません。 最初は丸めた値で順位を比べるコードを書いたところ、感度分析1の同点6通りも「入れ替わり」と表示されました。掲載したコードは分数(
Fraction)のまま比べ、同点を別に数えています。 - 点差が小さい項目は、重みを変えても結論が変わりません。 運用のしやすさ(BとAの差が1点、重み3)は、重みを1〜10のどれにしても候補Aが上回りませんでした(重み1のときだけ同点)。重みの議論は、点差が大きい項目に絞ると短く済みます。
- 3位の候補は、合計点よりも「1位になる割合が0%」で外す方が説明しやすいです。 候補Cは性能が5点でも、どの重みの組み合わせでも1位になりませんでした。
- 重みの合計を20にすると、重み×点の合計がそのまま100点換算になります(20×5=100)。表計算ソフトで手計算するときに検算しやすくなります。
つまずきやすい点と直し方
| 起きること | こうするとよい |
|---|---|
| 採点後に重みを調整して結論が変わる | 重みは採点前に決め、日付を付けて固定する。動かすのは感度分析の中だけ |
| 必須を満たさない候補が合計点で上位に来る | 足切りを点数表と別の表にし、落ちた候補は採点しない |
| 評価項目が15個以上になり差が出ない | 点数項目は5〜8個に絞る。全候補が同じ点の項目は外す |
| 点数の根拠が「なんとなく」になる | 各点数の意味を文章で決め、根拠の欄に確認方法を書く |
| PoCが終わらない | 期間と終了条件、期間切れのときの扱いを先に書く |
| 「今のまま」が候補に無い | 現在の技術を候補に入れる。変える費用が見える |
よくある質問
Q. 技術選定の基準とは何ですか? A. 候補を比べるための評価項目と、その重み・点数の付け方のことです。必須要件を満たすかを見る足切り項目と、1〜5点で比べる点数項目の2種類に分けると扱いやすくなります。
Q. 評価項目の重み付けはどう決めればよいですか? A. 今回の前提(期限・人数・使う年数)から理由を1行で書ける項目だけを4〜5にし、残りは3にします。採点より先に決めて固定し、重みの影響は感度分析で確かめます。
Q. 比較表の点数が僅差のときはどう決めますか? A. 撤退しやすい方、つまり別の技術へ移るときの作り直しが小さい方を選びます。それでも決まらなければ、重みが最も大きい項目の点数、PoCの結果、現在の技術の順に見ます。
Q. PoCは必ず必要ですか? A. 必要なのは、作らないと分からない必須項目が残るときだけです。チームが経験済みの技術どうしで、感度分析でも1位が安定しているなら、比較表だけで決められます。
Q. 技術選定と製品選定の違いは何ですか? A. 技術選定は自分たちで作るための部品や方式を選び、製品選定は完成したソフトウェアやサービスを選びます。技術選定では習熟度や保守のしやすさが、製品選定では機能の合致度と利用条件が重くなります。
まとめ
- 足切りを先に行う:ライセンス・サポート期限・必須要件を満たさない候補は採点しない。
- 重みは採点の前に決める:理由を1行書ける項目だけを4以上にし、合計を20にすると検算しやすい。
- 点数の意味を文章で決める:1〜5点の基準と、根拠の確認方法を表に残す。
- 感度分析で結論の安定を確かめる:重みを±1動かして1位が変わるなら僅差と判断する。
- 僅差なら撤退しやすい方を選ぶ:決め方を先に用意しておくと議論が短くなる。
- PoCは合否基準と終了条件を先に書く:期間切れのときの扱いまで決めておく。
- 比較表・PoCの結果・選ばなかった理由を1枚にまとめる:あとから理由を説明できる。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「技術選定の基準と進め方|比較表テンプレートと評価項目の重み付け」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。