3/3 様々な場面でSwiftを使う #tryswiftconf
try!Swiftのセッションまとめシリーズです。Yusuke Itoさんの「Swift Outside the Box」についての記事になります。
資料
内容
- Swiftがアップル以外のプラットフォームでも使えるように
サーバサイドSwiftについて
Server Side Swiftを使ってバックエンドサービスを作った話
- 会社ではwebのクローリングやスクレイピングを行う
- Swiftで書くことに決めた
- 今まではPythonで実装していた
- パフォーマンスや設計を改善したかった
- Swiftはモダンで優れている
- クローラは指定したwebサイトのページを取得してHTMLを取得してDBに保存
- 取得したwebサイトは検索のために使う
- webページ
- Go言語などに接続する場合にも型があるといいかんじにできる
どのようなライブラリが必要?
* webからコンテンツを取得するにはHTTPクライアント
* パーサー
* 設定、メタデータのためのMySQL
* S3
* GRPC
* 日本語変換ライブラリ
何が必要?
- 必要なライブラリは全て揃っている
現在の我々のステータス
- コード量
- クローラ1万行
- 社内向けライブラリは9000行
- Dockerに環境を展開している
次のステップ
- AWS環境にデプロイして動かす
- 安定性を測定
2つめのプロジェクトの話
- ラズパイ
- 様々なものをコントロールできる
- センサから値を取って連携したりすることができる
- 気圧を測定してslackにポストするものを作った
- ラズパイはインターネットに接続されている
- Swiftでセンサーの値を取得
- 気圧のセンターを変数で作る
- 現時点ではSwiftで自分の使いたいライブラリがないかも
- Swiftのライブラリ化などを自分でしておくなど
- すでにCのライブラリがあればSwiftでラップして使うことができる
- enumなどを使えばSwiftっぽく書くことができる
- ライブラリが揃えばより生産的に作ることができる
- いくつかSwiftでライブラリを作っている
最後に
- 東京Server Side Swiftの勉強会もある
- Swift Package ManagerのおかげでServer Side Swiftができている
- SPMはCarthageやCocoaPodsに似ている
- Swift
- 安全で効率的
- ライブラリは少ないがCとうまくできる言語
- 小さいプロジェクトからServer Side Swiftを初めてみては?
Q&A
クローラをPythonからSwiftに代えたとのことだが、どの部分が良くなったのか(パフォーマンスなど?)
libcurlのリクエスト使っていないというのはそれはなぜなのか。ファンデーションライブラリが十分でないということ?
ラズベリーパイ用にコンパイルしているということであり、ファンデーションライブラリそのものを乗っけているわけではないですよね?
その他このトークに関する情報源
- 様々な場面でSwiftを使う | try! Swift Tokyo 2017 #tryswiftconf Day2-3 聞き起こし - niwatakoのはてなブログ
- [速報レポート] try! Swift TOKYO 2017 2日目 午前Ⅱ #tryswiftconf | Developers.IO