Timers Tech Blog

カップル専用アプリ「Pairy」, 子育て夫婦アプリ「Famm」を運営している Timers inc. の公式Tech Blogです。

FammでSwift 2.3からSwift 3に移行した方法

Timers Advent Calendar 2016の13日目のかっくんです。
弊社で運用しているFammは11月頭のリリースでSwift 2.3からSwift 3に移行しました。

実はFammはABテストの施策を結構な頻度で回しています。
特に新規登録した人を中心に実施しているので気付く人はあまりいないかもしれません。
既にインストールしている方にはアップデートの頻度が高くて申し訳ありません(^^;

きっかけ

まず、FammでSwift 3に移行しようとしたきっかけなんですが、以前ブログで合宿に行ったと書いたかと思います。

techblog.timers-inc.com

合宿での僕の作業はSwift 2.3のプロジェクトをSwift 3に移行する作業がメインでした。
但し、合宿中は他の誰もプロジェクトを触らないので思い切って作業する事が出来て無事ビルドとテストを通す所まで持っていく事が出来ました?

問題はここから

Swift 3に変えた事で思わぬ所でクラッシュする事がありました。
調べてみると自作ライブラリをSwift 3にした事でバグを生んでいたり、Objective-Cのプロパティに仕様変更があってこれまでは問題無かった所で挙動が変わってしまう事がありました。
そういった問題に対応はしたものの、確実に大丈夫かどうかの不安が付き纏っていたのでリリースまでは少し時間を掛ける事になりました。

どんどん進んでいく施策

先述した通り、チームメンバーは次々にしなければいけない施策が出てくるのでその対応をSwift 2.3で進めていました。
そうすると今度はSwift 3に対応したものが古いまま放置されるので、一定期間が経ったらSwift 2.3で対応した差分をSwift 3にマイグレーションをする様な形で追従していました。
しかし、このままだとイタチごっこが続いてしまい、いつまで経ってもSwift 3でのリリースが出来なくなってしまいます。

このままだとまずいと判断し、施策を一旦止めてSwift 3の検証期間を持たせてくれと直談判しました。
それが10/24からの1週間になります。
この期間にこれまでのSwift 2.3の差分をSwift 3にマイグレーションし、QAチームにテストをお願いし、大きな問題が無い事を確認して、晴れてSwift 3でのビルドで申請する事が出来ました?

Gitのフロー図にするとこんな感じです。

f:id:timers-tech:20161106152940p:plain

リリースした結果

初日にアプリの重要な所でアプリがクラッシュしてしまう問題が発覚しました。。
但し、これは社内での確認フローに問題が有ったので、次からは起こらない様な仕組みを作っていけば良いかと思います。
こうしてなんとかSwift 3でのビルドをリリースする事が出来、社内の開発環境はSwift 3に移行出来た事になります。

これまではSwift 3への移行の事も気にしながらSwift 2.3でコードを書いていましたが、
そういう心理的不安が無くコードが書けるというのはストレスフリーで快適です。

苦労した所

社内の人にSwift 3への移行が必要だから施策を一旦止めさせてくれと直談判し、必要性を理解してもらう所が最も苦労しました。
なんとか重要性を理解してもらい、大きな施策同士の隙間を見つける事が出来、検証期間として一週間を得る事が出来ました。

今後

まず、Appleのリリーススケジュールにはある程度の規則性があり、何かしらの対応が必要である事を社内のメンバーが理解する事が必要です。
そうしないといつまで経っても新たな施策の対応に追われ、技術的に解決しなければいけない事の対応が後手に回ってしまいます。
8月〜9月に掛けては施策は最小限に抑え、新しい環境への対応期間を設ける等のルールを作っていきたいなと思っています。
下記の様なイメージです。

f:id:timers-tech:20161106160239p:plain

施策停止期間に技術的に解決しなければいけない事を解決して、新OSのリリースと同時に対応済みのアプリがリリース出来る様にするのが理想ですね。

追記

Swift 2.3はXcode 8.2でサポートを終了する事が発表されていました。
Swift 3に移行しておいて心底良かったなと思いました。。(^^;


また、弊社では、子育て家族アプリFamm、カップル専用アプリPairyを運営しており、現在エンジニアを積極採用中です! 急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください! 採用HP : http://timers-inc.com/engineerings