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

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

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

3/2 独自のツールを構築する #tryswiftconf

try!Swiftのセッションまとめシリーズです。Orta Theroxさんの「Building your own tools」についての記事になります。

資料

公開されていないようです

内容

  • Swiftとは別の話をする
  • 問題
    • 開発、ビルドに時間がかかるようになっていた
    • 3人で開発していた
    • カスタムViewControllerがいっぱいあった
    • webと同じ速度で開発するのは厳しい状態に
    • コードの再使用ができない状態になっていたことが原因
    • 変更しようと思うとコンパイルサイクルが長くなっていた
  • ネイティブのデザインパターンを考えた
  • 最初に考えたデザインパターン
  • Reactに影響を受けてKATANAを作ろうと思った
  • React Nativeやってみようという話になった
    • JavaScriptで書いたらどうなるかの実験
    • Swiftの抽象化をやってみようと思った
    • Swiftコードドメイン固有に
    • 再利用できない
    • React Nativeは素晴らしかった
    • 既存のViewControllerのコード量が減る
  • Reactで書くか、書かないか
  • Swiftのメリット
    • AppleがSwiftを使いたいということでプッシュしている
  • Swiftのデメリット
    • ネイティブ開発は遅い
    • コンパイルに時間がかかる
    • API思考のアプリには向いていない
    • UIKitが出すネットワーキングは最小限
  • React Nativeのデメリットは?
    • 依存性が593も出てくる
    • 若い技術なので大手の数社しか使っていない
    • 目まぐるしく変わっている
  • React Nativeのメリット
    • 実践的に作られている
    • 全ての問題を解決してしまいそうだが、そう願うべきでもない
    • API思考アプリにはすごくいい
  • 全てのJavaScriptは異なるスレッドで実行されている
  • ブロッキングコードを書くのはとても大変
  • フレックスボックスモデルを使っている
  • テスト
    • jsはネイティブテストより進んでいる
  • リエーターの方とコミュニケーションを取って作っていくことができる
  • モバイルチーム
  • 全てがフォーク可能
    • 自分たちのコードが持てる
    • 弊害は時間と専門知識
  • jsはひどい言語と言う
    • jsは10日で言語が開発されている
    • でも型、オプショナルがあるTypeScriptだってある
  • 結論
    • 自分たちのプロジェクトはReact Nativeが理にかなっている
  • Reactとは何なのか
    • データは下方向のみに流れる
    • webページでviewヒエラルキーをマスキングしようということからはじまった
  • React Native
  • 関心の分離
    • prpsを使う
    • データのimutableなもの
  • relayは素晴らしい
  • exportを除いていく
    • relayそのものを含める必要がある
    • file privateクラスになった
  • ツール
    • より適したツールを発見してきた
    • 作ってもらいたいアプリに有利に傾いている
  • Swiftはアプリを安全に構築できる
    • Appleは安全性が大事
  • Xcodeの外に目を向けるべきかも

Q&A

  • React Nativeの開発でアニメーションをするのはどれだけ大変なのか

    • そういったアプリに向いているかどうかはわからない
    • どの程度のものかということも関係してくる
    • 綺麗なアニメーションの場合はReact Nativeは使わないかも
  • React Nativeは全部のアプリケーションで使うのか、一つの機能エリアで使うのか。ハイブリッドにできますか?

    • ポッドを構築した
    • 全てのReact Nativeが中にある状態
    • 大きな複雑なアプリであれば実行可能である
    • 自分たちはライブラリのような使い方をした

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

togetter

Building your own tools #tryswiftconf - Togetterまとめ