100人でアプリをリファクタリングして見えてきた、最強のiOSアプリ設計に求められること by Yuta Koshizawa

iOSDC Japan 2020
採択
2020/09/20 11:30〜
Track A
レギュラートーク(40分)

100人でアプリをリファクタリングして見えてきた、最強のiOSアプリ設計に求められること

koher Yuta Koshizawa koher

4月から5月にかけて、リバーシ(オセロ)のiOSアプリを題材に、みんなでリファクタリングに取り組んで知見を共有するオンラインイベント「Swift Zoomin' 」チャレンジを行いました。100人以上の方に参加していただき、その中から9名の方に成果を発表していただきました。

問題への取り組み方は人それぞれでしたが、それらを俯瞰して眺めるとアプリの設計に求められることが浮かび上がります。それは、

  • 型を利用してエラーフローを減らす
  • 依存性反転の原則を適用して
    • UIやファイルI/Oに依存しないテスタブルなコードを実現
    • ドメインロジックをアプリ固有のロジックから分離
  • 状態遷移を書き出して整理
  • データフローを制御してシンプルに

などです。これらは当たり前に言われていることですが、リバーシアプリという具体的な題材について考えることで、より現実感を伴って理解することができます。本トークでは、個々が行ったリファクタリングの結果を横断的に分析し、具体例に基づいてその効果を説明します。

【どうしてリバーシなの?】

何かを説明するときに、具体例を交えて説明することは重要です。しかし、設計というのは、アプリの持つ複雑さをどう扱うかという話なので、短時間で説明しようとすると次のような矛盾を抱えてしまいます。

  • 実際のプロダクトのような巨大かつ複雑なコードベースは短時間で理解できない
  • 例示のための単純すぎるコードは理解しやすいが、業務で直面するような複雑さを扱うことが難しい

リバーシなら、誰でもルールを知っているのですぐに仕様が理解でき、それでいて相応の複雑さを持っています。リバーシを題材にすることで、「業務で直面するような複雑さ」を扱いながら、「短時間で理解」できるように説明することを試みます。