258 Views
June 08, 25
スライド概要
博士(情報学)。2012年に修士号を取得した後、西日本電信電話株式会社に入社。プライベートクラウド基盤やアプリケーション開発を経験した後、様々な技術(NW、サーバ、クラウド、プログラミング)を組合せることで、データ活用を推進するためのプラットフォームを運営。2019年から社会人ドクターとして研究活動を行い、2023年に博士号を取得。「実社会に役立つデータ活用」を推進する技術者兼研究者。
© 2025 NTT West Corporation. All Rights Reserved. 統合資格分析ダッシュボード サービスを作ってみた話 Jagu'e'r Technical Summit 2025/5/26 高須賀 将秀
© 2025 NTT West Corporation. All Rights Reserved. 2 /16 自己紹介 たかすか まさひで 高須賀 将秀 博士(情報学)(2023/3) 研究分野:組合せ最適化,数理最適化,オペレーションズ・リサーチ(OR),グラフ理論 所属:NTT西日本 デジタル改革推進部(2021/8~), 法政大学 デザイン工学部 兼任講師(2024/4~),個人事業(Udemy講師等)(2024/6~) 業務:データドリブン経営を牽引する立場 ・データ活用基盤のシステム開発 ・データ分析手法の研究 ・データ分析活用事例の提案 ・デジタル人材育成 資格:クラウド資格(AWS 15/15,MCP 39/48,GCP 12/12), Microsoft Top Partner Engineer Award(2024), AWS All Certifications Engineers(2024) 高須賀将秀のホームページ
© 2025 NTT West Corporation. All Rights Reserved. 3 /16 私の研究(博論)内容 ◼ 与えられた全ての工事に対して立会者の割当を決定する問題である ◼ 移動距離や立会者のスキル等の様々な条件を考慮し割当を決定している ◼ 条件は万人共通の条件もあれば手配者の思考や嗜好によって異なるものもある 入力 出力 工事4 工事1 1 工事2 4 手配者 工事5 2 1 工事6 3 工事7 工事8 8 工事9 6 工事5 数理モデル 5 工事6 工事3 手配者 の思考/嗜好 = 7 工事2 4 2 5 工事3 立会者1~4 工事4 工事1 立会者4 3 工事7 立会者1 7 立会者2 工事8 ブラックボックス 化 8 工事9 9 9 立会者3 6
© 2025 NTT West Corporation. All Rights Reserved. 4 /16 私の研究(博論)内容 ◼ 高度な技能を有している手配者により意思決定が行われている工事立会者手配 業務に対し実用的な手配結果を算出可能な数理モデルを構築した 長期効果 短期効果 付随効果 過去の工事立会者手配業務 デジタルデータ活用による工事立会者手配業務 人件費 年間1億(関東エリア:年間6万件) 年間0.1億(関東エリア:年間6万件)(想定) 品質 年間工事事故5件 年間工事事故0件(想定) 総移動時間 11,424 s(3.2 h) 11,593 s(3.2 h)※1 総割当ペナルティ 163 pt 81 pt※1 手配時間 3時間2回/1日 5分×2回/1日 やり方 アナログ(手書き) デジタル 手配結果 ※1:数理モデル4で総移動時間を重視すると, 総合移動時間10,697 s, 総品質146 ptとなる.
© 2025 NTT West Corporation. All Rights Reserved. 5 /16 統合資格分析ダッシュボードとは • 複数の資格管理サービスを横断的に統合・分析できるサービス GCP Credly Accredible Azure 今回対象外 AWS https://st-app-credly-504242909255.asia-northeast1.run.app/ Lecos MS Learn ※検索結果データ(もともと公開データ)はSnowflakeにてデータ収集される旨ご了承ください BK plan Azure https://credly-data-analyzer.azurewebsites.net/ AWS https://credly-data-analyzer.49evafhcg41s4.ap-northeast-1.cs.amazonlightsail.com/
© 2025 NTT West Corporation. All Rights Reserved. 6 /16 利用方法 統合資格分析ダッ シュボード(GCP) • 各資格管理サービスのURLに表示されるユーザ名を打ち込む • 後程のデモで利用するため,ご協力お願いします! Username Credly Accredible Locos ★
© 2025 NTT West Corporation. All Rights Reserved. 7 /16 サービスを作ったきっかけ(モチベーション・課題) • 資格管理サービスが複数あり、管理しづらい 1 • 有効期限の管理 • そもそもどの資格を保持しているかの管理 2 • Credlyで発行機関順のソート機能がなくなり管理しづらい • 資格取得数が多く,ロードに時間がかかる(該当の資格を探すのに時間がかかる) 3 • ALL Certの提示時に困る • 取得した資格のデータ分析を行うことで次の資格取得のモチベーション向上 1 2 3 統合資格分析ダッ シュボード(GCP)
© 2025 NTT West Corporation. All Rights Reserved. アーキテクチャ 8 /16 統合資格分析ダッ シュボード(GCP) ・BigQueryのデータを用いてデータ 可視化(今回は未対象,Frontの Streamlitで実装) ・Cloud Run 利用 ・Scrapingでchromedriver利用 ・BigQueryへのデータ書き込みで各 種ライブラリ利用
© 2025 NTT West Corporation. All Rights Reserved. 9 /16 Cloud Run 統合資格分析ダッ シュボード(GCP) • Google Cloud ではCloud Shell を用いてクラウド環境のみで開発可能 • Cloud Shell からArtifact Registry にコンテナイメージをビルドし,Cloud Run にデプロイ Build app.py ・Streamlit GUI ・Scraping ・BigQuery書き込 み ・データ可視化 等 Run requirements.txt ・selenium ・webdrivermanager 等 Dockerfile ・chromedriver ・依存関係 等 Docker File Docker Image Docker Container
© 2025 NTT West Corporation. All Rights Reserved. 10 /16 Scraping 統合資格分析ダッ シュボード(GCP) ロード中
© 2025 NTT West Corporation. All Rights Reserved. サービス利用のデモ動画 11 /16 統合資格分析ダッ シュボード(GCP)
© 2025 NTT West Corporation. All Rights Reserved.
12 /16
BigQueryへのデータ書き込み
• 外部からBigQuery のウェアハウスにデータを書き込む
• プロジェクトID,データセットID,テーブルID,サービスアカウントキー(json)が必要
def get_fabric_connection():
try:
# プロジェクト情報の設定
project_id = ‘<PROJECT_ID>'
dataset_id = ‘<DATASET_ID>' # BigQueryではデータセットが必要
table_id = ‘<TABLE_ID>'
# フルパスでのテーブルID
full_table_id = f"{project_id}.{dataset_id}.{table_id}"
# カレントディレクトリにあるサービスアカウントキーファイルのパス
current_dir = os.path.dirname(os.path.abspath(__file__))
keyfile_path = os.path.join(current_dir, “xxx.json")
# サービスアカウントの認証情報を読み込む
credentials = service_account.Credentials.from_service_account_file(
keyfile_path,
scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
# 認証情報を使用してBigQueryクライアントを初期化
client = bigquery.Client(
project=project_id,
credentials=credentials
)
# サンプルデータを準備
rows_to_insert = [
{
"id": "user1",
"name": "Sample User 1",
"email": "[email protected]",
"created_at": timestamp_str
},
{
"id": f"auto_{int(time.time())}",
"name": f"Auto Generated User at {timestamp_str}",
"email": "[email protected]",
"created_at": timestamp_str
}
]
try:
# データをテーブルに挿入
errors = client.insert_rows_json(table, rows_to_insert)
if errors == []:
print("サンプルデータを正常に挿入しました")
else:
print(f"データ挿入中にエラーが発生しました: {errors}")
統合資格分析ダッ
シュボード(GCP)
© 2025 NTT West Corporation. All Rights Reserved. まとめ • 統合資格分析ダッシュボードサービスとそのアーキテクチャ,構築方法につ いて解説した • Cloud Run を用いたサービスのデプロイ方法について解説した • 外部からBigQuery のウェアハウスにデータを書き込む方法について解説 した • 次回,数理最適化×クラウド(Google Cloud,BigQuery)を活用 した話に乞うご期待! 13 /16