とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/3 スタートアップのSwift #tryswiftconf

try!Swiftのセッションまとめシリーズです。Mo Kudekiさんの「Startup Swift」についての記事になります。

資料

内容

リリースまで

  • 1年間でビギナーとして体験した話をする
  • 2016年初頭に製品を打ち出した
    • その時Swiftを知らなかった
    • MVPで出した
    • 女性の友人同士の友情を育むアプリ(Early)
    • 新しい街に引っ越した時に友達に会いづらいから
  • 当時のコード
    • バグがあちこちにあった
    • 基本的な機能は揃っていた
    • 初期の段階はいろいろ作らなければならない
    • すぐにそれをやらなければならない
    • メンバーも2人だった
    • 自分たちでいろいろカバーしなきゃいけない
    • いろいろなことを学んでいかなきゃいけない
  • 協働創立者はエンジニア
  • 自分の状況
    • Twitterの仕事をしていた
    • Swiftは初心者だった
  • ParseとSwift
    • 問題を片付けなければならなかった
    • Parseとうまくいってなかった部分があったが誰も説明してくれない
    • Swiftはシンプルで読みやすい
  • CocoaPodsを使用
  • 無事AppStoreで審査通過
  • ここまでうまくいった

リリース直後

  • インタビューを受けた
    • 「女性の皆さんスワイプ一つで友人を見つけられるようになりました」
    • 2週間で10万人のサブスクライブがついた
  • 問題が出てきた
    • こんなに多くの人が使うことを想定していなかった
    • MVPがうまくいくということは今まで待ちすぎたということ
    • 1分あたりのアクセス数を超えた
      • お金払ってどうにかなるものではなかった
    • 一人ずつアクセスするようにしてリクエスト数を絞り込んだ
      • LAなどに限った
    • AppStoreで一つ星たくさんになった
    • インタビューによってアーリーアダプター以外の人も使うように

改善

  • 「何か動かない」に対応してく
  • 熱狂的なユーザとつながってやった
    • フィードバックをもらった
    • slackやTestFlightを活用
  • クラッシュを再現することができないとfixできない
    • サンフランシスコにいる人でslackに参加していた人を集めた
    • ユーザのiPhoneをPCに繋げて原因究明
    • カードスタックの上で起こっている問題だとわかった
    • ファーストネームがなかったのでクラッシュした
    • リクエスト数の上限を超えた時に名前が入らなかった可能性
    • nilが入らないようにしてクラッシュを避けることができた
  • Unwrapの見直し実施
  • コードベースではextensionも役に立つ
    • どこでも使えるように
  • 新しい機能に対して改善していく必要がある
    • 初めから全部を完璧にするなどではない
    • 良いコードを書くというのはコスト効果が高いというわけではない
    • 始めに書いたコードは排除

Parse停止

  • バックエンドを新しく構築しなければ
  • 全部一気に移行する
  • 課題
    • APIに特化したコードの部分がなかった
  • リファクタリング
    • if - elseのブロックが多くなってきた
    • 1.ファイル全体をコピペ
    • 2.メソッドをコピペ
    • 3.プロトコル作成
      • ロジックを小分けにする
      • データソースを気にしなくても良くなる
      • 抽象化に役に立つ
  • 最初の6ヶ月ですぐれたところを列挙した
  • これでも誰もチェックをしていないとバグが起こる

最後に

  • Swift
    • すみやかな学習カーブが特徴
    • 初心者でも慣れ親しめる
    • コードベースを改善しやすい
    • 最も重要なところに時間を書けられる
  • 人にとって価値のあるものを提供する
  • はじめにサッと作ってみる、Swiftで構築してみるのをぜひ試してみては

Q&A

  • 今後スタートアップとして新しいアプリを作る場合でもparseなどを積極的に使った方がいいのか
  • parseから移行した時にコードベースを分けてインフラに書き込むようにしたとのことだがそのまま移行するという選択肢を選ばなかった理由は
    • なぜ自社でインフラを構築したのかという質問とする
    • その時のチームメンバーの制限
    • ユーザ多くなっていたのでフルコントロールを持った方がいい
    • Railsの知識があった
    • どのような選択肢があるか、シンプルなのか、チームのスキルがどれだけそろっているかを考える必要がある

その他このトークに関する情報源

togetter

Startup Swift #tryswiftconf - Togetterまとめ