AI活用で新卒が学ぶ VS Codeショートカット最短入門(Win/Mac対応)+応用:毎朝3問クイズで定着
先に結論
- 導入:作業効率を上げたい!VS Codeのショートカットを学ぼう!
- 応用:定着のための「クイズ」を簡単に作ってみた!
- まとめ:ショートカットは作業効率を上げるために必要!初めは定着させることの意識が大事!
導入
便利なツールやショートカットは山ほどありますが、「存在を知らなかった」「使わなくても困らなかった」という理由で活用できていないこと、ありますよね。僕も例外ではありません。
ただ、AIを含む技術進化が加速するいま、この差は作業効率に直結します。放置はマズい――そう感じた僕は、VS Codeのショートカットを題材に、効率を上げる具体的な方法と、覚えて定着させる仕組みまでまとめました。
一緒に“知って終わり”でなく“使い続けられる”形で習得していきましょう。
ショートカットや便利なツールで少しでも作業効率を上げて、成長しよう。 小さな時短を“毎日1つ”積み重ねていきます。
1. ナビゲーション & 検索
-
コマンドパレット:
Ctrl+Shift+P / Cmd+Shift+P
-
行にジャンプ:
Ctrl+P / Cmd+P
—:
で行番号、@
でシンボル -
シンボルへ:
Ctrl+Shift+O / Cmd+Shift+O
-
定義へ移動 / 参照を探す:
F12
/Shift+F12
(Alt/Option+F12
で覗き見) -
全体検索/置換:
Ctrl+Shift+F / Cmd+Shift+F
、Ctrl+Shift+H / Cmd+Shift+H
(正規表現.*
可)
2. 編集の“時短”技
-
行の移動:
Alt+↑↓ / Option+↑↓
(選択不要で行ごとスライド) -
行の複製:
Shift+Alt+↓ / Shift+Option+↓
-
行の削除:
Ctrl+Shift+K / Cmd+Shift+K
-
複数カーソル(次の一致):
Ctrl+D / Cmd+D
(連打で次々追加) -
矩形選択(カラム選択):
Shift+Alt+ドラッグ / Option+Shift+ドラッグ
-
単語選択の拡張:
Shift+Alt+→ / Shift+Option+→
-
単語選択の縮小:
Shift+Alt+← / Shift+Option+←
-
クイック修正(電球):
Ctrl+. / Cmd+.
(インポート追加・未使用削除・型修正など)
3. マルチペイン & ターミナル
-
エディタ分割:
Ctrl+\\ / Cmd+\\
→Ctrl/Cmd+1/2/3
でペイン切替 -
サイドバー切替:
Ctrl+B / Cmd+B
(表示/非表示) -
統合ターミナルの表示/非表示:
Ctrl+` / Cmd+`
-
パネル全体の表示/非表示:
Ctrl+J / Cmd+J
4. Git & 差分(実務に効く)
-
ソース管理ビューを開く:
Ctrl+Shift+G / Cmd+Shift+G
変更ファイル一覧→Enter
で差分ビューが開きます(左=ベース、右=作業中)。 -
選択範囲だけステージ(粒度細かくコミットしたい)
差分ビューで範囲選択 → 右クリック 「選択範囲をステージ」
(迷ったら“全部”ではなく意味単位でステージ) -
1ファイルだけぱっと比較
エクスプローラーでそのファイルを選択 → 右クリック 「変更を表示」
あるいはCtrl/Cmd+P
→> Open Changes
で現在編集中の差分を開く。 -
2ファイルの差分をとる(開かず比較)
エクスプローラーで2つ選択(Ctrl/Cmd + クリック
)→ 右クリック 「差分の比較」
もしくはCtrl/Cmd+P
→> Compare Active File With...
-
コミット・プッシュを最短で
ソース管理ビューでメッセージ入力 →Ctrl/Cmd+Enter
(コミット)
右上の「…」→ Push(初回はリモート設定を案内してくれます) -
直前コミットを“メッセージだけ”修正(amend)
Ctrl/Cmd+Shift+P
→ Git: Amend Last Commit → メッセージ編集
※ 共有ブランチでは push 前だけ。push 後はrevert
が安全 -
ファイルの履歴を見る(タイムライン)
対象ファイルを開く → エクスプローラー下部の Timeline → 過去コミットを選ぶ
差分・復元がそのまま可能 -
衝突(コンフリクト)解消の基本
コンフリクト行に出るボタンで Accept Current / Incoming / Both を選択
迷ったら一旦 Both → 手で整形 → 保存(Ctrl/Cmd+S
)
さらに詳しく:注釈(blame)や詳細履歴が必要なら拡張機能 GitLens を導入。
Ctrl/Cmd+Shift+X
→ GitLens を検索 → インストール。
5. Markdown & 便利表示
-
Markdownプレビュー:
Ctrl+Shift+V / Cmd+Shift+V
(Splitと併用が快適) -
全画面切替:
F11
(MacはCtrl+Cmd+F
)
応用:ショートカット定着のための「3問クイズ」
なぜ Slack で一問一答?
僕はもっとも目にする場所=Slackに、ショートカットの一問一答クイズを軽く実装して定着を狙いました。ポイントは「勉強の場に行く」のではなく、日常で必ず開く場所に“出題が来る”ようにすることだと思っています。
-
狙い:想起頻度を上げて 「使う → 覚える」 を回す
→ 学習は 想起の回数がすべて。
💡 結論:定着が目的なら、一番使う場所に超小さく・繰り返し仕込むのが最短。
Slackで毎日1問・30秒で回す——これだけで 「知ってるけど使わない」 を抜け出せます!
-
運用のコツ
- 1日1問、30秒で終わる粒度にする
- 同じテーマを数日連続で変奏(近似問)
- 週末に**総復習(3問)**を流す
A. macOS ワンコピペ(bash)
# === Login Quiz (macOS) 一発セットアップ ===
bash
set -euo pipefail
DEST="$HOME/LoginQuiz"; AGENTS="$HOME/Library/LaunchAgents"; PLIST="$AGENTS/com.example.loginquiz.plist"
mkdir -p "$DEST" "$AGENTS"
# 1) クイズ本体
cat > "$DEST/login_quiz.py" <<'PY'
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys, json, random, urllib.request, ssl
WEBHOOK=os.environ.get("SLACK_WEBHOOK_URL","")
QS=[
"コマンドパレットは?(Win: Ctrl+Shift+P / Mac: Cmd+Shift+P)",
"複数カーソルは?(Win: Ctrl+D / Mac: Cmd+D)",
"電球のショートカットは?(Win: Ctrl+. / Mac: Cmd+.)",
"全体検索は?(Win: Ctrl+Shift+F / Mac: Cmd+Shift+F)",
"行の上下移動は?(Win: Alt+↑↓ / Mac: Option+↑↓)",
]
random.shuffle(QS); qs=QS[:3]
def post(url, qs):
if not url: return
text="☀️ *今日のウォームアップ(3問)*\n"+"\n".join(f"*Q{i+1}.* {q}" for i,q in enumerate(qs))
data=json.dumps({"text":text}).encode("utf-8")
req=urllib.request.Request(url,data=data,headers={"Content-Type":"application/json"})
try: urllib.request.urlopen(req, context=ssl.create_default_context(), timeout=10)
except Exception as e: print("Slack投稿失敗:",e, file=sys.stderr)
if __name__=="__main__":
print("【今日のウォームアップ(3問)】"); [print(f"Q{i+1}. {q}") for i,q in enumerate(qs)]
post(WEBHOOK, qs)
PY
chmod +x "$DEST/login_quiz.py"
# 2) LaunchAgent(ログイン時に起動)
cat > "$PLIST" <<PL
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.loginquiz</string>
<key>ProgramArguments</key><array><string>/usr/bin/python3</string><string>$HOME/LoginQuiz/login_quiz.py</string></array>
<key>RunAtLoad</key><true/>
<key>EnvironmentVariables</key><dict>
<!-- Webhook を自分のURLに置き換えてください -->
<key>SLACK_WEBHOOK_URL</key><string>https://hooks.slack.com/services/XXX/YYY/ZZZ</string>
</dict>
<key>StandardOutPath</key><string>$HOME/LoginQuiz/quiz.log</string>
<key>StandardErrorPath</key><string>$HOME/LoginQuiz/quiz.err</string>
</dict></plist>
PL
# 3) 有効化&テスト
launchctl unload "$PLIST" 2>/dev/null || true
launchctl load "$PLIST"
python3 "$DEST/login_quiz.py" --console 2>/dev/null || true
echo "✅ 完了。Slackに出ない場合は PLIST の Webhook を確認してください。"
置き換えポイント:
SLACK_WEBHOOK_URL
のXXX/YYY/ZZZ
を実際のURLに。
B. Windowsワンコピペ(Python検出つき・コピー用)
💡 Windowsでは PowerShellは標準搭載ですが、Pythonは未搭載のことが多いです。下のスニペットは Pythonを自動検出し、未導入なら winget/Store の案内を出して安全に止まります。
# === Login Quiz (Windows) 一発セットアップ(Python検出つき) ===
$ErrorActionPreference = "Stop"
$Dest = Join-Path $env:USERPROFILE "LoginQuiz"
New-Item -ItemType Directory -Force -Path $Dest | Out-Null
# 0) Python が無ければ案内(winget or Store)
$py = (Get-Command python -ErrorAction SilentlyContinue) -or (Get-Command py -ErrorAction SilentlyContinue)
if (-not $py) {
Write-Host "⚠️ Python が見つかりません。winget でインストールする場合:" -ForegroundColor Yellow
Write-Host " winget install -e --id Python.Python.3" -ForegroundColor Cyan
Write-Host "または Microsoft Store から『Python 3.x』をインストール後、再実行してください。" -ForegroundColor Cyan
exit 1
}
# 1) クイズ本体
@'
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys, json, random, urllib.request, ssl
WEBHOOK=os.environ.get("SLACK_WEBHOOK_URL","")
QS=[
"コマンドパレットは?(Win: Ctrl+Shift+P / Mac: Cmd+Shift+P)",
"複数カーソルは?(Win: Ctrl+D / Mac: Cmd+D)",
"電球のショートカットは?(Win: Ctrl+. / Mac: Cmd+.)",
"全体検索は?(Win: Ctrl+Shift+F / Mac: Cmd+Shift+F)"
]
random.shuffle(QS); qs=QS[:3]
def post(url, qs):
if not url: return
text="☀️ *今日のウォームアップ(3問)*\n" + "\n".join(f"*Q{i+1}.* {q}" for i,q in enumerate(qs))
data=json.dumps({"text":text}).encode("utf-8")
req=urllib.request.Request(url,data=data,headers={"Content-Type":"application/json"})
try: urllib.request.urlopen(req, context=ssl.create_default_context(), timeout=10)
except Exception as e: print("Slack投稿失敗:",e, file=sys.stderr)
if __name__=="__main__":
print("【今日のウォームアップ(3問)】")
for i,q in enumerate(qs,1): print(f"Q{i}. {q}")
post(WEBHOOK, qs)
'@ | Set-Content -Path (Join-Path $Dest "login_quiz.py") -Encoding UTF8
# 2) 起動用スクリプト(Webhook をここに設定)
@'
$env:SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# 'py -3' 優先、無ければ 'python'
$py = Get-Command py -ErrorAction SilentlyContinue
if ($py) { py -3 -u "$env:USERPROFILE\LoginQuiz\login_quiz.py" } else { python -u "$env:USERPROFILE\LoginQuiz\login_quiz.py" }
'@ | Set-Content -Path (Join-Path $Dest "run_quiz.ps1") -Encoding UTF8
# 3) 実行ポリシー(初回のみ必要な場合あり)
try { Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force } catch {}
# 4) テスト実行
powershell -ExecutionPolicy Bypass -File "$Dest\run_quiz.ps1"
Write-Host "✅ 完了。Slackに出ない場合は run_quiz.ps1 の URL を確認してください。"
置き換えポイント:
run_quiz.ps1
内のSLACK_WEBHOOK_URL
をあなたのURLにしてください。
セットアップ(macOS/Windows 概要)
-
macOS
-
bash mac_install.sh
(上のワンコピペを使う場合は不要) -
~/Library/LaunchAgents/com.example.loginquiz.plist
の EnvironmentVariables に
SLACK_WEBHOOK_URL
を追加 -
launchctl unload/load
で再読み込み - 動作確認:
python3 ~/LoginQuiz/login_quiz.py --console
-
-
Windows
-
powershell -ExecutionPolicy Bypass -File .\windows_install.ps1
(上のワンコピペで代替可) -
notepad "$env:USERPROFILE\LoginQuiz\run_quiz.ps1"
を開き、
$env:SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
を設定 - 動作確認:
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\LoginQuiz\run_quiz.ps1"
-
毎朝9:00(平日)にも投稿したい場合や、Webhookの発行とテストは下の「2) Slack投稿を有効化(任意)」と付録を参照。
成功例
2) Slack投稿を有効化(任意)—超具体手順(macOS / Windows)
3問クイズを Slackの指定チャンネルにも投稿します。最短ルートは Incoming Webhook です(Botトークンでも可)。
2-1. Webhook URL を発行(共通)
- Slack左サイドバー Apps → Incoming Webhooks を追加
- Add to Slack → 投稿先チャンネルを選び Allow
- 表示された Webhook URL をコピー(例:
https://hooks.slack.com/services/XXX/YYY/ZZZ
)
発行の詳細手順と
curl
での動作テストは、付録の「Incoming Webhook の発行手順」を参照。
2-2. macOS:LaunchAgent に Webhook を登録
- 設定ファイルを開く
open -e ~/Library/LaunchAgents/com.example.loginquiz.plist
-
<key>EnvironmentVariables</key>
の<dict> ... </dict>
内に、Webhook をコメント無しで追記
※
<!-- ... -->
でコメントアウトしないこと /~
は稀に展開されないので極力絶対パスが安全
<key>EnvironmentVariables</key>
<dict>
<key>LOGIN_QUIZ_TOPICS</key><string>git,vscode,regex</string>
<key>LOGIN_QUIZ_LEVEL</key><string>easy</string>
<key>SLACK_WEBHOOK_URL</key>
<string>https://hooks.slack.com/services/XXX/YYY/ZZZ</string>
</dict>
- 再読み込み(必須)
launchctl unload ~/Library/LaunchAgents/com.example.loginquiz.plist
launchctl load ~/Library/LaunchAgents/com.example.loginquiz.plist
- 即時テスト(ログイン待たずに起動)
launchctl kickstart gui/$UID/com.example.loginquiz
注意:
python3 ~/LoginQuiz/login_quiz.py
を手動実行しても、plistの環境変数は使われません。手動テスト時は下のようにURLを直渡ししてください。
SLACK_WEBHOOK_URL='https://hooks.slack.com/services/XXX/YYY/ZZZ' python3 ~/LoginQuiz/login_quiz.py --console
2-3. Windows:PowerShell 起動スクリプトに Webhook を登録
- 起動スクリプトを開く
notepad "$env:USERPROFILE\LoginQuiz\run_quiz.ps1"
- Webhook行をアンコメントして、URLを入れる
$env:SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
- 保存 → 即時テスト(ログオン待たずに)
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\LoginQuiz\run_quiz.ps1"
まとめ
- ショートカットは作業効率を上げるために必要!初めは定着させることの意識が大事!
- 今回は「Slack」を使用。ただ、個々人の環境に合わせて「一番使う場所」に設定が必要!
- ショートカットや便利なツールで少しでも作業効率を上げる!手数を減らして成長を増やす!
次回は、定着のフレームワークと、現場で役立つツールを実例とともに解説しようと思ってます!
付録:Slack「Incoming Webhook」の発行手順(超具体的)
ゴール:
https://hooks.slack.com/services/XXX/YYY/ZZZ
のURLを手に入れる
※ 会社のポリシーで制限されている場合は、管理者承認が必要になることがあります。
方法A:Appディレクトリから一発で発行(最短)
-
Slackを開く → 左の その他 → ツール をクリック
-
App をクリック
-
検索に Incoming Webhooks と入力してインストール
-
Slack に追加をクリック
-
投稿先チャンネルを選択
-
表示された Webhook URL をコピー
- 形式:
https://hooks.slack.com/services/XXX/YYY/ZZZ
- 以後、このURLにJSONをPOSTすると、そのチャンネルに投稿されます
- 形式:
もし「管理者の承認が必要」と出たら、承認を依頼してください。
動作テスト(必ず実行)
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Webhookテスト 👋"}' \
'https://hooks.slack.com/services/XXX/YYY/ZZZ'
- チャンネルに「Webhookテスト 👋」が出ればOK
- 出ない場合:URLミス/承認待ち/ネットワーク制限を確認
よくあるハマりどころ
- どのチャンネルに投稿される? → Webhookは作成時に選んだチャンネルに固定。別チャンネルに出したいときは新しくWebhookを発行します。
- URLをなくした/見つからない → Incoming Webhooksアプリの設定画面に一覧が出ます。
- URLが漏れたかも → 該当のWebhookをRotate(再生成)または削除して新しいURLを作成する必要があります。
-
会社のプロキシ/証明書でPOSTに失敗 → スクリプト側は
curl
優先にすると通りやすいです。必要ならHTTPS_PROXY
を設定。
Discussion