Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

iOSDC Japan 2020に参加しました

こんにちは、モバイルクライアントグループ iOSエンジニアの大石です。

9/19~21に開催された iOSDC Japan 2020 へ参加した件をブログにします。 今回、弊社としてはシルバースポンサーとしてスポンサードしており、LTへの登壇は1名、他のメンバーは勉強会・カンファレンス参加補助で参加しました。

はじめに

弊社スタディプラス 株式会社はシルバースポンサーとして、参加者へ送付されたノベルティボックスに缶バッチを提供させていただきました。もし、機会がありましたらどこかに付けていただければと思います。(切実)

f:id:k_oishi:20201009173041j:plain:w320

感想

参加したメンバーの感想です。 今回は弊社のiOSエンジニアとAndroidエンジニアの全員が参加しました。 弊社は昨年までiOSチームとAndroidチームに別れていたのですが、今年からモバイルクライアントグループという一つのチームになりました。 両方のプラットフォームの開発に少しずつ無理のない範囲で携わり、個人としては新しい開発スキルの習得、組織としては将来的にはエンジニアリソースの効率化を目指しています。

明渡

今年が2度目の参加で、iOS 13における Siri Shortcuts 最小実装+αというテーマのLTでiOSDCへ初めて登壇してきました。 LTの解説・補足記事は別途こちらのブログへ投稿する予定です。遅筆で恐れ入ります...

LT待機部屋では「生放送だし、コメント拾いながら発表できるとかっこいいよね!」等雑談が交わされておりましたが、もちろんそんな余裕はなく。ドラが鳴る前に発表し切れたのでそれだけで御の字かなと思ってます。

視聴したうち、弊社でも是非なるべく早めに取り組めたらいいなと思ったセッションの感想を綴ります。

Xcode Preview でUIKitベースのアプリ開発を効率化する

https://fortee.jp/iosdc-japan-2020/proposal/a88be712-b87a-4d87-bc6d-2579c2ce9b35

Xcode PreviewsをSwift UIではなくUIKitでも利用するための方法と、利用した際のメリットを具体的に提示していただけたセッションです。

UIKitベースでもXcode Previewsを導入する方法があると知ってはいたものの、iOS 12のサポートをし続けた状態での導入手順に煩雑な印象があり、iOS 12を切ってから導入を進めたいと思ってました。 こちらのセッションを視聴して、今はできるだけ早急に導入したい気持ちです。

古くから存在する機能は特に、ソースコードが仕様として取り扱われている側面が残念ながらそこそこ存在しております。プレビュー用のコードを記載しておきさえすれば、Xcode上でビルドをせずに画面の仕様を確認することができるのは非常に魅力的です。

最近チーム内でiOSとAndroidの開発タスクの行き来が活発になっており、iOS開発歴の浅いメンバーにも心強いツールとなります。 良いことづくめであるイメージが具体的にできたので、極力近いうちに対応をねじ込む機会をうかがいます。

iPadOSDC: Multiple Windows

https://fortee.jp/iosdc-japan-2020/proposal/b60ddbb9-7b37-4f24-b530-c87581d35e43

iOS 12のサポートを終了すると発生する、UIApplicationDelegateSceneDelegateへ差し替えるに対応の際に大変有用な知見の詰まったセッションでした。

こちらのセッションの事前知識がない状態で臨むと、対応時により考慮漏れが発生したかもしれないです。 とてもありがたい内容で、参考にさせてもらいながら作業すると思います。

また、アプリのプロセスがキルされる前に画面を復帰するための仕組みに非常に既視感を覚え、やはりそういう実装に落ち着くのねと一人ほくそ笑んだりしておりました。Androidは時代を先取りしすぎている...?

若宮

今回初めての参加になりました。若宮(id:D_R_1009)です。 久々にニコニコ動画にログインし、楽しく視聴しました。遅延もなく、非常に見易かったです。

普段はAndroidとiOSとFlutterを混ぜて開発しているので、アーキテクチャあたりに引かれつつ、尖っていて面白かった2セッションを挙げたいと思います。

Synchronized iPhones, Again!

https://fortee.jp/iosdc-japan-2020/proposal/3a9b496e-8745-4d1d-8952-8ac45a42ca8a

登壇についてのブログ。スライドも掲載されています。

https://www.toyship.org/2020/09/22/154728

個人的な印象になりますが、iPhone/iPadは近距離の端末で接続をした際にとても安定しています。 そんな端末たちがスムーズに連携していく様は感動的でした。

