「第1回オーシャンビューAndroid/iOS勉強会inBizreach #オーシャンビュー勉強会」に参加してきました

Bizreachさんが毎週もくもく会としてスペースを公開していたそうで、今回は勉強会としての開催でした。

Google I/O 2014 アプリに学ぶ Material Design の実装

Gunosy@hydrakecatさんによる発表。オライリー本の翻訳なども行っているそうです。 以前にGunosyでMaterial Designの勉強会を行い、今回はその復習とのこと。

Material Designとは

  • ユーザにとって一番馴染みのある紙をメタファーに使ったデザイン
  • AndroidでMaterial Design
    • Material Design ≠ Android L
      • 4.4や2.xでもMaterial Designはできる
    • Lolipopの機能を使うと簡単にできる

Google I/O 2014アプリ

Material Designに関するLolipopの新規機能

  1. マテリアル・テーマ(Material Theme)
  2. リストとカード(Lists and Cards)
  3. 影とクリップ(Shadows and Clipping Views)
  4. 画像(Drawables)
  5. アニメーション(Animations)
  6. 互換性(Compatibility)

  7. 詳細はCreating Apps with Material Design参照

1. マテリアル・テーマ

  • マテリアルテーマを使うとタッチフィードバックなどデフォルトのデザインを利用できる
    • カラーパレットの各色を指定することで、簡単にテーマをカスタマイズできる
  • ベース・テーマは3種類
  • ステータスバー、ナビゲーションバーの色も指定可能

2. リストとカード

  • I/Oアプリでは使っていなかったので省略

3. 影とクリップ

  • z軸方向の位置を指定できる
  • I/0アプリにおける影の使い方
    • スクロール量に応じて影の長さが変わる
  • Viewの外形とクリップ
    • 影の形およびタッチフィードバックの領域を決める外形を指定できる
    • 外形し指定した形にViewをクリップすることも可能(setClipToOutlineメソッド

4. 画像

  • 画像の着色
    • android:tintプロパティで画像の着色ができる
    • I/Oアプリではスケジュール追加ボタンに使用している
    • 普通はテーマカラーを変えたら全ての画像を作り直す必要があるが、これを用いればコードから画像の色を変えられる

5. アニメーション

  1. タッチ・フィードバック(Touch Feedback)
  2. 出現エフェクト(Reveal Effect)
  3. アクティビティの遷移(Activity Transition)
  4. ビューの状態遷移(Animating View State Changes)
  5. 画像の着色(Drawable Tinting)
a. タッチ・フィードバック
  • ボタンにはデフォルトで当たっている
    • 電卓などタップすると波紋状にエフェクトがかかる
  • ripple要素を使えば同様のタッチフィードバックを持ったdrawableが作れる
b. 出現エフェクト
  • 円形状のアニメーションでViewを出現させることができる
    • 現在は円形のみ
c. アクティビティの遷移
  • 以下のそれぞれにアニメーションを設定できる
    • Enter: Activityに入るときのシーン
    • Exit: Activityから出るときのシーン
    • Shared elements: Activity間で共有されているView
d. ビューの状態遷移
  • 状態が変わった時の見た目だけでなく、そのときのアニメーションも指定可能
    • Viewのプロパティをどれくらいの時間でどう変化させるか

6. 互換性

  • Lolipop以前の端末でも同様のUIを提供している
  • どうやっているか
    1. ソースコードの切り替え
      • gradleのflavorを使って切り替えている
    2. リソースファイルの切り替え

Tips

  • Google Play Serviesが最新ではないと怒られる
    • build.gradleの設定で5+から5.0.+に変更

 

Android 4.4で追加されたステップカウンターを実装した話

@uturistさんによる発表。最近のプロダクトSmanpoで取り入れたステップカウンターのお話。

ステップカウンターとは

  • Android 4.4 KitKatからプラットフォームでサポートされたセンサ
    • Step Detector(徒歩検出)
    • Step Counter(歩数カウンタ)
  • 処理をハードウェアで行っているのでバッテリー消費を抑えられる
  • 端末サポート状況
    • 287 / 7471
    • 最近の端末の多くはサポートしている(Nexsus、Xperia、Galaxyなど)

実装について

カウンタの挙動について

  • 端末起動後リスナ設定中の累積歩数
    • リスナ登録がonResume〜onPause
      • Activityが画面に表示されている間
    • リスナ登録がonCreate〜onDestroy
      • プロセスが生きている限りカウント
    • ただし、他のアプリがリスナ設定していれば、Activityが画面に表示されていなくてもアプリが生きていなくてもカウントされる

Smanpoに使ってみて

  • バッテリの減りは気にならない
  • 実装は簡単
    • 加速度センサでやろうとすると大変
  • マニフェストファイルの記載を忘れずに
  • ステップカウンターが普及すれば世の中がより健康的になる

 

Android開発でのデバッグ環境どうしてますか

@yoshimaaさんによる発表。

  • 標準エミュレータ
    • 標準なので安心感がある
    • 遅い
  • 実機デバッグ
    • とにかく早い、設定が楽
    • 端末依存のテストが不可

でも実機でやりたい

  • deploygate
    • mixiが提供しているサービス
    • USBケーブルからの解放
    • Android端末上のアプリで管理
    • 公開前のベータ版アプリを簡単に配布
    • リアルタイムにログ収集、アップデート
  • Sumatium

 

自作アプリをiOS 8対応した話 〜FastCheckin編〜

@koogawaさんによる発表。

FastCheckin

位置情報取得方法の変更

  • iOS 8から位置情報周りが変わった
  • プライバシー設定が細かくなった
    • 許可しない(Never)
    • 使用中のみ許可(WhenInUse)
    • 常に許可(Always)
  • UsageDescriptionが必須に
    • どのような目的で位置情報を使用するのかを表示する必要がある
      • 表示しないと位置情報が取得できない
      • 以前からあったが、書かなくても使用できた
    • NSLocationWhenInUseUsageDescription項目
    • ダイアログに表示される
  • 認証リクエストAPI追加
    • 認証リクエストを呼び出すためのメソッドが用意された
      • requestAlwaysAuthorization
      • requestWhenInUseAuthorization
    • 何回でも呼べる
      • ダイアログが出るのは未認証のときだけ
    • iOS 7で使うとクラッシュする
      • バージョン分けが必要

ウィジェット対応

  • ウィジェットとは
    • iOS 8から使用可能になったApp Extensionの一つ
    • 通知センターにウィジェットを置ける
    • 正式名称はToday Extension
  • 作り方
  • 注意点
    • キーボードは使えない
    • アラートビューなども使えない
    • 高さには制限がある
    • 使用メモリ量に注意(16MB以内?)
      • 16MB以上なので重いよ、という感じのメッセージがでた

 

10分でTwitterクライアントを作ってみますん

@mofmofnekoさんによる発表

10分でつくるのは無理なので、それに向けたライブラリの紹介

Genymotion

  • 軽量なAndroidシミュレータ
  • 標準シミュレータはMacだと不具合がでることがある

Android-Bootstrap

  • 簡単にいい感じのデザインを実装できる
  • Font Awesome
  • Circle Thumbnail
    • 流行り?の円形アイコンの実装

PICASSO

  • 画像のダウンロード、表示、キャッシュを良しなにやってくれるライブラリ

JsonPullParser

  • Jsonデータを扱うライブラリ

Volley

  • 通信処理を簡素化してくれるライブラリ

OrmLite

Butter Knife

Jenkins

その他

非常に面白いスペースで、ハロウィン限定で赤い海が打ち寄せてました

f:id:shzero5:20141025155527j:plain