gbdc 勉強会 #2 android studio 実践レポート

21
It’s time to migrate to Android Studio YUTAKA YK KATOH 1 ST SECTION, 1 ST DEPARTMENT, GLOBAL BUSINESS DEVELOPMENT CENTER RICOH COMPANY LIMITED DevFest #2

Upload: yutaka-kato

Post on 22-Jan-2018

402 views

Category:

Software


1 download

TRANSCRIPT

Page 1: GBDC 勉強会 #2 Android Studio 実践レポート

It’s time to migrate to

Android StudioYUTAKA YK KATOH

1ST SECTION, 1ST DEPARTMENT, GLOBAL BUSINESS DEVELOPMENT CENTER

RICOH COMPANY LIMITED

DevFest #2

Page 2: GBDC 勉強会 #2 Android Studio 実践レポート

Android Studio とは

Android Studio (あんどろいどすとぅーでぃおぅ):

カイゼンの鬼 Google が開発したAndroid 専用の Java/C++ 開発環境

2013年5月に発表、以後プレビューを経て2014年12月にバージョン1.0リリース

Apache License 2.0 のオープンソースソフトウェア、無償で利用可能

Google の各種サービスや Google Cloud Platform を標準でサポート、容易にアプリへ組み込める (我らには不要)

スマートウォッチ向けアプリの開発にも対応 (我らには…)

Page 3: GBDC 勉強会 #2 Android Studio 実践レポート

主なメリット

生産性が向上する

ビルド作業やテスト作業の徹底的な自動化

高度な入力支援とリファクタリングツール

高機能なレイアウトエディター

冗長性を排除したテストコード記述

バグを未然に防げる

性能、操作性、バージョン互換などをその場で検証

JVM ユニットテストや UI テストなど複数のテスト手段のサポート

アノテーションによる静的解析の強化

Page 4: GBDC 勉強会 #2 Android Studio 実践レポート

デメリットもある

既存プロジェクトは変換が必要、新旧両立や後戻りはできない

Eclipse 内蔵ビルドシステム (及び Ant) から、Gradle に全面移行する必要がある

操作性が全然違う

用語差異に戸惑う、画面レイアウトも違う、機能や設定のメニュー項目も全く違う

起動が遅い

そもそも開発マシンの要求スペックが高い

大きなプロジェクトでは Indexing 処理に時間がかかる

動作が重い

IDE の UI が SWT ではなく Swing で書かれているので、全体的に描画が遅い

英語版のみ

Page 5: GBDC 勉強会 #2 Android Studio 実践レポート

Android Studio とわたし

新人課題 2013のとき

Android Studio を開発環境の候補にリストアップ、しかし当時のバージョンは 0.9 (プレビュー版)機能的な制約もあり、業務で使えるレベルでないと判断、不採用

Streamline NX 2.6 着手のとき

開発環境の候補にリストアップ、当時バージョン 1.0 (2014年12月) 出たてほやほや

詳細設計を進めているうちに 1.1リリース、目玉機能 “Unit Testing Support” が追加され、技術検証のち採用!

Streamline NX 2.6 実装フェーズ

1.2リリース、1.3リリース、1.4リリース、と追いかけてゆき、(途中何度もバグや気まぐれな仕様変更に巻き込まれながらも一気に改良が進み) 現在 1.5.1利用中

Page 6: GBDC 勉強会 #2 Android Studio 実践レポート

Google の最近の動き (1/2)

2015年6月、Eclipse ベースの開発環境の年内の開発及びサポート中止を表明

Eclipse を含めた開発環境一式は既に配布停止、現在はプラグイン配布のみ

http://android-developers.blogspot.jp/2015/06/an-update-on-eclipse-android-developer.html

Page 7: GBDC 勉強会 #2 Android Studio 実践レポート

Google の最近の動き (2/2)

2015年11月、Android Dev Summit で Android Studio 2.0 発表

“Instant Run”: コード修正をその場で動いてるアプリに反映・確認できる!

https://twitter.com/AndroidDev/status/668841078481657856

https://androiddevsummit.withgoogle.com/

Page 8: GBDC 勉強会 #2 Android Studio 実践レポート

(巷の話題) Kotlin 流行の兆し

Kotlin (ことりん): Better Java を目指して開発された新言語

Java とまぜこぜで運用できる (文法互換はないので、ファイル単位で)

日本 Java ユーザー会のカンファレンスで Kotlin+ Android のセッション登場

https://speakerdeck.com/ntaro/ebanzierisutozhi-chuan-kotlinwoji-cun-purodakutodeshi-u-number-jjug-ccc-number-jjug-number-jkug

去年技術調査した Ceylon

は全然流行らない…

Page 9: GBDC 勉強会 #2 Android Studio 実践レポート

(一応紹介) Eclipse 陣営の最近の動き

次期 Eclipse リリース “Neon” に向けて、“Andmore” プロジェクトを立ち上げ

フォークした ADT Plugin にMaven の正式サポート等の若干の機能を追加

正式版リリースは 2016 年 6 月末を予定、その後もサポートが続くかわからない

