Wantedly の技術を見学してきました🙋

iOS編 — 2017/05/31

mono 
mono 
Jun 4, 2017 · 9 min read
一部、 jp_pancake さんの写真拝借しました🙇

先週、Wantedly 技術見学会に、ブログ枠として参加しました。

すでにTogetter・レポートブログなど、たくさんあがっています💁


ここでは、それぞれの発表から気になったところを、かいつまんでいく形にしてみようかなと思います。

Wantedly People ViewModel with Rx — 杉上 洋平さん

Wantedly Peopleが、まだ Swift 2.3 であることが意外でした🤔

Realm中心設計

Realm中心設計

このように、APIレスポンスなどのデータをRealmにすべて書き込んで、Viewなど利用箇所からRealmの変更監視する、という作りを「Realm中心設計」と紹介されていました。更新操作自体のコールバック自体はVoidとなり、結果の取得はRealmの変更監視に頼る、という形で、僕もこの構成にすることが多いです(特に永続化層にRealm使う場合はこれがベストに思っています)。

Stargnzrラジオ 第4話 Wantedly杉上さんのこれまでとこれから でも紹介されていました。

また、去年のこちらでも発表されています。

Wantedly Peopleのスキャン画面の裏側 — 後藤 慎一さん

Wantedly Poepleの名刺検出はAndroidと共通化したい理由などにより定番のOpenCVを使っているようで、それは妥当だと思いましたが、以下のようにAccelerate・MetalがiOS 9で利用できないと説明されていて、どういうことだろう?と思いました。

【追記】以下の補足いただきました

一応、元々書いていた以下も残しておきます。

Accerelateは、その中の使いたいAPIがiOS 10非対応だったということですかね🤔

Metalに関しては、iOS 9ではなく古い端末で使えない問題では?と思いました🤔

シャッター音への配慮

後半では、シャッター音を鳴らさない工夫について説明されていました。何気無くこういう呟きをしてしまいましたが、懇親会で後藤さんに「電車でやったりもできるように」などとフォローされた記憶があります。

iOS 10.2では個人的には人のいない方向向いて撮影くらいは許容範囲と思うものの、iOS 10.1まではかなり大きな音だったので、確かに電車内でのスキャンの需要があれば配慮するべきかなと思いました。

Wantedly Peopleの連絡先一覧について — 多和田 侑さん

前半は、データ同期APIについて、 last_fetched_atrevision などで差分だけを効率良く同期できるような工夫について説明がされていました。特に件数が多いものについては、こういう工夫は大事ですね(逆に件数の高が知れている系のデータは一括更新で良いこともけっこうあると思います)。

「アプリが凄く重たい」問題

中盤のこのスライドが印象的でした( ´・‿・`)

( ´・‿・`)

連絡先件数が10,000件の時、Realmオブジェクトからstructへの変換に80秒かかっていて、表示専用モデルを設けて本当に必要なフィールドに絞ることで2.5秒に短縮できたとのことでしたが、多少違和感ありました。

ネストしているオブジェクトカットされていたので、その後妥当な気がしました

これも懇親会で多和田さんと話していたら、DateFromatterを逐一初期化していたところでインスタンス使い回すようにしたり他の改善も混ざっていたとのことで、納得しました。

サーバーAPIレスポンスの日付文字列をクライアントでDateに変換するのは頻出処理ですが、逐一生成するとかなりコストが大きいので注意です☝️

Wantedly Visitの検索・フィルター機能 — 藤原 慶貴さん

特に、負債返済日を設けるのは良いなと思いました。ただ、1日だとそれに収まる範囲でしかできないのでもっと長めでも良いくらいに思いましたが、

1日に収まらないものは、プロジェクトとして取り組む、とのことでした。なるほど( ´・‿・`)

限られたリソースで進める段階的なSwit移行 — 永島 次朗さん

ネットワーク層の再設計

AFNetworking 1.x系という今となってはレガシーになりつつあるネットワークライブラリに依存したRestKitというネットワーク層の実装を楽にするライブラリをこれまで使っていたそうですが、それを置き換えたという話が面白かったです。個人的にもこのあたりはライブラリ使ったり自前で作ったり(特にSwift初期はこれといったものが無くてそうするのが良かったと思っています)でしたが、最近はAPIKit x Himotokiが気に入っていて、手持ちのプロジェクトは適当なタイミングで皆それに置き換えています。

Wantedly Visitでは、MoyaUnbox を採用したとのことです。


懇親会

ピッツァ生地は薄めが好みの僕ですが、厚めの生地にも関わらずとてもおいしかったです🍕( ´・‿・`)色々お話できたりシール配れたりで、とても楽しめました( ´・‿・`)シールはまだ残っています🙋

Swift・iOSコラム

Qiitaほど腰を据えずに、Swift・iOSに関係した文章を気軽に書きます。トップに寄稿についての簡単なガイドラインも載せてあります。

mono 

Written by

mono 

Software Engineer(iOS, Swift, Flutter, Firebase, GCP etc.) https://mono0926.com/page/about/

Swift・iOSコラム

Qiitaほど腰を据えずに、Swift・iOSに関係した文章を気軽に書きます。トップに寄稿についての簡単なガイドラインも載せてあります。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade