Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>DevInsightsNew to Visual Studio Code? Get it now.
DevInsights

DevInsights

DevInsights

|
66 installs
| (0) | Free
Metrics, insights, and time tracking automatically generated from your programming activity.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DevInsight - コーディング時間追跡 & Discord ランキングシステム

📋 概要

DevInsightは、開発者のコーディング時間を自動追跡し、週次でDiscordにランキングを投稿するシステムです。VSCode拡張機能とGCP Cloud Runサービスで構成され、完全無料枠内で運用可能です。

🏗️ アーキテクチャ

┌─────────────────┐
│  VSCode Editor  │
│   [Extension]   │
└────────┬────────┘
         │ HTTP POST (coding data)
         ↓
┌─────────────────┐     ┌──────────────┐
│  Cloud Run      │────→│   Datastore  │
│  (Ingestion)    │     │   (NoSQL)    │
└─────────────────┘     └──────┬───────┘
                               │
     ┌─────────────────────────┼─────────────────────┐
     │                         │                     │
     ↓                         ↓                     ↓
┌──────────┐          ┌──────────┐          ┌──────────┐
│Cloud Run │          │Cloud Run │          │Cloud Run │
│(Ranking) │          │ (Label)  │          │ (Delete) │
└────┬─────┘          └────┬─────┘          └──────────┘
     │                     │                      
     ↓                     ↓                 
┌──────────────────────────────┐
│        Discord Server        │
│  ・Weekly Rankings           │
│  ・Role Labels               │
└──────────────────────────────┘

⏰ Cloud Scheduler
  - 毎週月曜 4:00 AM: ランキング生成
  - 毎週月曜 4:15 AM: ラベル付与

🚀 GCP サービス構成

サービス 説明 エンドポイント
Ingestion Service VSCodeからのデータ受信 https://devinsight-ingestion-*.run.app
Ranking Service 週次ランキング生成 https://devinsight-ranking-*.run.app
Label Service Discordロール管理 https://devinsight-label-*.run.app
Delete Service 古いデータ削除 https://devinsight-delete-*.run.app

使用技術

  • Cloud Run: サーバーレスコンテナ実行環境
  • Datastore: NoSQLデータベース(無料枠)
  • Cloud Scheduler: 定期実行ジョブ
  • Cloud Build: 自動ビルド・デプロイ

📦 VSCode 拡張機能

インストール方法

Marketplaceから(推奨)

  1. VSCode拡張機能ストアを開く(Ctrl/Cmd + Shift + X)
  2. 「DevInsights」を検索
  3. インストールボタンをクリック

VSIXファイルから

code --install-extension vscode-DevInsights-27.0.0.vsix

初期設定

  1. Discord IDを設定

    • コマンドパレット(Cmd+Shift+P)
    • 「DevInsights: Input Discord unique Id」を選択
    • Discord IDを入力(18-19桁の数字)

    Discord IDの取得方法:

    • Discord設定 → 詳細設定 → 開発者モードを有効化
    • ユーザー名を右クリック → 「IDをコピー」

🛠️ デプロイ・管理スクリプト

1. deploy-to-gcp-free.sh

完全無料デプロイスクリプト - Container Registryを使用せずにデプロイ

# プロジェクトIDを設定してデプロイ
export GCP_PROJECT_ID=your-project-id
./deploy-to-gcp-free.sh

特徴:

  • --source フラグでソースから直接デプロイ
  • Container Registry不要(料金発生なし)
  • すべてのサービスを一括デプロイ

2. env-manager.sh

環境変数管理ツール - .envファイルとCloud Runサービスの環境変数を同期

# .envファイルから環境変数をアップロード
./env-manager.sh upload

# 現在の環境変数を表示
./env-manager.sh show

# Cloud Runから環境変数をダウンロード
./env-manager.sh download

3. setup-cloud-scheduler.sh

Cloud Scheduler設定 - 週次実行ジョブを設定