最初のARには騙されてしまいましたが、後半の有機的なネットワークを接続する箇所は、iOSだけに閉じることなくネットワークを考える上で非常によい題材になる気がしました。 実機で行うにはチョット金額的に厳しいものがありますが、三桁台の端末を繋いだ時にどうすれば良いのかなど、アルゴリズムとiOSの仕組みの両方に興味が湧くとても刺激的なセッションだったと思います。

Apple Siliconへの長い旅

https://fortee.jp/iosdc-japan-2020/proposal/0188c283-2804-42cc-acb2-0287ec38ca57

iOSと The other OS のそれぞれを思い浮かべながら聞いていると、この10年の進歩がうかがえる40分と3秒の濃密なセッションでした。 なぜiPhoneが早いのか、なぜiPadが綺麗な描画だったのか、なぜApple SiliconによりMacが置き換えられていくのかと言った興味にひたすらに答えてもらったような気がしています。

モバイルアプリを作っていると、そのアプリが動いている端末のディスプレイサイズを意識することはありますが、SoCを意識することはなかなかありません。 おそらくビルド時にストップしてしまった時や、なんらかのオプションを追加しなければならなくなった時程度ではないでしょうか。 その中で、アプリの動作を支えてくれる。そして速度を保ってくれるSoCを考えることができ、同時にOSのバージョンアップ理由もなんとなく理解できる、意義深いセッションだったと感じています。

隅山

主にAndroid開発を行っていますが、最近はiOS開発も始めたので勉強のため初参加しました。

今まで勉強会でiOSの5分枠LTは見たことありましたが、40分枠の発表をがっつり見るのが初めてだったのでiOSならではのつらさを感じることができました。(つらさへの共感コメントも多かった印象) 自分的に面白いと思った発表の感想を書いていきます。

エラーアーキテクチャ設計について考える

https://fortee.jp/iosdc-japan-2020/proposal/68905652-4f5d-444b-965f-ba572b750467

自分はよくユニットテストを書いていて、テスト観点でエラーケースを考えるときに漏れがないか心配することがありました。 そこでこの発表を通して、エラーアーキテクチャ設計の考え方が非常にいいなと感じました。

エラーハンドリングを頭の中で整理すると漏れなどが生じて、同じ処理でも異なってしまう可能性があります。特に複数人開発だと統一感がなくなりやすいかなと思います。 解決方法として、エラー型をラッパークラスに定義し、コンパイラにエラーハンドリングの検知をさせることで上記の問題を解決する考え方が勉強になりました。 開発の本質ではないエラーハンドリングをコンパイラに任せることで、開発の本質に集中できると思います。

テストコードが増えるとバグは減るのだろうか? - 「0% → 60.3%」で見えた世界の話

https://fortee.jp/iosdc-japan-2020/proposal/f12fb46e-1604-4339-8f76-4289fb835e6e

この発表ではテストコードに関する共感が非常に多かったです。 自分としてもテストコードを運用していく内にわかったことが、今現在の不具合を発見するためにテストコードを書くわけではなく、今後の機能追加で不具合を発生させないために書くということがわかりました。

以前テストコードは仕様書のようなものという風に教わったのですが、この発表を通してそれを再確認することができました。 テストコードを書くことでどのような入出力を想定していて、どのような入出力がイレギュラーケースなのかを把握することができます。 自分が触れたことない部分のコードをリファクタリングすることは不具合との戦いになると思うので、弊社でもテストコード(仕様書)をまとめることで心理的ハードルを下げることができればと思います。

中島

普段は主にAndroid開発をしている中島です。iOSDCは初めての参加でしたが、オンライン上でも活気が伝わってきました。

iOSの方の開発はほとんどしたことがないので新鮮な気持ちでセッションを聴講していましたが、特に興味深いなと思ったものについて感想を述べたいと思います。

iOSリジェクト戦記 ~リジェクトされないための課金ページ~

https://fortee.jp/iosdc-japan-2020/proposal/09b08386-9b39-4225-873e-229bfdc0bcaa

iOSのリジェクトについて、今までiOSエンジニアの方々が苦労していたのをよく見ていましたが、この発表では特に激しい戦いである課金関連申請の辛さを改めて見せつけられました。

自動継続についての説明というガイドラインに載っていない項目の記載、目立たせるべきまたは目立たせてはいけない文字列、審査員のさじ加減などといったスライドそれぞれに辛さが感じ取れました。 巻物風のスライドの作り方も印象に残りやすく、発表の工夫として素晴らしかったと思います。 また、「次回の申請に問題を持ち越す」仕組みをAppleから提案されているということを初めて知りました。

