とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

8/23 potatotips #32で発表してきました

久しぶりにpotatotipsに行ってきて、ついでに発表してきたのでレポートを書きます。ブログ枠ではないので適当にまとめます。

potatotips.connpass.com

iOS

CocoaPods / Carthage @JPMarthaさん

※資料未公開

  • Swift Package Manager発表後、それぞれの動向をチェックしてみた
  • CocoaPods
    • FAQにSPMに関する記述あり
    • プルリクで2.3/ 3.0向けの対応をしている
  • Cathage
    • issues #969, #1226にSPM関連の話がある
    • #1445にSwift2.3 / 3.0対応の話がある
  • Swift Package Manager
    • _monoさんの発表に期待

Swift Package Managerが出たことによって従来のライブラリ管理ツールの世界がどう変わっていくかは気になっているところだったので、学習のきっかけになって良かったです。

WWDC2016で話されたDependency Injectionを活用してリファクタリング @yoichitgyさん

  • ViewControllerは例えて言うならLEGOブロック
    • 独立したものを組み立てて全体を構成する
    • 簡単に組み立てたいならDependency Injectionを使うと楽
  • 良い例
    • 最低限必要なものにだけ依存
  • 悪い例
    • 全てがAppDelegateに依存
  • 事情があってだめな場合
    • Protocolを導入してみる

DIに関しては勉強してみたいと思いつつもどこからとっかかればいいのかよくわかってなかったのでここで聞けて良かったです。

サンフランシスコで就活してみた話 @kitasukeさん

  • San Franciscoはどんなところ?
    • 優秀なエンジニアが多い
    • エンジニアとして最高の環境
  • 大変なところ
    • 就労ビザの取得
      • 世界一難しいらしい
      • 優秀さ関係なくて運の部分もある
  • 就活事情
  • 登録しているサイト
  • 気をつけること
    • 日本から面談、面接出来ない場合もあるかも
    • ビザサポートが必要だと必ず伝える
    • 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へ
  • まとめ
    • クライアントアプリの状態、データ管理は複雑
    • →画面に紐づく状態を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
    • Fence API
      • 指定した環境に鳴った時に発動
    • snapchat API
      • 今いる状況を判断して発動
  • まとめ
    • 導入はとても簡単
    • サンプルもすぐ動かせたので罠少なめ

暗黙的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のスケジュール
    • 10月半ばくらいに本リリース
    • GitHubリポジトリ、Fragmented Podcast053とかが参考になる

今日から始める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のお話 @まえすとろ さん

www.slideshare.net

  • 展示型タブレットの運用にまつわる問題
    • Mpermissionの許可を求めるダイアログがうざい
    • DeviceOwnerを使えば解決する
  • DeviceOwnerとは
    • 特別な操作を許可したデバイス管理者権限
    • 業務用に使うタブレットを想定
    • Android5.0以上で使える
  • DeviceOwnerでできること
    • セットアップ時間の短縮
    • Android6.0ならサイレントインストール可
  • 注意点
    • タブレットを1つの用途で使う時用
    • キャリアの息がかかった端末だと✕

WebSocket for Android @kaelaelaさん

  • WebSocketのいいところ
    • リアルタイムコミュニケーションに適している
    • HTTPリソースが使える
  • WebSocketのめんどうなところ
    • エラーハンドリングが難しい
    • 再接続処理が難しい
  • ポピュラーなweb socket ライブラリ
    • Socket.io / Java-websocket / Okhttp-ws / java.net.Socket
  • サンプル

今回のポテチに関するブログ

※随時更新します。

iOS

Android

togetter

koogawaさんがまとめてくれていました。

2016/8/23 #potatotips (iOS/Android開発Tips共有会) 第32回 - Togetterまとめ