try! Swift2017に参加しました！気になった発表3選！


こんにちは。あすかです。Housmartでは普段Swiftで開発していることもあり、 [ try! Swift TOKYO](https://www.tryswift.co/tokyo/jp#)というSwiftのカンファレンスに参加して来ました！

 try! Swiftは世界中のSwiftディベロッパーが一堂に会し、Swiftに関する知見を共有するカンファレンスです。参加人数は、昨年の約1.5倍の733人だったそうですごい熱気に包まれていました！会期は2017年3月2日-4日の3日間、うち2日、3日は招待講演とライトニングトーク、4日はハッカソンが開催されました。

![ try! Swiftの様子 すごい熱気です！](https://lh3.googleusercontent.com/M_MNbjEtPuLq7HoVbmbX5W3q5qqQ4xiWYfj48fBkSMd5mFzLbegUlxyoC06i7fvNAZMCko_Pq9ehL14RDRnGSCwm_SuFboLuHVlk36dvOFNYtHS6WzfMc_K90DfN2FiD7dQ2xe0uki5hJhgAF2qg6LPylO3XaMRZI1GkVt0dmAb1dHohVyQRgYk4zK1oXC9-eyJ0UOsoKf1TVxZ3iOnZjSbU0LzU3betGdMouekGH-cXw7ToTOLu-6s7LqDa3sTDS2xLfoGKrtzzz2o_dKV4_YX_glpwXeuW-ZZeqNs3XhJediy_sbxQtGHu_MfNgEOOgzoyjKy9Xr1hl86TXZ3shJUVPzxh274rxolPCOUfwlF3iaYssVsn7IGr1FrLLEmvVREw-O-tKkmPWuD204sZc4Xv6Q935u4V6DlR0pVhg0YM49jskD9t_lbFmXTCwYJSx_RdKy-zepmTPQMkBNjWst-sE7jMao1Hxpghp9-T2JO4HvXpH33YwojlBZ0mfhl4Ehw0oUaVaOnsU_Br8EP3yfeipPvm-xXnAAAyobn--FEzwHGU6fRotMBH0e0NiSBkOvuXSGVaNoz7Lb92tIohVDWgZ5ejKOojSSPqZ4b6skSPh-_NMdEeTCD9Qpdc1BY2jyWlWhkp99ktBHuqr2AqaUtIrj2qJLJook7hHKSh=w600)

# 今回参加の目的

![中古マンション売買サービス「カウル」](https://lh3.googleusercontent.com/jOlDbUCQsCQ8FhCH6QgVfSA450etEXZyi7d9AKV4H7Q5z91t2rStb0jczriLwu_WGWSerVIoF-aUpFNjX9KiVK0egvEoyz805GC7oRNY3oAPiheAi3S5u0KQ0_nkZ1X-x0ZcKjm3loqsneJ5Je4BccWaBTMkiLRuOnWfhy0Ip--ntYqUSMyb9awDIcCoylp8d1mZ5JEa7RJB9WLGj7pNQYVQdQVTheQIyhQnG5mcAkCMoF1XesMPPsvJ3oH3P9QwYYNkEs8KjKD3lsx8Jzfj1zs8hBVB0ANeNcM9IV3tBjuFsq8vMAmuVF59CBoQ7d6RdaLOil0xynIGCC5Yi3dE3MZPw4ftePqFqtgn8cVN43YFNzR-eOlFjryJF9TkLBfvmCyx972jRiwq5IUMwoHS7pMxk3XgwyPrpVAJy92J3c4kuYcIdV_u9mMBsMVO8mD4Z8ysEVwAi4v8SCREDQvXl-WBX2UMHyC2nUOVSaI8f2Z9MwBzkO0SLNldTFwOt3Vru6sFkSdtRfYtLvXgfMg4Cm0rYcSGkpQxkSKRhoD4XbJyQFPC8xzXScBp51W06VTS9p0lRAF9GXMy_2Bt8vkV_a6-QELlGtwDT6Hn2wjp6ti5JPSp8951XChItf_1pFpkg2dzt1Hxu5VZNqzJanzS2N9LZc9ve0VFUXLyIgd_=w600)

HousmartはReTech（不動産テック）スタートアップで、[中古マンション売買サービス「カウル」](https://kawlu.com/market)をメインのサービスとして運営しています。このサービスを使うことで中古マンション売買の際、ユーザーの方が自分でマンションデータベースから中古マンション物件情報、相場、新築価格、売買事例、間取りを確認し、見学に行くことができます。

また、メインのサービス以外にも、ユーザがマンションの情報を検索できる[カウルライブラリー](https://kawlu.com/library)、マンション購入のノウハウを載せた[マンションジャーナル](https://kawlu.com/journal/)というメディアの運営をしています。

これらのサービスでアプリ開発を行っており、①開発で使っている言語のトレンドを知りたい、②面白い発表から学びたいと思いカンファレンスに参加しました。

![カンファレンスのネームプレートが可愛かったです。当日の名前投票で「RIKO」ちゃんに決定](https://lh3.googleusercontent.com/-oCt1zx9Rr6ZTjKkf-z5sC_pyAlsyxO5QGO-iUY-MQzfpq9FCmODFFNHF1NeqzDHHxr7EpsArFErgAcp1jgwbarbYzbf8wUztbEmkk3ieWGWWz1k6tK5gm3Tc6SLjzx4IMJi4SauhVeG9BMFj3stO0lXRd2D8Mq0pataRjzsFnA9L2IBTkJaaIT4o6xESSVv94jYKerznrOuBx5Tf_kFfTJ3JD42Q5xqPdUzREtIm6hcywcFLaf4KHrqobrdotsnWyUHHw1n3ERB5KSq-XxJ1Cr9OBri68LL93VvxlQw3JB51q1KBZJqeSYv9q2QpF8YeRSEGOO8rlz_bMGVciyG0z3PmsNUG7ryy-q3p7wUtbnZz59lyIpJ11kOKGYolpTwvFTMNY9U1TCrZLaXjlroBnQdD2Pj4EyR4TiuwU5tp-ZWDRnOwxCCVJtCyc7boiESmmO5K2QXDaemC2JjSc9zYm2uk6dqBEVJu2pBn-yykAS9xnYSiIofOG3P3BQdr0aFhLoqiHt3236ehy5CysAq2pSbIWbelWFEABoN7gurMSt852kp5MsYkx9qbmIATuuHAGlUbVBN6PR1B1Y1p4BPQoEPZ067CkuM-J0FIWAZMAc1WOQF7X4yUWMxG4dOOkMR5WHBoWAkxBsvl80bu9XAtmy_Nn-wy20EOaHIlQF2=w600)


今回は、カンファレンスにて気になった発表を3つ紹介させていただきます。

# try! Swift全体の構成

まず、全体の構成についてです。カンファレンスでの発表は全部で約32個で、内容は以下のような構成でした。

![ try! Swift2017の講演・ライトニングトークの内容構成図](https://lh3.googleusercontent.com/1OCOR_a4Y-VnJnjDRvD6Bxiz5gjwASFws3KoHF_0ZAq1ytcxcgxHlElKLZigTuj71vQFm_wFwfKGFpyWal7-qsJZzxjl6NTXCa6PwkSf9sdZ7dUsxhHEzqbrp4oozgtziH5EVdkpbaZhchKe-ISAL0noLpqfukO6-1Yo9lhY8hHOxgdrU35_9H_Ecvc9jsiomxa10SGrEETmCE5lcFfUgs7KQPlj_36kmRTwERb6AsYalli1Rp1jA9dQGHxwlEjHbrecv3kmM9K8s9GxMejmvE4Puos4MjzbAmSVVXbYKiNaqakM1EISvAekVFfFZNQttYAN-IoavhKpd9UdFimRuhPQKn3Km9t9WjZAjrLzBQA-L9LVemuuoZgwJgdQnsc0jOSubcj0J-dlu7gRRgPA4wusHDmfBC1UOV133VIo4WdqL84QVr8RuKkiAmeb7OZ_KA9aVDOa2zTxhM8x4BqgetK5gFUu1VC8BZtYb9UG6ggo3VoqBIvoetMFrjtumzz1-lrCDQLTKTwBhIq_6ahFH3QYX4Bfv28x9YbyUwCzrqbyn0BsAbOwIxopTY3wScqFl1vVCmbN_YfCo_dBWzNQVKWmFai9ycfF8yFLn_rT7vd5jvKXWSZaGeE_vvjz02OEk7obl-aRvD_YDtIxHNKLFeVGQxq8whq5nmK0GfuC4Q=w600)

サーバーサイドSwiftや機械学習・DeepLearningの話が結構でてきた印象でした。プロダクト作り全体のドラマティックな話、ReactNative開発のメリット・デメリット比較、Swift on Android話などもあり、Swiftだけでない話題も豊富でした。

#  気になった発表3つ
## ①Client-Side Deep Learning [by Shuichi Tsutsumi](https://twitter.com/shu223)
堤([@Shu223](https://twitter.com/shu223))さんのクライアントサイドで行うディープラーニングのプレゼンが印象的でした。<br>

ディープラーニングは強力なコンピューティングパワーが必要なので、従来はモバイルデバイスでやるものではなかったのですが、iOS 10でMetal Performance Shadersフレームワークに追加された畳み込みニューラルネットワーク（CNN）のAPIにより、クライアントサイドのGPUで学習済みCNNの計算を行えるようになったというお話でした。<br>

つまり「ユーザの手元で」「オフラインでも」昨今の進化がめざましいディープラーニングの成果を利用できるようになったということでカウルアプリでも使えると面白いなと思いピックアップさせていただきました。堤さんのLTでは実装のオーバービューと、デモを見せていただきました。

<iframe src="//www.slideshare.net/slideshow/embed_code/key/2OS20oAt7NLgPx" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/t26v0748/clientside-deep-learning" title="Client-Side Deep Learning" target="_blank">Client-Side Deep Learning</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/t26v0748">Shuichi Tsutsumi</a></strong> </div>


## ②Realmを使ってコラボレーションアプリを作る [by Marius Rackwitz](https://twitter.com/mrackwitz)

このプレゼンでいうコラボレーションアプリというのは、Google Docs/Slack/JIRA等の複数のユーザーが同時進行で作業をすることができるアプリのことでした。<br>

1. Realmの利点<br>
・オブジェクト思考で書け、クラスを実装するように書ける<br>
・React NativeやXamarinにも対応しているので、クロスプラットフォーム<br>
・すべての環境で同じデータを使いまわせるので、バックアップがとれる<br>
・トランザクション管理をしているので、リアルタイムの共同編集ができる<br>
・サーバー、モバイルの両方でRealmを採用すれば、アプリからJSONを排除することが可能<br>

2. Realmの通知機能 <br>
・プロパティの変更、オブジェクトの変更、コレクションの変更、ファイルの変更など、様々な変更に対して通知を行える<br>
・イベントハンドリング<br>

3. アクセス権の管理 <br>
・Admin Realm, Management Realm, Permission Realmなどの特別なRealmを使えば、アクセス権の管理が可能

とのことで、3の内容が特に興味深かったです。

　
## ③クックパッドアプリのテストを味わう [by KazuCocoa](https://twitter.com/Kazu_cocoa)

クックパッドでは、テストの項目でUIテストが一番多くなってしまうらしく、UIテストを自動化することでクラッシュレート減少に成功したという事例について紹介いただき大変参考になりました。<br>

1. Cookpadアプリの状況<br>
グローバルアプリと日本アプリの2つがあり、統合はまだしておらず、UIコンポーネントは複数大きく変えているそうで、だいたい10万行ぐらい。以前は2週間、最近は1ヶ月毎にアップデートしている状況。

2. kano-model という品質モデル<br>
・Attractive – Must-be Qualityの２つのパラメータ<br>
・Diachronic Quality for mobile<br>

3. UIテストのやり方<br>
まず、テストを書いてからリファクタリングを行うそうです。マニュアルテストは簡単に出来ますが、ユニットテストは時間がかかります。しかし、理想はその逆です。
そこで、Cookpadでは2015年-2017年にかけてUIテストの自動化を行い、クラッシュ率を下げ続けたそうです。<br>

4. UIテストの書き方<br>
①シナリオを書く<br>
②シナリオをRubyコードに変換<br>
③Appiumで実行<br>

XPathはOSのフレームワークにかなり依存していて、テストをUIレベルからメソッドレベルに移動することが大事とのことでした。<br>

クックパッドでは、数ヶ月前にSwiftを実装し始めたらしく、テストがあるので安心してSwiftの実装出来るようになったそうです。このような工夫でクラッシュ率の低い安定したサービスを提供していきたいと思いました。

# 参加して感じたこと<br>
① Twitter([@tryswift](https://twitter.com/tryswiftconf))投稿やSlackが活発で、発表の後に会場外でも登壇者へのQAコーナが用意されていて、とても交流しやすい雰囲気でした。
([@k_katsumi](https://twitter.com/k_katsumi)さん、運営者のみなさんありがとうございます！)<br>

②最前列で聞き起こしをして登壇もしている[niwatako](http://niwatako.hatenablog.jp/)さんのコミュニティへの貢献度がすごいと思いました。([niwatako](http://niwatako.hatenablog.jp/)さんありがとうございます！)<br>

<!--more-->
③電源が各テーブルになく、バッテリーが必要だったので常に電源が気になりました。<br>

④同時通訳の方の熱がこもっていて応援したくなりました。(トランシーバーが2台戻っていないそうなので、間違えて持って帰ってしまった方は[@tryswift](https://twitter.com/tryswiftconf)運営の方へ連絡しましょう。)<br>

⑤お弁当の種類を選べ、コーヒーやジュースがいつでも飲めて快適でした。<br>

# 最後に
Swiftの盛り上がりを体感し、Swiftディベロッパーの方々と交流を深める良い機会となりました！参加者の皆さん、運営の皆さんありがとうございました！