便利な開発環境設定とショートカット【Win11 / VSCode / Python】

# はじめに (経緯と目的)
こんにちは、 @yomo93 です。
私の研究室では私を含む全ての所属学生がPythonによって研究・開発に取り組んでいます。例年、新規で配属される学生はPythonに慣れていないことが多いので、研究室全体の開発環境は[WinPython](https://winpython.github.io)または[Anaconda](https://www.anaconda.com/download)が推奨されてきました。
しかし、今年は方針転換があり、推奨エディタを[VSCode(Visual Studio Code)](https://code.visualstudio.com/download)にすることになりました。
そこで、研究や[お笑いWebサービス 「Tendon」](https://tendon-psi.vercel.app)開発[^1]でVSCodeを使用してきた私が**おすすめの拡張機能等を研究室のメンバー向けに紹介しよう**と思います。ただ、私も何気なく使っていたり、この記事を書くにあたって発見したものも多かったため、探り探りの部分があることもご承知ください。

[^1]: [【チーム開発】お笑いWebサービス「Tendon」を公開します！　〜一般編〜](https://qiita.com/yomo93/items/39f7c4e7bdf78f84de1e)

::: note warn
#### 注意
* この記事は開発経験のない初心者向けです。
* この記事の内容は主に**Python開発**に沿っています。
* OSは主に**Windows 11**を対象としています(一部<font color="blue">Raspberry Pi</font>や<font color="blue">Jetson</font>にも触れています)
:::

# ショートカット
PC操作(Windows11)やVSCodeでの開発に必修または便利なショートカットについ紹介します。

## PC全般で使用できる
WindowsにもLinux, Macにもたくさんコマンドがあります。今回はWindowsに絞っていますが、以下のコマンドは使用頻度が非常に高いので必ず覚えておきましょう。なお、これが全てではありません。私も知らない便利ショトカはたくさんあると思うのでコメント等でご紹介いただけると幸いです(この記事を書く中で知ったものも実は多い...)。

キー|動作|重要度
---|---|---
`Ctrl+C`|選択範囲をコピー <br> ターミナルなどではプログラムの強制終了|高
`Ctrl+V`|貼り付け <br> PC全般で使用可|高
`Ctrl+X`|選択範囲を切り取り|高
`Ctrl+Z`|操作を元に戻す|高
`Ctrl+Y` or <br>`Ctrl+Shift+Z`|取り消した操作を復活 |高
`Ctrl+S`|ファイルを保存|高
`Ctrl+A`|全選択|高
`Ctrl+クリック`|複数ファイルの選択|高
`Win+E`|エクスプローラを開く|高
`Win+PrintScreen`|スクリーンショットを撮影|高
`Win+Shift+S`|範囲を選択したスクリーンショットを撮影|高
`Ctrl+O`|ファイルを開く|
`Ctrl+N`|新規ウィンドウを開く|


#### 参考サイト
* [Windows 11 - ショートカットキーの早見表（まとめ）](https://pc-karuma.net/windows-11-keyboard-shortcuts-list/)

## VSCodeで使用できる
PC全般で使えるショートカットと同じものも多いのでそれらは省略します。

キー|動作|重要度
---|---|---
`Ctrl+Shift+P`<br> or `F1`|コマンドパレットを開く|高
`Ctrl+P`|ファイル名を指定して開く|
`Ctrl+Shift+N`|新規ウィンドウを開く|高
`Ctrl+Shfit+W`|ウィンドウを閉じる|
`Ctrl+,`|ユーザ設定を開く|高
`Ctrl+N`|新規ファイルを開く|高
`Ctrl+B`|サイドバーの開閉|高
`Ctrl+Shift+X`|拡張機能ビューを開く|
`Ctrl+ \`|エディタの分割|
`Ctrl+Tab`|タブの切り替え|高
`Ctrl+ /`|1行ずつコメントアウト|高
`Shift+Alt+A`|複数行コメントアウト|高
`Shift+Alt+N`|[拡張機能Cude Runner](#3-code-runner)が必要 <br> プログラム実行|高
`Ctrl+K`&`Ctrl+S`|ショートカット一覧を開く|

::: note warn
#### 今後追記していきます。
私自身もまだあまりVSCodeショートカットに慣れていないので今後追加していこうと思います。重要度も主観です、「これもっと高いだろ！」とかあれば教えてください。
:::

#### 参考サイト
* [【Windows版】VS Code キーボードショートカット一覧 （オススメ付き） - Qiita](https://qiita.com/TakahiRoyte/items/cdab6fca64da386a690b)
* [【VSCode】まずはこれを覚えよう！初心者のためのショートカット２９選！【Mac/Win】](https://skillhub.jp/blogs/234)

# VSCode 設定

主にPython用のlinterとformatterの設定とコード自動整形についての設定です。

## linterとformatterとは
以下の参考記事から要約すると、
* linter: コードの動作上は問題ないが、いいコードにするために推奨された書き方に合致しているか確認するツールです。
* formatter: プログラムの動作ではなく見た目に関わるコードのスタイルをチェックするツールです。主に自動修正が目的です。

#### 参考記事
* [Pythonのコードフォーマッターについての個人的ベストプラクティス - Qiita](https://qiita.com/sin9270/items/85e2dab4c0144c79987d)

## linterとformatter 環境構築
以下の記事(詰まったらコメント欄も)がPython向けのlinterとformatterの環境構築に便利そうです。
linterは`black`、formatterは`flake8`、`isort`をインストールする手順です。
ただ、実際に構築してみると`black`と`flake8`、`isort`はVSCode本体で拡張機能があったので、それをインストールしなければいけなさそうです。
`mypy`はよくわからなかったので調査し次第追記します。

~~ただ、これらのlinterとformatterは文字数制限やインデントの認識等ちょっとうるさいです。~~ 
最初はエラーめっちゃ出てうるさいと思いましたが、それは自分が汚いコードを書いているだけ。好みはあるでしょうが、まずはlinterの指示に従うことが大事な気がしてきました。

好みはあると思いますが…
例えば、以下の例を見ると`NG`の方がコード上はきれいに見えると私は思っています。この辺も詳細設定で変えられるとは思うので調査し次第追記します。

``` python: OK
WIDTH = 1440  # =の前後に空白1つ
HEIGHT = 1440
```

``` python: NG
WIDTH  = 1440 # =の前に空白二つなので、警告が出る
HEIGHT = 1440
```

#### 参考記事
* [VSCodeでPython書いてる人はとりあえずこれやっとけ〜 - Qiita](https://qiita.com/nanato12/items/ddf26487eb30714251c3)


# VSCode 拡張機能
ここからはVSCodeの拡張機能や各種コマンド等について紹介します。
インターネットで調べればたくさん情報がありますが、一応まとめておきます。

::: note
拡張機能は完全に好みなので、入れてみて"使いにくいな..."と思ったらすぐ消せます。
自分だけの**オリジナル開発環境**を作ろう！
:::

## 基本の環境
### <font color="orange"> 1.&nbsp;Japanese </font>

https://code.visualstudio.com/docs/getstarted/locales

VSCodeの基本言語を日本語にしてくれるからとりあえず入れておけ感。
<font  color="blue">Jetson</font>等の環境に入れるときは、"日本語が原因"のエラーが出る可能性も考慮しておきましょう(VSCodeに限らず標準言語は英語にしておく方が安全らしい)。

#### 使用方法
1. `ctrl+shift+P`でコマンドパレット(ウィンドウ真ん中上部)を開き、`display`と入力
1. `Configure Display Language`という候補が出たらそれを選択
1. `ja`を選択してVSCodeを再起動すれば、表示言語が日本語になっている

### <font color="orange"> 2.&nbsp;Python </font>

https://marketplace.visualstudio.com/items?itemName=ms-python.python

VSCode上でPythonを実行できるようにする拡張機能です。
確か以下の二つも同時にインストールされると思います。
* <font color="orange">Pylance</font>
* <font color="orange">Python debugger</font>

::: note warn
この拡張機能を使う(VSCodeでPythonを使う)にはPC内に**Pythonの開発環境を別で入れておく**必要があります。
参考サイト: [PythonをVSCodeで使えるようにする - Zenn](https://zenn.dev/yuriemori/articles/11dd1be965a04d)
:::

### <font color="orange">3. Code Runner

https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner

コマンドラインで簡単にコードを実行できます。以下の使い方に従って、ターミナルでコードを実行するようにします(ターミナルで実行すると仮想環境適用や入力受付ができる)。
詳しくは参考サイト等を確認してください。

### 使い方
1. 拡張機能のサイドバーからインストールする
1. 設定へ行く(アンインストールの隣のボタンや`Ctrl+,`)
1. `settings.json`を開く(コード実行ボタンの隣の紙みたいなボタン)
1. 下の方に以下を追記
``` setting.json
{
    ...既存の設定(省略)
    
     "code-runner.runInTerminal": true
}
```

#### 参考サイト
* [VSCodeにてショートカットキーでコードを実行しよう！ Code Runnerの初期設定の方法について](https://zenn.dev/kainari/articles/vscode-code-runner)
* [Code Runnerを使いこなす - Qiita](https://qiita.com/take_me/items/6a1d2d417889837219d1)

## コーディングをサポートする
コーディングの細かいルールや見やすさを意識しながら処理について考えるのは地味にしんどかったりします。これから紹介する拡張機能を使うと、細かいことに意識を割かずに処理に集中してコーディングできるのようになります！今の時点で不満がないと思っていても、拡張機能を入れて見たら意外に便利！となることも多いと思います。

### <font color="orange">1.&nbsp;Error Lens</font>

https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens

VSCode で表示されているエラー等をホバーしなくてもインラインで常時表示してくれます。めっちゃ便利。
拡張機能のサイドバーからインストールすればそのまま適用されるはずです。

![demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/6ab65080-37a2-fbf2-5df5-65ec445ed057.png)
赤四角部分がError Lensの効果です。

#### 参考サイト
* [【VSCode】Error Lensでエラーを見やすく - Zenn](https://zenn.dev/sqer/articles/1ece0a41163b078cf6fd)
  
### <font color="orange">2.&nbsp;Code Spell Checker</font>

https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker

コードのスペルミスをチェックしてくれます。
拡張機能のサイドバーからインストールすればそのまま適用されるはずです。

![example.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/36e77d66-d77d-9d6e-08d8-40db08a23c95.gif)
`start`を`starrt`と打った際に波線がついて強調されていることが分かります。

また、この他にも綴りが間違っていそうな単語にカーソルを合わせると**正確な単語を提案してくれたりします**(ショートカット: `Ctrl + .`)。

### <font color="orange">3.&nbsp;zenkaku</font>

https://marketplace.visualstudio.com/items?itemName=mosapride.zenkaku

全角をプログラムに書いてしまった時に以下のように強調してくれます。

![readme01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/e65658fd-d2d5-9b07-c7ae-6384f4f05d93.png)


拡張機能のサイドバーからインストールすればそのまま適用されると思うのですが、されないケースもあるらしいので、その場合は以下のサイトを参考に、常時起動設定をしてください。
* [VSCodeで全角スペースを可視化する「Zenkaku」 - Zenn](https://zenn.dev/ryo18/articles/2ddd87d0afaa1f)

### <font color="orange">4.&nbsp;indent rainbow </font>

https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow

インデントの色を変えて見やすくしてくれます。Pythonはインデントが命！
サイドバーの拡張機能からインストールすればそのまま適用されるはずです。

![example.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/8954c2d5-d47f-3d73-1a79-1ee15b7879e2.png)


::: note
以下の記事を参考にすれば、拡張機能なしで同様のことができるらしいです。(VSCode version 1.81以上)
* [VS Codeのindent-rainbowは不要になりました！ - Qiita](https://qiita.com/htcd/items/21266f6472ac2c39933e)
:::

### <font color="orange">5.&nbsp;Indented Block Highlighting</font>

https://marketplace.visualstudio.com/items?itemName=byi8220.indented-block-highlighting

自分が今編集しているインデントを強調してくれます。Pythonはインデントが命！(2回目)
自分が値をいじる変数がどこまで影響するかとかがわかりやすくなります。
サイドバーの拡張機能からインストールすればそのまま適用されるはずです。

![usage.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/c20d062e-601e-0484-57ec-9a8331e519af.gif)
このgifでは一行ずつ下へ降りていますが、背景色が少し変わってハイライトされる範囲が変わっていることがわかります。

::: note
ハイライトが地味だなと感じたら<font color="orange">blockman</font>を代用してみてください。昨日はほぼ同じですがめっちゃ主張強いです。
主張強すぎて私は使うのやめました(笑)
:::

### <font color="orange">6.&nbsp;Trailing Spaces</font>

https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces

行の末尾にある無駄なスペースをハイライトしてくれます。無駄なスペースを消す役に立ちます。サイドバーの拡張機能からインストールすればそのまま適用されるはずです。

コマンドパレットにて`Trailing Spaces: Delete`と打つと不要なスペースを一括削除できます。

#### 参考サイト
* [Visual Studio Codeの拡張機能「Trailing Spaces」でコードの中にある余計なスペースを表示する](https://webrandum.net/vscode-trailing-spaces/)

## 見た目を改良する
### <font color="orange">1.&nbsp;Material Icon Theme</font>

https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme

ファイルやフォルダにアイコンをつけてくれます。複数プログラム(特に別言語を含む場合)を同時に使用する際は便利です。例えばCSVファイルやJSONファイルのアイコンも強調してくれるから便利。

![material_icon_thema.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/80ca169f-1d34-3a40-4413-764025b82fdc.jpeg)


::: note
Material Icon Theme以外にもアイコンを見やすくする拡張機能はたくさんあります。
以下の記事が拡張機能ごとの比較をしてくれているので、この拡張機能より気に入ったものがあれば、乗り換えましょう。
* [Visual Studio Code のファイルアイコンを変える - Qiita](https://qiita.com/aoi70/items/388c9ce772d11a9bad8f)
:::

### <font color="orange">2.&nbsp;Peacock</font>

https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock

VSCodeのウィンドウを複数開くとき(別ワークスペースのプログラムを参考にしたいときなど)に色を変えられて見間違いを減らせて便利です。

![peacock-windows.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/7ae775c6-38cd-ec7b-3626-2b5166007f78.png)


::: note warn
**Peacockはワークスペース内にいないと使えません。**
ワークスペースについての説明と設定方法は以下の記事を参考にしてください。
* [VS Code のワークスペースをちゃんと使いたい - Qiita](https://qiita.com/amac-53/items/86b1466e93524844c2a8)
:::

#### 使い方
1. 色を変えたいプログラムや作業環境をワークスペースに設定
1. ワークスペースを開いた上で`Ctrl + Shift + P`または`F1`でコマンドパレットを開き、`Peacock`と入力
1. 様々な候補が出てくるはずなので、`Peacock: Change to a favorite color`を選択し、好きな色を選択すれば適用される

#### 参考サイト
* [【VSCode】ウィンドウの色をカスタマイズできる拡張機能Peacockの設定方法](https://web-dev.tech/tool/visual-studio-code/vscode-extention-peacock/)

## CSV関連
CSVファイルを扱う時に役立つ拡張機能です。Excelがあると言われればそうなんですが、Excelを使いたくない(使えない)時も場合によってはあるので一応。あとExcel開くよりVSCodeで開いた方が多分少しだけ早いです。

### <font color="orange">1.&nbsp;Edit csv</font>

https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv

VSCode上でCSVファイルを編集する時に便利。
サイドバーの拡張機能からインストールすればそのまま使えるようになるはずです。

#### 使い方
1. 編集したいCSVファイルを開く。
1. VSCodeのウィンドウ右上あたりに`Edit csv`というボタンがあるはずなのでそれを押す
1. 新しいタブが開かれてExcelと同じような表が表示されるので、編集したい箇所を編集する
1. `Apply changes to file`または`Apply changes to file and save`を押して編集内容を適用させて元のcsvファイルを表示しているウィンドウに戻る

![titleImg.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/7e2c9159-9dbb-3e68-5ad1-824959207647.gif)

#### 使い方の詳細やその他便利機能
以下の記事を参考にしています。
* [【VS Code】Edit CSVを使って、ExcelライクにCSVを編集する](https://yoshitaku-jp.hatenablog.com/entry/2023/01/13/090000)
   1. headerの有無
   1. 行追加・列追加

### <font color="orange">2.&nbsp;Rainbow CSV</font>

https://marketplace.visualstudio.com/items?itemName=mechatroner.rainbow-csv

主に以下の二点ができます。
* VSCodeでCSVファイルを見る際に色分けをして見やすくしてくれます。
* VSCodeのウィンドウ左下部分にある`Query`を押すと、SQL的な形でcsvにクエリを送ることができます。

サイドバーの拡張機能からインストールすればそのまま適用されるはずです。

![ryjBI1R.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534042/f5726205-5be8-6af3-36d9-c2517a396321.png)


## Git関連
GitはVSCodeと相性抜群！便利な拡張機能もたくさん公開されています。使いこなしていきましょう。

::: note warn
この章は**Gitの使い方がわかっている前提**です。
もしわからない場合はとりあえず使い方を調べてください(Git解説記事も書くかも)。
:::

### <font color="orange">1.&nbsp;Git Lens</font>

https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens

VSCode上での各種Git操作をしやすくする拡張機能です。VSCode単体でできるgit操作に加え、過去のコミットの詳細表示、ファイルの更新履歴表示、ブランチ作成など様々なことができます。
以下の参考サイトが非常にわかりやすく、機能が豊富すぎたので細かい説明は省略します。

#### 参考サイト
* [VSCodeの拡張機能「GitLens」で快適なGitライフを手に入れよう！ - Qiita](https://qiita.com/yoyoyo_pg/items/e7f010dd13f99e61beba)
* [VSCodeとGitLensを使ってソースコード管理（ステージ、コミット、リバート、リセット） - Qiita](https://qiita.com/Mount/items/afe0c414edb5bf3473b5)

### <font color="orange">2.&nbsp;Git History または Git Graph</font>

https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory

https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph

Git HistoryとGit Graphはどちらか選択する形でいいはずです。比較としては以下の通りです。
* UIの差(ボタンなどの配置が違う)
* Git History は機能が豊富
* Git Graph はシンプルで使い勝手がいい
初心者はGit Graphかなぁと勝手に思っています。

使い方は以下の参考サイトがわかりやすかったので省略します。

#### 参考サイト
* [git history vs git graph - Zenn](https://zenn.dev/gunners6518/scraps/907746ae17f9e9)
* [【VScode】Git Historyで過去のコミットを簡単に遡ろう](https://terrblog.com/vscode-git-history/)
* [【VScode】Git Graphの使い方！他の拡張機能との違いを徹底解説！](https://terrblog.com/vscode-git-graph/)


## その他
### <font color="orange"> Remote SSH </font>

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh

VSCodeでsshの接続先を開くことができます。<font color="blue">>Raspberry Pi</font>や<font color="blue">Jetson</font>上のファイルをメインPCから編集して、作業効率をアップしましょう！

# 最後に
ここまで読んでいただきありがとうございます。
初心者向けにいろいろな情報をまとめました。まだ私も知らない情報もたくさんあると思うので、コメント等で教えていただきたいです(追記します)！