■概要
楽天グループが運営するラクマでは、旧フリルから含めて今年の7月末で9周年を迎え、10年目に突入します。
長年開発されてきたアプリのため、レガシーな部分が残っており、リファクタリングを継続して行っています。
その一方で、早期から iOS13 以上のサポートへ切り替えているため、新しい API の導入を積極的に行ってきました。
例えば Combine、SwiftUI、Compositional Layouts といったものです。
今回は、実際にプロダクションレベルで運用している実装について、特に Compositional Layouts について触れていきます。
また、その他にラクマの iOS 開発における挑戦を紹介したいと思います。
■登壇者
鶴田: @hcrane14 (Twitter)
黒田: @darquro (Twitter)
あなたの組織では幾つのサービスが開発されていますか? 1つ、2つ、それとももっと多くでしょうか? 具体的な数はさておき、同じ組織にいても違うサービスを作っていたり、違う機能を作っていたり、組織の規模拡大に伴い開発チームが分かれていくと、だんだんチーム毎に品質に差が出てくるかと思います。 そもそも品質というのは決まった物指で測れるものでもなく、サービスやチームによってそもそも何を品質の評価軸とするかも変わってくるものです。 でも本来同じ組織で開発しているサービスなら、エンドユーザに届けたい価値に対する根本的な思想や、最低限担保したい品質の基準があるはずです。 その価値に対する根本的な思想を伝えたり最低限担保したい品質を満たすためのサポートを、サービスやチームを横断して執り行っていく組織横断チームが必要になります。
しかし自分が常日頃開発に関わってない他のサービスやチームが今どういう問題を抱えているか、どういう状態にあるのかを把握していると自信を持って言える人はいないでしょう。 場合によっては自分のサービスやチームの状態や抱えている問題に関してすら、改めて他人に話そうにも整理しきれてないこともあると思います。 そこで組織横断チームを始めるためにはまず他のサービスやチームの状態や抱えている問題を知るための術、ひいては自分が他の人に話すために一度整理するための仕組みが必要になると私達は考えました。
本セッションではそれに対し私達が試している取り組みとして、サービス及び開発体制の定期健康診断と称した質問票ベースでの現状把握フロー、そしてその結果を踏まえた組織横断チームの運用と品質改善の取組みについて共有します。 またそれでも解決しきれていない問題についても共有します。
ミダスキャピタルが出資する株式会社GENDAは、連結従業員4000人以上からなるエンタテインメント領域のホールディングス会社です。2018年5月に創業し、現在は日米中3カ国に事業を展開、M&Aによる事業拡大に力を入れています。昨年度末には、セガグループからセガ
エンタテインメントを連結子会社化し「SEGA」ブランドのゲームセンター事業の運営も開始しました。
このセッションでは、老舗エンタメ企業をテクノロジーで進化させていく挑戦と、モバイルアプリの活用事例を紹介したいと思います。
【注目】
せっかくスポンサーセッション枠をいただいたので、iOSエンジニアの視点から見る弊社((株)ゆめみ)についてのご紹介をさせていただきます。
聞いていただいた方には是非、ご自身の会社や働き方と比較していただき、「あっ、ウチって意外と普通だったんだなぁ」「ウチよりもやばい会社あるやん!?」と安心していただければ幸いです。合わせて、余裕があれば(株)ゆめみについても知っていただければもっと幸いです。
【概要】
主に会社紹介となります。技術的なことはあまりお話しせず、エンジニアの観点から会社の制度・仕組み・体制等についてお話しさせていただきます。エンジニアをやる上で技術的なスキルを身につけ、向上していくことはもちろんのことですが、それ以前に働く環境や考えなければいけない様々なこともあると思われます。会社に属している方なら尚更です。なので、ここiOSDCというディープなiOSについてのお話ができる場であえて技術の話をあまりせず、「成長できる会社NO.1」を目指す会社のエンジニアがどんな働き方をしているか、どんなことをしないといけないか、どんなことができるか、などを弊社の紹介という形でお話しさせていただければと思います。
【終末】
予定では合成音声を用いた動画の公開となっておりますが、もし当日人間が話し始めたら、それは動画編集が間に合わなかったということです。
患者さんに「かかりつけ薬局」として「選ばれる」薬局には、何が必要か。
「kakari」は、薬局の「差別化」に着眼した新しいコンセプトの薬局アプリです。
去年には姉妹アプリであるかかりつけクリニック支援サービス「kakari for Clinic」をリリースし、その後両アプリ間の連携を開始しました。
「kakari for Clinic」アプリでオンライン診療を受けた患者さんは、「アプリ連携」機能を活用することで、「kakari」を初めて利用する際に必要となる情報の登録が簡略化され、「kakari」アプリを簡単に利用できるようになります。
本セッションでは、「kakari」で実現したい未来と、
FirebaseのDynamicLinkを使ったアプリ関連携の実装について紹介します。
2014年からサービス開始したnote。
iOSアプリはこれまでWebと機能面での差がありましたが、2020年は開発の土台作りのためのMagic PodやXcodeGenなどの活用、公式ライブラリであるDiffable Data SourceやCombineなどの導入、iOS 14で追加されたウィジェット機能の取り入れ、エディタ機能のリプレイスなど、さまざまな取り組みをしてきました。
2021年も、iPadアプリ対応やアクセシビリティ向上などに取り組み、アプリの評価も急上昇しています。
でも、インターネット上でひとびとが暮らすときの本拠地を目指すnoteにとっては、必要な開発がまだまだ山積みです。
本セッションでは、CTOの今からnote iOSアプリ開発のこれまでとこれからをご説明したうえで、日々一緒に働くPdM、デザイナー、ディレクターのコメントをご紹介します。
スタディサプリのiOS開発チームは新規サービスでSwiftUIを全面的に採用した開発を行っています。
このセッションでは、Full SwiftUIで中規模以上のアプリの機能をどのように実現したかを発表します。
技術選定でSwiftUIを導入を検討している(興味がある)方の後押しとなればと思います。
WWDC19で鮮烈に発表されたSwiftUI。発表当時は当時の最新OSのiOS 13以上のため、普及率とサポートバージョンの都合で選択肢として外れることが多かったのではと思います。
今日では、普及しているOSはiOS 14が一番のボリュームゾーンとなっており、ようやくSwiftUIを選択肢として取れるようになってきたのではないでしょうか。
我々が実際にその選択を取った時、どんな課題がありどんなメリットが見えてきたのかを説明します。
■構成環境
新規開発(既存コード無し)
Target OS: iOS 14.0
Xcode version: 12.5
Architecture: MVVM
Libraries: Combine, GraphQL(Apollo), Lottie, Nuke
■機能
複雑な画面遷移
API通信
Push通知
DeepLink
Animation
WebView
Testing
タウンワークでは、スマホユーザーに向けたiOS及びAndroidアプリのリリースを通じて、日々数多くの開発を行い、機能改善を続けています。これまでのタウンワークアプリは日本ですべての開発を行ってきましたが、より多くの機能改善を行うために、最近はオフショアチームと協業して開発を進めることに取り組んでいます。今回の取り組みで特徴的なことの1つとして、オフショアチームのエンジニアと日本チームのエンジニア同士が、共通言語である開発言語を用いてコード上で多くのコミュニケーションを直接行っていることがあげられます。これには、異なる母国語によるコミュニケーションを減らし、エンジニアが得意な開発言語でコミュニケーションを行うことで、相互理解を深めるといった狙いもあります。本セッションでは、タウンワークアプリ開発におけるオフショアチームの成り立ちや、オフショアチームと日本チームがどのように協業しているのかといったお話を、実際にオフショアチームと協業している日本のエンジニアから共有します。
このトークは、佐々木 と 中村2名での登壇になります。
佐々木 : GitHub, Twitter -> @omuomugin
中村 : GitHub -> @valmet
ゼクシィの iOS アプリは、2011年から開発されている歴史のあるアプリです。これまで外部の開発会社で開発をしていましたが、近年の結婚観の変化などを受けて環境の変化に柔軟に対応するために 2019年から 社内のエンジニアが開発に加わるようになりました。現在では 十数名ほどが iOSアプリの開発に関わっており、コードベースも 約20万行ある大規模なアプリとなっています。これまで様々な技術的なチャレンジを行っており、今回は Design System の導入背景や導入によるコミュニケーションの改善や開発者体験の向上について、また実装の方針などについて発表します。なおゼクシィにおける Design System は、 Figma 上でのデザインパターン一覧とそれをモバイルアプリ向けに実装したデザインライブラリの両方を含めています。
微妙に異なった定義の色が複数存在していたりなどの状況は、アプリ開発者ならば一度は遭遇したことがあるかと思います。関わってる人数が多ければ多いほどこういったことに気を遣うのは難しくなっていきます。同様なことがマージンやフォントサイズやアプリ内に繰り返し出てくるUIパターンでも発生し得ます。こういった細かいUIの一貫性を各開発者が各機能実装時に気にしなくて済むようにゼクシィでは Design System を導入し運用しています。
本トークでは、Design System の導入の背景や導入によるコミュニケーションの改善や開発者体験の向上について、また実装の方針などについて共有します。
このトークは、韮澤 と 浅井2名での登壇になります。
韮澤 : GitHub, Twitter -> @nirazo
浅井 : GitHub, Twitter -> @trsxxii
ホットペッパーグルメアプリは約20万行のソースコードから成る大規模なアプリで、10年以上の歴史の中で仕様とソースコードが複雑化し続けています。
この複雑さの解消と今後のメンテナビリティ向上のため、我々はコードリニューアル・リアーキテクチャを行う決断をしました。コードリニューアル・リアーキテクチャにあたり、iOSとAndroid間の不要な仕様差分解消や開発工数削減を狙いKotlin Multiplatform Project(以下KMP)を導入することとなりました。
現在はまだ開発中ではありますが、今のところKMP導入による致命的な問題は発生せず、順調に開発が進んでいます。
本セッションでは、大規模なアプリケーションにKMPを導入した際に発生した課題やその解決方法など、iOSアプリにKMPを採用する際の知見を共有します。
初期のKMP実装はiOSエンジニア2名で行っていたため、iOSエンジニアの皆様により近い目線でお話できると思います。
ロジックの共通化に興味があるけどKotlinに手を出すことに抵抗があるiOSエンジニアの方、大規模サービスにおけるロジック共通化の事例を知りたい方、ホットペッパーグルメのアプリ開発事情を知りたい方は是非ご参加ください!
スタディサプリEnglishでは社内向けのiOSアプリをフルSwiftUIで1から開発し、去年の秋から約1年間運用しております。
ただSwiftUIはWWDC2019で登場してからまだ2年でOSのバージョンやXcode(iOS SDK)のバージョンによって挙動が大きく変わったり、Viewの書き方によって自分が触ってない子Viewにまで影響してしまうなど不安定な部分が多いです。
本トークでは不安定なSwiftUIアプリを運用していく際に直面した課題やそれらの課題をUITestを使って解決し安定的に運用することができるにした方法を話します。
ヤプリはアプリの開発・運用・分析をノーコードで提供するアプリプラットフォームです。
豊富な40以上の機能と外部サービス連携で、優れたユーザー体験を提供しており、
アプリ制作を非エンジニアが行うことが可能です。
本セッションでは、エンジニアが手を動かさなくてもストア申請までできるようにした自動化の仕組みや、
複数のアプリを作れる仕組みだからこそ直面する開発時の課題やアプローチについてご紹介します。
樫原 @kashihararara と共同でお話します。
Wantedly では 2020年からモバイルアプリのロジック部分のクロスプラットフォーム技術として Kotlin Multiplatform Mobile (KMM) を採用しています。これまでは iOS ネイティブ のコードに加えて 一部の画面で React Native を利用していましたが、React Nativeのメンテナーが不在になり負債化し、代替手段として KMM を部分的に導入し始めました。
KMMは、iOSとAndroidのビジネスロジックを単一のコードベースで共通化するモバイルSDKです。UIの共通化はせずにビジネスロジックだけを共通化し、UIはプラットフォームに最適な形で提供できます。
本トークでは Wantedly が KMM を利用し始めて約1年の運用を経て得られたメリットと、導入に際して様々なつまづき・iOS アプリエンジニアから見て障壁が高かった部分などを赤裸々に語っていきたいと思います。
対象者
数億人のユーザがコミュニケーションに利用するLINEアプリの開発チームでは、モバイルプラットフォームのアップデートに合わせて組織横断のタスクフォースを毎年立ち上げて開発を行っていました。 今年はさらにこういったモバイル体験向上の取り組みを進める為に、モバイルエクスペリエンス開発室を立ち上げました。iOS/Androidヘの新機能対応や、LINEアプリを複数のデバイスで利用する際の体験向上、モバイルプラットフォーム特有のビルド環境改善に取り組んでいます。
本セッションでは、立ち上げの背景から具体的な取り組みについてご紹介します。