はじめに
お疲れ様です。最近寒くてオフトゥンから出られないかむいです。
勉強会に足を運べていない日が続いていたのですが、今回はメルペイさんが主催する『Merpay Tech Talk #2』にお邪魔して来たので、レポートをまとめたいと思います!
この日はペンギン村の村民でもある@natpenguin氏も主催側で参加されており、久々にお会い出来て良かったです😃
発表されたテーマはUIにフォーカスを当てたものが多く、どれもiOSエンジニアにとっては関心の高い発表内容でした。
「Cloning Photos app fluid interface」by @masamichiueta さん
WWDC2018でもセッションがあった、iPhone Xなどに使われる操作インターフェースであるDesigning Fluid Interfaceについての発表でした。
メルペイのミッションに「信用を創造して、なめならかな社会を創る」という言葉があるとのことで、この発表でも滑らかな動きをどう実現し、ユーザーにどう体感してもらうかというテーマでお話をされていました。
実際にWWDC2018のセッションで紹介されたFluid interfaceの話から「いつでも行ったり戻ったり出来ること」というポイントを取り上げ、実際にiPhone XとiPhone 8とのアプリのバックグラウンドへの退避例を挙げて説明をされていました。
また最後には標準の写真アプリにもFluid interfaceを意識した仕組みが用意されていることを例に挙げ、実際にクローンして動きを紹介しながら仕組みを説明してもらいました。
確かに何気なく使っている端末のジェスチャー1つ1つに、ユーザーの意思決定と並行にジェスチャー操作が行えるのは使いやすいですよね。
アプリ開発者としてUIを考える際に意識しないとなぁと再認識しました(・ω・)
「UIViewController in XIB + IBDesignable」by @akifumifukayaさん
画面をレイアウトする際、iOSではStoryboardファイルがよく使われますが、Storyboardのデメリットを挙げつつ、xibファイルを使うとどんなメリットがあるかについて発表をされていました。
またIBDesignableを合わせて使うことで、よりxibが便利になることも合わせて紹介していました。
実際にメルペイのプロダクトでも画面レイアウトにはこの形を採用しているとのことで、@natpenguinさんからも発表にあったようなメリットがあることを教えてもらえました。
僕が所属するプロジェクトでは、Storyboardファイルを使いつつ、独自でDIを行える仕組みを構築し画面レイアウトに取り組んでいますが、内製化・堅牢化が過ぎると、今度はそのルールを理解するための取り組みが必要になるデメリットもあるんですよね。
(そこはチームの方針や運用ルールをしっかり決めれば問題は無いのですが)
今回のようにiOS SDKが標準で提供している仕組みを使い、新規の人でも「xibのイニシャライザを使ってDIを実現する」というシンプル且つiOSエンジニアには馴染みのある仕組みを採用する取り組みもまたメリットがあるなぁと感じました。
「Functional programming for UI」by @Teddyさん
トリを飾ったのは「UIのための関数型プログラミング」について発表された@Teddyさん。
ニューヨークから昨年来られたとのことで、英語の方が発表しやすいらしく、その注意を完璧な日本語で謝っておりました。
個人的に問題の無さを感じつつも、この発表は英語で行われました。
(英語耳が育って無い僕ピンチ…!😇)
発表されたコードは、ある起点に吹き出しの矢印をあてたBalloonViewのポップアップ表示処理を連続でアニメーションさせる実装についてです。
大抵の場合は数が多ければ多いほど、コールバック地獄になりそうな処理をどう綺麗にまとめるかという点で、下記のREAD.meにも記載されているような関数を使うと、階層が深くならないコーディングを実現できるという処理について説明されていました。
個人的に >>>
が視覚的にわかりやすくて好きです。
(pbxpojファイルの競合箇所かと一瞬思ったのは内緒)
ソース上で使用それているキャラクターが可愛く、発表中にも良いアクセントにもなっていました。
キャラクターが可愛くて辛い(語彙力#merpay_techtalk
— かむい@ペンギン村 Tech (@kamui_project) 2018年11月14日
BalloonViewに限らず、こうしたアニメーション処理を複数回連続で実施したいということは多くあることだと思うので「どのようにReadableなコードを実現するか」参考になる発表でした。
何よりもインパクトがあったのは発表後の質問タイムで、参加されてた@hatakenokakashiさんはじめほとんどが英語で質問し(!?)、またその質問に対する返しをTeddyさんが普通に日本語で返す(!!?)というやり取りが凄かったです。
皆さん外国語も技術力と兼ね揃えていてヤバみが深いです😇😇😇
ちなみに懇親会でTeddyさんと少しばかしお話させて頂きましたが、日本語の勉強期間をお聞きしたところブランクも含めてざっと3年ほどだそう。
自分がそのスパンで英語をどれだけ理解出来るようになったかと思うと目眩がした次第です笑
メルペイさんには凄いエンジニアが続々と参加されているなぁと感じた瞬間でした…!
最後に
最近のiOSの勉強会では主に設計やテスト、CI/CDといったアプリ開発を支える技術のテーマが多くなってきている印象だったので、久々にUI実装の発表を多く聞けて楽しかったです。
参加者の関心度も高かったようで、まったく質問の手があがらないというようなことも無かったのが素晴らしいと感じました。僕も英語の勉強頑張らねばと痛感しました笑
楽しい勉強会の場を催して頂き、メルペイの皆様、ありがとうございました!