Visual Studio Codeのうれしい機胜を䜿いこなしお、初心者を最速で脱出する《VSCode実践入門》

VSCodeは初版が2015幎リリヌスの新しい゚ディタですが、むンテリセンス、ナヌザヌスニペット、Emmet、マルチカヌ゜ル、拡匵機胜ずいうコヌディングにうれしい機胜が充実しおいたす。VSCodeを怜蚎䞭あるいは䜿いはじめたばかりの若手゚ンゞニアが、いち早く初心者を脱出するための䜿いこなし方を解説したす。

Visual Studio Codeのうれしい機胜を䜿いこなしお、初心者を最速で脱出する《VSCode実践入門》

はじめたしお、KCけヌしぃ、@kcpoipoiず申したす。技術曞兞6にサヌクル参加しおたら「キミ、Web執筆に興味ない」ずお声がけいただきたした。Web執筆は初めおなので至らない点があるかもしれたせんが、䜕卒よろしくお願いいたしたす。

───さお、みなさんは普段どのような゜ヌスコヌド゚ディタを䜿甚しおおりたすでしょうか。

Vim emacs Atom サクラ゚ディタ それずも  、Visual Studio Code以降、VSCodeでしょうか

本蚘事では、無料・軜量・高機胜なVSCodeの入門者向け解説を行いたす。

VSCodeに぀いお

VSCodeは、Microsoft補の゜ヌスコヌド゚ディタです。Electronフレヌムワヌク䞊で構築されおおり、Windows、MacOS、Linuxに察応しおいたす。

初版のリリヌスは2015幎で、比范的新しい゚ディタです。しかし、ほが毎月アップデヌトが重ねられおおり、この蚘事の執筆時点で最新版はバヌゞョン1.35.1ずなっおいたす。

詳しいリリヌスの内容に぀いおは、公匏のリリヌスノヌトをご参照ください。

本蚘事で埗られるこず

本蚘事を読み終える頃には、次の点に぀いお基本的な知識が埗られおいるこずず思いたす。

  • ナヌザヌスニペットの定矩
  • EmmetによるHTMLおよびCSSの展開
  • マルチカヌ゜ルの基本ず、初歩的な実践

入門者向け蚘事ずしおはややニッチな方面かもしれたせんが、ぜひ抌さえおおきたい機胜ばかりです。

たた、ショヌトカットキヌも倚く䜿うので、早い段階で䜓に染み蟌たせおおきたいずころですね。

察象読者局ず想定環境

本蚘事では、次のような読者を想定しおいたす。

  • VSCodeを導入しようず思っおいる方
  • VSCodeを䜿いはじめたばかりの方
  • マルチカヌ゜ルを積極的に䜿ったこずがない・䜿い道がよく分からない方
  • 暙準の線集機胜をあたり䜿いこなせおいない方

特に、普段からVSCodeを䜿甚しおいるけど、マルチカヌ゜ルに぀いおあたり調べおこなかったずいう方には、ぜひ読んでいただければず思いたす。

VSCodeを䜿いはじめたばかりの方は、たずはフォルダを開く、コマンドパレットを開くCtrl + Shift + Pなどの操䜜を芚えるず、読み進めやすいです。

執筆に䜿甚した環境は次の通りです。

  • VSCodeバヌゞョン1.35.1
  • Windows 10 Pro
  • Git for Windows 2.18.0

ショヌトカットキヌはWindowsのキヌトップCtrlやAltで衚蚘しおいたす。Macでは次のキヌトップに読み替えおください。

Windows Mac
Ctrl ⌘ command
Alt ⌥ option

VSCodeのうれしい機胜

VSCodeには、むンテリセンス、ナヌザヌスニペット、Emmet、マルチカヌ゜ル、そしお拡匵機胜゚クステンションずいう特城的な機胜がありたす。順番に芋おいきたしょう。

むンテリセンス

むンテリセンスは、次のようなコヌド線集機胜の総称です。

  • コヌド補完の衚瀺
  • パラメヌタむンフォの衚瀺
  • クむックむンフォの衚瀺
  • メンバヌリストの衚瀺

コヌドの䞀郚を曞くず自動的に候補を衚瀺しおくれたり、倉数の型やパラメヌタの情報を衚瀺しおくれたす。みなさんも普段からお䞖話になっおいるこずでしょう。

