「TechBrew in 東京 ~モバイルアプリの技術的負債に向き合う~」に参加してきました
はじめに
こんにちは。
KINTOテクノロジーズ モバイルアプリ開発グループの中口です。
2024年5月23日に開催されたTechBrew in 東京 ~モバイルアプリの技術的負債に向き合う~に参加してきましたので、その様子をレポートします。
当日の様子
会場はオフィスが新しくなったFindyさんです。
噂には聞いていましたが、とても広くて綺麗なイベントスペースがありテンションが上がりました😀
また、TechBrewという通りお酒や軽食もたくさん用意されており非常に和やかな雰囲気でした。
ただ、私はこの後LTの登壇があったため発表が終わるまではお酒は控えました👍
LT1「Bitkeyのモバイルアプリを進化させるための歩き方」
Bitkeyさんのモバイルアプリの現在に至るまでの歴史をお話しいただきました。
元々React Nativeで作られていたアプリを、ネイティブ化→SwiftUI導入→TCA導入という形で進化させていったとのことです。
ただし、SwiftUI導入は道半ばとのことで失敗だったかもしれないとのことでした。
やはり、iOSのバージョンによってSwiftUIの挙動が変わるため、そこに苦労されたとのことで、私も同じ経験あるなぁと共感いたしました。
LTの中で「自分たちがいいと思うもの全て正解だ」、「当時の判断は、きっとその時正解だった」という発言がとても印象的で、確かにおっしゃる通りだなと思いました。
発表者のあらさんとは、LT後の懇親会でもお話しをする機会があり、Swift on Windowsについてのお話など、私が知らないこともたくさん知っていてとても楽しくお話しさせていただきました。
LT2「モバイルアプリの技術的負債に全社を挙げて取り組む考え方」
技術的負債とは何か?および、それにどう立ち向かうかについてお話しいただきました。
技術的負債の中でも、
- 認知しているが、リターンを得るために受け入れた
- 認知しておらずそもそも負債だと気が付いていなかった、または環境変化により負債になったもの
これらを分けて考える必要があるとのことでした。
前者は大きな問題にはならないが、後者を放置しすぎてしまうと許容を超える問題が発生する可能性があるとのことです。
技術的負債に立ち向かうためには、ビジネスタスクを一旦止めてでも負債解消の時間をもらう交渉が必要で、負債は開発チームだけでなくステークホルダー含めたみんなの問題と捉えて対応する必要がある、という点とても納得です。特にエンジニアマネージャーやチームリーダーなどは、そういった交渉力が重要だと実感いたします。
また、状況の見える化のためFourKeysを使用しているとのことですが、数字を目標にしすぎることは危険だということでした。
私も常々、チームの開発力の見える化は難しいなと感じておりFourKeysのようなフレームワークに頼りすぎないように注意しております。
LT3「Safie Viewer for iOS での技術的負債との付き合い方」
リリースして10年経つアプリの開発をしているとのことで、そこで抱える悩みやその対応方針についてお話しいただきました。
使っている技術もリリース当時のものが多く残っており、リアーキテクチャしたいものの、致命的な何かが起きていないのも事実で、現状でも多くの追加機能をリリースできている状態とのことです。
そうなると時間をかけたリファクタリングを行う説明ができず、なかなか負債解消に動けない状況とのことでした。
現在は大きく下記の2軸の方針で、できることから対応されているとのことです。
- すぐにできる対応はすぐ行う
- Xcodeの新バージョンが出たら即アップデート
- バージョンを上げないと書けないコードがある=レガシーコードを生む
- Danger導入
- 腰を据えての対応
- 今はMVC/MVP
- 非同期処理はクロージャーベース
- この状態からのリアーキテクチャーはリスキー
- 新機能のみ、モダン技術の検証をしていこう
実際に取り組むためには、具体的なスケジュールを引く必要あるとのことでなるほどなと感じました。
私も、大きなリファクタリングはかなり躊躇してしまうのでスケジュールをしっかり引いてやり切ることが大事だなと思いました。
LT4「パッケージ管理でモバイル開発を安全に進める」
LT3と同様、こちらも8年と歴史のあるアプリで、共通化や分離に焦点を当ててどのように負債を解消していったかについてお話いただきました。
最近抱える悩みとして、過度な共通化をしている箇所がたくさんあるとのことでした。
例として、Channelのデータに100くらいのパラメータを持っている(登壇者様の表記を流用させていただいています)状態になってしまっているようで、毎回全て使うわけでは無いデータを持ってしまっている、という状況があちこちにあったとのことでした。
一方で責務を分けすぎることも注意が必要とのことです。
一箇所からしか呼ばれていないのに分離されており、やりすぎな状態も散見されるとのことでした。
「考えて共通化する」「考えて責務分けする」ことが大事ということが、とても印象的で私も深く考えず分離していたことがあったような気がしています。。。
そして、これらはPackage Managerを使って管理する方法が良いということで考え方や方法を紹介いただきました。
LT5「GitHub Copilotで技術的負債に挑んでみる」
私の発表になります。
発表内容はこちらです。
XcodeにおけるGitHub Copilotの利用は、まだまだ公式対応しているVScodeなどに比べると制限が多く、利用率が伸びていない状況かと感じております。
一方で、XcodeでもChat機能に関しては技術的負債解消に貢献できると感じたのでその点を発表してきました。
途中、Chat機能を実際にデモしたのですが、会場の視線が一段と集中したのを感じ、皆さんが興味を持って聞いてくれていたようでとても嬉しかったです。
社外のイベントでの登壇は初めてでしたが会場の皆様が暖かく聞いていただけたので、無事発表を終えることができました。
終わりに
LT終了後は懇親会があり、たくさんの方と情報交換をさせていただきました。
非常に良い刺激になり、今後もこういった社外イベントへの参加や登壇を積極的に行っていきたいと感じました。
本イベント主催の高橋さんともお話しすることができ、弊社のモバイルグループとFindyさんで何かイベントができたらいいですね、という話をさせていただいたので今後こういったことも積極的に取り組めたらなと考えております。
お土産にFindyさんが作られたIPAをゲットしてきました!
関連記事 | Related Posts
We are hiring!
【iOSエンジニア】モバイルアプリ開発G/東京
モバイルアプリ開発GについてKINTOテクノロジーズにおける、モバイルアプリ開発のスペシャリストが集まっているグループです。KINTOやmy routeなどのサービスを開発・運用しているグループと協調しながら品質の高いモバイルアプリを開発し、サービスの発展に貢献する事を目標としています。
【プロジェクトマネージャー】モバイルアプリ開発G/大阪
モバイルアプリ開発GについてKINTOテクノロジーズにおける、モバイルアプリ開発のスペシャリストが集まっているグループです。KINTOやmy routeなどのサービスを開発・運用しているグループと協調しながら品質の高いモバイルアプリを開発し、サービスの発展に貢献する事を目標としています。