のほほん停留所

つぶやきのなりそこないの溜まり場

「AKIBA.swift 第5回」に行ってきた

9/27(火)にクラスメソッド株式会社で開催されたAKIBA.swift 第5回に行ってきました。テーマは「フリートーク」ということで、Storyboardを駆使したUIの話からSwiftでサーバーサイドを書くなど多岐に渡っていました。メモ書き程度ですが、各発表をまとめさせていただきました。

More Server Side? Swift

speakerdeck.com

上の資料は同じ題材で発表者の田中孝明さんがHackerTackleで発表されたスライドを引用させていただいてます

Swiftがオープンソースなったことにより、Swiftでサーバーサイドを書くことも可能になりました。それに伴い、Swiftで書かれたサーバーサイドフレームワークの開発も活発になってきました。有名なフレームワークといえば、Taylor、Swifter、VaporやPerfectなどがありますが、今回の発表はその中でも一番GitHubのスターが多いPerfectを使った発表でした。

Perfectを用いてGETとPOSTのAPIの簡単な実装を紹介してくださいました。さらにPerfectでサポートしているDB Connectorも多岐に渡り、今回はPerfect PostgreSQLを使ってDB操作の実装も紹介してくださいました。導入はSwift Package Managerをサポートしているので、比較的簡単そうでした。また、デプロイもPerfect用のAWSのプランがあるそうです。

SwiftでServer Sideを書いた経験はないのですが、大変そうだと感じた点はビルド時間がかかるのと SQL文が生で書く必要がある という点でした。まだまだ、発展途上という感じで実用にはまだまだ難しそうです。

Server Side Swift, Vapor を触ってみた

speakerdeck.com

1件目と同じServer Side SwiftでフレームワークVaporを使ったという発表でした。これもまた導入方法から説明してくださいました。印象としてはrailsの導入と近いという印象を受けました。デモはSlack上で話しかけると関連しているGitHubのスターが多いレポジトリの情報を返すというSlack botでした。調べたところVaporに関するサンプルやドキュメントはそれなりに豊富で、今回作成されたSlack botもサンプルに少し手を加えた程度のものとのことでした。取っ掛かりやすそうな印象を受けました。

PerfectでもVaporでもそうですが、言語に引っ張られてフレームワーク自体も仕様がコロコロと変わっていて、まだまだ安定期は遠そうといった印象を受けました。iOSアプリに限る話ですが、サーバーサイドとエンティティ等を共通化できそうなどのメリットは感じるので今後どのような発展を遂げるか楽しみです。

watchOS 開発ことはじめ

speakerdeck.com

3件目の発表はwatchOSに関するお話でした。AppleWatchアプリをハッカソンで1から作った話で、プロジェクトの作成方法や各画面の名称などのwatchOS特有な部分を説明してくださいました。更に開発で詰まった点などのTIPSも紹介してくださいました。

AppleWatchアプリは必ずiOSアプリとペアで作られ、AppleWatch単体のアプリというものは現状では作成できません。通信も完全にiOS側に依存しており、iOS側で行われた通信の情報をBluetoothを通してAppleWatch側に渡されるという仕組みだそうです。また、アプリのインストールもBluetoothを通して行われるので、それなりに時間がかかるそうです。また、watchOS側からiOS側に通知を送るということも可能だそうです。例えば、watchOSからiOS側のメソッドを呼び出して、iOSバイスの画面に何かしらの描画をするなどですね。ただ、送信側で[String: AnyObject]型のメッセージしか送れず、受信側でどのようなものが送られてきたか1つのメソッドでハンドリングしないといけない点がツラそうでした。#selectorみたいので1対1対応して書けたら、まだマシになるとは思うのですが...

AppleWatchアプリは基本的にiPhoneアプリのリモコンのような役割しかないアプリがほとんどなようです。AppleWatchだからこそ価値があるアプリを作ってみたいとのことでした。

ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)

www.slideshare.net

4件目はStoryboard上でContainerViewを駆使して、複雑なUIを作成するといったものでした。ContainerViewとは親子関係を持つViewControllerをInterface Builder上で簡単に設定できるViewといったものです。親と子どちらのViewControllerからもそれぞれのメソッドを呼べます。デモではよくあるデザインだけど自前で実装するとけっこうコード量が増えてしまうような例をStoryboardを主に使い実装するというものでした。また、おまけとしてSwift3対応のTIPSについて紹介してくださいました。

iOS10からStackView(AndroidのRelativeLayoutのようなもの)なども導入されて、Storyboardで表現できる幅がかなり広くなってきてるなと感じました。ただ、StoryboardはXcode上で開いただけで差分が出るのと、PR上でレビューするのがほぼ不可能という問題が付きまとってしまうので、そういったデメリットとのトレードオフになるのかなと感じました。

まとめ

4件の発表を聞いて、Swiftも様々なプラットフォームで動くようになってきたなと感じました。情報のキャッチアップが大変そうですので、今後共このような勉強会に参加して情報を逃さないようにしようと思います。