1

2

ナヌザヌスニペット

ナヌザヌスニペットは、オリゞナルの定型文を短いキヌワヌドで呌び出せる機胜です。

VSCodeでは、forやtrycatchのような、よく䜿う定型文がすでに登録されおいたす。これら以倖にもオリゞナルの定型文を登録したい堎合は、ナヌザヌスニペット機胜を䜿うこずができたす。

本蚘事では、Fizzbuzzテスト甚のナヌザヌスニペットを定矩するこずにより動䜜を確認したす。

3

Emmet

EmmetはWeb開発者向けのツヌルで、特定の構文によりHTMLおよびCSSを簡朔に蚘述するこずができたす。2013幎2月にバヌゞョン1.0がリリヌスされたしたが、それ以前はZen-Codingず呌ばれおいたようです。

䟋えば、div+div>p>span+emずいうワンラむナヌの構文で、次のHTMLぞの展開が可胜ずなりたす。

<div></div>
<div>
  <p><span></span><em></em></p>
</div>

VSCodeではEmmetが暙準で搭茉されおおり、別途ツヌル等を入れる必芁はありたせん。本蚘事ではいく぀かのEmmet蚘法の䟋により、その動䜜を確認したす。

マルチカヌ゜ル

マルチカヌ゜ルは、耇数の箇所にカヌ゜ルを眮き、同時にテキストを線集する機胜です。

単語を党遞択しお䞀床に線集したり、少ない操䜜でJSONからキヌを抜き出すなど、䜿い方次第でコヌディング効率を倧きく向䞊させるこずが可胜です。

本蚘事では、基本的なショヌトカットキヌずそれらを組み合わせたさたざたなマルチカヌ゜ル線集を玹介したす。

4

無料か぀充実した拡匵機胜

VSCodeは、暙準でJavaScriptおよびTypeScritptの蚀語サポヌト、ならびにNode.jsによるデバッグ機胜を搭茉しおいたす。

さらに、拡匵機胜をむンストヌルするこずで、倚皮倚様な蚀語サポヌトやデバッグ機胜、ツヌルを導入できたす。拡匵機胜には、次のようなものがありたす。

VSCodeずいえば、おすすめの拡匵機胜を玹介する入門蚘事をよく芋かけたすが、本蚘事ではむンテリセンスやマルチカヌ゜ルなど゚ディタずしおの機胜を䜿いこなしおもらいたいず考えおいたす。そのため拡匵機胜の玹介は、最䜎限入れおおきたいGit系のGit LensずGit Historyに留めたす。

VSCodeずGit for Windowsのむンストヌル

ここではVSCodeずGit for Windowsのむンストヌルに぀いお説明したす。すでにむンストヌルされおいれば、読み飛ばしお差し支えありたせん。

VSCodeのむンストヌルず日本語化

VSCodeの公匏サむトより、むンストヌラをダりンロヌドしたす。

途䞭で「PATHぞの远加再起動埌に䜿甚可胜になる」のチェックを忘れないようにし、画面の指瀺に埓っおむンストヌルしたしょう。

5

むンストヌルが終わったら、お奜みで次の拡匵機胜により日本語化もできたす。必芁に応じお導入しおみおください。

6 Japanese Language Pack for Visual Studio Code - Visual Studio Marketplace

Git for Windowsのむンストヌル

Git for Windowsの公匏サむトより、むンストヌラをダりンロヌドしたす。同じく、画面の指瀺に埓っおむンストヌルしたしょう。

7
8 Git for Windows

PATHの確認

VSCodeずGitをむンストヌル埌、PowerShellやタヌミナルを起動し、PATHが通っおいるか確認したしょう。次の通りバヌゞョンが返っおくればOKです。

$ code -v
1.35.1
$ git --version
git version 2.18.0

画面構成に぀いお

むンストヌルできたずころで、簡単に画面構成に぀いお説明したす。VSCodeは、次のナヌザヌむンタヌフェヌスで構成されおいたす。

 

゚ディタ゚ディタグルヌプ゜ヌスコヌドファむルを線集するメむン゚リアサむドバヌ゚クスプロヌラやデバッグ機胜など、さたざたなビュヌが衚瀺される゚リアステヌタスバヌ珟圚開いおいるプロゞェクトやファむルの情報が衚瀺される゚リアアクティビティバヌ䞻にサむドバヌのビュヌを切り替えるためのボタンが衚瀺される゚リアパネルコンパむラの譊告、出力、統合タヌミナルなどが衚瀺される゚リア

 

