JPStartupPageVSCode 用のカスタムスタートページ拡張。フォルダを開いていないウィンドウの起動時に、自分のプロジェクトフォルダ(既定: 機能
設定(settings.json / Settings Sync で全マシンに同期される)
「最近開いた」履歴は各マシンのローカル(globalState)に保存され、同期されない(マシンごとに作業が違うため意図的)。
|
| 区間 | onStartupFinished |
"*" |
|---|---|---|
| host 起動 → extension.js ロード | 1013 ms | 739 ms |
| ロード → activate(順番待ち) | 866 ms | 8〜22 ms |
| 拡張のコード全部 | 104 ms | 107 ms |
| 合計 | 1984 ms | 869 ms |
onStartupFinished は「他の拡張の後に並ぶ」宣言のため、コードが1行も動く前に約1.9秒を失っていた。"*" にすると順番待ちがほぼ消え、約1.1秒(56%)短縮。
警告が想定するリスク(重い拡張が全ウィンドウの起動を遅らせる)には該当しない。本体は約6KB、activate は即座に戻り、フォルダを開いているウィンドウでは webview すら生成しない。
なお残り時間の85%は「host 起動 → extension.js ロード」(739 ms)で、これは VSCode が extension host を立ち上げて拡張をスキャンし終えるまでの時間。拡張側からは手が出せないため、コードの最適化はここで打ち止め。scanProjects は76件で 3.5〜5.2 ms しかかかっておらず、最適化しても無意味(実測で確認済み)。
開発
npm install
npm run compile # TypeScript コンパイル
npm run watch # 監視コンパイル
VSCode でこのフォルダを開いて F5(拡張機能開発ホスト)で動作確認。
インストール(VSIX)
npm run install-local # コンパイル → VSIX 生成 → この VSCode にインストール(一発)
VSCode から実行する場合は ⌘⇧P →「Tasks: Run Task」→「npm: install-local」。 インストール後はウィンドウをリロード(⌘⇧P →「Developer: Reload Window」)すると反映される。
個別に実行したい場合:
npm run package # jpstartuppage-x.y.z.vsix を生成
code --install-extension jpstartuppage-*.vsix --force
複数マシンへの配布
現状は GitHub 公開リポジトリ+VSIX の手動インストール。各マシンで clone して npm install && npm run install-local すればよい。
将来的に VS Code Marketplace に公開すれば、Settings Sync の拡張同期で全マシンに自動インストール・自動更新される(要 Azure DevOps パブリッシャー登録)。その際は package.json の "private": true を外す必要がある(現状は誤って publish しないための保険として残している)。
ライセンス
MIT License — Copyright (c) 2026 Junpei Wada