Help us understand the problem. What is going on with this article?

Windows上でSwift (for TensorFlow) の環境構築をする (WSL + VS Code)

2019/09/25 時点での情報です。

Swift for TensorFlow (S4TFと略すらしいです) が気になる1のでSwiftに入門してみたのですが、いろいろなページを見回ることになったのでここに手順をまとめておきます。

SwiftとS4TFのどちらのインストール手順も書いています。

まずWindowsでローカルにSwiftの環境を構築する方法としては以下のものがあります。

  1. Windows上で直接構築する
  2. WSL上で構築する
  3. Dockerを利用する

できるなら1が理想ですが、Swiftコードをビルドするためにcmakeプロジェクトを作成する必要があるなどまだ未熟な印象です。
また、(私の認識では) S4TFは1の方法に対応していません。
1の方法でやりたい場合コンパイラを自分でビルドする方法とSwiftのコミッタであるcompnerd氏が用意したプレビルトバイナリを利用する方法があります。

この記事では2の手順を解説しますが、3の方法を取る場合でもWSLの場合と同じくDockerの環境をVS Codeで開けるようなので、WSLのインストール部分以外は適宜読み替えることにより参考にできるのではないかと思います。

VS Codeは事前にインストールしておいてください。

WSLの導入

これについては紹介している記事が多数あるのでリンクを私が参考にした記事を紹介するだけにしておきます。

まず『【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう』に従ってWSLを導入し、次に『WSLのUbuntu環境を日本語化する』に従ってパッケージの更新と日本語化をすればWSLの準備は完了です。
S4TFはUbuntu 18.04をサポートしているようです。

VS CodeとWSLの連携

VS CodeにWSLの拡張機能を入れておくとファイル操作やテキスト編集がGUIでできるようになります。
左のバーの一番下にある「田」のような形のマークをクリックすると拡張機能画面が現れます。
そこで「WSL」と検索して出てくる「Remote - WSL」をインストールしてください。
するとVS Codeのウィンドウの左下に「><」のようなマークが表示されるようになります。
そこをクリックし、「Remote-WSL: New Window」を選択するとWSLに接続したVS Codeを開くことができます。
また、WSL上で code ${ファイル名} と入力することでもVS CodeでWSLのファイルを開くことができます。

Swiftのインストール

通常のSwiftのインストールとS4TFのインストールを順に解説します。

通常のSwiftのインストール

参考: Installing Swift

エディタでSwiftコードの補完をするには SourceKit-LSP が必要なのですが、これのビルドされたバイナリが同梱されるのがSwift 5.1以降なのでSwift 5.1をインストールするとして進めます。

また、ここでは作業ディレクトリは /home/${ユーザー名}/ としておきます。(参照:『【3分理解】Linuxユーザのホームディレクトリについて』)

まず「Download Swift」から自分のバージョンにあったSwiftをダウンロードします。

wget ${SwiftのダウンロードURL}

そして Swift ディレクトリを作成し、そこにダウンロードしたツールチェインを展開します。

mkdir Swift
tar -zxvf ${ファイル名} -C Swift/

次にダウンロードしたSwiftにパスを通します。
ホームディレクトリにある .bashrc というテキストファイルがシェルの起動時に実行されるので、そこにパスを通すコマンドを追記し、シェルを再起動しましょう。

echo 'export PATH=/home/mosh/Swift/usr/bin:"${PATH}"' >> .bashrc

そしてclangをインストールします。

sudo apt-get install clang

うまくいっていれば swift --version と入力すると現在のバージョンが表示されるはずです。(単に swift と入力すると本来はREPLが起動するようですが、WSLでは動作しません: REPL not working on WSL 18.04 Ubuntu)

S4TFのインストール

参考: Install Swift for TensorFlow

現在WSLがGPUに対応していないので、CPU環境で利用することになります。

まず「Install Swift for TensorFlow」からツールチェインをダウンロードし、パスを通すところまでは同様にします。

そして必要なものをインストールします。

sudo apt-get install clang libpython-dev libblocksruntime-dev

swift --version と入力し、うまくインストールされたか確認してください。
うまくいかない場合さらに依存のインストールが必要かもしれません。

sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config libcurl4-openssl-dev systemtap-sdt-dev tzdata rsync

最後に、S4TFの現在のバージョン0.5.0にはエディタとの連携に必要となるSourceKit-LSPが付属していないので、Swift 5.1をダウンロードし展開した中にある usr/bin/sourcekit-lsp を S4TFをインストールしたディレクトリの usr/bin/ 以下にコピーしてください。

wget ${Swift 5.1のURL}
mkdir Swift-5.1
tar -zxvf ${ファイル名} -C Swift-5.1/
cp Swift-5.1/usr/bin/sourcekit-lsp Swift/usr/bin/sourcekit-lsp

VS CodeにSwiftの拡張機能を導入する

公式の拡張機能もあるようなのですが、今のところ利用するためにビルドが必要とのことなので「Maintained Swift Development Environment (SDE)」を利用することにします。

WSL Remoteのウィンドウを開き、拡張機能を「Swift」で検索するとSDEが出てくるのでInstall on WSLからWSLにSDEをインストールしてください。
これでSDEのインストールができたので、次はSDEの設定です。

ファイル/基本設定/設定 から設定画面に入り、Swiftで検索すると出てくる項目から次のものを設定してください。

  • Swift > Path: Swift_driver_bin (上記の手順でインストールしている場合 /home/${ユーザー名}/Swift/bin/swift)
  • Sde: Language Server Mode (sourcekit-lsp)
  • Sourcekit-lsp: Server Path (上記の手順でインストールしている場合 /home/${ユーザー名}/Swift/bin/sourcekit-lsp)

これでSwiftファイルを開くとSDEが機能するようになったはずです。

おわりに

他にもVS CodeにGitの拡張機能を入れたり、タスクを設定することでより快適にコーディングできるようになります。
Windows上で気持ちよくSwiftプログラミングをしましょう!

何かアドバイスがありましたら、気軽にコメントしてくださいm(_ _)m

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away