ポジショニングマップと4象限への分割
今回の記事では、特許マップの一つであるポジショニングマップをPythonで描画し、それを4つの象限に分割することを解説する。
本編の前に、以下の事項をまず記しておかねばならない。「出願ポジショニングマップ」は株式会社イーパテント代表取締役社長である野崎篤志氏が命名し、商標登録している。エクセルを用いた出願ポジショニングマップは、氏(師と呼びたい)の赤本こと、「特許情報分析とパテントマップ作成入門」を参考にされたい。(いや、ぜひ買って勉強するべきだっていうか、このnote読む人は読んでるでしょ)
1. ポジショニングマップとは何か
ポジショニングマップは、複数の評価軸を用いて対象(企業、技術分類など)を視覚的に配置し、相対的な位置関係を把握するための強力なマップです。特許情報分析において、特定の切り口で「注目すべきプレイヤー」や「活発な技術トレンド」を効率的に発見するために活用されます。
1-1. マップの軸と意味
今回のマップでは、以下の2つの軸を使用します。
横軸(X軸):累積件数(対数スケール)
対象がこれまでどれくらいの規模で活動してきたかを示します。出願人なら「累積出願件数」、技術分類なら「累積付与件数」です。
一般的に件数は桁違いに異なるため、対数スケールを用いることで、件数の少ない対象(例:スタートアップやニッチ技術)もマップ上で適切に視認できるようになります。
縦軸(Y軸):最近の活動比率
対象が近年どれくらい活発に活動しているかを示します。例えば、「2022年以降の出願(または付与)件数 ÷ 全期間の累積件数」で計算される比率です。
この比率が高いほど、その対象は「今、勢いがある」と解釈できます。
1-2. 4象限への分割基準とその意味
マップを4つの象限に分割することで、直感的なセグメンテーションが可能になります。この分割には、各軸の「平均値」を使用します。
平均値の算出
全対象(企業またはIPC)の「累積件数」を平均し、横軸の分割基準(平均X値)とします。
全対象の「最近の活動比率」を平均し、縦軸の分割基準(平均Y値)とします。
象限の解釈
これらの平均値を基準に、マップは以下の4つの象限に分かれます。
右上象限:リーダー/主要
累積件数:平均より多い
活動比率:平均より高い
意味: 規模が大きく、現在も活発な中心プレイヤー。業界のリーダーや主要技術分野。
左上象限:注目/新興
累積件数:平均より少ない
活動比率:平均より高い
意味: 今回最も注目すべき領域。規模は小さいが、近年急速に活動を活発化させているプレイヤーや新興技術分野。新規参入企業、スタートアップ、ブレイクスルー技術などが含まれる可能性が高い。
右下象限:古参/レガシー
累積件数:平均より多い
活動比率:平均より低い
意味: 過去には活発だったが、近年は活動が鈍化している可能性のあるプレイヤーや技術分野。事業転換期にある企業や、成熟・衰退期にある技術を示唆する場合があります。
左下象限:ニッチ/成熟
累積件数:平均より少ない
活動比率:平均より低い
意味: 小規模で、近年も活動が低調なプレイヤーや技術分野。特定のニッチ市場に特化しているか、活動を縮小している可能性があります。
この分割により、膨大なデータの中から、みなさまの目的に合致する特定のタイプを効率的に見つけ出すことができます。
2. 共通の準備ステップ
まず、どちらのマップを作成する場合でも共通で必要な環境準備とデータ読み込み・前処理を行います。
2-1. Google Colabの準備
Google Colab にアクセスし、「ノートブックを新規作成」をクリックします。
以下のコードを各ステップで新しいセルに貼り付けて実行していきます。
2-2. 必要なライブラリのインストール
以下のコードを最初のセルに貼り付けて実行してください。グラフ描画やデータ操作に必要なライブラリを一括でインストールします。
# [共通ステップ 2-2] 必要なライブラリのインストール
!pip install plotly xlsxwriter
# 必要ライブラリのインポート (後続のステップで使用)
import pandas as pd
import plotly.express as px
import numpy as np3. 出願人ポジショニングマップの作成
ここでは、「出願人」を分析軸として、各企業の出願動向をマップ化します。1つの特許に複数の出願人が共同で出願している場合にも対応します。
3-1. データ準備(出願人マップ用)
お手元の特許データCSVファイルを用意し、Colabの画面左側のフォルダアイコンからアップロードしてください。
CSVに必要なカラム:
出願人: 企業の名称。複数いる場合は、セミコロン(;)で区切られた単一の文字列であること。(例: A株式会社; B株式会社)
出願日: 特許の出願年月日。
以下のコードでCSVファイルを読み込み、複数出願人のデータを適切に展開します。コードを実行する際は、コード中のCSVのファイル名を自身の設定したものに適宜変更してください。
# [出願人マップ] ステップ 3-1: データの読み込みと前処理
# 'your_applicant_data.csv' を、アップロードした実際のファイル名に書き換えてください。
try:
df_applicant = pd.read_csv('your_applicant_data.csv')
print("[情報] 出願人データCSVファイルの読み込みに成功しました。")
except FileNotFoundError:
print("[エラー] ファイルが見つかりません。ファイル名を正しく入力したか、ファイルがアップロードされているか確認してください。")
df_applicant = pd.DataFrame(columns=['出願人', '出願日']) # エラー時も処理を続けるため
# --- データの前処理 ---
# 1. 日付データの変換
if '出願日' in df_applicant.columns:
df_applicant['出願日'] = pd.to_datetime(df_applicant['出願日'])
else:
print("[警告] '出願日' カラムが見つかりません。日付データがないと時間分析はできません。")
# 2. [重要] 出願人データの分割と展開 (共同出願対応)
if '出願人' in df_applicant.columns:
df_applicant['出願人'] = df_applicant['出願人'].fillna('') # 欠損値を空文字に
df_applicant['出願人'] = df_applicant['出願人'].str.split(';') # セミコロンで分割
df_applicant_exploded = df_applicant.explode('出願人') # 出願人ごとに展開
df_applicant_exploded['出願人'] = df_applicant_exploded['出願人'].str.strip() # 前後の空白を削除
df_applicant_exploded = df_applicant_exploded[df_applicant_exploded['出願人'] != ''] # 空白行を削除
print("[情報] 出願人データの展開処理が完了しました。")
print("\n展開後の出願人データの一部:")
print(df_applicant_exploded.head())
else:
print("[エラー] '出願人' カラムが見つかりません。CSVファイルの形式を確認してください。")
df_applicant_exploded = pd.DataFrame(columns=['出願人', '出願日'])3-2. 出願人ごとのデータ集計
展開したデータを使用し、「累積出願件数」と「最近の出願比率」を計算します。ここで、何年以降を「最近」と定義するのか指定してください。
# [出願人マップ] ステップ 3-2: 出願人ごとのデータ集計
# 何年以降を「最近」と定義するか設定
applicant_target_year = 2022
# 累積出願件数の計算
total_counts_applicant = df_applicant_exploded['出願人'].value_counts().reset_index()
total_counts_applicant.columns = ['出願人', '累積出願件数']
# target_year以降の出願件数の計算
recent_df_applicant = df_applicant_exploded[df_applicant_exploded['出願日'].dt.year >= applicant_target_year]
recent_counts_applicant = recent_df_applicant['出願人'].value_counts().reset_index()
recent_counts_applicant.columns = ['出願人', '最近の出願件数']
# 2つの集計データを結合
analysis_df_applicant = pd.merge(total_counts_applicant, recent_counts_applicant, on='出願人', how='left')
# 最近の出願がなかった企業の欠損値を0で埋める
analysis_df_applicant['最近の出願件数'] = analysis_df_applicant['最近の出願件数'].fillna(0)
# 最近の出願比率を計算
analysis_df_applicant['最近の出願比率'] = analysis_df_applicant['最近の出願件数'] / analysis_df_applicant['累積出願件数']
# パーセント表示用の列も作成
analysis_df_applicant['最近の出願比率(%)'] = analysis_df_applicant['最近の出願比率'] * 100
print("[情報] 出願人ごとの指標計算が完了しました。")
print("\n集計結果のデータの一部:")
print(analysis_df_applicant.head())3-3. ポジショニングマップと企業リストの出力
いよいよ、出願人マップとリストを出力します。以下のコードを実行すると、全体図、4枚の個別拡大図、そしてリスト(ノートブック上とExcelファイル)が順番に出力されます。
# [出願人マップ] ステップ 3-3: ポジショニングマップと企業リストの出力
if 'analysis_df_applicant' in locals() and not analysis_df_applicant.empty:
print("[情報] 出願人マップの描画とリスト出力を開始します。")
# --- 象限の定義と色の統一設定 ---
mean_x_applicant = analysis_df_applicant['累積出願件数'].mean()
mean_y_applicant = analysis_df_applicant['最近の出願比率'].mean()
conditions_applicant = [
(analysis_df_applicant['累積出願件数'] >= mean_x_applicant) & (analysis_df_applicant['最近の出願比率'] >= mean_y_applicant),
(analysis_df_applicant['累積出願件数'] < mean_x_applicant) & (analysis_df_applicant['最近の出願比率'] >= mean_y_applicant),
(analysis_df_applicant['累積出願件数'] < mean_x_applicant) & (analysis_df_applicant['最近の出願比率'] < mean_y_applicant),
(analysis_df_applicant['累積出願件数'] >= mean_x_applicant) & (analysis_df_applicant['最近の出願比率'] < mean_y_applicant)
]
choices_applicant = ['右上:リーダー企業群', '左上:注目企業群', '左下:ニッチ・停滞企業群', '右下:古参・鈍化企業群']
analysis_df_applicant['象限'] = np.select(conditions_applicant, choices_applicant, default='N/A')
# 象限の表示順と色を定義
quadrant_order_applicant = ['右上:リーダー企業群', '左上:注目企業群', '右下:古参・鈍化企業群', '左下:ニッチ・停滞企業群']
colors_applicant = px.colors.qualitative.Plotly
color_map_applicant = {q: colors_applicant[i] for i, q in enumerate(quadrant_order_applicant)}
# --- 1. 全体図の描画 ---
print("\n--- [出願人マップ 出力1] 全体図を描画中... ---")
fig_overall_applicant = px.scatter(
analysis_df_applicant, x="累積出願件数", y="最近の出願比率",
log_x=True, title="出願人ポジショニングマップ(全体図・インタラクティブ版)",
labels={"累積出願件数": "累積出願件数", "最近の出願比率": f"{applicant_target_year}年以降の出願比率"},
hover_name="出願人", hover_data={'累積出願件数': True, '最近の出願比率(%)': ':.1f', '最近の出願比率': False},
color="象限", category_orders={"象限": quadrant_order_applicant}, color_discrete_map=color_map_applicant,
size="累積出願件数", size_max=40, opacity=0.7
)
fig_overall_applicant.update_layout(height=800, width=1200, yaxis_tickformat='.0%')
fig_overall_applicant.add_vline(x=mean_x_applicant, line_width=1, line_dash="dash", line_color="gray")
fig_overall_applicant.add_hline(y=mean_y_applicant, line_width=1, line_dash="dash", line_color="gray")
fig_overall_applicant.show()
# --- 2. 各象限を個別に大きく描画 ---
print("\n--- [出願人マップ 出力2] 各象限を個別に拡大して描画中... ---")
quadrants_data_map_applicant = {q: analysis_df_applicant[analysis_df_applicant['象限'] == q] for q in quadrant_order_applicant}
for title, data in quadrants_data_map_applicant.items():
print(f"\n--- {title} ---")
if data.empty:
print("該当データなし")
continue
fig_quadrant_applicant = px.scatter(
data, x="累積出願件数", y="最近の出願比率",
log_x=True, title=title,
labels={"累積出願件数": "累積出願件数", "最近の出願比率": f"{applicant_target_year}年以降の出願比率"},
hover_name="出願人", hover_data={'累積出願件数': True, '最近の出願比率(%)': ':.1f', '最近の出願比率': False},
color="象限", category_orders={"象限": quadrant_order_applicant}, color_discrete_map=color_map_applicant,
size="累積出願件数", size_max=60
)
fig_quadrant_applicant.update_layout(height=800, width=1200, yaxis_tickformat='.0%', showlegend=True)
fig_quadrant_applicant.show()
# --- 3. 各象限の企業リストを表で出力&Excelファイルに保存 ---
print("\n--- [出願人マップ 出力3] 各象限の企業リストを出力します ---")
excel_path_applicant = 'applicant_positioning_list.xlsx'
with pd.ExcelWriter(excel_path_applicant, engine='xlsxwriter') as writer:
output_columns_applicant = ['出願人', '累積出願件数', '最近の出願比率(%)']
for title, data in quadrants_data_map_applicant.items():
print(f"\n--- {title} ---")
if data.empty:
print("該当データなし")
pd.DataFrame([["該当データなし"]], columns=[title]).to_excel(writer, sheet_name=title.split(':')[0], index=False)
continue
display_df_applicant = data[output_columns_applicant].sort_values(by=['最近の出願比率(%)', '累積出願件数'], ascending=[False, False])
excel_df_to_print_applicant = display_df_applicant.copy()
excel_df_to_print_applicant['最近の出願比率(%)'] = excel_df_to_print_applicant['最近の出願比率(%)'].map('{:.1f}%'.format)
print(excel_df_to_print_applicant.to_string(index=False))
display_df_applicant.to_excel(writer, sheet_name=title.split(':')[0], index=False)
print(f"\n[情報] 全リストをExcelファイルに保存しました!\nファイル名: {excel_path_applicant}")
else:
print("[エラー] 描画・リスト作成に必要なデータが見つかりません。ステップ3-1, 3-2を正しく実行したか確認してください。")
4. 技術分類(IPC)ポジショニングマップの作成
次に、「特許分類(IPC)」を分析軸として、特定の技術分野の動向をマップ化します。1つの特許に複数のIPCが付与されている場合にも対応します。
4-1. データ準備(IPCマップ用)
別途IPC分析用のCSVファイルを用意し、Colabの画面左側のフォルダアイコンからアップロードしてください。
CSVに必要なカラム:
IPC: 特許分類。複数ある場合は、セミコロン(;)で区切られた単一の文字列であること。(例: A61K 31/00; A61P 3/04)
出願日: 特許の出願年月日。
以下のコードでCSVファイルを読み込み、複数IPCのデータを適切に展開します。コードを実行する際は、コード中のCSVのファイル名を自身の設定したものに適宜変更してください。
# [IPCマップ] ステップ 4-1: データの読み込みと前処理
# 'your_ipc_data.csv' を、アップロードした実際のファイル名に書き換えてください。
try:
df_ipc = pd.read_csv('your_ipc_data.csv')
print("[情報] IPCデータCSVファイルの読み込みに成功しました。")
except FileNotFoundError:
print("[エラー] ファイルが見つかりません。ファイル名を正しく入力したか、ファイルがアップロードされているか確認してください。")
df_ipc = pd.DataFrame(columns=['出願日', 'IPC']) # エラー時も処理を続けるため
# --- データの前処理 ---
# 1. 日付データの変換
if '出願日' in df_ipc.columns:
df_ipc['出願日'] = pd.to_datetime(df_ipc['出願日'])
else:
print("[警告] '出願日' カラムが見つかりません。日付データがないと時間分析はできません。")
# 2. [重要] IPCデータの分割と展開
if 'IPC' in df_ipc.columns:
df_ipc['IPC'] = df_ipc['IPC'].fillna('') # 欠損値を空文字に
df_ipc['IPC'] = df_ipc['IPC'].str.split(';') # セミコロンで分割
df_ipc_exploded = df_ipc.explode('IPC') # IPCごとに展開
df_ipc_exploded['IPC'] = df_ipc_exploded['IPC'].str.strip() # 前後の空白を削除
df_ipc_exploded = df_ipc_exploded[df_ipc_exploded['IPC'] != ''] # 空白行を削除
print("[情報] IPCデータの展開処理が完了しました。")
print("\n展開後のIPCデータの一部:")
print(df_ipc_exploded.head())
else:
print("[エラー] 'IPC' カラムが見つかりません。CSVファイルの形式を確認してください。")
df_ipc_exploded = pd.DataFrame(columns=['出願日', 'IPC'])
4-2. IPCごとのデータ集計
展開したデータを使用し、「累積付与件数」と「最近の付与比率」を計算します。ここで、何年以降を「最近」と定義するのか指定してください。
# [IPCマップ] ステップ 4-2: IPCごとのデータ集計
# 何年以降を「最近」と定義するか設定
ipc_target_year = 2022
# 累積付与件数の計算
total_counts_ipc = df_ipc_exploded['IPC'].value_counts().reset_index()
total_counts_ipc.columns = ['IPC', '累積付与件数']
# target_year以降の付与件数の計算
recent_df_ipc = df_ipc_exploded[df_ipc_exploded['出願日'].dt.year >= ipc_target_year]
recent_counts_ipc = recent_df_ipc['IPC'].value_counts().reset_index()
recent_counts_ipc.columns = ['IPC', '最近の付与件数']
# 2つの集計データを結合
analysis_df_ipc = pd.merge(total_counts_ipc, recent_counts_ipc, on='IPC', how='left')
# 最近の付与がなかったIPCの欠損値を0で埋める
analysis_df_ipc['最近の付与件数'] = analysis_df_ipc['最近の付与件数'].fillna(0)
# 最近の付与比率を計算
analysis_df_ipc['最近の付与比率'] = analysis_df_ipc['最近の付与件数'] / analysis_df_ipc['累積付与件数']
# パーセント表示用の列も作成
analysis_df_ipc['最近の付与比率(%)'] = analysis_df_ipc['最近の付与比率'] * 100
print("[情報] IPCごとの指標計算が完了しました。")
print("\n集計結果のデータの一部:")
print(analysis_df_ipc.head())4-3. IPCマップと技術分類リストの出力
いよいよ、IPCマップとリストを出力します。以下のコードを実行すると、全体図、4枚の個別拡大図、そしてリスト(ノートブック上とExcelファイル)が順番に出力されます。
# [IPCマップ] ステップ 4-3: ポジショニングマップと技術分類リストの出力
if 'analysis_df_ipc' in locals() and not analysis_df_ipc.empty:
print("[情報] IPCマップの描画とリスト出力を開始します。")
# --- 象限の定義と色の統一設定 ---
mean_x_ipc = analysis_df_ipc['累積付与件数'].mean()
mean_y_ipc = analysis_df_ipc['最近の付与比率'].mean()
conditions_ipc = [
(analysis_df_ipc['累積付与件数'] >= mean_x_ipc) & (analysis_df_ipc['最近の付与比率'] >= mean_y_ipc),
(analysis_df_ipc['累積付与件数'] < mean_x_ipc) & (analysis_df_ipc['最近の付与比率'] >= mean_y_ipc),
(analysis_df_ipc['累積付与件数'] < mean_x_ipc) & (analysis_df_ipc['最近の付与比率'] < mean_y_ipc),
(analysis_df_ipc['累積付与件数'] >= mean_x_ipc) & (analysis_df_ipc['最近の付与比率'] < mean_y_ipc)
]
choices_ipc = ['右上:主要技術分野', '左上:注目技術分野', '左下:ニッチ・成熟技術分野', '右下:レガシー技術分野']
analysis_df_ipc['象限'] = np.select(conditions_ipc, choices_ipc, default='N/A')
# 象限の表示順と色を定義
quadrant_order_ipc = ['右上:主要技術分野', '左上:注目技術分野', '右下:レガシー技術分野', '左下:ニッチ・成熟技術分野']
colors_ipc = px.colors.qualitative.Plotly
color_map_ipc = {q: colors_ipc[i] for i, q in enumerate(quadrant_order_ipc)}
# --- 1. 全体図の描画 ---
print("\n--- [IPCマップ 出力1] 全体図を描画中... ---")
fig_overall_ipc = px.scatter(
analysis_df_ipc, x="累積付与件数", y="最近の付与比率",
log_x=True, title="IPCポジショニングマップ(全体図・インタラクティブ版)",
labels={"累積付与件数": "累積付与件数", "最近の付与比率": f"{ipc_target_year}年以降の付与比率"},
hover_name="IPC", hover_data={'累積付与件数': True, '最近の付与比率(%)': ':.1f', '最近の付与比率': False},
color="象限", category_orders={"象限": quadrant_order_ipc}, color_discrete_map=color_map_ipc,
size="累積付与件数", size_max=40, opacity=0.7
)
fig_overall_ipc.update_layout(height=800, width=1200, yaxis_tickformat='.0%')
fig_overall_ipc.add_vline(x=mean_x_ipc, line_width=1, line_dash="dash", line_color="gray")
fig_overall_ipc.add_hline(y=mean_y_ipc, line_width=1, line_dash="dash", line_color="gray")
fig_overall_ipc.show()
# --- 2. 各象限を個別に大きく描画 ---
print("\n--- [IPCマップ 出力2] 各象限を個別に拡大して描画中... ---")
quadrants_data_map_ipc = {q: analysis_df_ipc[analysis_df_ipc['象限'] == q] for q in quadrant_order_ipc}
for title, data in quadrants_data_map_ipc.items():
print(f"\n--- {title} ---")
if data.empty:
print("該当データなし")
continue
fig_quadrant_ipc = px.scatter(
data, x="累積付与件数", y="最近の付与比率",
log_x=True, title=title,
labels={"累積付与件数": "累積付与件数", "最近の付与比率": f"{ipc_target_year}年以降の付与比率"},
hover_name="IPC", hover_data={'累積付与件数': True, '最近の付与比率(%)': ':.1f', '最近の付与比率': False},
color="象限", category_orders={"象限": quadrant_order_ipc}, color_discrete_map=color_map_ipc,
size="累積付与件数", size_max=60
)
fig_quadrant_ipc.update_layout(height=800, width=1200, yaxis_tickformat='.0%', showlegend=True)
fig_quadrant_ipc.show()
# --- 3. 各象限のリストを表で出力&Excelファイルに保存 ---
print("\n--- [IPCマップ 出力3] 各技術分類(IPC)リストを出力します ---")
excel_path_ipc = 'ipc_positioning_list_by_app_date.xlsx'
with pd.ExcelWriter(excel_path_ipc, engine='xlsxwriter') as writer:
output_columns_ipc = ['IPC', '累積付与件数', '最近の付与比率(%)']
for title, data in quadrants_data_map_ipc.items():
print(f"\n--- {title} ---")
if data.empty:
print("該当データなし")
pd.DataFrame([["該当データなし"]], columns=[title]).to_excel(writer, sheet_name=title.split(':')[0], index=False)
continue
display_df_ipc = data[output_columns_ipc].sort_values(by=['最近の付与比率(%)', '累積付与件数'], ascending=[False, False])
excel_df_to_print_ipc = display_df_ipc.copy()
excel_df_to_print_ipc['最近の付与比率(%)'] = excel_df_to_print_ipc['最近の付与比率(%)'].map('{:.1f}%'.format)
print(excel_df_to_print_ipc.to_string(index=False))
display_df_ipc.to_excel(writer, sheet_name=title.split(':')[0], index=False)
print(f"\n[情報] 全リストをExcelファイルに保存しました!\nファイル名: {excel_path_ipc}")
else:
print("[エラー] 描画・リスト作成に必要なデータが見つかりません。ステップ4-1, 4-2を正しく実行したか確認してください。")
5. 結果の解釈とExcelファイルの利用
各マップの分析方法と、生成されたExcelファイルの活用方法について解説します。
5-1. グラフの分析方法
全体図: まず、全体マップで出願人またはIPCの分布を俯瞰し、業界全体の傾向を把握します。
個別拡大図: 各象限の個別マップをマウスで拡大・縮小し、詳細な情報を確認します。
出願人マップの場合
左上(注目企業群): 累積件数はまだ少ないものの、近年活発に出願している新規参入企業やスタートアップ、特定分野に注力し始めた企業などを発見できます。
右上(リーダー企業群): 従来から継続的に多数の出願を行う、業界の主要プレイヤーです。
IPCマップの場合
左上(注目技術分野): 累積件数は少ないものの、近年急速に関連特許が増加している、将来有望な技術分野や、新たな課題解決に取り組む技術分野を発見できます。
右上(主要技術分野): 従来から重要かつ、現在も活発に開発が続く、まさにコアとなる技術分野です。
5-2. Excelファイルのダウンロードと活用
分析結果の具体的なリストはExcelファイルとして出力されます。
ダウンロード方法:
Colab画面の左側にあるフォルダのアイコンをクリックします。
ファイル一覧に表示されている、目的のExcelファイルを見つけます。(出願人マップなら applicant_positioning_list.xlsx、IPCマップなら ipc_positioning_list_by_app_date.xlsx)
ファイル名の右側にある「︙」(縦の3点リーダー)をクリックし、「ダウンロード」を選択します。
活用方法:
ダウンロードしたExcelファイルには、象限ごとにシートが分かれて企業/IPCのリストが格納されています。
特に「左上:注目企業群」や「左上:注目技術分野」シートのリストは、競合分析、アライアンス先の検討、新規事業や技術トレンドの探索において、情報源となります。
いいなと思ったら応援しよう!
よろしければ応援お願いします。いただいたチップはクリエイターとしての研究開発の活動費に使わせていただきます!