強火で進め

このブログではプログラム関連の記事を中心に書いてます。

「iOS オールスターズ勉強会」に参加してきました

370人参加の大型イベント&そうそうたる講演者なイベント「iOS オールスターズ勉強会」に参加してきました。

募集ページ

iOSオールスターズ勉強会 - dots.[ドッツ]
http://eventdots.jp/event/311301

Togetterまとめ

2015/2/14 #dotsios iOSオールスターズ勉強会 - Togetterまとめ
http://togetter.com/li/782943

公式のイベントレポート記事

公式でしっかりレポートがまとめられているのであまり書くこと無いかも?

[イベントレポート] iOS オールスターズ勉強会 #dotsios | Developers.IO
http://dev.classmethod.jp/smartphone/ios-all-stars-report/

講演情報

『Adaptive Collection View』 LINE株式会社 石川洋資氏

■スライド

Adaptive Collection View // Speaker Deck
https://speakerdeck.com/ishkawa/adaptive-collection-view

https://github.com/ishkawa

https://github.com/ishkawa/sandbox/tree/master/Adaptive

■QA
Q : CollectionView。セルの並び替えは
A : 妥協して UITableView を使うか、自分で実装

『Swiftでライブラリを書く際のプラクティス』 株式会社ユビレジ 岸川克己氏

■スライド

Swiftでライブラリを書く際のプラクティス // Speaker Deck
https://speakerdeck.com/kishikawakatsumi/swiftderaiburariwoshu-kuji-falsepurakuteisu

例として出されたライブラリ https://github.com/kishikawakatsumi/KeychainAccess

Optional の型で値を返さない方が良い

デフォルト引数は設定すると入力補完時の動作に難有り

default を使うと実際にはどんな値が渡されるか分りづらい

例外は Closure を使うのが良い。パフォーマンスが低下してしまうというトレードオフになることに注意

戻り値のオーバーロード型推論を使っていてコンパイラエラーになるという場面があり、使い勝手が悪い

戻り値はオーバーロードせずに getString / getData などとメソッド名を変える

error 型の代わりに Either 型を使えないか検討する

Playground を一緒に付けていると使用者が理解しやすい

Functional な書き方も対応してるとより良い

※なお、講演中にあくまで現時点での意見で将来的には変わる可能性も有るかも?とのコメントが有りました

■QA
Q : エラー処理で Either を返したが Tuple で返すのはダメか?
A : Tuple でも良いが Tuple は受ける側が扱い辛い。スコープによる衝突問題が発生

『let UIWebView as WKWebView』 ヤフー株式会社 佐野岳人氏

■スライド

let UIWebView as WKWebView
http://www.slideshare.net/taketo1024/let-ui-webviewaswkwebview

分岐だらけだと他の人の保守やもう良いだろうと取り除く部分を見つけるのが難しくなる

ラリーテスラーの「複雑性保存の法則」。タスクの複雑性はある点を超えて減らすことはできない、移動することのみ可能。


下位互換コード隠蔽については以前講演したスライドがこちらに

下位互換コード隠蔽のストイシズム
http://www.slideshare.net/taketo1024/ss-30036615

■QA
Q : WKWebView の新しい機能が使えなくなるがそれを押しても共通にした理由は?
A : 新しい機能も頑張れば実装出来るものも有る。その他のものについては諦める


Q : 両対応にしなくても UIWebView だけでも良いのでは?
A : ジェスチャーでの戻る機能や JavaScript の速度の面の恩恵をユーザに提供する為

『通信のパフォーマンス改善』 Wantedly inc 杉上洋平氏

■スライド

iOS 通信のパフォーマンス改善 ・ iOSオールスターズ登壇資料
http://www.slideshare.net/susieyy/ios-ios-44665266

http://qiita.com/susieyy

New Relic Mobileで分析

Pony Debuggerで細かく分析

■分析結果
JSONよりも画像が多い
無駄な画像のリクエス
見せたい画像の順番じゃない

■ SDWebImage でやった事
ダウンロードの先読み

ダウンロードのプライオリティ設定。LowとHighの設定をちゃんとする

遷移元の画像取得をキャンセル

WebP ファイルを使う

SDWebImage/WebP で CocoaPods を使ってプラグインをインストールする事で使える様になる

通信帯域により取得する画像サイズを変更

帯域により画像の URL が異なるので先にキャッシュの画像をチェック処理を入れる

WebP を配信する nginx の Doker イメージをオープンソースで公開しています

wantedly/nginx-image-server
https://github.com/wantedly/nginx-image-server

『効率的なアプリ開発のベストプラクティス』 グリー株式会社 矢口裕也氏

大原則:やることを減らす
■スライド

効率的なアプリ開発のベストプラクティス
http://www.slideshare.net/yayugu/ss-44667286

■QA
Q : 全部サーバが良いとの話ですが、実際にサーバ側に依頼する時の線引は
A : 速度が上がるか、重要かの2点


Q : 通信中でスパゲッティになりそうなのはどうする?
A : cancelAllを使う。ボドルネックを順番に潰す

『WatchKit を実際にさわってみてわかったこと』 フリーランス 堤修一氏

■スライド

WatchKitを実際にさわってみてわかったこと
http://www.slideshare.net/t26v0748/watch-kit-20150214

今回のサンプルは周りの状況を見てそのうち以下のURLに公開
https://github.com/shu223/WatchKitTrials

■QA
Q : Appleのサンプルの様な連番ファイルの作り方
A : FlipbookやFlashを使う

frosty/Flipbook
https://github.com/frosty/Flipbook



Q : 連番アニメでは重いのでは無いか
A : シミュレータ上では大丈夫だった。もっとフレームレートを上げてみた時も大丈夫だった。

『長生きするために心臓に悪いリリースはもうやめよう』 クックパッド株式会社 所友太氏

■スライド

長生きするために心臓に悪いリリースはもうやめよう // Speaker Deck
https://speakerdeck.com/tokorom/chang-sheng-kisurutamenixin-zang-nie-iririsuhamouyameyou

■QA
Q : In-App Purchase の購入テストは出来るのか?
A : サンドボックスだと思われるが買ったテストをする事が可能。
※会場に「この辺り確認した方居ますか」 → 岸川さんよりサンドボックスでの動作だったとの回答が

『エンジニア戦記 ~ 小さなチーム 大きな未来 ~』 クラスメソッド株式会社 平井祐樹氏

■スライド

エンジニア戦記 〜小さなチーム、大きな未来〜
http://www.slideshare.net/yukihirai52/ss-44668339

WebAPI 設計についてのオススメ本。

Web API: The Good Parts

Web API: The Good Parts

『まだiOSでリッチな演出に疲弊してるの?』 面白法人カヤック 布田隆介氏

■スライド

まだiOSでリッチな演出に疲弊してるの? // Speaker Deck
https://speakerdeck.com/ryusukefuda/madaiosderitutinayan-chu-nipi-bi-siterufalse