8/23 potatotips #32で発表してきました
久しぶりにpotatotipsに行ってきて、ついでに発表してきたのでレポートを書きます。ブログ枠ではないので適当にまとめます。
iOS
CocoaPods / Carthage @JPMarthaさん
※資料未公開
- Swift Package Manager発表後、それぞれの動向をチェックしてみた
- CocoaPods
- FAQにSPMに関する記述あり
- プルリクで2.3/ 3.0向けの対応をしている
- Cathage
- Swift Package Manager
- _monoさんの発表に期待
Swift Package Managerが出たことによって従来のライブラリ管理ツールの世界がどう変わっていくかは気になっているところだったので、学習のきっかけになって良かったです。
WWDC2016で話されたDependency Injectionを活用してリファクタリング @yoichitgyさん
- ViewControllerは例えて言うならLEGOブロック
- 独立したものを組み立てて全体を構成する
- 簡単に組み立てたいならDependency Injectionを使うと楽
- 良い例
- 最低限必要なものにだけ依存
- 悪い例
- 全てがAppDelegateに依存
- 事情があってだめな場合
- Protocolを導入してみる
DIに関しては勉強してみたいと思いつつもどこからとっかかればいいのかよくわかってなかったのでここで聞けて良かったです。
サンフランシスコで就活してみた話 @kitasukeさん
- San Franciscoはどんなところ?
- 優秀なエンジニアが多い
- エンジニアとして最高の環境
- 大変なところ
- 就労ビザの取得
- 世界一難しいらしい
- 優秀さ関係なくて運の部分もある
- 就労ビザの取得
- 就活事情
- 電話で面談、対面の技術面談
- アルゴリズムの問題とか出た
- IDEは使えない、ググるもの禁止
- アプローチ方法、スピード、クオリティが勝負
- http://courses.csail.mit.edu/iap/interview/Hacking_a_Google_Interview_Handout_1.pdf が参考になるかも
- 登録しているサイト
- 気をつけること
- 日本から面談、面接出来ない場合もあるかも
- ビザサポートが必要だと必ず伝える
- gitHubなどのポートフォリをがあったほうが
- 面接で落ちても英会話の練習だと思えばいい
- おまけ
- メルカリに行けばサンフランシスコで働けるらしい
聞いててサンフランシスコでの就活は厳しそうだなと思いました。。。話を聞く分にはとてもおもしろかったです。
iOSアプリのライブラリ依存管理ツールとしてSwift Package Managerを使うのはまだしばらく先かなと思った話 @monoさん
www.slideshare.net
- Swift Package Managerとは
- ライブラリ依存管理マネージャー
- クロスプラットフォームを意識
- Swift3.0と同時リリース
- まだ情報があまり出回っていない
- まだ未実装な部分もあり、まだ取り入れるのは早そう
- Homebrewの作者が関わっている
- SwiftPMへの期待
- サーバサイドSwift
- Apple製というアドバンテージ
- まだ対応ライブラリが多くない
- SwiftPMをいじってみた
Appleのサンプルプロジェクトが動かなかったからプルリク送ったらマージされたとのことです。。。すごい。
OnBoardingを簡単に作れるライブラリをいじってみた @akatsuki174
楽にOnBoarding画面を作れるライブラリ、paper-onboardingについて - Qiita
- Onboardingとは
- アプリにおいては、初めてのユーザに価値や使い方を説明して慣れてもらうこと
- paper-onboardingとは
- OnBoardingを簡単に作れるライブラリ
- スター数も多く、最近もコミットされている
- デモ
ライブラリいじりの成果を発表してきました。
ちょっと難しそうに思えるOnBoarding画面もライブラリを使えば簡単にできちゃう、という話でした。
プロジェクト内のURLをAssociated Valuesで管理してみる @marty-suzukiさん
- szk-atmosphereからアカウントを変えた
- 文字列でURLを管理するのは辛いのでAssociated Valuesで管理
- 実例:QiitaApiClient
今まで関わったプロジェクトはURLを単なる定数で管理してたなぁとしみじみ。確かにAssociated Valuesで管理した方が安全そうですね。
Realm Centered Design @susieyyさん
- realm notification
- オブジェクトが更新された時に通知される
- 配列の差分Index通知
- RxRealmを中心にRxSwift, RxRealm, MVVMを使う
- RxSwift * MVVM(singleton)
- 画面固有の状態、主要なデータはViewModelへ
- 画面横断的な状態、データはSingletonなGlobal ViewModelへ
- Realm * RxSwift * MVVM
- 固有な状態はViewModelへ
- 主要なデータはRealmへ
- 画面横断的な状態はSingletonへ
- RxSwift * MVVM(singleton)
- まとめ
- クライアントアプリの状態、データ管理は複雑
- →画面に紐づく状態をViewModelへ、データをStoreにという折衷案に
設計的な部分で思い悩んだ時にその解決策を思いつくところからしてすごいと思いました。私はまずRxRealmの勉強からしなければならないなと思いました。
チーム開発にSwiftLintを導入してみた @ikamooonさん
※資料未公開
- コーディングルールの宗教戦争勃発 - その1
- SwiftLint入れてみよう
- ルールのカスタムができないからやめた
- コーディングルールの宗教戦争勃発 - その2
- Swift Coding Styleがない
- コーディング規約というドキュメントを増やしたくない
- やっぱSwiftLint入れよう
- メリット
- コードレビュー前に直せる
- コードレビューで指摘できる
- 好みの違いからくるいざこざを解消できる
- ルールミスを可視化できた
SwiftLintについては私は一時期すごく力を入れて調べていて、Qiitaの記事をいろいろ残しています。Lint導入においては、こういうルールでやっていこうという合意形成をして規約と気持ちをしっかりさせることが大事だとおもます。
Android
I/O 2016 で発表された Awareness API をいじってみた @bird_nitrynさん
Google I/O 2016 で発表された Awareness API をいじってみた - potatotips # 32
- Awareness API
- 位置情報の実装をする時に便利
- 今までの位置情報系のAPIをまるっとまとめて使いやすくしたやつ
- 7つのコンテキストを用意
- Location / Place / Beacons / Time / Activity / Headphones / Weather
- コンテキスト取得は2つのAPIで
- まとめ
- 導入はとても簡単
- Android build tools > v21
- サンプルもすぐ動かせたので罠少なめ
- 導入はとても簡単
暗黙的IntentをプログラマブルにするTips @Shuma Yoshiokaさん
Androidの暗黙的IntentをプログラマブルにするTips by 吉岡 秀馬 | Wantedly Engineer Blog
- 暗黙的Intentとは
- iOSで言うところのUniversal Link
- WebのURLからアプリを起動させられる
- 普通に実装すると
- URLの数だけIntent Filterが増えていく
- Manifestとコードでパターンが離れる
- 冗長でつらい
- ワイルドな解決方法
- 関連するURL全てをキャッチし、全て同じユーティリティクラスの中で処理する
- 未対応の画面もアプリで開かれてしまう
- 黒魔術的解決法
- Manifestやパターンマッチングのコードを自動生成
- 思わぬバグを埋め込むかもしれない
- Xamarin
- 各プラットフォームAPIの薄いラッパー
- Activityクラスに特定のAttributeを付加すればコードで全てが完結する
- まとめ
- チームやプロジェクトに合ったアプローチを選ぼう
- 課題解決の過程でもユーザ体験を考えること
Taking Glance at RxJava 2.0 @shaunkawanoさん
- RxJava2.0
- リアクティブストリームにそっている
- 1系と2系で何が違うのか
- パッケージの名前が変更される
- .subscribe()がSubscriptionを返さない
- etc...
- RxJava2.0のスケジュール
今日から始めるAndroid CI @RyuKATOさん
※資料未公開
- CIとは
- 継続的インテグレーション
- 品質改善とかが望める
- 使いどころ
- ビルド, テスト, Lintとかの静的解析, アップロード, apk署名のチェック etc...
- Bitrise
- 後発のCi
- とにかく簡単
- かゆいところにも手が届く
- まとめ
RuntimePermissionをAOPで解決する @katsutomuさん
www.slideshare.net
- AOPとは
- アスペクト指向プログラミング
- @NeedPermissitonと書くだけでコードがすっきりする
- 使ったもの
- gracle-android-plugin-aspectjx
- permissionaspect
- まとめ
- RuntimePermissionはAOPで分離することも可能
- PremissionAdpectは凄くシンプル
- ただバグもある
- 独自実装することも難しくなさそう
DeviceOwnerのお話 @まえすとろ さん
- 展示型タブレットの運用にまつわる問題
- Mpermissionの許可を求めるダイアログがうざい
- DeviceOwnerを使えば解決する
- DeviceOwnerとは
- DeviceOwnerでできること
- セットアップ時間の短縮
- Android6.0ならサイレントインストール可
- 注意点
- タブレットを1つの用途で使う時用
- キャリアの息がかかった端末だと✕
WebSocket for Android @kaelaelaさん
- WebSocketのいいところ
- リアルタイムコミュニケーションに適している
- HTTPリソースが使える
- WebSocketのめんどうなところ
- エラーハンドリングが難しい
- 再接続処理が難しい
- ポピュラーなweb socket ライブラリ
- サンプル
今回のポテチに関するブログ
※随時更新します。
iOS
- potatotips #32 (iOS/Android開発Tips共有会) に参加しました - aboy_perry’s diary
- potatotips #32 (iOS/Android開発Tips共有会) レポート - tomo358技術ブログ
- Swift Package Manager(SwiftPM)の発表をしてきました — potatotips #32 (iOS/Android開発Tips共有会) — – Medium
Android
togetter
koogawaさんがまとめてくれていました。
2016/8/23 #potatotips (iOS/Android開発Tips共有会) 第32回 - Togetterまとめ