Think Big Act Local

iPhone開発を軸にブレブレの記事を書いていきます。

第26回はSupershipで開催! #potatotips で発表されたiOSのtipsまとめ

約1年ぶりに #potatotips に参加させていただきました。
第26回目となる今回は Supership株式会社 さん主催での開催でした。

f:id:himaratsu:20160217225105j:plain

potatotips は1人5分の持ち時間でtipsを共有する勉強会です。
元々はクックパッドさんが始めた勉強会ですが、現在は様々な会社にて開催されています。

第26回で発表された8つのiOSのtipsをまとめます!

iOS Tips

Can we live in a pure Swift World?

  • @TachibanaKaoru さん
  • 新しいアプリを書くとき、いまならSwiftで書きたいですよね?
  • Generics や Tuple、Protocol Extension などの Swift の機能
    • これらはObjective-Cのコードから呼べない
    • さらに、selector で指定することができない
    • Tupleを返すメソッドを実装し、selector 指定してコールすると落ちる
  • UIKit を使っている限り、Pure Swift とはいえない。Swift UI Framework が欲しいですね

5分で分かるTextKit

  • @hayashi311 さん
  • iOS 7から TextView は TextKit ベースになった
  • レンダリングとは、文字列を Bitmap 画像に変換すること。この仕組みを考える
    • 文字+フォント →「グリフ」、グリフ + レイアウト → 「文章」という感じで構築
    • これを UITextKit で置き換えて理解していく
  • 自前で実装できそうな気がするが、実際やろうとすると落とし穴が多い
  • UITextView に感謝

PUSH通知の許可をよりもらうためのUI考察など

  • @yoneapp さん
  • Push 通知サービスはどこを使おうか?
  • Pushを許可してもらうタイミング
    • 1: 唐突に出す
    • 2:「はじめる」みたいなボタンを押したら唐突に出す
    • 3: 擬似アラートを出してから出す
    • 4: なにかアクションした時に自前で「通知をオンにしてください」→OK押したら出す
    • 結論としては1がコストもかからないし良さそう。やってるサービスも多い
  • 考察をまとめたブログはこちら → http://blog.yoneapp.com/entry/2016/01/21/232451

NSURLProtectionSpace Authentication Methods

  • @niwatako さん
  • URLSession:didReceiveChallenge:completionHandler:は、認証が必要な通信で呼ばれるメソッド
    • この delegate が呼ばれたら、認証に必要な情報をもった NSURLCredential を返す
    • challenge.protectionSpace.authenticationmethod で求められている認証の種類を確認できる
      • 認証の7つのパターンの解説
    • 大きく対応方法を分けると、以下の通り:
      • Basic, Digest, Negotiate, NTLM → ユーザー名とパスワードを使って NSURLCredential を作って返す
      • ClientCertificate → 長すぎるので続きは yidev で
      • ServerTrust → .PerformDefaultHandling を指定しておけば OS がよしなにやってくれる
  • 続きは yidev で!

皆に相談したい「私の現場での試行錯誤後のiOS開発方針」

  • @satoshi0212 さん
  • 開発の方針
    • Storyboard, xib は使わずコードで実装する
    • SizeClass は使用してない、AutoLayout は少し使用する
    • viewDidLoad 内でレイアウト生成
    • OSS のライブラリは控えめで、直接プロジェクトに追加する
    • 重い画面の場合は viewDidAppear で生成(表示がすぐなのでサクサク出る)
  • メンバー構成としてはデザイナーなしで、プログラマ4人でやってる
  • 質疑にて
    • 前職(BtoB)のときは storyboard 使わずにコードを書いてたが、現在(BtoC)はできるだけ storyboard を使ってる
    • デザイナーが触るかどうかで大きく違うかもしれない
  • qiita.com

脱swift初心者するための2つのきっかけ

  • @mogmetさん
  • 関数型言語を使おう
    • swiftは関数型もサポートしている
    • filter (配列から該当する要素だけを取り出す)
    • indexOf(配列にその中の要素を渡すとindexを返す)
    • map(配列のそれぞれの要素に対して処理を行う)
  • {}を減らそう
    • if letguard let ... else に書き換える
    • where句を使う
  • 関数型で短く書こう、{}を減らして保守性を高めよう

HTTPリクエストをフックしてハック

  • @yukiasai さん
  • Gecco がもうすぐ1000スターなので後押ししてほしい
  • WebAPI がまだできてないけど、アプリ側の実装をはじめないといけない場合がある
    • ライブラリを作った
    • path を指定して、ステータスコードや body をモックできるライブラリ
    • マネーフォワード社内でも使われている
  • NSURLProtocol をつかって書き換えている
  • ライブラリのソースを見ながら解説

古き良き sendAction

  • @tokorom さん
  • UIApplication#sendAction、使ってる人はいますか?
  • iOS 2からある
  • app.sendAction("hoge:", to: XXX, from: sender, forEvent: nil)
    • to に nil を指定した場合、firstResponder から遡って呼んでくれる
    • ViewControllerが入り組んでいて、階層が深い場所の UIButton 押されたときとかに良い
  • 良い部分
    • レスポンダチェーンされる
      • 奥まった階層でも発火できるし、受け流すこともできる
    • Cocoaの根幹となる仕組みなので時代に左右されにくい
  • ダメなところ
    • インターフェースが古い(文字列指定、 selector)
    • 引数に特定のObjectを渡しづらい

告知

iOS Developers Conference Japan 2016

iosdc.jp

  • 2016年8月20日開催
  • 開催までのスケジュール予定
    • 5月: チケット販売開始 / トーク募集開始
    • 6月上旬: トーク募集〆切
    • 6月下旬: タイムテーブル決定
  • スポンサーになってくれる企業を募集中

ゆとり世代エンジニア交流会

connpass.com

  • 28歳以下くらいのゆとりエンジニアの集い
  • 今回主催していただいたSupership株式会社にて行われる
  • 気持ちがゆとりなら参加可能

まとめ

potatotips には約1年ぶりの参加となりましたが、以前と変わらぬ雰囲気で楽しく tips が発表されていました。
自分はまとめてないAndroid側の発表ではKotlinについて多く触れられており、Swift と似ている部分が多そうだと思ったので書いてみたくなりました。

今回の Supership さんのように、potatotips を開催したい企業を募集しているようです。
自分の会社でぜひ、という場合は @tokorom さんに連絡すれば良いようです。

発表者のみなさん、Supership のみなさん、本日はありがとうございました!

f:id:himaratsu:20160217233435j:plain

Android の tips のまとめはこちら

qiita.com

関連記事