Wantedly 技術見学会 〜iOS編〜の内容が良くわかるブログ↓
http://dev.classmethod.jp/smartphone/iphone/event-report-wantedly-technical-tour-ios/
Qiita記事でもよくお見かけする、
技術力の高いエンジニアが多く在籍されるwantedly, Incの勉強会に
iOS & android開発経験10ヶ月ほどのエンジニアが参加して学べたことを書いておきます。
各発表の内容は上記リンクのブログにて
しっかりとまとめられているので、この記事は筆者の学びのみです。
「Wantedly People ViewModel with Rx」
- RxSwiftがわからないので、実装のコードは全然読めませんでした。。。
- MVVMは以下のような場面で使ってる
(↓こういうことをやりたくなったら思い出してスライドを見よう!)- 入力フォームにリアルタイムでバリデーションかけてユーザーに警告のラベルを表示
- 通信エラーをハンドリングして、アラートを表示させ、再接続を試みる
- 本来、MVVMではViewModelからViewを操作しない。一度ViewControllerを介する
- ただしコードの可読性が悪くなるなどあり、
WireFrameを通してViewを操作(label出したり)できるっちゃできる
- ただしコードの可読性が悪くなるなどあり、
- Viewバインド、relamのNotification使うと結構解決するよ、とのこと
「Wantedly Peopleのスキャン画面の裏側」
- 画像処理の内容は難しいので「すごい!」としか。。。
- 複雑な処理のデバッグ方法の問題と解決策
- 問題
- リアルタイム画像処理のような複数な処理で、
実行結果がおかしかった時、どの処理が問題なのかの特定が難しい
- リアルタイム画像処理のような複数な処理で、
- 解決策
- デバッグ版では、最終結果以外の
各演算処理の結果を常に表示させるようにしておく
- デバッグ版では、最終結果以外の
- 問題
- 本題ではないけれど、pod 'tensorFlow-experimental’面白そう
「Wantedly Peopleの連絡先一覧について」
- 時間がかかっていた処理の問題と解決策
- 問題
- 連絡先一覧画面を表示するのにめっちゃ時間が掛かっていた
- 解決策
- 独自型のプロパティをたくさんもつ、UserModelをrealmObjectから
structのオブジェクトに変換するのに時間がかかっていた - 一覧画面用にプロパティを絞ったUserDisplayModelを作成し、そちらを使うよう変更した
- 独自型のプロパティをたくさんもつ、UserModelをrealmObjectから
- 結果
- 速度が1/10以下になった
- 問題
- Modelもclassじゃなくてstructなんですね〜。それがswiftなんですね〜…
- いつも特に理由なくclassにしていました…
- structとclassの違い:http://blogios.stack3.net/archives/2718
「限られたリソースで進める段階的なSwift移行」
- 工夫まとめ
- 移行は一気に全部やらずに、段階的に進める。
- 新規機能や新規画面で試す
- 既存実装の置き換えを意識して懸念点を潰しておく
- 感想:筆者は今、swift2→3のバージョン移行をやっているのですが、こっちも段階的にやりたいです…
おわりに
全体を通して、MVVMやRxSwiftが前提の内容であり、
こんな自分が参加してもいいのかな?と思っていたのですが、
個人的には参加させて頂けてよかったと思っています。