【Otemachi.swift x Kyobashi.swift】日経新聞社さんと合同でSwift勉強会を開催しました!

皆さんこんにちは。新卒2年目になり、優秀な後輩にビビりまくっているエンジニアの保坂です。

2017年8月8日 (火) に日本経済新聞社さんによる勉強会 Otemachi.swift と合同で Swift 勉強会を開催しましたので、その様子を早速レポートします!

RMPの紹介をする弊社GMの金谷さん

Otemachi.swift x Kyobashi.swift とは?

そもそも、日経さんと弊社リクルートマーケティングパートナーズで共同勉強会を開催することが決まったのは、 WWDC 2017 に参加した際に、日経さんのiOSエンジニアと弊社のiOSエンジニア(わたしと井原 @nonchalant0303)が一緒にお酒を飲んだことが始まりでした。

弊社は東京・京橋で Kyobashi.swift という勉強会を開催しており、一方、日経さんは大手町で Otemachi.swift という勉強会を開催されています。前述の通り、『 WWDC 2017 での出会いをキッカケに、距離が近い同士で合同で勉強会をやってみよう! 』ということで帰国後打ち合わせを行い、今回は日本経済新聞社さんの本社ビル内にあるスペースにて勉強会を共同開催させていただく運びになりました。

Otemachi.swift も Kyobashi.swift も Swift やその周辺技術が対象ということで、今回の合同勉強会にもたくさんの Swift/iOS エンジニアの方にご参加いただきました!当日のツイートも #otemachi_kyobashi_swift よりご覧いただけます。

発表資料まとめ

今回は8名の方に発表いただきました。この場で簡単にそれぞれの発表の内容をご紹介させていただきます。

1. Source Code Generator for Team Development

by Taketo Yoshida

チームで MVVM や VIPER などのアーキテクチャを採用したアプリ開発を行うにあたり、背景にある思想をいかに共有するというのはひとつの課題です。それを解決するために機械的なコード生成ツールを利用したという、日経の吉田さんによる発表でした。

この発表では、Xcode から扱える汎用的なコード生成ツール Generambda が紹介されていました。特定のアーキテクチャに限らず、いろいろな案件で活用できそうなツールだと感じました。また、コード生成ツールだけでなく、Lint ツールなども活用することで、製品のコードを綺麗に保つことが大事とのことでした。

2. コスパの良い iOS 開発を求めて

by yutu

弊社の平井による、実際のチーム開発で Redux + Pssive MVP + Clean Arch(Essence) というアーキテクチャを選択した理由と、それによって得られた効果を紹介する発表でした。コスト (学習時間や実装工数) を節約しながら、パフォーマンス (開発における生産性や保守性) を高めるにはどうするべきか?という問題提起が印象的でした。

コストを抑えながらパフォーマンスをいかに高めるかというのはアプリケーションエンジニアにとっての永遠のテーマでもあります。世間で「よさそう」と言われている技術やパラダイムにただ飛びつくのではなく、チームの規模や状況に応じて最適なアーキテクチャやツールを選択できるよう、日々勉強を続けながら自分にとって本当に必要な知識を取り入れていく姿勢が大事ですね。

3. Equatable/Comparable/Hashable を完全に理解する

by S-Shimotori

Swiftの標準ライブラリが提供する Equatable, Comparable, Hashable というプロトコルの提供する機能と、自前のクラスや構造体でこれらのプロトコルを実装する際の注意点についてご紹介いただきました。

実際の開発でもこれらのプロコトルを自前のクラスに実装することはよくあるのですが、各プロトコルを実装したクラスが満たすべき性質について深く考えたことがなかったので、今後実装するタイミングがあればそのあたりも気を付けながらより Swifty な設計を心掛けたいと思いました。

4. 「fastlane x Jenkins」でアプリ配布を自動化してみた

by Nonchalant

弊社の井原による、fastlaneJenkins を使ってアプリの開発から審査提出に至るまでの様々な作業を自動化したという発表でした。多くのプロジェクトで fastlane や Jenkins などの CI ツールを取り入れている弊社でも、ここまで作業を自動化している例は少なかったので新鮮でした。

リアルなマシンを用意することが難しければ、CircleCI などのサービスを活用することでも多くの自動化が達成可能です。これを機に、いつも面倒だと思っていた作業を自動化してみてはいかがでしょうか?

5. KeyPathの便利な使い道を研究する (仮)

by Katsumi Kishikawa

弊社技術顧問の岸川による、Swift 2 から 4 にバージョンアップする過程で便利になっていった KeyPath の機能と、それを使った Lens 実装コンセプトの紹介でした 。このように実際のコード例を追いながら見ていくと、Swift 4 で NSObject の値を監視する処理がとっても書きやすくなったことが分かりますね。

WWDC でも KeyPath についてのセッションがありましたが、Generics を活かした設計の例として大変興味深いです。また、個人的には今回 KVO がやりやすくなったのは、その先にある標準 Data Binding 実装の予兆なのでは・・・?なんてことを考えたりもしています(笑)。

6. [LT] Protocol と Class と SubClass

by lovee

Protocol を Class が実装し、Class を SubClass が継承している継承関係が存在するときに、微妙なメソッドの定義の仕方の違いにより、メソッドディスパッチの動作が変わってしまうという Swift の落とし穴?に関する発表でした。

Protocol Extension によるデフォルト実装を利用する場合は、こういったメソッドディスパッチの動作を理解しておかないと、落とし穴にハマってしまうことがあるかもしれませんね。実は、わたしも業務コードでこの挙動の違いに悩んだことがあったため、今回の発表には終始頷きっぱなしでした。こういった事例を共有できるのも勉強会のよさだなあと思います。

7. [LT] LIFULL HOME'S アプリ Firebase による特集配信

by yousan

特集配信機能を持つ iOS アプリにおいて、配信内容をリモートで変更するために Firebase (特にRemote ConfigとRealtime Database) を活用した事例の発表でした。

弊社でも最近 Remote Config を活用してアプリのアップデート内容をユーザーにお知らせする機能を実装したのですが、簡単にセグメントを切って配信内容を変えたりできるのがとっても便利ですね。Realtime Database の方は使ったことがなかったので、今後の機能追加の際には採用技術の選択肢に加えてみようかと思いました。

8. [LT] 自分のライブラリを1年運用してみた振り返りと知見

by fumiyasac

年月日から祝祭日を判定する OSS を開発し、運用してきた中での知見を発表いただきました。シンプルな OSS であっても、長くメンテナンスを続けるのは大変で、人知れない苦労があるのだということがよく分かります。

その一方で、外部のエンジニアから機能追加のプルリクやイシュー投稿をもらえたりするのは OSS の醍醐味だと感じましたし、テストコードを厚く用意することで素早く改善が行えるなど、今後の開発に活かせそうな Tips もいくつかありました。うまく部品化できそうなコンポーネントやコードを書いた際には、ぜひ OSS として公開してみたいですね!

まとめ

Swift 言語本体に関する発表もあれば、iOS アプリのアーキテクチャ設計や外部サービスの活用についての発表もあり、バラエティに富んだ勉強会となりました!また懇親会では、様々な会社のエンジニアさんはもちろんとして、大学生の方や Swift をまだ始めたばかり!という方ともお話することができ、改めて iOS エンジニアの層の広さを感じました。

今後も各勉強会の枠を超えて、ときどきこのようなイベントを開催していければと思います。日本経済新聞社の関係者の皆様、ご参加いただいた皆様、ありがとうございました!

iOSDC 俺コン 開催&登壇のお知らせ

10/2 (月) と 10/3 (火) の2日間で非公式の iOSDC リジェクトコン (俺コン) が開催されます!『俺の CfP がこんなに通らないわけがない』とお嘆きのエンジニアの皆様の発表が盛りだくさんの予定ですので、ぜひこちらもチェックしていただけたらと思います。弊社からもわたし保坂と井原が登壇予定です。よろしくお願いいたします!