radioc@?

レディオキャットハテナ

【勉強会メモ】Mobile Act OSAKA #6

mobileact.connpass.com

  • 日時:2018/06/29(金) 18:45 〜 21:30
  • 場所:Osaka Innovation Hub (大阪イノベーションハブ)

モバイルをテーマとして様々な情報が得られる数少ない勉強会です。懇親会も含めて毎回とても勉強させてもらっています。

Takanori Hirobe「SwiftのStringから理解するCollectionプロトコル

※少し遅れたため途中からのメモです。

RandomAccessCollection

StringはUnicodeに忠実

  • Emojiは4つでも3つでもカウント1
  • バックスペースを何回押したら消せるかに依存

絵文字だけではない

  • "\n".count は 1
  • "\r\n".count は 1

全部数えないと文字列がカウントできない

Stringのcount計算量はO(N)

oishi「DEP(Device Enrollment Program)について 〜電源ONで全自動設定〜」

エンタープライズiOS特有の要件

  • 400台に同じWiFi設定したい
  • 1,000台に同じアプリをインストールしたい
  • 自社開発アプリ以外は触らせたくない
  • 標準アプリを一部消したい
  • もう自動で全部やってほしい

WiFi→Activate→Setting

構成要素

  • MDM
    • Mobile Device Management
  • DEP
    • Device Enrollment Program
  • VAR
    • Value Added Reseller
    • Appleに認められた販売代理店

DEPの流れ

  • 法人からVARにDEP端末を発注
  • VARがAppleDEP端末に発注
  • Appleはserial noをDEPのデータベースに登録
  • 端末の初期起動時にDEPサーバに問い合わせ
  • DEO端末の場合、MDMにアクセスして設定集を取ってくる
    • 事前に設定ができる

ogwssk「新卒採用にVRアプリとゴーグルを内製してみたら色々と新鮮だった話」

2018年4月に「0次選考」というモバイル向けVRアプリをリリース

2019年度新卒採用「0次選考」 VRアプリをリリースしました | ニュース | フェンリル

VRアプリの中で3つの謎を解くともらえる情報を使って特設サイトの謎を解くと選考が少し有利になる「あるもの」がもらえる

開発の背景

  • 新卒採用者のエントリー数の減少
  • 採用コストの増加。技術者の採用ハードルが上がっている
  • 採用ターゲットと実際に集客できている学生がずれすぎている

VRを通して会社の世界観を体験してもらおう

  • ゴーグルを含め内製「デザインと技術のフェンリル」を体験してもらう

リリース後の効果

  • 様々なメディアに紹介された
  • 一括エントリーで216%増

大変だったところ

usami-k「RxSwift 再入門」

speakerdeck.com

RxSwifttとは

  • 非同期のイベントを受け取るための枠組み
  • UIイベントの受け取り
  • Web APIレスポンス受け取り
  • データの変化の監視

コード例

  • UIButton
  • UITextFiled
  • Notification
  • URLSession

イベント処理の流れ

  • Observable = イベントが流れて売るSequence
  • ObservableをSubscribeするとイベントを受け取れる
    • disposeで破棄

補足:Observableに流れてくるもの

  • enumで定義
    • .next
    • .error
    • .completed

データバインディング

例えば

  • モデルの値の変化をUIに伝えたい
  • UIの値の変化をモデルに伝えたい
  • そのための手段としてRxSwiftが使える

データバインディングのための手段

  • BehaviorRelay/PublishRelay
  • Observableの一種
  • nextがけが流れる、終了しない

Relayの使い方:accept

  • acceptでRelayに.nextイベントを送ることができる

Relayの使い方:bind

  • subscribeの代わりにbindが使える

BehaviorRelay/PublishRelay両者の違い

  • 初期値を持つ/持たない
  • valueで現在値が取得できる/できない
  • subscribeした時に現在値が流れる/流れない

バインディングは単方向

  • bindは実はsubscribeであることを知るとわかりやすい

双方向だとデータの流れのIn/Outが区別しづらい

  • アプリ設計としてデータの流れる方向を意識できることは大事

RxSwiftを使ううえの注意点

  • なんでもできすぎる
    • 強力なツールのため無節操に使うとこんがらがる
    • アプリ設計を考えておく
    • アプリ設計に対して、実装を楽にしてくれるツール
  • ライブラリ自体の規模が大きい
    • 様々なクラスがあって把握しづらい
  • うまく付き合えば便利

tatsuhama「インドの低速なネットワーク環境の攻略法」

www.slideshare.net

インドのネットワーク事情

  • 世界最下位の通信速度
    • 日本のPHSのような半径数百mの弱いアンテナ
    • 奪い合い
  • 3GB月500円
    • インターネット人口爆増
  • 重たいアプリはユーザーに届かない

分析

  • 現地で受け入れられているアプリのUXはいずれも低速なネットワーク環境でも動いていた

各アプリの投稿UX

  • Twitter
    • 投稿ボタンを押したら即画面遷移
    • 上部にProgress
  • Facebook
    • 投稿後、即画面遷移
    • トップ画面で送信中であることがわかる
  • LINE
    • オフラインになったら自動再送
  • Instagram
    • 段的読み込み

New Relic Mobileによる分析

  • HttpRequest Sort
  • Geography Sort
  • Interactions
  • Dashboard

その他のツール

  • Stetho
  • Network Link Conditioner
  • Charles
    • パケット調査
  • ロケットモバイル(神プラン)
    • 低速…最大200kbps

対応

  • アプリのバイナリサイズ削減
    • 機能削減 -アプリ内画像をWebp -App bundle形式(google I/O 2018)
  • 画像の送受信サイズ削減
    • Base64→Multipart
    • 長辺Maxサイズに設定して必要十分なサイズにリサイズ
  • 直列通信を並列化
  • 通信結果を待たないUXへ変更
  • 通信に失敗しても自動リトライ
    • Android WorkManager(Google 2018)
      • リトライ設定、並列設定が簡単

まとめ

  • アプリを軽く
  • 通信結果を待たないUX
  • ツールを活用して分析

Kenta Nakai「クラッシュレポートサービスのパンくず機能でクラッシュ対応を楽にする」

speakerdeck.com

クラッシュしたときに何を見るか

  • ユーザからの問い合わせやレビューを参考に調査
  • クラッシュレポートサービスの情報を参考にする

課題

  • 再現手順がない情報が足りない
  • 手探りになりやすい
  • クラッシュによってはスタックトレースがわかりにくい

Breadcrumbs(パンくずリスト

  • 画面表示やボタンのタップイベントなどの推移をトレースする
  • ユーザーがどういう経路でクラッシュに至ったかがわかる

UIViewCOntroller#viewDidAppear

  • クラス名からどの画面が表示されたかわかる

パンくずリストによって

  • クラッシュまでの操作が推測しやすくなる
  • スタックトレースと併用することでヒントが増える

Sentry使い方

  • CocoaPods、Carthage、gradleでインストール
  • AppDelegate、ActivityのonCreateなどで初期化
  • enableAutomaticBreadcrumbTraking
    • iOSのみ
    • Storyboardでのアクション
    • ボタンのTouch Down
  • カスタムイベントの送信も可能

Sentry以外でパンくずリストが使えるもの

  • Firebase Crashlytics
    • アナリティクスの統合
  • Bugsnag

TakuyaOhashi「そろそろ使いどき!?ARCoreの復習」

ARCoreとは

  • 2017年に発表
  • Android向けのARライブラリ
  • 前身はProject Tango
  • Android SDK,C++,Unity,UE4開発可能
  • Webのライブラリもある

対応端末

  • Preview
    • Pixel,Pixel XL,Galaxy
  • ARCore 1.3.0
    • たくさん

ARCoreリポジトリにIssueを出した バグ報告

ARCore Previewでできたこと

ARCore 1.3

  • 垂直面の検出
  • Augmented Images(マーカー画像検知)
  • Cloud Anchors
  • エミュレーター対応
  • Sceneform
    • 簡単にARcoreアプリを開発できる

Android Studio

  • Sceneform形式で3Dモデルをインポート
  • 自動でgradleファイル追加など
  • 平面検知
  • Anchorの設置が簡単に可能

Augmented Images

  • 画像を認識して拡張
  • 画像と一致した画像に3Dモデルなどを拡張
  • Unityでも直感的に実装
  • 地球の画像を見つけて4つ角に額縁をつける

    • オフラインでもできる
  • Cloud Anchors

  • 複数のスマホでAR体験を共有

  • iOSのARKitも可能
  • ARCore Unityでも動作
  • Google Cloud Platformの利用が必須

まとめ

  • ARCoreg多数のデバイス
  • Cloud AnchorsはiOSも対応
  • 3Dの知識なくても簡単に実装

そろそろARCoreと思っていたが…

ナイアンテックがARプラットフォームを開発中

japanese.engadget.com

NakaHiro「システム開発と経費処理」

経理について

  1. 納税額の計算
  2. 決算書作成
  3. 資金不足にならないか計算(キャッシュフロー

システム開発は分割払い

  • 導入効果が明確…償却費、会計固定資産計上
  • 明確でない…償却費/1年で計上
  • 教育・コンテンツ…1年で償却/1年で計上

モバイルアプリ開発経理書類

  • 社内稟議書
  • 契約書
  • システム稼働日
  • 請求書

1万円節税できたら100万円の受注案件と同じ価値がある