2015/02/14(土)iOSオールスターズ勉強会が開催されたので参加しました。
場所は恵比寿のデジタルガレージ/Open Network Lab
参加費1000円、申し込み人数350人という大規模な発表会形式の勉強会
著名なiOSのデベロッパーが発表するとのことで参加しました。
LINE株式会社石川洋資さんの『Adaptive Collection View』
iPadでUICollectionView、iPhoneでUITableViewで実装したほうが良さそうなUIを実装をする場合。UICollectionViewで全て実装してしまおうとの提案
UICollectionViewでUITableViewっぽいものを実装するのは割と簡単だそうで
レイアウトもUICollectionViewFlowLayoutを使えば良いとのと
estimatedItemSizeを設定し、UICollectionView
LayoutAttributeをUITableViewCellに似せる
その後、作ったアプリのデモをされました。
行は固定のサイズだけでなく、可変の値でも対応可
一つのViewconControllerとCellでiPhone、iPadの対応が可能
セルのサイズ計算はself sizing cellを利用する
iOS7の対応の葉愛はself sizing cellを真似て
systemLayoutSizeFittingSize HeightForRowAtIndexPathを呼ぶとのこと
iPhoneとiPad対応する場合は同じコードを2度書かないなど
耳が痛い忠告もありました。
全く知らないテクニックが紹介されていて大変参考になりました。
株式会社ユビレジ岸川克己さん『Swift製ライブラリの良い書き方を考える』
iOS系の勉強会で何度もお会いしている岸川さん。ご自身がgithubで公開されているUICKeyChainStore をサンプルに
人に使われる時にどのようにすれば使いやすいコードになるかって話
例えば、Optinalの取り扱いについて、オブジェクトがOptionalはnilの可能性があります
Objective-Cでは割とカジュアルにnilを渡していたのですが、
Swiftでは型が厳格なので出来る限り、Optionalでない値を引数に渡す
メソッドにデフォルト引数を使う場合は、保管が、まず
デフォルト引数のある補完候補があらわれるため
使いずらく、メソッドのオーバーライドで実現をしている
クロージャの場合は、デフォルト引数のほうが使いやすい
戻り値が違うだけのメソッドのオーバーロードは
asで型を明示しなければならず、コードを書くリズムを壊す。
エラー処理はObjective-CではNSErrorのダブルポインタで実装されるが
SwiftではEither型を使うほうが気持ち良く書ける。
クロージャでエラーを扱う場合は、今まで通りNSErrorを
エラー処理は独自のErrorオブジェクトより標準のNSErrorで良い
ライブラリを公開するときはPlaygroundを付けてあげよう。
Functional styleは、こちらでも書けるよ。。くらいに付けてあげる
岸川さん個人的な見解だそうですが、Either型なんて全く知らなかったので
かなり影響を受けそうですね。。
ヤフー株式会社佐野岳人さん『let UIWebView as WKWebView』
iOS8からサポートされた新しいWebView WKWebViewについてUIWebViewとインターフェースは似ているが互換性がない。
ナイーブな下位互換対応すると分岐が大変
方針としてラッパーで1.隠蔽する、2.UIWebViewをいじることを説明
いつかiOS7のサポートを切るときに、苦労しないようにとのこと
Wantedly inc杉上洋平さん『通信のパフォーマンス改善』
Wantedlyのアプリで通信のパフォーマンス改善cocoapodsで対応しているPony Debuggerというライブラリを用いると
通信を解析され、JSONのリクエストより画像の容量が多いことを発見
画像はSDWebImageのライブラリを用いて作っていたので
そちらのコードを解析、なんと不具合をみつけて
Pull Requestを行いmergeもされたそうです。
画像を優先付け、画像のフォーマットをWebPに変える
それに伴ってサーバー側も変更
改善したパフォーマンスはiPhoneの設定を変更して
確認することが可能だそうです。
かなり参考になりましたが、SDWebImageを
実プロジェクトで利用してないんですよね
グリー株式会社矢口裕也さん『効率的なアプリ開発のベストプラクティス』
なるべくはやくつくってしまいたい。品質は必要十分である 効率的に実装するにはどうしたらよいか
そんな時の大原則は「やることを減らす」
具体的には
- UIの実装コスト
- 通信の実装コスト
通信の実装コストを下げるには、ほぼ実装に依存するが
大原則はサーバー側に任せる。APIは共通化、RESTにとらわれない。
JSONModelやMantleなどのライブラリで扱いやすいJSONを返してもらうなど
サーバー側仕様変更で問題になるもの
綺麗なRESTFul APIサーバー、汎用的なAPIであることを理由に
特定画面に特化したAPIを断られることが多い
レガシーサーバー
触るのが怖い、同じような処理をする新APIを実装した場合にデグレがおこる
サーバー側をどう説得するか
パフォーマンスの向上のメリットを説明
最終手段として中継サーバーをたてましょうだそうです。。
フリーランス 堤修一さん『WatchKit を実際にさわってみて』
いつもブログでiOSの技術を発信している堤さん。最近ではBLE関連の記事が多いのですが、今回はWatchKit
はじめブログで記事を書いたときは、なんにもできねーなって印象だったWatchKit
実際さわってみると、意外とできることが多いことを発見。
まずは、WatchKit ExtensionはiPhone側で動く等WatchKitの概要を説明
- アニメーション
- テキスト入力
- カスタムUI
アニメーションについてはstaticアニメーション、dynamicアニメーションの実装
テキスト入力については、まだシュミレーターで確認できない。
カスタムフォントについては、iOSと同じ方法でやったらできた。。
Appleの公式サンプルでみると、画像を複数枚用意して
カスタムUIを実装するのが今の所ベストプラクティス??
インターフェースのオーバーレイぽいこともbackgroundを活用してなんとかなる
検証サンプルコードは、空気をよんで近く公開予定だそうです。
クックパッド株式会社所友太さん『リリース前の確認方法まとめ〜長生きするために心臓に悪いリリースはもうやめよう』
iPhoneプログラミングUIKit詳解リファレンスで有名な所さん。リリースボタンを押すときに 安心してボタンを押せるために
Internal Testersを使っての確認を説明
まずは、AdHockとプロモーションコードを使ってのテストでは
厳密な意味で違うものをテストする
Internal Testersとプロモーションコードを使ってのテストでは
Appleの審査が始まる前に始められるという違いがあることを説明
Internal Testersは、是非利用すべきメリットとして
- AppStoreで公開されるアプリと同じものをテストできる
- Appleの審査前にテストできる
デメリットとしてiOS8以降でしかテストできない
テストできる人数に制限があることを説明
次にInternal TestersとCIについては、
競合するものではないので、両方利用すべき。
万が一事故が起きた場合はBuild Detailsのスクリーンショットを撮る
実際に公開されているアプリのipaファイルをバージョン管理しておくことだそうです
クラスメソッド株式会社平井祐樹さん『エンジニア戦記 ~ 小さなチーム 大きな未来 ~』
多くのiOS系ブログ記事を投稿されているクラスメソッドさんクラスメソッドさんでは、プロダクトオーナー、デザイナー
Web API担当者、iOSエンジニアで構成されていて
Web APIとの付き合い方を物語形式で説明。。
なんだか、話を聞いてあるあるネタが披露され
かなり、プレゼンが面白かったです。
まとめとして、
- Web APIの知識は必須。
- 文句を言うのは簡単、改善案を提案できる力を
- Web API The Good Partsを読もう!
面白法人カヤック布田隆介さん『まだiOSでリッチな演出に疲弊してるの?』
面白法人って名前がインパクトのあるカヤックさんCoreAnimationやUnity、cocos2dやライブラリで
演出を実装すると、それぞれにデメリットがあり疲弊する
そこで、何か別な方法がないかと探したところ
iOS標準のSpriteKitを利用して演出を作成それをUIKitで利用
エディターでのパーティクルの作成
SKActionでパーティクルにアニメーションをつけれる
UIKitと一緒に使う場合の注意点としては
UIViewの上に透明なSKViewを乗せ
SKViewのタッチイベントを無効にする。
UIViewの[0,0]とSKViewの[0,0]の座標が違うので変換を行う等
具体的なテクニックが紹介されました。
最後にまとめとして
- Appleが提供しているので安心
- 既存のコードの邪魔をすることなく導入できる
- デザイナーさんも使える
リッチな演出もiOSネイティヴでとまとめられました。
そのあと、ベストプレゼンターを投票、懇親会で発表がありました。
ベストプレゼンターはWantedly incの杉上さん。。
懇親会では、ぐだぐだ喋りながら過ごしてしまい。写真を撮り忘れていました。。orz..
0 件のコメント:
コメントを投稿