こんにちは、Wantedly で iOS エンジニアをしている樫原 (@kashihararara) です。
6月23日(水)に iOS と Android 開発の Tips 共有会である potatotips #74 を Wantedlyスポンサーで開催しました。
久しぶりのコミュニティでのスポンサーのイベントファシリテーションを行いましたが、 みんな様々な Tips 紹介があり自分も楽しく勉強させてもらいました。
今日はその Tips たちのまとめです。
同僚の @kubode さんが、同じような意味を持つ関数はシグネチャを揃えて実装したいが実装上は自由に書くことが許されているので interface と object 内拡張関数で拡張に秩序をもたせる話をしました。
Firebase Cloud Messaging (FCM) を使ってプッシュ通知を受け取るときに 見知らぬ Channel ID (その他) に割り振られてしまって個別の通知OFFが出来ずハマった、というお話でした。
インテグレーションテストでしか確かめられない動作不具合の修正は、私もよくハマりますね🤔
こちら Qiita に記事を書かれていたので詳細はこちらをチェックです!https://qiita.com/zoothezoo/items/cff6c3e8cc2fbcba791b
SharePlay でどういうことが可能なのか事前知識が全くなかったので、今回の発表を聞いて意外と身近に使える機能が複数あったのと、アプリ側の実装方法について知ることができて勉強になりましたね。
ちなみに本セッションの 「画面共有に対応するのに必要なコードは?」→ 「0行」(ドン!!) のクエスチョンが今回の potatotips の最大の盛り上がりポイントでした。
AndroidアプリでLine Heightを
設定するときに注意したいこと @_rockname
前回 potatotips の 「iOS アプリで Line Height を設定するときに注意したいこと」に引き続き、Android での Line Height 周りの注意点についてお話いただきました。
日本語だと意図した見た目にならない、は個人的にあるあるすぎて首がもげそうになりました。
FaceTime アカウントを使って複数人の知り合いとグループセッションが行えるようになる方法についてお話いただきました。
これも知らなかったのですが、Foundation.Data 型でアプリ間メッセージングを行っているようなのでお絵かきアプリなどかなり応用が効く技術みたいですね。
AndroidのOSアップデートをより早く届けるために -Project MainlineとAndroid12- @nichi_yd
iOS の場合、大抵最新から2~3年前にリリースされた OS をサポート対象にしていることが多いのですが、Android の場合は約6年前にリリースされた API Level 23 をサポートに含めていて傍目から「なんでそんな古いバージョンをサポートしているんだろう」とずっと疑問でした!
この発表を聞いて Android OS のアップデート普及が遅い理由がわかったのと、これから OS アップデートが早くなっていきそうな計画を知ることが出来ました。
Swift Concurrency第一歩 @shiz
WWDC 2021 で発表された Swift 5.5 の目玉機能の1つである Swift Concurrency についてお話いただきました。使える日がくるのが待ち遠しいですね。個人的には C# 5.0 で async/await が採用された時の思い出がフラッシュバックして新卒のころの懐かしい気持ちになりました。
ちなみに @shiz さんは The Swift Programming Language の日本語訳をされていて、こちらから見ることができます!https://swift-programming-language-jp.gitbook.io/the-swift-programming-language-jp/language-guide-gaido/the-basics
5 Useful Tips on FlutterFlow @korodroid
FlutterFlow (https://flutterflow.io/) についての 5つの Tips について発表いただきました。
FlutterFlow 知らなかったのですが、Figma や Canvas のように UI 部分を組んでいけるので、デザイナーさんに UI を完全にお任せするという未来が見えてかなりテンションが上がっていました!
TCA v0.19.0からのSwitchStore/CaseLetが良い -さらばすべての IfLetStore による画面表示切り替え- @yimajo
pointfree が OSS として公開している The Composable Architecture (TCA) の v0.19.0 から導入された SwitchStore/CaseLet について発表いただきました。
排他な関係にある状態(State)を struct ではなく enum として持つことと、それを ViewBuilder 側でも switch-case のシンタックスシュガーで実装することで可読性が上がりそうですね。
Jetpack ComposeのCanvans入門 @_rmakiyama
これまでの fun onDraw(canvas: Canvas)
では手続き的に処理する必要があった描画ロジックを Jetpack Compose を使うことでより簡潔に実装できるとのこと。
UIKit から SwiftUI への変遷の際にも感じましたが何層ものレイヤリングかつアニメーションが伴うビジュアル表現を実装する場合 DSL 構文で書くことでレンダリングされた UI とコードの対応関係が近くなるので可読性があがるのは良いです。
LLDBを活用したデザインチェック @Scior
みんな大好き LLDB を使ってデバッグ中の画面に対して画像エクスポートや画像のインポート (指定の View への overlay) をする方法について発表いただきました。
デザインチェックの際に手動で位置を合わせるのをなくす、というのは実務で遭遇する解決したい悩みの一つだったので良い知見でした。
参加者の皆さんありがとうございました!
今回は potatotips #74 の開催をウォンテッドリーにて行いました。実際に実務で困っているテーマや、普段出会わない知見の共有など様々な発表を聞くことが出来て良かったです。