この発表を通して様々な理由によるリジェクト事例と対策を知ることができましたが、まとめの「課金ページのデザインに正解はない」に真理を見た気持ちになりました。

Firebase Dynamic Links で既存のユーザーだけでなく、潜在的ユーザーにも体験を提供したい!

https://fortee.jp/iosdc-japan-2020/proposal/009e39f5-b07b-481b-9e43-d5bd6dc7217e

Firebase Dynamic Links は自分も割と昔から実装経験があり、Androidでの挙動や実装については少し勉強していましたが、iOS側の実装や挙動については細かいところまで把握できていませんでした。

UniversalLinksとCustom URL SchemeそれぞれをOSのバージョンで使い分けられているとは聞いたことがあったのですが、この発表でそれぞれの受け取り方などを把握することができました。 AndroidではminimumVersionCodeの判定は自動で行われるが、iOS側ではハンドリングするコードが必要だった点など、差異について知ることができたのがよかったと思います。

大石

素晴らしいセッションばかりでしたが印象に残ったセッションの感想と、初めて担当したスポンサーの申し込みに関して書きたいと思います。

「iOSエンジニアだし、Androidアプリも作れるでしょ?」

https://fortee.jp/iosdc-japan-2020/proposal/5fd45cf8-2911-419a-9bba-b535d26fe98a

モバイルに関してはiOSのみの経験だった私にとってぴったりのセッションでした。 私もモバイルアプリ開発はiOS専門でしたが、最近はAndroidも触りつつあります。 iOSとAndroidのUI、アーキテクチャ、IDEの違いなど、iOSアプリエンジニアがつまずくであろうポイントがまとめられているセッションでした。 今後もスライドを見返していくことになると思います。

Flutter移行の苦労と、乗り越えた先に得られたもの

https://fortee.jp/iosdc-japan-2020/proposal/ffc2099c-a65c-414b-90f0-677b90260201

リリースから10年という歴史の長いアプリのFlutterへの移行という興味深いセッションでした。 具体的にはAdd-to-appという既存のネイティブアプリにFlutterプロジェクトを部分的に組み込むという移行手段でしたが、Flutterならではの挙動の違いなどを知ることが出来ました。 スポンサーセッションではありましたが、通常のセッションと同じくらい興味深いセッションでした。 弊社のアプリもそれなりに歴史がありますので将来的なアプリのリニューアルなどの検討をする必要があるかもしれないと、ふと思いました。

初めてのスポンサー申し込み

弊社はこれまでもiOSDC Japanへのスポンサードをしていましたが、社内の体制が変更になり各種イベントへのスポンサードの対応をイベントに関係するグループで行うことになりました。 そのため、今回のiOSDC Japanへのスポンサーの申し込みをモバイルクライアントグループのリーダーである私が担当しました。

  • スポンサー費用の申請
    例年通り、社内のブランディングおよび採用向けの露出としての予算が取られていたので予算の申請はスムーズに進めることができました。

  • ノベルティ
    ほぼリモート勤務状態のため、Slackで弊社の管理部へノベルティに関して相談したところ、既存のノベルティの在庫状況から缶バッチが良さそうでは?という提案を受け、缶バッチを提供させて頂きました。

  • スポンサー枠のカタログ入稿
    今回のiOSDCでは参加者へ配布するカタログにスポンサー記事の掲載枠があるとのことでした。 iOS開発者とUIデザイン関連の参加者を想定して、弊社の2つのプロダクトの紹介をテーマとして弊社のデザイナーに制作を依頼しました。 入稿の締め切りまで1ヶ月ほどありましたので、余裕を持って制作することができました。 次回も機会があれば今回とは違うものを作ってみたいと思っています!

f:id:k_oishi:20201009173605p:plain:w600

  • 次回はやるぞ!と思ったこと
    他のスポンサー企業さんがTwitterを活用したスポンサードの事前告知や提供したノベルティの紹介、社員の登壇内容の告知をされていました。今回、弊社ではそこまで手が回っていなかったため、次回は計画的に準備したいと思っています。

最後に

今回はオンラインでの開催でしたが、多種多様なセッションを聞く事ができ、弊社のエンジニアもLTで登壇することができました。来年もまたスポンサーとしてのイベントへの協力と、各エンジニアが登壇できるような新しいこと・面白いことを業務でやっていけるような会社にしていければと思っています!

おわり