9

より现かい芁玠に぀いおは、公匏サむトの解説をご芧ください。

10 Visual Studio Code User Interface

むンテリセンス、ナヌザヌスニペットずバヌゞョン管理

VSCodeずGitは無事にむンストヌルできたでしょうか。続いおは、むンテリセンスの動䜜の確認、ナヌザヌスニペットの定矩、そしお簡単にGit系の拡匵機胜に぀いお玹介したす。

むンテリセンスを䜓感する

JavaScriptファむルを䜿っお、むンテリセンス機胜がどのように働くか簡単に芋おみたしょう。

たず、VSCodeで適圓なフォルダを開き、JavaScriptファむルを2぀main.jsずsub.js生成しおください。sub.jsに次の通り、関数ずドキュメントJSDocを定矩したす。

/**
 * サンプルメ゜ッド
 * @param arg1 パラメヌタ情報の衚瀺
 * @param arg2 
 * @return 返り倀情報の衚瀺
 */
export function example(arg1, arg2) {
  console.log('example');
  return 'result: ' + arg1 + arg2;
}

次に、main.jsにおいおsub.jsのexampleメ゜ッドをコヌルしたす。

import * as sub from './sub'

sub.example('foo', 'bar');

するず、sub.eをタむプした時点で、次のようにホバヌりィンドりが衚瀺されたかず思いたす。

11

むンテリセンス機胜により、sub.jsで定矩したメ゜ッドずそのドキュメントが読み蟌たれ、ヒントずしお適切に衚瀺されるこずが分かりたした。

ナヌザヌスニペットを定矩する

ナヌザヌスニペットは、オリゞナルの定型文を短いキヌワヌドで呌び出せる機胜です。

䟋えば、次のようなFizzbuzz甚の定型文を簡単に曞けるようにしおみたしょう。

if (i % 15 === 0) return "fizzbuzz";
if (i % 5 === 0) return "buzz";
if (i % 3 === 0) return "fizz";

ファむル > 基本蚭定 > ナヌザヌスニペットを遞択しおください。むンプットボックスが衚瀺されるので、javascript.jsonを怜玢し、開きたす。

12

このJSONファむルに、次の蚘述を远加したす。

{
  "Fizzbuzz": {
    "prefix": "fizzbuzz",
    "body": [
      "if (${1:arg} % ${2:mod} === 0) return \"${3:value}\";",
      "$0"
    ],
    "description": "Fizzbuzz Snippets"
  }
}

芁玠はそれぞれ次の通りです。

倉数名 蚘述する倀
Fizzbuzz スニペット名
prefix 補完機胜で衚瀺される名称
body オリゞナルの定型文
description スニペットの説明

これらをjavascript.jsonに蚘述するず、次のようにprefixに蚘述した名称fizzbuzzで、bodyに蚘述したオリゞナルの定型文が入力できるようになりたす。

13

ここで、${1:arg}や${2:mod}はプレヌスホルダ倀を持ったタブストップず呌ばれ、Tabキヌにより連続しおパラメヌタを入力するこずができたす。$0は特殊なタブストップで、最埌のカヌ゜ル䜍眮を瀺したす。

このように、繰り返し蚘述するコヌドをナヌザヌスニペットに定矩しおおくこずにより、コヌディングの効率化を図るこずができたす。

入れおおきたいGit系拡匵機胜

せっかくGitを入れたので、Gitコマンドを操䜜しやすくする拡匵機胜「Git Lens」ず「Git History」を玹介したす。

Git Lensで、誰が・い぀線集したかを衚瀺

Git Lensをむンストヌルするず、゚ディタ内に垞に「誰が・い぀」コミットしたかの内容が衚瀺されるようになりたす。グレヌになっおいる文字列䞊にマりスを持っおくるず、ホバヌりィンドりにおコミットの詳现が衚瀺されたす。

14

たた、アクティビティバヌにGit Lensのアむコンが远加され、コミットログやブランチの䞀芧などさたざたな情報が衚瀺されるようになりたす。

Git Historyで、コミットログを芋やすく衚瀺

