try! Swift 2019 - Tokyo にブース出展してきました

こんにちは。freee のモバイルチームでiOSエンジニアをしている大内と申します。

先日3/21 - 3/23に開催されたtry! Swift 2019 - Tokyo に弊社iOSエンジニア3名で参加してきました。今回はゴールドスポンサーとして協賛させていただき、ブース出展もさせていただきましたので、その参加レポートをご報告させていただきます。

ブースでの集合写真

なお、freee のモバイルチームは過去のtry! SwiftイベントやiOSDCなどにもブース出展しており、そちらのレポートもございますので合わせてご覧いただければ幸いです。

developers.freee.co.jp

developers.freee.co.jp

ブースの様子

ブースの様子。机の上にはfreeeキーキャップを装着したキーボードが置かれているブースの様子。確定申告ガイドやステッカーが置かれている

freee のユーザー様含めたくさんの方とお話できてとても楽しかったです!

お話させていただいた方々の中には業務外でアプリを作られている方も多く、ブースでお話させていただいた私も「ワシも個人でアプリを作って、あわよくば著名Youtuberに紹介されるなどして莫大な副収入を...」と個人開発の機運が高まりました。

また、ブースで配布させていただいた確定申告ガイドが非常に好評でした。ブース出展時はだいたい配布しているので、カンファレンス等で freee のブースを見かけたらお気軽に遊びに来てください!モバイル関連のカンファレンスでは freee のモバイルエンジニアがアプリの使い方を簡単にご紹介させていただく機会も設けさせていただいております。

ちなみにこのガイド、PDF版もあるのです。

印象的だったセッション

どのセッションも楽しく素晴らしい発表だったのですが、ここでは私が翌日から実践してみたいと思った発表について簡単に触れてみたいと思います。

テストケースでMemory Leakを発見する

tarunonさんからメモリーリークをチェックするassertライブラリXCTAssertNoLeakの発表がありました。テストのコストに関しては導入コストと維持コストがあると思うのですが、XCTAssertNoLeakはどちらのコストも低そうで、帰ったらすぐ試してみたいなと思っていました。

www.icloud.com

導入コストに関しては、いわゆるユニットテストだとそもそもテスト容易な設計になってない場合、「テストを書こうとするとリファクタリングが必要、ゆえにリグレッションが発生するかもしれないがそれを手当するテストがない...」といった感じで心が折れると思うのですが、メモリーリークテストに関しては対象のソースコードがある程度ダメでもちょっとしたボイラープレートを書けばパワープレイで導入できてしまいそうな印象です。

維持コストに関しては、リグレッションを検知した際に、テストかアプリケーションの実装を修正する必要があるわけですが、メモリーリークテストの場合は導入時のちょっとしたボイラープレートっぽいのものを書いたら、メンテフリーで長期稼働が期待できそうです。

とはいえ、こちらのライブラリ導入にはSwift5対応が必要なので、freee 本体ではなく、まずは自分でチマチマとメンテしているライブラリで試してみています。 (Xcode10.2でCarthageを使って導入してみたのですが、image not Foundのエラーが出てしまいうまく動きませんでした...😭)

突然のゾンビ自慢

Debug Memory Graphで循環参照が可視化された様子
六芒星

Debug Memory Graphでこのような芸術的な循環参照を見つけると嬉しくなりませんか。薄目で見ると六芒星のように見えてきて愛着が湧いてきます。 メモリーリークテストでゾンビ検知を自動化できるようになると、もう君ともお別れですね。 ちなみにこちらのゾンビは副作用を発生せず、静かに眠っているだけで安全なのです。。

モバイルのデザインシステムを構築する

本発表の発表者であるKristina FoxさんはIntuitのQuickBooksという財務マネージメントアプリのiOSエンジニアで、freee のエンジニアである私としてもこのセッションは今回のtry! Swiftで最も楽しみにしていたセッションの一つです。

speakerdeck.com

freee でも最近UIコンポーネントのライブラリを作って再利用可能なUIコンポーネントをライブラリにまとめたり、歴史的な経緯で混沌としているスタイルを統一するためのスタイルガイドの作成を行っているのですが、なんとなく手探りで進めていたので、発表を聞いて全体感が整理できてとても参考になりました。

また、スライドの中で言及されていたmaterial-components-iosは今回のスライドではじめて知ったのですが、ドキュメンテーションや実装、サンプルの作り方などとても参考にしていきたいと思います。

github.com

ポートレートモードを自作しよう

koooootakeさんから深度情報のない2次元画像をポートレイトモードに変換するとても面白い発表がありました。この発表に関しては個人的に未知の内容ばかりでとても驚きに満ちた発表で興奮しました!!

speakerdeck.com

github.com

スライドで「おお、すごい!」と感じた各ステップも全てソースコードで公開される太っ腹で、発表までの試行錯誤に関しても記事が公開されておりとても楽しい内容でした。Qiitaのこちらの記事も面白いので一読をおすすめします。 公開されたソースコードとスライド中で触れられているGrabCutなどのキーワードを手がかりに、自分も画像処理についてキャッチアップしていきたいなと気持ちが高まりました 😤

最後に宣伝

freee のモバイルチームは業務の一環でtry! SwiftやiOSDC、DroidKaigiなどのモバイル関連のカンファレンスに参加しておりますので、freee Tシャツを着た社員を見かけたら気軽にお声がけください。またエンジニアを募集しておりますので、興味があればぜひご応募ください。

jobs.freee.co.jp

さまざまな企業のノベルティの写真
お土産。いつも頂いてばかりですみません。