8月20日(土)に開催された(されている) iOSDC 2016の前夜祭で「フルSwiftでバイクフリマアプリRIDEを作って得た学び」というタイトルで発表してきました。
スライドはSpeakerdeckで公開してますのでぜひご覧ください。
くわえて@niwatakoさんがほぼ実況か?という早さで内容まとめてくださってるのでこちらもどうぞ。
#iosdc 2016 前夜祭 A-3 フルSwiftでバイクフリマアプリRIDEを作って得た学び | niwatakoのはてなブログ
話の内容
タイトルにもある通り3月にFablic, Inc.からリリースした新サービス「RIDE」のiOSアプリについてのお話です。
昨年の12月に開発が始まったiOS版RIDEは新規開発ということもあって(ライブラリを除けば)100%Swiftだけで書かれたプロダクトになってます。
Objective-Cとのブリッジを気にせずSwiftの魅力を最大限に活かしたコードということで、
- immutableなデータの定義 (struct + 定数プロパティによる不変なデータの作成)
- iOS App部分とAPI部分を別Module(ターゲット)として作成し、API側で定義したデータをApp側でExtensionしつつ利用.
- protocolを利用して、継承を利用せずにViewControllerに機能をもたせ、かつ実装を共通化.
といった工夫をしています。
またApp側はReSwiftを利用してReduxと呼ばれるアーキテクチャを採用しています。
Reduxは1つの状態コンテナと状態を変更するReducer、変更のトリガーになるActionを利用してApp全体の状態を管理するフレームワークで、
RIDEではこれを全面採用しています。発表の中では、
- いいね(ウォッチリスト)の画面間の同期
- enumを利用した商品編集機能のモデリング
- ReSwiftのMiddlewareを利用したAction(状態変更)の追跡
- Middlewareを利用したNetworkActivityIndicatorの表示制御
をコードを交えてお話させてもらいました。
Reduxは自分でコードを書くまではイメージが掴みづらいところがあるのですが、
今回の発表で興味を持ってもらえたら嬉しいです。
話してみた感想
RIDEのリリース後、今回の内容について話す機会を伺ってたのですが、内容的に5分や10分では語りきれないのでiOSDCのCFPが始まった時に30分枠1本で応募しました。が、よくよく考えたら30分枠は枠数が少なくて競争率高いよね...ってことで見事落選前夜祭での発表となりました。(他の方が複数の時間枠で応募しててあとから気づいた)
内心ちょっとがっかりしつつも、30分の尺で人前で発表したことなかったのと2トラック並列のイベントで自分のトークに人来なかったらどうしよう?っていう不安も大きかったです。今思い出しても発表中はちょっとカミカミでもっと練習しておけばよかったなと反省してます。
ですがここ1年弱の実績を、ちゃんと人前で発表できたのは非常に気持ちよかったです。定期的にアウトプットすることで自分の中でも良い振返りになりますね。
むしろ定期的に出していかないと話の内容が大きくなりすぎてどんどん発表しづらくなるなという学びを得ました。
iOSDCについて
(この記事書いてる間は絶賛開催中ですが) 設備など想像してた何倍も本格的になっていて、1dayですが本当に"カンファレンス"というのにふさわしいイベントになってました。3月のtry!Swiftもそうですが、こういった本格的なiOSのイベントが開催されたっていうことにシンプルに嬉しい気持ちをもってます。
仕事との兼ね合いでスタッフはやらずにスピーカーとして参加させてもらうので限界でしたが、次回は是非スタッフとしても貢献させてもらえればと思ってます。
発表する機会を与えていただきありがとうございました。