Swift 製のフレームワーク Vapor にのめりこみはじめる
ちょっと前に書いたとおり WSL にて Vapor を触り始めている。Swift は書き味が TypeScript と結構異なるので、また違った感じのコーディングが楽しい。
Vapor というのは Swift 製の Web アプリケーションフレームワークだ。ほかにもいくつかあるが、いろいろ試した結果これが一番自分に合ってた。
Vision Pro 向けアプリを作っていくにあたって Swift に触れている時間は長いに越したことはない。しかしながらデスクトップの Mac はあってもノートな Mac はない。厳密には MacBook 12 インチモデルがあるにはあるけど、これは Intel Mac だし、そもそも普通に Xcode を起動するだけでもヘヴィだ。
ということで常日頃携帯する Windows 機で Swift を、ということになるが、せっかくなら新しい技術もついでに学んで、なんなら Swift バックエンドなサイトを一つ作ってみようという気になってきた。
ということで Vapor である。このままハマって、サイトも完成させてそれでも飽きていなければ MacBook を買ってもいいかもしれない。
Install
Vapor をインストールにするにしてもまずは Swift をインストールする必要がある。
を参考に swiftly
のインストールから始める。
インストール後、最新の Swift バージョンをインストール。
$ swiftly install latest
$ swift -v
Swift version 5.10 (swift-5.10-RELEASE)
つづいて、Vapor のインストール。Toolbox という CLI をインストールする必要があるようだ。バージョンは当時最新の 18.7.5
をチェックアウトしている。
$ git clone https://github.com/vapor/toolbox.git
$ cd toolbox
$ git checkout 18.7.5
$ make install
$ vapor --version
note: no Package.resolved file was found. Possibly not currently in a Swift package directory
framework: Vapor framework for this project: no Package.resolved file found. Please ensure you are in a Vapor project directory. If you are, ensure you have built the project with `swift build`. You can create a new project with `vapor new MyProject`
toolbox: 18.7.5
無事 Toolbox のインストールも完了した。場合によっては必要なライブラリのインストールが必要になるかもしれない。僕の環境では zlib1g-dev
が依存パッケージとして必要だった。
$ sudo apt-get update
$ sudo apt-get install zlib1g-dev
ということで、新規 Vapor プロジェクトを作成。
$ vapor new hello -n
Cloning template...
name: hello
Would you like to use Fluent (ORM)? (--fluent/--no-fluent)
y/n> no
fluent: No
Would you like to use Leaf (templating)? (--leaf/--no-leaf)
y/n> no
leaf: No
Generating project files
+ Package.swift
+ entrypoint.swift
+ configure.swift
+ routes.swift
+ .gitkeep
+ AppTests.swift
+ .gitkeep
+ Dockerfile
+ docker-compose.yml
+ .gitignore
+ .dockerignore
Creating git repository
Adding first commit
...
$ cd hello
素の状態で実行してみる。
$ swift run
Building for debugging...
...
[ NOTICE ] Server started on http://127.0.0.1:8080
8080 ポートでアプリケーションが起動した。
Vapor では Fluent という ORM (Object-relational mapping) ライブラリと Leaf というテンプレートエンジンが公式ドキュメントにてサポートされている旨が記載されている。MPA なアプリケーションを作るには十分な構成だと思う。しばらくいじってみようと思う。