VSCodeでSwiftの環境構築をする方法

#はじめに
VSCodeでSwiftを使うための環境設定の方法を丁寧に紹介します。
競技プログラミングでSwiftを使いたい、見慣れたVSCodeで使いたい、Xcodeで標準入力の仕方がよくわからないといった方におすすめです。

#開発環境
OS: macOS Catalina Version 10.15.6
Visual Studio Code (VSCode): Version 1.49.1

#手順
1. Xcodeのインストール
2. VSCodeのインストール
3. NodeとNPMのインストール
4. SourceKit-LSP Extension for Visual Studio Codeのインストールとビルド
5. SourceKit-LSPの設定

#1. Xcodeのインストール
Xcodeがすでにインストールされている場合は飛ばして構いません。
Xcodeのインストール方法: https://techacademy.jp/magazine/1409

#2. VSCodeのインストール
VSCodeがすでにインストールされている場合は飛ばして構いません。
VSCodeのインストール方法: https://qiita.com/watamura/items/51c70fbb848e5f956fd6

#3. NodeとNPMのインストール
[Homebrew](https://brew.sh/index_ja)を使って[node](https://nodejs.org/en/)をインストールします。同時に[npm](https://www.npmjs.com/get-npm)もインストールされます。

```
$ brew install node
```

インストールされたことを確認するために以下のコマンドを実行してみてください。

```
$ npm --version                                                            
6.14.8
```

#4. SourceKit-LSP Extension for Visual Studio Codeのインストールとビルド

コマンドラインから[SourceKit-LSP](https://github.com/apple/sourcekit-lsp)をクローンします。

```
$ git clone https://github.com/apple/sourcekit-lsp.git
```
次にインストールされたフォルダへ移動します。

```
$ cd sourcekit-lsp/Editors/vscode/
```

拡張パックをビルドします。

```
$ npm run createDevPackage
```

ビルドしたものをインストールします。

```
$ code --install-extension out/sourcekit-lsp-vscode-dev.vsix
```

#5. SourceKit-LSPの設定
VSCodeでSwiftのファイルを実行しようとした際に以下のエラーが出た場合には、VSCodeの設定を変更します。

```
Couldn't start client SourceKit Language Server
```

Cmd+Shift+Pでコマンドパレットを開いたあとに
基本設定: 設定(JSON)を開く  (Preferences: Open Settings (JSON)"
を選択します。
そしたら、すでにあるJSONに以下の文章を追加しましょう。(書き換えではなく追加です。)

```
"sourcekit-lsp.serverPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp"
```

#6. 確認
hello_world.swiftというファイルを作成しましょう。
作成したファイルに以下のコードを記入してみます。

```swift:hello_world.swift
print("Hello, world!")
```
ターミナルで以下のように書くと実行することができます。

```
swift hello_world.swift
```

または、Control+Option+nでも実行することができます。
ちなみに実行結果は

```
Hello, world!
```
です。

#7. 型推論
今のままでは型推論がされない(と思う)ので、以下のように実行してください。ファイルをまず開きます。左下に

```
(HDの名前) > ユーザ > （あなたのユーザ名） > ...
```
と表示されていると思います。その中から、```(あなたのユーザ名)```をクリックします。以下順番にファイルを開いていきます。
```sourcekit-lsp```を開きます。
```Editors```を開きます。
```vscode```を開きます。
```out```を開きます。
```sourcekit-lsp-vscode-dev.vsix```というファイルが有ることを確認してください。
確認できたらこのページを開きっぱなしにしておきます。
VSCodeの拡張機能タブから右上の```・・・```を選択し、```VSIXからのインストール```をクリックします。
![VSIXからのインストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707497/f453340a-0569-ecd7-fd62-ddab96035f63.png)
すると、インストールするファイルを選ぶ画面が表示されるので先程開いた```sourcekit-lsp-vscode-dev.vsix```をドラッグ＆ドロップします。
最後に、開いたファイルをインストールしましょう。
これで型推論ができるようになりました!

#8.C言語やC++のコンパイルにsourcekit-lspを用いたくない人へ
[lsp-sourcekit](https://github.com/emacs-lsp/lsp-sourcekit)のページには以下のように、Swiftだけでなく、C、C++、Objective-Cにも対応していると書かれています。
lsp-sourcekit is a client for SourceKit-lsp, a Swift/C/C++/Objective-C language server created by Apple.
そのため、今までC言語やC++で使っていたコンパイラでは動くのにlsp-sourcekitでは動かないということが発生する可能性があります。そんなときは、Swiftを使うファイルをC言語、C++を使うファイルとは分けた上で、Swiftを使うワークスペースだけでlsp-sourcekitの拡張機能を有効にしましょう。
①　SourceKit-LSPを無効にする
![スクリーンショット 2020-09-22 11.23.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707497/7bf88c13-38c3-81f6-b620-5afb28635ee6.png)

②　再読み込みを行う

![スクリーンショット 2020-09-22 11.26.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707497/6b532542-0caa-cccb-715f-d3fbb866200e.png)

③　拡張機能→SourceKit-LSP→有効にする→有効にする(ワークスペース)

![スクリーンショット 2020-09-22 11.27.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/707497/b9e3eae6-8991-e073-b4f3-140e8b9d312f.png)


#9. 参考文献
https://nshipster.com/vscode/
https://medium.com/swlh/ios-development-on-vscode-27be37293fe1
https://scior.hatenablog.com/entry/2019/10/27/215827

#10. 終わりに
私は、まだまだ初心者なのですが参考文献に上げた3つのページを参考にVSCodeに導入してみたらうまく行ったので、共有させていただきました。
間違っているところがあったらご指摘ください。また、詳しい人がいたらぜひ記事を書いてください。私は、日本語でまとまっている記事を見つけ出すことができず、苦労しました...!