try! Swift Tokyo 2018 に参加しました

開発部 玉澤
はじめまして!全国タクシーチーム で iOSアプリを開発している 玉澤 です。

 

try! Swift Tokyo 2018 へ参加してきましたので、その感想をまとめます。

もう1か月経とうとしていますが、気になるセッションの振り返りなどはされましたか?まだの方はまた忘れないうちに!

IMGP1852

try! Swift とは何か

https://www.tryswift.co/
まず、 Swift 言語は Apple が開発した macOS, iOS, Linux で動作するオープンソースの言語です。全国タクシーでは、 iOS アプリで使われています。
try! Swift はその Swift に魅了された人たちが集まるカンファレンスで、有志のコミュニティと多数のスポンサー企業・個人の寄付で成り立っています。
iOSアプリ界隈では、比較的大きめな iOSDC というカンファレンスも開催されていますが、 try! Swift はそれと違って世界規模な点が特徴で、世界各地にコミュニティが存在することと、海外のエンジニア参加者が多いこと、日本に居ながら世界を感じられる刺激のあるカンファレンスです。

今年の try! Swift で気になった発表

どれも面白い発表ばかりでしたが、その中でも特に気になったものを幾つかピックアップしました。

1. 関心の分離と単純化のためのSwiftコードの最適化

スライド資料

コードは書く時間より読む時間のほうが長い。

単純・簡潔・明瞭なコードを維持するためのテクニックをコードで紹介。

全国タクシー iOS では原則コードレビューとユニットテストによってコードの品質を担保していますが、出来なかった時期がありその時のソースコードは負債として残っています。

その負債を解決するべくチームで検討しているところ、この発表はタイムリーであり共感する部分が多く参考になりました。

2. Super Resolution with CoreML

スライド資料

超解像という低解像度画像を高解像度に変換する技術で、iOS アプリで実装することで、通信容量削減が出来るという発表でした。

Keras という Python のディープラーニングライブラリを使ってモデルを作成し、CoreML 形式に変換し利用。アプリで外部からダウンロードした低解像度画像が超解像によって文字もクッキリ読める高解像度に変換。

トラフィックを削減でき表示スピードも向上しユーザーにとってメリットの大きいアプローチだと思いました。

3. Event driven networking for Swift

Apple 社のインフラエンジニアをしている方で、低レイヤネットワークフレームワーク SwiftNIO の発表

Swift用の Netty とのこと*1

イベント駆動はなぜ大事なのかというお話から、実際に Swift でその問題を解決するソフトウェアを開発しオープンソースとして公開されています。

https://github.com/apple/swift-nio

私は Netty を使ったことはありませんが、今後間接的に SwiftNIO を使うことになり、 Swift があらゆる環境で標準的に利用されていくことを想像するとワクワクします。

Apple 本社からtry! Swift Tokyo に参加するのは今回が初めてのことなので皆さん注目されていました。(今年は Apple から7名も参加しました)

(*1 Netty とは、 JVM 上で動作する非同期イベント駆動型ネットワークフレームワーク)

4. iOS で Charles を導入する

多くのエンジニアが利用しているであろう通信キャプチャツール。

私はアプリのデバッグや Map 機能を使ったレスポンスの書き換えなどで活用しています。

Charles を開発するに至った経緯や今日までの歴史の紹介、そして現在開発中の Charles for iOS の紹介でした。

Mac 版の Charles で iOS の通信をキャプチャする場合、 iOS と Mac を同じ Wifi に接続し Mac の IPアドレスを Proxy として設定し、 SSL 通信をキャプチャするためにプロファイルをインストールする必要がありました。

現在開発中の iOS 版は iOS 単体で動作するもので、 Network Extension Framework を使って VPN 接続することで、他に起動しているアプリの通信をキャプチャするものです。

今まで煩わしかった設定から開放されモバイル回線でも動作するようになり、ユーザーと近い環境で詳細な検証が行えるようになりました。

発表当日、希望者には TestFlight で配布しており私も招待をしていただきましたが、完成度が高く素晴らしかったです。

無事 AppStore で公開できることを願っています。

3/28 に無事 AppStore に公開されました!
https://www.charlesproxy.com/ios/

5. UITest の楽しさとメリット

スライド資料

UI テストを導入した経緯とその苦労の共有でした。

日々開発を行っている中で UI テストを追加し時には修正する運用は楽ではありません。そこには Xcode 自体の問題や、開発チームや QA チームの協力体制にも左右されると思います。

UI テストはやりたいが楽ではない、それでもやる価値はあると信じて取り組む情熱が感じられる発表でした。

全国タクシーでは UIテストは行っておらず、TravisCI 上でモデルのテストと、アプリの申請前はサポートチームによる手動テストを行っています。

サポートチームも少人数で回しているなか、テストケースはリリース毎に増えており負荷が高くなっている現状から、手動で行うテストケースを減らす方法はないか模索中です。

車載システムと連携している機能などもあることから、手動でやるべきものと自動化するべきもので分けて地道に UI テストを導入していくのが良いのではないかと思っています。

このあたりの手法は他社でも様々な工夫がされていると思いますので情報収集したいところです。

ブース

各社開発に使用しているツール等のアンケートボードがあり興味深い結果でした。

CI系は、Jenkins > BITRISE > CircleCI

UI系は、Storyboards > Code > NIBs

設計は、MVC > MVVM > Clean Architecture > …

ちなみに 全国タクシー iOS では、MVVM アーキテクチャで開発していますが、より最適なアーキテクチャを検討しています。

個人的に感じたこと

DSC04713

日本での開催は今回で3回目。

1回目から参加して来ましたが最初に比べ海外からの参加者が増え、発表の合間にマジックショーやお互いの言語で会話をしよう(ネタ)などのエンターテインメント性も取り入れられ、参加者同士の交流を増やす仕組みが多くありました。

アフターパーティでも、けん玉ギネス保持者の演技を見たり、パフォーマーの方々が参加を楽しませてくれたりと、心温まる素晴らしいカンファレンスでした。来年も行きたいです。

日本で海外からたくさんの iOS エンジニアが集まるイベントは、 try! Swift だけです。

あの生き生きとした空間で交流するだけで、元気になり仕事のモチベーションも高まります。

まだ参加されたことが無い方は、参加してみることをオススメします。

最後に

今回、私達は CTO の裁量で try! Swift カンファレンスに参加することが出来ました。

業務としてカンファレンスに参加できる環境はエンジニアとしてとても幸せに思いますし、そこで得た経験を全国タクシーに、そして全国タクシーを通して世の中に還元していけるよう努力していきます。

IMGP3628

JapanTaxi では IT x リアル に興味があり、 タクシー業界を自らの力でアップデートして行きたい エンジニア を募集しています!

気になる方はご連絡お待ちしています!

最後までお読み頂きありがとうございました。

※ 記事で使っている画像は、 try! Swift 公式の flickr から引用させていただきました。

JapanTaxiに興味を持ったら、まずはお話しませんか?