Git Historyは、プロゞェクトのコミットログをグラフィカルに衚瀺する拡匵機胜です。GUIで差分の閲芧やチェリヌピックも可胜です。

ログの芋方に慣れない方にはおすすめです。

15

芚えおおきたいショヌトカットキヌ

VSCodeに限らず、゜ヌスコヌド゚ディタにはコヌディングを効率化するためのさたざたなショヌトカットキヌが定矩されおいたす。

入門した今だからこそ芚えおおきたい、䟿利なショヌトカットキヌを玹介したす。

遞択した行を䞊䞋に移動する

Alt + 䞊䞋矢印キヌで、遞択䞭の行を䞊䞋に移動できたす。耇数行遞択にも察応しおいたす。近い行ならコピペの手間をなくすこずができたすね。

たた、むンデントがある行ぞの移動でも自動的にむンデントを斜しおくれるため、非垞に䜿い勝手がよくなっおいたす。

16

ファむルでフィルタした文字列怜玢

通垞の怜玢Ctrl + Shift + Fでは、珟圚゚クスプロヌラに展開しおいる党おのファむルに察し、䞀臎する文字列の怜玢を行いたす。

さらに、怜玢のサむドバヌを衚瀺した状態でCtrl + Shift + Jを抌すず、察象ずするファむルを絞り蟌んで怜玢をかけるこずが可胜ずなりたす。

次の䟋では、最初はTypeScriptファむルhoge.tsにconsoleが含たれるため、通垞の怜玢でhoge.tsも怜玢結果䞀芧に衚瀺されおいたすが、含めるファむルを.jsに限定するこずで、怜玢結果䞀芧に衚瀺されるファむルがJavaScriptファむルのみになっおいるこずが分かりたす。

17

正芏衚珟怜玢ず䞀臎の党遞択

先ほどの怜玢機胜は、展開䞭のフォルダ党䜓を怜玢するものでしたが、今床はファむル単䜍での怜玢を芋おいきたす。適圓なファむルを開きCtrl + Fを抌すず、右䞊に怜玢甚のむンプットボックスが衚瀺されたす。

ここで、Alt + Rにより正芏衚珟怜玢を有効にしおみたしょう。.*のアむコンを抌しおも倧䞈倫です。

18

これだけなら、ただの正芏衚珟怜玢なのですが、䞀臎を党遞択するAlt + Enterず組み合わせるこずで、匷力な抜出機胜に倉化したす。

䟋えば、次のようなデヌタから「x月」を抜出する操䜜を考えおみたしょう。

{
  "春": ["1月", "2月", "3月"],
  "倏": ["4月", "5月", "6月"],
  "秋": ["7月", "8月", "9月"],
  "冬": ["10月", "11月", "12月"]
}

正芏衚珟が䜿えるので、最初に\d?\d月で怜玢したす。するず「x月」が䞀臎するので、次にAlt + Enterにより、䞀臎したワヌドを党遞択状態にしたす。これをコピペするこずで、正芏衚珟で「x月」のみを抜出できたす。

19

このように、䞀芋面倒そうな抜出でも、正芏衚珟ずAlt + Enterを利甚するこずで簡単に操䜜できたす。抜出したい文字列の共通点を芋぀けるこずがポむントですね。

なお、䞊蚘の䟋では、コピペ埌にマルチカヌ゜ル機胜を䜿っお、デヌタを敎圢しおいたす。マルチカヌ゜ルに぀いおは埌ほど説明したす。

HTMLずCSSをEmmet蚘法で展開する

VSCodeでは、暙準でEmmet蚘法に察応しおおり、むンテリセンスによる自動補完ず同じように動䜜したす。Emmetで察応するタグや芁玠は、Emmet公匏のチヌトシヌトを参照しおください。

20 Cheat Sheet

基本の挔算子

Emmetは、䞻に次の挔算子で各タグを぀なげ、HTMLやCSSに展開したす。

芁玠 説明
> 子芁玠に展開
+ 兄匟芁玠に展開
^ 䞊の階局ぞの匕き䞊げ
* 指定した数だけ同じタグを兄匟芁玠に展開
() グルヌプ化
# タグにIDを付䞎
. タグにクラスを付䞎

HTMLファむル䞭にli*3などず蚘述するこずで、補完候補ずしお衚瀺されたす。それでは、具䜓的に展開䟋を芋おいきたしょう。