https://projects.eclipse.org/projects/tools.andmore

Page 10: GBDC 勉強会 #2 Android Studio 実践レポート

Android Studio の魅力

Android Studio の魅力は、主に以下の 3 要素からなる:

ベース IDE である IntelliJ IDEA (いんてりじぇいあいであ)の魅力

ビルドシステム Gradle (ぐれーどる) の魅力

Android Studio (Gradle 拡張を含む) 独自機能の魅力

Page 11: GBDC 勉強会 #2 Android Studio 実践レポート

IntelliJ IDEA

チェコの JetBrains 社が開発、姉妹製品に PyCharm や RubyMine 等

インテリジェントなコードアシスタントや高度なリファクタリング機能が特徴

Java, Scala, Groovy, Kotlin を標準でサポート

OSS 版と有償版があり、有償版では Java EE, Spring, Play 等のフレームワークサポートやWeb, DB 開発のサポートが充実

Java 8 研修でもIntelliJ を利用

(ただし自分だけ…)

Page 12: GBDC 勉強会 #2 Android Studio 実践レポート

Gradle

Java と Groovy で作られたビルド自動化システム

ビルド以外も何でもできるので、正確にはタスク自動化システム

Groovy ベースの DSL※で無駄のない簡潔な設定・タスク記述を実現

Ant タスク実行機能や Maven リポジトリアクセス機能も搭載

ビルド定義 /パラダイム 手続き的 規約によるビルド

スクリプト Make Gradle

XML Ant Maven

「Gradle 徹底入門」(2014, 翔泳社) より

DSL: Domain Specific Language (ドメイン固有言語)

Page 13: GBDC 勉強会 #2 Android Studio 実践レポート

Layout Editor

ADT のレイアウトエディター同様、様々な条件でプレビューできる

互換性やアクセシビリティ等のチェックが自動で行われる

Page 14: GBDC 勉強会 #2 Android Studio 実践レポート

Translations Editor

多言語リソースの効率的な入力や確認が可能、対応言語一覧ビューも装備

翻訳漏れは重大警告として厳しくチェック、Google に翻訳依頼する機能も…

Page 15: GBDC 勉強会 #2 Android Studio 実践レポート

簡易 Device Monitor

メモリ, CPU, GPU, ネットワークの推移をリアルタイムで追跡

ダンプやアロケーショントラッキングも可能

Page 16: GBDC 勉強会 #2 Android Studio 実践レポート

Android Device Monitor

こちらは ADT 時代と全く同じ画面 (スタンドアロン版) が起動される

起動すると、前述の簡易モニターは無効になる… (DDMS の制約?)

Page 17: GBDC 勉強会 #2 Android Studio 実践レポート

Build Variants

Build Variants = Build Types + Product Flavors

Build Types

Debug / Release 吐き分け機能

各種 APK 生成パラメーター等を切り替えられる (署名や難読化など)

Product Flavors

差分開発を容易にするビルド切り替え機能 (仕組み自体は Build Types と同じ※)

広告あり/なし、体験版/製品版などの実現が最小限の差分だけで済む

※: 事前定義されている点、別々の初期値を持っている点が異なる

Page 18: GBDC 勉強会 #2 Android Studio 実践レポート

JVM Unit Testing

従来のインストゥルメンテーションテスト※に加え、Java VM を用いたユニットテストを新たにサポート

JUnit 4 + Hamcrest + Mockitoによる高いテストコード生産性

UI テストはインストゥルメンテーションテスト、ユニットテストは JVM 上と使い分けるのが Google の提唱する基本スタイル

※: 予め起動されたエミュレーターや実機などの Android OS を用意して実行するテスト

Page 19: GBDC 勉強会 #2 Android Studio 実践レポート

Support Annotations

Android SDK のオプションライブラリ support-annotations が大活躍

Checker Framework 由来: @NonNull, @Nullable

値域定義系: @Size(3), @IntRange(from=0,to=2), @FloatReange(…)

使用法指南系: @CallSuper, @CheckResult

並行性検証系: @MainThread, @UiThread, @WorkerThread, @BinderThread

リソース種別指定系: @IdRes, @DrawableRes, @StringRes, @LayoutRes等

マニフェスト検証系: @RequiresPermission

On-the-fly 静的解析により、コードを書いたその場で警告やエラー表示

リテンションポリシーは Class: あってもなくてもランタイムには影響しない

Package Summery:https://developer.android.com/intl/ja/reference/android/support/annotation/package-summary.html

※: MainThread と UiThread何が違うの?とか聞かれると脱線するので勘弁してください

Page 20: GBDC 勉強会 #2 Android Studio 実践レポート

Gauge

テスト自動化ツール Gauge を内蔵、”Unit Testing Support” 機能やカバレッジツールを実行し、容易にテスト結果やカバレッジ計測・集計を得られる

あまり表舞台に出てこないが非常に強力なツール、もっと活用できれば…

(こぼれ話) Gauge 自体は Go 言語で開発されている

Page 21: GBDC 勉強会 #2 Android Studio 実践レポート

ご清聴ありがとうございました