以下では「架空の企業がSTP分析を行うまでの過程」を物語形式で描きながら、その裏側で「実際にはどのようにデータを扱い、セグメンテーションを行ったか」を簡易コードを使った例と併せてご紹介します。物語と分析手法が一度に把握できる構成にしています。
物語の舞台
企業名:Glitter Beans(グリッタービーンズ)
創業者:アリサ(Arisa)
事業内容:機能性とデザイン性を両立した「プレミアム・カフェイン飲料」(いわゆる“デザインドリンク”)を製造・販売。ビジュアルにこだわりSNS映えも狙えるドリンクを提供しながら、健康志向にも配慮した独自成分配合が特徴。
アリサは大学時代にデザインと栄養学を学び、「心がときめきつつも、体にも気を配った飲み物が作れたら」と夢を温めていた。卒業後は食品メーカー勤務を経て起業し、試行錯誤を繰り返す中で資金調達にも成功。海外の展示会にも参加して反応を調べていたが、ある壁にぶつかる――
「いろいろな層の人が試してくれるのは嬉しいけど…誰にどんな商品をメインに売っていくべきか、もう少しハッキリさせないと。正直、リソースが限られている私たちが大衆全員を狙うのは無理があるわ。」
そこでアリサは、MBAホルダーでマーケティング経験豊富な友人・ケンタ(Kenta)に相談した。ケンタは「STP分析をしっかりやろう」と提案。早速、社内と簡易的な市場調査で集めたデータを使い、まずは**セグメンテーション(S)**を試みることに。
データ分析パート:セグメンテーション
11 データ準備
Glitter Beansでは、オンラインストアとポップアップショップでの購入者にアンケートや会員登録フォームを通じて得た属性データが約100件ほどある。ここでは以下の項目を取得していると仮定する。
- Age: 年齢
- Income: (おおよその)月収を指数化したもの
- HealthConsciousness: 健康意識(0~1の範囲で数値化)
- Indulgence: 「自分へのご褒美」志向(0~1の範囲で数値化)
- PurchaseFrequency: 月間購入回数(当社商品に限らず、嗜好飲料全体)
このデータを使ってK-Meansクラスタリングを行い、大まかに3つのセグメントに分類してみる。下記のコードはあくまでサンプルとしてご覧ください。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
# --- Step 0: Generate random-like sample data ---
np.random.seed(42)
N = 100
Age = np.random.randint(18, 65, N)
Income = np.random.randint(200, 1200, N) # simplified scale
HealthCon = np.random.rand(N) # 0 ~ 1
Indulgence = np.random.rand(N) # 0 ~ 1
PurchaseFreq = np.random.randint(1, 20, N)
df = pd.DataFrame({
'Age': Age,
'Income': Income,
'HealthConsciousness': HealthCon,
'Indulgence': Indulgence,
'PurchaseFrequency': PurchaseFreq
})
# --- Step 1: K-Means Clustering ---
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(df[['Age','Income','HealthConsciousness',
'Indulgence','PurchaseFrequency']])
# --- Step 2: PCA for 2D visualization ---
pca = PCA(n_components=2)
pcs = pca.fit_transform(df[['Age','Income','HealthConsciousness',
'Indulgence','PurchaseFrequency']])
df['PC1'] = pcs[:,0]
df['PC2'] = pcs[:,1]
# --- Step 3: Plot the clusters ---
plt.figure(figsize=(8,6))
for c in range(3):
cluster_data = df[df['Cluster'] == c]
plt.scatter(cluster_data['PC1'], cluster_data['PC2'], label=f'Cluster {c}')
plt.title('Customer Segmentation (PCA)', fontsize=14)
plt.xlabel('PC1', fontsize=12)
plt.ylabel('PC2', fontsize=12)
plt.legend()
plt.show()
上記コードを実行すると、PC1(第一主成分)とPC2(第二主成分)の2次元空間に各顧客がプロットされ、3つのクラスタに色分けされる。これを参考にセグメントの特徴を見極める。
22 セグメントの特徴と物語の続き
ケンタはこれらのクラスタをざっと確認し、下記のような特徴をアリサに説明した。
- Cluster 0:
- 比較的若く、所得も低め~中程度
- Indulgence(ご褒美志向)が高く、PurchaseFrequencyもそこそこ多い
- 健康意識は中程度
- → 「気軽な自分へのご褒美」を楽しむ層。日常のちょっとしたプチ贅沢を好む傾向。
- Cluster 1:
- 年齢層が広めだが、Incomeは全体的に高め
- HealthConsciousnessが高い
- PurchaseFrequencyはそこまで多くない
- → 経済的余裕があり、「品質や健康に配慮した商品」を求める層。単価が高くても納得すれば購入してくれる可能性。
- Cluster 2:
- 年齢はバラバラだが、Incomeは中程度
- HealthConsciousnessは低め~中
- Indulgenceも中程度
- PurchaseFrequencyはあまり高くない
- → ごく平均的で「健康・贅沢両面にさほど強いこだわりはない」層。価格には比較的敏感。
物語の中で、この結果を見ながらアリサはこう思った。
「私たちのグリッタービーンズは“特別感”のある飲み物だけど、それを毎日買ってくれる人は限られている。
Cluster 0は、値段がそこそこでSNS映えを狙った新商品との相性が良さそう。
Cluster 1は健康意識が高くてお金にも余裕がある。この層にはプレミアムラインを作って、より高付加価値を打ち出したら面白そう!
Cluster 2向けはちょっと難しいな…。アピールポイントがはっきりしないから、むしろ“今は捨てる”のも戦略かもしれない。」
ターゲティング(T)
データからセグメントを3つに分けたGlitter Beans。ここで大事なのはどのセグメントを主要ターゲットに据えて、どのようにアプローチするかを決めることだ。
- Cluster 0(若年層でプチ贅沢志向)
→ 単価は中程度だが「インスタ映え」「華やかなパッケージ」「期間限定フレーバー」などの訴求で、回転数を上げられる可能性がある。SNSで拡散も期待できる。 - Cluster 1(高所得&健康意識)
→ プレミアム価格帯でも購入してもらえる可能性が高い。ヘルシー成分、オーガニック原料、糖質オフなど、健康・高品質路線を打ち出せばブランドイメージ向上にもつながる。 - Cluster 2(平均的で価格敏感)
→ 競合が多く、積極的に狙っても差別化が難しい。とりあえず大きな投資はせず、既存ラインナップで自然に購入されるのを待つ方針に。
最終的に、主要ターゲットはCluster 0とCluster 1と定めることに決定。これがターゲティングの要諦だ。
物語の続き:アリサは思い切ってリソースを2ラインに集中させることにした。1つはSNSで拡散しやすい「ヴィジュアル×中価格帯」シリーズ、もう1つは「成分品質×高価格帯」のプレミアムシリーズ。この二軸で同時展開する戦略を立てる。
ポジショニング(P)
ターゲットを決めたら、今度は「お客様の頭の中で、自社商品をどんなポジションに置くか」を具体化する必要がある。
- Cluster 0向け:
- 「InstagramやTikTokで映える華やかなカップ・色合い・フレーバー展開」
- 「1杯500円前後で買いやすく、友達と一緒に気軽に楽しめる」イメージ
- 「自分への小さなご褒美」というコピーを強調し、ポップな世界観をアピール
- Cluster 1向け:
- 「高機能性ドリンク:例えばビタミン強化、コラーゲン配合、低糖質」
- 1杯800~1000円超くらいのプレミアム価格帯
- シンプルで高級感のあるデザインを採用し、「健康と美のための特別な1杯」というブランドストーリーを打ち出す
こうして2ラインで異なるポジショニングを確立し、Cluster 2は特に狙わず、「既存製品を普通に販売する中で自然に取り込む」程度に留めることにした。
物語:STP戦略実行と成果
アリサたちGlitter Beansチームは、新たなSTP戦略を社内で発表し、試験的にマーケティング施策を実行に移した。
- SNSキャンペーン:
- Cluster 0向け商品:SNS投稿で割引クーポンがもらえるキャンペーンを定期的に実施。カラフルな動画広告をTikTok広告に出し、大学生インフルエンサーとコラボ。
- Cluster 1向け商品:落ち着いた高級路線のビジュアル広告をInstagramやFacebookで配信し、美容や健康に敏感なアカウント層にリーチ。
- 販売チャネル:
- Cluster 0向け商品は若者が多いショッピングモールやファッションビルのポップアップショップで展開。
- Cluster 1向け商品は百貨店のフードセクションやラグジュアリーブランドに隣接するエリア、またはサブスクモデル(定期配送)にも対応。
- 価格戦略:
- Cluster 0向け:500円前後。多彩なフレーバー展開で飽きさせない。月替わり限定品など。
- Cluster 1向け:800円~1000円以上のラインナップ。原料産地や健康効果を打ち出す代わりに原価は少々上がるが、その分しっかりと“プレミアム”を訴求。
結果
3ヶ月後、SNS上での話題量が増加し、特にCluster 0向け商品がプチバズを起こす。若者の口コミ効果で売上が伸び、ブランド認知度が一気に高まった。一方、Cluster 1向け商品は爆発的ヒットとはいかないが、安定してリピート買いするファンが増え、粗利率の高さとブランドの信頼度向上に寄与。
アリサは数字を眺めて満足げに言う。
「誰もがターゲット…と漫然としていた頃より、明らかに販促がしやすくなったわ。
高級路線とポップ路線、全然別物だけど、そこがむしろ強みになってる。
これがSTP分析の威力ね。ケンタ、ありがとう!」
ケンタは微笑みながら答える。
「まだまだ改善の余地はあるけど、ターゲットを明確化したからこそ予算配分やプロモ手段に迷いがなくなったよね。
これからは定期的にデータを更新して、セグメントが変化してないかもチェックしよう。」
こうしてGlitter BeansはSTP分析で得た示唆を元に、限られたリソースを最大限活用してビジネスを拡大していった。
まとめ:STP分析がもたらす変化
本ケーススタディ(物語)では、
- Segmentation
- 顧客データを基にクラスター分析し、3つの特徴的セグメントを抽出。
- Targeting
- 収益性とブランドイメージにマッチしやすい2つのセグメント(Cluster 0とCluster 1)を主要ターゲットに決定。
- 競争が激しく価格敏感なセグメント(Cluster 2)は優先度を下げる。
- Positioning
- 若年層向けSNS映えラインと、高所得健康志向向けプレミアムラインの2本立てで明確に打ち出す。
- それぞれが顧客の頭の中でどんなイメージを持つか(ポップ&カラフル vs 高品質&ヘルシー)を明確化し、チャンネル戦略やプロモーションに反映。
という流れで、**“闇雲にいろんな商品を作っていた状態”→“しっかり棲み分けして投資する状態”**へシフトすることができました。物語の中のGlitter Beansは、その結果、売上とブランドの両面でしっかり成果を出せたわけです。
物語の教訓
- STP分析はシンプルなフレームワークに見えて、どこまでも奥が深い。
- 限られたリソースの中で最大の効果を狙うには、まず「自社が強みを発揮できる顧客層を絞る」ことが重要。
- データに基づくセグメンテーションを定期的に見直しながら、ターゲット顧客が本当に求める価値を追求し続けると、結果が出やすくなる。
この物語が、STP分析の流れと意義をイメージする一助になれば幸いです。実際の企業でも、多かれ少なかれ似たプロセスを辿りつつ、顧客理解を深めてマーケティング戦略を固めていきます。物語のように派手な展開はないかもしれませんが、「誰に」「何を」「どのように」提供するのかを明確にすることは、すべてのビジネスにおいて最重要と言っても過言ではありません。