概要
近年注目を集めるエディタ「Visual Studio Code」について徹底的に解説。基本はもちろん,意外と知られていないさまざまな機能,TypeScript,Go,Pythonでの開発を通した実践例,そして拡張機能開発までを扱う決定版です!
こんな方におすすめ
- VSCodeをさらに使いこなしたい人
- 他のエディタを使っており,VSCode に興味のある人
著者から一言
Visual Studio Codeとは
本書を手にとっていただきありがとうございます。本書はVisual Studio Code(本書では,略して「VSCode」と呼びます)の解説書です。
VSCodeはさまざまなソフトウェアを開発するためのエディターで,マルチプラットフォームに対応しています。Microsoftが開発し,2015年のMicrosoftのデベロッパー向けカンファレンス「Build 2015」にて公開されました。Visual Studioのファミリー製品となっていますが,そのほかの製品とは異なる特徴が2つあります。1つは,GitHub上でコミュニティとともに開発が続けられているオープンソースソフトウェアであることです。もう1つは,特定の環境をターゲットにしたIDE(統合開発環境)ではなく,さまざまなプログラミング言語の開発が「拡張機能」によって可能になる開発ツールであることです。
VSCodeは,純粋なテキストエディターとしての機能はもちろん,複数のファイルをタブで開いたり,プロジェクト全体を全文検索したり,ファイル間の差分を見たりする機能も持っています。さらに,プログラミング言語ごとの開発支援機能を,拡張機能としてマーケットプレイスから簡単にインストールできます。このように機能が拡張できることはVSCodeの特徴の1つである一方,実際に開発支援機能として拡張できる項目は以下に限られています。
- コード補完
- デバッグ
- リント(静的解析)
- 外見(テーマ)
- スニペット
- キーマップ
VimやEmacsといった拡張に優れたエディターと比べると,VSCodeで拡張できる範囲は自由ではありません。しかしその制限のおかげで,特定のプログラミング言語によらず共通のUIでスマートに利用できるようになっています。
また,VSCodeがもつ拡張機能の一部は,Language Server Protocol(以下「LSP」と呼びます)という多種多様なプログラミング言語とエディター間のプロトコルとしてまとめられています。このLSPはVSCode以外のエディターでも使えるソフトウェア開発ツールの共通プロトコルとなりつつあります。VSCodeはLSPによって,まさに現在のソフトウェア開発を再定義したエディタと言えます。
筆者は,ソフトウェア開発の最初の段階である,開発に必要なツールの準備をする仕事に従事していました。その際,他の開発メンバーにはIDEでのセットアップをすすめながらも,自分ではカスタマイズしたVimを使っていました。しかし,VSCodeの登場により,私も開発メンバーと同じツールを使って環境を構築し,それを共有できるようになりました。VSCodeは開発者間で共有する設定とユーザー個人の設定とが分離されているため,開発メンバーで設定を共有しながらも,細かい動作や視覚効果などは各開発者の好きな設定を追加できます。筆者もキーバインドやカラーテーマをカスタマイズしながら,TypeScript,Go,Pythonのチーム開発に使用しています。また,外部のLinuxサーバーやDockerコンテナに接続して開発ができるリモート開発機能は,開発環境をLinux中心にできるため,筆者にとって画期的なものでした。そのため今ではソフトウェア開発のほとんどの場面でVSCodeを使うようになりました。
VSCodeの機能が充実したことで,今後もVSCodeユーザーは増えていくでしょう。本書は,より気軽にVSCodeを使って開発をブーストし,自分好みにカスタマイズして,拡張機能を作って発展させる,そんなVSCodeユーザーを増やしたい気持ちで執筆しました。読者のソフトウェア開発の発展の一助になればと思います。
本書のねらい
VSCode自体は解説書がなくてもユーザーが迷わないように,さまざまな配慮がされています。したがって本書は,VSCodeをより深く知りたい以下のような方々に向けた本となっています。
- フロントエンド開発やWeb API開発などのために,VSCodeがどのように使えるか知りたい方
- VSCodeを活用していて,より詳細な機能について知り,開発を効率化させたい方
- VSCodeをカスタマイズして理想のエディターに近づけたい方
- 現状のVSCodeでは手の届かないところがあり,VSCodeの拡張機能を作ってみたい方
- LSPについて知りたい方
本書はVSCodeを基礎から学ぶ読み物としても,欲しい情報を調べるリファレンスとしても使えるようにしています。すでにVSCodeを使用している方は,目次を見て気になるところから読み進めていただければと思います。
第1部では,どのプログラミング言語でも使える基本的な機能のすべてを解説します。具体的には,ファイルエクスプローラーの詳細や,最もよく使うエディター画面の使い方,ソースコントロールビュー,デバッグ,スニペット,リモート開発機能の基本などです。Gitを扱う第4章では,標準のソースコントロールビューでの操作に加えて,コミットログやブランチ差分を確認に使えるGitLens,Git Historyといった定番の拡張機能の使い方も扱います(脚注:ソースコントロールビューではGit以外のソースコードバージョン管理システムを使うことができますが,本書ではGitのみを扱います。)。さらに第1部の最後では,カスタマイズ方法やおすすめの拡張機能の導入について説明します。
続く第2部では,実践的な開発環境の構築方法や,言語特有のテクニックについて紹介します。TypeScript,Go,Pythonの3つの言語を例に,ハンズオンの形でフロントエンド開発,サーバーAPI開発の両方にトライします。3つの言語すべてで開発環境の構築手順,ユニットテストの実装とデバッグ,アプリケーションのデバッグ方法がわかるようになっています。TypeScriptを扱う第10章では,フロントエンドアプリとサーバーサイドのWeb APIアプリ開発の両方を同時にデバッグする方法も紹介します。また,Pythonを扱う第12章では,macOSやWindowsを使いながらDockerコンテナ上で開発ができるDev Containerの活用方法や,データの可視化,解析に使えるJupyter機能についても解説します。
最後の第3部では,拡張機能の作り方について扱います。外部コマンドを実行してソースコードに反映させるコマンドの作成から,リントツールのエラーの表示方法や,カラーテーマの作り方などを解説します。そして,VSCodeの拡張について考える上で切り離せない,LSPの仕様についても第16章で扱い,さらにLSPを使った拡張機能を開発を解説します。
なお,本書では内容をVSCodeの解説に絞るため,Gitコマンドの使い方や,TypeScript,Go,Pythonなどプログラミング言語の仕様,ソフトウェア開発プロセスといった点については取り扱いません。VSCodeは2020年現在も活発に開発が続けられているオープンソースソフトウェアです。そのため,情報は執筆時点(2020年1月)のもので,内容の一部が現行のバージョンに即していない場合があることをご了承ください。