iOSエンジニアの高です。去年に引き続き今年もtry! Swiftに参加してきました。
最近のカンファレンスは後日スライドだけでなく動画まで公開していたりします。try! Swiftの場合はスポンサーのRealmが公開してくれてます。 try! Swift Conference
こうやって資料が共有されると、そもそも参加する必要はあるのだろうか?と思ってしまいがちなのですが、やっぱりそこでの空気感だったり、他のエンジニアとの交流だったりは結構大事だなと思っていて出来る限り参加するようにしています。
海外からはもちろんですが、国内でも東京以外から参加されてる方も多かったです。僕が話した感じでは福岡が多かったなという印象です。
会場
ベルサール新宿セントラルパークビルで行われました。天井も高く、広々とした会場で良かったです。
所感
今年も興味深い話ばかりでしたが、去年に比べるとSwift言語自体に突っ込んだ話は少なくなったかなという印象でした。去年はプロトコル指向、型消去、LLDB、オープンソースSwiftなどもう少しコアな話が多かったと思います。
この一年で一通り出尽くしたからか、もしかしたら1年経ったけれど悩みのタネは特に変わってなくてずっと同じ話になってしまうのも、、ってことなのかもしれませんね。
気になったセッション
気になったセッションをいくつかご紹介します。
Swift開発者が知りたかったけど聞きにくい機械学習のすべて
機械学習は最近至る所で耳にするので一度取り組んでみようと思ってるところです。このセッションでは機械学習はiOSアプリ開発と類似点が多いのでiOSエンジニアであれば機械学習を始めやすいのではという話をしていました。
UIをSwiftyに書く
やっぱり海外の方はStoryboardが嫌いみたいです😅 たしかにイケてないところはたくさんある。もう少し自然な形で統合してくれと誰もが思ってるでしょう。後述しますが、色の扱いもどうにかしてほしいところです。。
それでもUIをコードで書くと後から見たときに脳内変換が必要になってつらいので、僕は使えるところではStoryboard・xibを使うようにしてます。
独自のツールを構築する
ざっくり言うと、みんなが作ってるアプリはXcodeで作るのに適してないからReactNativeで作ろうぜって話でした。そうきたか!という感じでしたが、納得できるところは多かったです。
Appleのアプリを見ればわかると思いますが、ほとんどがスタンドアロンアプリです。もちろん通信もしますけど、それがメインではない。Xcodeはそういったアプリを作るための環境として提供されているので、API指向なアプリを開発しやすい環境ではないとのことです。
その点ReactNativeはAPI指向なアプリと親和性が高いとのことです。ReactNativeはクロスプラットフォームの文脈で語られることが多いですが、単純にAPI指向なアプリを作りやすいそうです。
ReactNativeは出た当時一瞬だけ触ってみましたが、アプリを起動し直さなくても変更点が反映されるHot Reloadingが本当に羨ましいです。
テスト可能なコードを書くということの2つの側面
テストする際に問題になるのが環境です。自動テストするには毎回同じ環境を用意する必要があるのですが、特定の環境を作り出す方法として、環境をグローバルなstructにまとめてしまい、必ずここを通るようにするという方法を紹介してました。
struct Environment { let ApiService: ServiceProtocol let cookieStorage: HTTPCookieStorageProtocol let customUser: User? let dateType: DateProtocol.Type let language: Language ... }
Kickstarterアプリではこのリストが25個程度続くそうです。
これが本当にbetter wayかはやってみないとわからないですが、アプローチとしては面白いなと思いました。
Swiftで堅牢なカラーシステムを構築する
アプリで使っている色をプログラマティックに変更できるようにする方法を紹介しています。ZEPLINとの共有や、IB上で使用するためのパレット作成などの話もありました。
しかし、IB上で色を指定してもXMLを開いてみるとわかると思いますが、名前がついていないため参照することが出来ません。つまりプログラマティックに色を変えることが出来ません。これに関しては今のところ色は必ずコードで指定するという縛りを導入するしかなさそうです。
SwiftであればIBOutletプロパティ
のdidSet
で指定するのが良さそうです。
後半、色覚異常についての話もありました。僕もこの辺は気にはしているのですが、トレタアプリが複数人で使用するアプリのため特別な対応は難しいかなぁと思っているところです。
チームの生産性を改善するために決断疲れを最小化する
仕組み化やルール化できるところはなるべくそうして決断にかける時間を最小限するという話です。Pivotal Labでの一日の過ごし方をベースに何をやっているかを説明されていてとても良くまとまっていました。
- 朝食
- 朝礼
- プロジェクト向けの朝礼
- ファイル置き場の話。Xcodeのグルーピング
- ペアプログラミング
- MARKアノテーション
- 人によって書き方が変わらないように、ViewControllerのテンプレートをXcodeのスニペットとして使っている
- 休憩に卓球
- ふりかえり(毎週金曜日)
- Keep😀、Discuss😕、Improve😭
最近トレタでも属人化排除のために何が出来るかという話を良くしているところだったので色々と参考になる話が多かったです。ルール化することで窮屈になってしまっては本末転倒ですが、余計な決断を減らすためにルール化するというのは取り入れたいところです。
懇親会
懇親会は会場から2駅離れたキリストンカフェで行われました。写真を見てもらえるとわかると思いますが、すごい人数です。これだけのiOSエンジニアが集まる機会はそうそう無いですよね。
とても楽しく有意義な時間でした。
おわりに
去年に引き続き今年も楽しませてもらいました。運営も全体的にとてもスムーズで素晴らしかったです。来年もあればまた参加したいと思います。