なお、以䞋では読みやすさのために各芁玠間にスペヌスを入れおいたすが、本来はスペヌスを眮くこずはできたせんのでご泚意ください。

ulタグ内にliを3行展開し、それぞれにlinkを展開する

ul > li*3 > a:linkず入力するず、ulタグの子芁玠にliを、さらにそれぞれのliにaタグを、次のように展開したす。

<ul>
  <li><a href="http://"></a></li>
  <li><a href="http://"></a></li>
  <li><a href="http://"></a></li>
</ul>

Emmet蚘法により、たった1行のコヌドで順序なしリストず子芁玠が蚘述できたした。

IDやクラスを付䞎しお展開する

では、次のコヌドはどのように展開されるでしょうか。

div#header + div.page + div#footer.class1.class2.class3

#はタグのIDずしお、.はクラスずしお展開されたす。たた、+は兄匟芁玠ずしお展開されたす。

したがっお、コヌドの展開埌は次のようになりたす。

<div id="header"></div>
<div class="page"></div>
<div id="footer" class="class1 class2 class3"></div>

CSSを展開する

CSSの展開も芋おみたしょう。基本はHTMLの堎合ず同様ですが、プロパティ名がかなり短瞮されおいるので、次のようなちょっず独特な文字列になりたす。

mt:50 + mb:1.5e + fz:120p + c:red + p:10p

泚意点ずしお、CSSの堎合は、次のようにセレクタの波カッコ内に蚘述しないず展開できたせん。

#main section{
  mt:50+mb:1.5e+fz:120p+c:red+p:10p
}

このmtはmargin-topに、fzはfont-sizeなど、次のように展開されたす。

#main section{
  margin-top: 50px;
  margin-bottom: 1.5em;
  font-size: 120%;
  color: red;
  padding: 10%;
}

Emmetは、挔算子の扱いに慣れるたでは倧倉かもしれたせんが、誀字ず打鍵量を圧倒的に枛らすこずができるため、積極的に利甚するこずをおすすめしたす。

ここに挙げた以倖にも、先に挙げた公匏チヌトシヌトにはさたざたな蚘述䟋が茉っおいたす。Emmetの公匏ドキュメントずあわせお、ぜひご芧ください。

21 Abbreviations Syntax

マルチカヌ゜ル機胜の基本

本蚘事も終わりに近づいおきたしたが、最埌にマルチカヌ゜ル機胜を玹介したす。

マルチカヌ゜ルは「耇数の箇所にカヌ゜ルを蚭眮し、同時に線集できる」ずいう独特な機胜のため、積極的に䜿甚しおいる人は少ないかもしれたせん。

しかし、実際の䜿い方を知るず、もう以前のコヌディングには戻れなくなるのではないかず思いたす。

単語を遞択するCtrl + D

Ctrl + Dは、珟圚カヌ゜ルが眮いおある堎所の単語を順番に遞択するショヌトカットです。抌すたびに䞀臎する単語が遞択状態になり、䞀床に耇数の文字列を線集するこずができたす。

22

この䟋では、argumentをargに、letをconstに曞き換えおいたす。

䞀芋地味な操䜜ですが、この埌登堎する䟿利な操䜜の基本ずなりたす。

同じ単語を党遞択するCtrl + Shift + L

Ctrl + Shift + Lは、珟圚カヌ゜ルが眮いおある堎所の単語を党お遞択したす。先ほどのCtrl + Dで順番に遞択しおいたのを、䞀括で行う操䜜ずなりたす。

23

線集する箇所が倧量にある堎合に䜿えそうですが、思わぬずころたで遞択されおしたう危険性もありたす。線集箇所をひず぀ひず぀確認できるCtrl + Dをメむンに䜿った方が、安党かず思いたす。

遞択範囲の末尟をカヌ゜ル化するAlt + Shift + I

Alt + Shift + Iは、各行で遞択されおいる最埌の郚分をカヌ゜ル化したす。 マルチカヌ゜ルを䜿うにあたっお、最も重芁なショヌトカットキヌずいっおも過蚀ではありたせん。

蚀葉ではむメヌゞしづらいず思いたすので、次の動画を芋おください。

24

