第1回ユビテック「ユビレジアプリの起動処理のリファクタリング」

Ubiregi Advent Calendar  2018 4日目です。

今日は社内でユビテックという勉強会を開催した報告記事です。

 

ユビテックとは

初日の「ユビレジ開発チームのご紹介」で登場していましたが、

古参メンバーから新規メンバーへ伝授したい技術的内容や、最近仕入れた新しい技術の話など、話したい人が話す時間を2週間に1回設けることにしました。

定例開催するにあたり、「名前何がいいかな 🤔」といったら

リライアビリティチーム 八十嶋 「ユビテックとかどうですか」
スクラムチーム Watson「ユビテックでいいんじゃない」

ということで、そのまま決めました 🎉

 

記念すべき第1回はユビレジiOS開発の重鎮 八十嶋による「ユビレジアプリの起動処理のリファクタリング」でした。

 

背景

ユビレジアプリは機能豊富でとっても便利なPOSレジですが、開発開始から7年ほど経っており、それなりに問題も抱えています。

開発あるあるだと思うのですが、長く開発を続けているとどうしてもコードが複雑化したり、依存関係が出てきます。

そこで、この秋くらいから八十嶋は起動処理のリファクタリングに取り組んでいていたのですが、

PRをレビューできる人が少ないという問題があり、開発部全体で知見を共有し、レビューできる人を増やそうということになりました。 

 

問題の共有

 

ユビレジアプリが起動したときに一番初めに表示される RootViewController がいわゆる Fat View Controller になっていて、様々な処理が書かれています。

RootViewController の `viewDidAppear` に起動処理がつめこまれているので、この部分のリファクタリングが必要であるということでした。

ちなみに私は「起動処理を`viewDidAppear` でやるべきなんですか」という質問をしましたが、八十嶋は「やらざるを得ない」という説明を丁寧にしてくれました。

(もっと混みいった内容については本人の記事へつながるはず…!!)

 

今後の展望

まずは ViewController に書かれているロジック部分を別のクラスに移動して、

ステートマシンで状態管理ができるようにしたい、とのことです。

状態管理については、八十嶋謹製の FlowGraph を使う予定です。

詳しくは iOSDC 2018 で八十嶋が発表した「Swiftのコードから状態遷移図を自動で生成し、継続的にメンテナンスしやすくする」のスライドをご覧ください!

 

 

speakerdeck.com

 

ユビレジアプリの既存コードはほとんどが Objective-C で書かれていますが、このリファクタリングは Swift で書かれています。

このリファクタリングによって、より安全に機能拡張のしやすいコードになり、新機能開発が爆速になること間違いなしですね 💪