第26回はSupershipで開催! #potatotips で発表されたiOSのtipsまとめ
約1年ぶりに #potatotips に参加させていただきました。
第26回目となる今回は Supership株式会社 さん主催での開催でした。
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 指定してコールすると落ちる
- コンパイルは通るけど実行時に unrecognized selector
- UIKit を使っている限り、Pure Swift とはいえない。Swift UI Framework が欲しいですね
5分で分かるTextKit
- @hayashi311 さん
- iOS 7から TextView は TextKit ベースになった
- レンダリングとは、文字列を Bitmap 画像に変換すること。この仕組みを考える
- 文字+フォント →「グリフ」、グリフ + レイアウト → 「文章」という感じで構築
- これを UITextKit で置き換えて理解していく
- 自前で実装できそうな気がするが、実際やろうとすると落とし穴が多い
- UITextView に感謝
PUSH通知の許可をよりもらうためのUI考察など
- @yoneapp さん
- Push 通知サービスはどこを使おうか?
- OneSignal
- 特徴
- 完全無料、マルチプラットフォーム、APIが使える、ドキュメントが良い
- 不明な点
- Push通知の配信速度、ビジネスモデル(Parseのように終了しないか不安)
- 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 let
→guard let ... else
に書き換える- where句を使う
- 関数型で短く書こう、{}を減らして保守性を高めよう
HTTPリクエストをフックしてハック
- @yukiasai さん
- Gecco がもうすぐ1000スターなので後押ししてほしい
- WebAPI がまだできてないけど、アプリ側の実装をはじめないといけない場合がある
- 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
ゆとり世代エンジニア交流会
- 28歳以下くらいのゆとりエンジニアの集い
- 今回主催していただいたSupership株式会社にて行われる
- 気持ちがゆとりなら参加可能
まとめ
potatotips には約1年ぶりの参加となりましたが、以前と変わらぬ雰囲気で楽しく tips が発表されていました。
自分はまとめてないAndroid側の発表ではKotlinについて多く触れられており、Swift と似ている部分が多そうだと思ったので書いてみたくなりました。
今回の Supership さんのように、potatotips を開催したい企業を募集しているようです。
自分の会社でぜひ、という場合は @tokorom さんに連絡すれば良いようです。
発表者のみなさん、Supership のみなさん、本日はありがとうございました!