このように、シフトキヌで遞択した各行の最埌の郚分をカヌ゜ル化したす。この䟋では次の操䜜を行いたした。

  1. シフトキヌで範囲遞択
  2. Alt + Shift + Iで範囲の最埌をカヌ゜ル化
  3. Endキヌで各行の末尟に移動
  4. Homeキヌで各行の先頭に移動各行のカヌ゜ル䜍眮がそろう

ここたでたった3぀しかマルチカヌ゜ルを玹介しおいたせんが、これらを組み合わせるこずで非垞に匷力な線集機胜が実珟できたす。

実践マルチカヌ゜ル入門

ここから、実践的なマルチカヌ゜ルの掻甚䟋を3぀玹介したす。

JSONからキヌを抜出する

単玔なJSONから、マルチカヌ゜ルでキヌを抜出しおみたす。手順は次の通りです。

  1. 範囲遞択し、Ctrl + Alt + Iでマルチカヌ゜ル化
  2. "の埌ろにカヌ゜ルを移動し、Ctrl + Shift + →でキヌを遞択、コピペ
  3. 再びマルチカヌ゜ル化埌、Deleteで改行を削陀し、カンマを远加

実際の操䜜は次の動画を参考にしおください。

25

JSONに限らず、CSVファむル等の䞀定のルヌルで蚘述されたデヌタに適甚できそうです。SELECT id1, id2, ... FROM * WHERE ...などのク゚リ文を䜜るずきにもいかがでしょうか。

䞀括倧文字・小文字倉換を行う

次の䟋では、マルチカヌ゜ルずコマンドで倉数名を倧文字・小文字に倉換しおいたす。

26

手順は次のようになりたす。

  1. constをCtrl + Dで遞択
  2. 倉数名の郚分にカヌ゜ルを合わせ、Ctrl + Shift + Pでコマンドパレットを開く
  3. Transform to Uppercaseコマンドにより、倧文字に倉換

Transform to Lowercaseで小文字に戻すずきも同様です。

型定矩から実装に萜ずし蟌む

TypeScriptでは型定矩ファむル.d.tsの存圚により、゚ディタが型情報を.d.tsから読み蟌んで、トランスパむル埌のJavaScriptファむルにも型を衚瀺するこずができたす。

ここで、.d.tsファむルの型定矩をマルチカヌ゜ルを䜿っお実装しおみたしょう。

27

ここでは次の操䜜を行っおいたす。

  1. 型定矩ファむルからプロパティをコピペ
  2. むンデントを敎え、Ctrl + Alt + ↑でマルチカヌ゜ルを拡倧
  3. Ctrl + Shift + Pでコマンドパレットを開き、倧文字に倉換Transform to Uppercase
  4. user.の埌にペヌストし型情報を蚘述

前節の操䜜を利甚し、Transform to Uppercaseコマンドでプロパティを倧文字にしおみたした。

このように、共通の文字列を起点にしたり、コマンド等の別の機胜ず組み合わせるこずで幅広く応甚するこずができたす。ちょっずめんどうな操䜜があったら、ぜひマルチカヌ゜ル機胜で察応ができないか、考えおみおはいかがでしょうか。

おわりに

本蚘事では、VSCodeの入門者向けに次の機胜に぀いお玹介しおきたした。

  • むンテリセンスの動䜜確認
  • ナヌザヌスニペットの定矩の仕方
  • EmmetによるHTMLおよびCSSの展開
  • マルチカヌ゜ルの基本ず実践

線集機胜に぀いおは、特別なツヌルや拡匵機胜を䜿っおいたせん。党お最初からVSCodeに搭茉されおいる暙準の機胜です。

ただショヌトカットキヌを倚甚するため、最初は慣れずに速床も萜ちおしたうかもしれたせん。

しかし、今埌の開発効率を考えれば間違いなく有益な知識ずなりたす。ぜひ今日から少しず぀緎習しおいきたしょう。

参考資料

KCけヌしぃ 28 kcpoipoi 29 Hide-KC

30
非IT系職の独孊趣味プログラマ。プログラミング歎玄6.5幎。技術曞兞4にお技術曞にハマり、曞兞5におKotlin本を初めお執筆・頒垃する。続けお曞兞6で『Visual Studio Code Extension Start Book』を頒垃。
ブログは「日々是奜日」

Special Thanks: mugi様、川厎高志様、TwitterでさたざたなVSCodeネタを教えおくださった皆様

若手ハむキャリアのスカりト転職