ねえぶ

猫好きエンジニアのブログ

iOSDC 2017 Reject Conference day2 に参加しました

ブログを引っ越ししましたので,5秒後に移動します

今年のiOSDC2017に初めて参加してとても勉強になったので,ぜひReject Conferenceも参加しようと思ってたんですが,気づいたらすでにday1は終わっており・・・.

day2に申し込みするも補欠扱いだったので「もうダメかな・・・」なんて思ってた折,当日に繰り上げで参加できるようになったので行ってきました.

サイコーでした!

iOSDC 2017 Reject Conference days2 - connpass

日時

2017/10/20(Fri) 19:20-22:00

場所

セッション

19:20-19:30 カンファレンス・会場説明

  • LODGEとYahooの説明
  • YahooはEC・メディア・FinTechを中心としたデータ収集・解析・サービス展開のサイクルを「マルチビッグデータ」として定義して強みとしてるらしい
  • Yahooの職場はフリーアドレス(うらやましい)

19:30-19:35 SwiftとReactNativeで同じようなUIを作ってみた際の記録 @fumiyasacさん

  • 5分というすごい短い時間でReactNativeとネイティブ実装の比較を説明
  • 懇親会で少しお話できた
    • iBeaconなどの部分はCordovaとか使うのかと思ってたけど,ReactNative+ライブラリ(npm)で可能らしい(ちょっとよくわかってない)
    • ReactNativeはiOS/Androidそれぞれのプロジェクトファイルを生み出す感じ
    • iOS/Androidにそれぞれに依存する部分は共通部分とは別にコーディングできる

19:35-20:05 CodableでAPI通信を再発明 @yutailang0119 さん

  • 標準APIの一部を再実装して何やってるのか理解しようという話(自分には少し難しかった)
  • About the URL Loading Systemが参考になる
  • まだSwift4使ったこと無かったので,CodableがあればSwifyJSON要らないのか?とかがわからなかったけど,懇親会で話した人に教えてもらって少し理解できた
    • モデルを定義してその型に落とすので,ケースによりSwiftyJSONの代わりになる
    • さらにバリデーションも兼ねる
  • 本題と関係ないが,コールバックのクロージャでswitchでerror判定するコードを初めて見て,こんなやり方があるのか!と思った
    • ↓のような感じ
session.download { (data, error) in
  switch (data , error) {
    case (_ , let error?):
      print(error)
    case (data?, _):
      print(data)
  }
}
  • いつもguard letでerrorを判断するような書き方をしていたので,どっちが良いのだろう?と思った

20:05-20:15 休憩

  • Yahooはトイレもきれい

20:15-20:30 API を Firebase Realtime Database に移行する @Shinya Yamaokaさん

  • Firebase Realtime Database (RTDB)のデータをクライアント側でデータ結合する際はRxSwiftのzipが便利
  • RTDBのオススメ・・・のはずが,10月に発表された新しいFireStoreのオススメに・・・
  • RTDBでできなかった外部キー制約的なことやソートはFireStoreでは解消している
  • いま担当しているサービスでFirebaseを使っているので,困っていることとかを懇親会で相談してみた
    • RTDBは検索システムに使える?レンジ効かせられるのは1つのキーだけだし・・・
      • Flashlightというサービスがある
      • RTDBへのデータ操作をElasticSearchに入れてデータを引っ張れるようになる
    • RTDBの構造変更とアプリのバージョンの整合性をどう取るべきか?
      • アプリの方は強制できないので,RTDBの方に下位互換性を保つ構成を取るしかない
    • adminだけアクセスできるとか,グループによるパーミションとか,RTDBに書いたACL定義をFirebaseStorageのセキュリティにも適用できるか?
      • ちょっとこれは答え出ず
  • FireStoreも使ってみたくなった

20:30-21:00 モダンなイニシャライザ @loveeさん

  • イニシャライズの後でプロパティ設定しまくりパターンをなんとかする
  • イニシャライザとセッターをメソッドチェーンにしてクロージャで設定する
  • イニシャライズ時以外にセッターがメソッドチェーンにならないようにイニシャライザ用のタイプを作る
  • さらにそれをテンプレート化したり,フレームワーク化したりする
  • static func `init`()でイニシャライザをオーバーロードするハックが面白かった
  • あと,フレームワークはプロジェクトの参照を置くだけな感じで使えるので,共通コードをフレームワーク化すれば共有できることを知った(いまやってるプロジェクトでは,むりやり1つのプロジェクトの中に共通コードと依存元コードを同居させてしまっていた・・・)
  • プレゼンテーションの動的なアニメーションがかっこよかったので,どんなプレゼンテーションツールを使っているのか懇親会で聞いてみたところ,普通にKeynoteの機能らしい!
    • コード例などは画像化しているのではなく,テキストをKeynoteに貼る
    • トランジション時に座標の変化などであれば自動的にアニメーションされる
    • 今度使ってみようと思った!

21:00-22:00 懇親会・雑感

  • 勉強会とかカンファレンスとかの懇親会に出るのは実は苦手で,iOSDC2017でも懇親会には出ずにそそくさと帰ってしまっていた(恥ずかしい)のだけど,やっぱり社外のエンジニアの人たちと話したいし,今回は気合い入れて出てみた
  • なんとか1人くらいと話せたら御の字かなと思ってたけど,7,8人と話せたうえに,2人とは名刺交換もさせてもらって,すごく有意義だった!
  • iOSに関することだけじゃなくて,ゲームの話とかイヤホンの話とか,普通にコミュニケーションできたのがとても嬉しかった
  • 当たり前だけど登壇者の人もスーパーマンじゃなくて緊張もしてるんだなと気づいたタイミングがあって,すごく安心できた
  • いまいまは技量が足りない気がするけど,登壇する側に立てればもっと自分のスキルが上がりそう
  • 懇親会に入る前(カンファレンス初め)から乾杯の音頭を取ってくれて,お酒飲めたのは良かったと思う(懇親会の導入がスムーズだった)
  • 寿司美味かった🍣
  • パックマンルール(他の人が入りやすいように円にならず一部分空けておく)良い!