./setup-cloud-scheduler.sh

設定内容:

  • ランキング: 毎週月曜 4:00 AM JST
  • ラベル付与: 毎週月曜 4:15 AM JST

4. deploy-ingestion.sh

データ取り込みサービス専用デプロイ - VSCode拡張機能用エンドポイント

./deploy-ingestion.sh

⚙️ セットアップ手順

前提条件

  • GCPプロジェクト作成済み
  • gcloud CLI インストール済み
  • Discord Bot作成済み

1. 環境変数の設定

.envファイルを作成(.env.exampleを参考):

cp .env.example .env
# エディタで.envを編集

必要な環境変数:

  • DISCORD_TOKEN: Discord Botトークン
  • DISCORD_CHANNEL_ID: 投稿先チャンネルID
  • DISCORD_GUILD_ID: サーバーID
  • GCP_PROJECT_ID: GCPプロジェクトID

2. GCP認証とプロジェクト設定

# GCPにログイン
gcloud auth login

# プロジェクト設定
gcloud config set project your-project-id

# 必要なAPIを有効化
gcloud services enable run.googleapis.com
gcloud services enable firestore.googleapis.com
gcloud services enable cloudscheduler.googleapis.com

3. Datastoreデータベース作成

gcloud firestore databases create \
  --location asia-northeast1 \
  --type=datastore-mode

4. サービスのデプロイ

# すべてのサービスをデプロイ
./deploy-to-gcp-free.sh

# 環境変数をアップロード
./env-manager.sh upload

# スケジューラーを設定
./setup-cloud-scheduler.sh

5. 動作確認

# ヘルスチェック
curl https://your-ranking-service.run.app/health

# 手動実行テスト
gcloud scheduler jobs run devinsight-ranking-schedule \
  --location=asia-northeast1

📊 データフロー

  1. データ収集

    • VSCode拡張機能がコーディング時間を検出
    • 5分ごとにIngestion ServiceへHTTP POST
  2. データ保存

    • Ingestion ServiceがDatastoreに保存
    • スキーマ: discord_id, timestamp, language
  3. 週次処理

    • Cloud Schedulerが月曜4時に起動
    • 過去1週間のデータを集計
    • Discordにランキング投稿

🎯 特徴

  • ✅ 完全無料運用 - GCP無料枠内で動作
  • ✅ 自動化 - Cloud Schedulerで完全自動実行
  • ✅ 言語別集計 - プログラミング言語ごとの時間追跡
  • ✅ リアルタイム - コーディング中に自動でデータ送信
  • ✅ セキュア - 環境変数でトークン管理
  • ✅ スケーラブル - Cloud Runの自動スケーリング

💰 コスト

すべてGCP無料枠内:

  • Cloud Run: 200万リクエスト/月まで無料
  • Datastore: 1GB/日まで無料
  • Cloud Scheduler: 3ジョブまで無料
  • Cloud Build: 120分/日まで無料

予算アラート設定済み($1上限)

🔒 セキュリティ

  • Discord トークンは環境変数で管理
  • .envファイルはGitignoreに追加
  • Cloud Run サービスは認証不要(public)
    • ※本番環境では認証追加を推奨

🐛 トラブルシューティング

Discord認証エラー

# エラー: websocket: close 4004: Authentication failed
# 解決: Discord Botトークンを再生成して更新
./env-manager.sh upload

デプロイエラー

# Cloud Build権限エラーの場合
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/run.developer"

ログの確認

# サービスログ
gcloud run services logs read SERVICE_NAME \
  --region asia-northeast1 \
  --limit 50

# Scheduler実行履歴
gcloud scheduler jobs describe JOB_NAME \
  --location asia-northeast1

📝 ライセンス

MIT License

🤝 コントリビューション

Issue や Pull Request 歓迎です!

📧 サポート

問題が発生した場合は、Issues でお知らせください。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft