もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

DroidKaigi 2016に行ってきた 1日目

Androidの開発者向けのお祭り DroidKaigi に参加してきたレポ。去年は行けなかったけど、今年は参加できた!写真撮ろうと思ったけどスマホの充電器を忘れてしまってご臨終な感じだったのでほとんどテキスト。。。

参加セッション

基調講演 : OSSの動向を捉えた実装方針 @wasabeef さん

  • CyberAgentさんで作っているAndroidアプリで使っているライブラリの話を中心に、昨今よく使われるライブラリを紹介。Rxでリスト操作してるところはStreamに置き換えた方がいいかな。Androidはこの辺のライブラリを知っているか知らないかで作りが変わるので聞けてよかったです。

Master of Canvas @amyu_san さん

  • Canvasを使った面白いアニメーションの作り方の話。Androidはアニメーション苦手なイメージあったけど、いろいろ出来るんだなということがわかってよかったです。ちょうど仕事で必要そうな感じでタイムリー。

Android Lintで正しさを学ぼう @Nkzn さん

  • 割と初学者向けの内容で、あー同じことやったわwという内容でした。./gradle lint でlintかけられるの知らなかったので自分のGradle力低いな。。。と反省。仕事で作ってるやつにとりあえず流してみようかなと思います。ちょっとコワイ。

Android Dev Tools Knowledge @operandoOS さん

スライド上がってなかったので雑なメモ

# 便利なコマンド
- 簡単にadbの環境を用意する
    - brew install android-sdk (caskかも?)
- adb-peco
    - 複数のAndroid端末を同時に繋いでるときに便利
- input text
    - adb shell input text droidkaigi
    - adb shellでどのエミュに繋ぐか選べるので↑のコマンドで選択した端末にテキストを送りこめる
- dumpsys
    - system serviceをdumpできる
    - adb shell dumpsys | grep "DUMP OF SERVICEIS"
    - adb shell dumpsys activity top でViewの構造やら見える
    - adb shell dumpsys activity activities | grep apk
- settings
    - 設定にどんな値が入っているか確認できる
- screenrecord
    - 画面録画機能
- systrace
    - パフォーマンスを見るためのツール
    - HTMLでレポートを出力できる
- atrace

- Android-Command-Note
    - いろいろのっけてる
- AndroidSHell
    - もうちょっと細かく載っている
- dexcount-gradle-plugin
- gradle-version-plugin
    - 使っているライブラリの更新をチェックしてくれる
    - gradle dependencyUpdates
- build-time-tracker-plugin
- gradle-android-command-plugin

# Android Studio Plugin
- Android wifi adb
- ADB Idea
    - studio内からadbコマンド打てる
- adb commander for android
- eventbus-intellij-plugin
- android-postfix-plugin
- Google Developers color scheme

# その他のツール
- androidtool-mac
- tonkotsu
- vysor
    - 端末のミラーリングしてくれる
- Android SDK Search
- DPI Calculator
- Android Resource Navigator
- Material Terminal
    - アプリの中でshell使える
- materialdoc.com
    - 公式ページのサンプルをアプリにした
- DesignOverlay
    - 神ツールっぽい
- View Debug

# どこでこの情報を集めるか
- コード読む
- Google+を覗く
- Twitter
- GitHub
  • adb系のコマンドやgradleのコマンドをひたすら紹介する内容でしたがこの辺が勉強不足な僕的にはすごいよかったです。少しずつ使いこなしていきたいですね。

Dagger2とRealmを利用したモダンな開発 @experopero さん

  • RealmとDagger2で実際の運用での使い方を聞けたのはよかったです。Dagger2はいまいち正解がわからない。。。とりあえずSubComponent使ってみようかと思いました。

Androidの省電力について考える 中西 良明さん

スライド上がってなかったので雑なメモ

# 電力使用量削減の歴史
- Android 6.0で大変革が起こった
    - 5系までは開発者側に省電力の仕組みの実装が委ねられたが6系から標準な仕様として実装された
- 以前は通信キャリアごとで対策が取られていた
    - 端末メーカーレベルでもあった
- Job Scheduler(5.0〜)
- Fused Location Provider

# 6.0からの話
- 強制的に電力消費を抑える仕組み
    - Doze
        - 一定の条件を満たすとDozeモードに入る。たまに起きる
        - setAlermClockはDozeを突破できる。が、推奨されなさそう
        - GCMはNWが閉じるので受け取れないが受け取れるようにする指定もある
    - App Standby
        - アプリが一定期間使われていないとアプリはスタンバイ状態に置かれる
        - スタンバイになったアプリは1日1回しかネットーワークに繋がらなくなる
- 電力的に行儀が悪いとStoreから落とされる可能性がある
- 5.0以上はJobSchedulerを以下はAlarmManagerを使うとよいのでは。めんどくさかったらAlarmManagerだけでも。
- adbを使うことで強制的にDozeモードにすることができる
  • この辺、あまり消費電力を意識したことないので聞けてよかったです。とりあえずAlarmManagerのAPIから調べてみよう

実践!Android Studioプラグイン開発 @konifar さん

スライド上がってなかったので雑なメモ

# プラグインの話
- IntelijでJava6開発
- pluginのプロジェクトを作成
- Eventに応じたActionクラスを作成
- 基本的な導入はQiitaに投稿したぞい
    - 簡単なことはすぐできる

# 実践的な話
## 覚えておくべきクラスと役割
- AnActionEvent
    - プラグインのActionに関連するさまざまな情報を扱うクラス
- Project
    - プロジェクトの情報がとれる。例えばSDKのバージョンによって生成するコードを変える。。。ということなど
- Editor
    - Editorの情報を取ることができる。選択中のテキストを取得するなど
- Document
    - EditorからDocumentを取得する。リスナーなど仕込めて、入力に応じてなんかさせる、などできる
- PsFile

### COmponent
- Dialog
    - DialogWrapperを継承して使う
- Editor Hint
    - HintManager
- Notification
    - Notification.Busを使ってNotifyする。これは更新確認で使ったりするのでデファクトで入れる

## 悩んだ時の調べ方
- 公開されているコードを読むのが早い
- indellij-sdk-docs
    - 基本的にはこれを見ると大丈夫そう
- android-parcelable-intellij-plugin
    - Parcelableを自動生成するぷらぎん
- android-drawable-importer-intellij-plugin
    - 実践的な内容は全て詰まっている
- adb-idea
    - adbコマンドをAndroid Studio上から簡単に実行できる
- Android Studio Code
    - 最終兵器。GitHubには上がっていないが別の場所にある

# まとめ
- 基本的なクラスは覚えておく
- わからないときは似たコードを読んでみる
  • アプリ作るとき、Koniferさんのプラグインめっちゃお世話になってるので、自分でも何か作れるようになりたいなーと思って聞いたけど、事前知識を仕入れることができてありがたかったです。おそらく知らないで突撃したらすごい時間かかりそうな感じ。。。

  • 余談

2日目に続く。。。

  • スタッフの方々お疲れ様でした。明日もよろしくお願いいたします。