狠狠撸

狠狠撸Share a Scribd company logo
It’s time to migrate to
Android Studio
YUTAKA YK KATOH
1ST SECTION, 1ST DEPARTMENT, GLOBAL BUSINESS DEVELOPMENT CENTER
RICOH COMPANY LIMITED
DevFest #2
Android Studio とは
? Android Studio (あんどろいど すとぅーでぃおぅ):
カイゼンの鬼 Google が開発した Android 専用の Java/C++ 開発環境
? 2013年5月に発表、以後プレビューを経て2014年12月にバージョン1.0リリース
? Apache License 2.0 のオープンソースソフトウェア、無償で利用可能
? Google の各種サービスや Google Cloud Platform を標準でサポート、容易にア
プリへ組み込める (我らには不要)
? スマートウォッチ向けアプリの開発にも対応 (我らには…)
主なメリット
? 生産性が向上する
? ビルド作業やテスト作業の徹底的な自動化
? 高度な入力支援とリファクタリングツール
? 高機能なレイアウトエディター
? 冗長性を排除したテストコード記述
? バグを未然に防げる
? 性能、操作性、バージョン互換などをその場で検証
? JVM ユニットテストや UI テストなど複数のテスト手段のサポート
? アノテーションによる静的解析の強化
デメリットもある
? 既存プロジェクトは変換が必要、新旧両立や後戻りはできない
? Eclipse 内蔵ビルドシステム (及び Ant) から、Gradle に全面移行する必要がある
? 操作性が全然違う
? 用語差異に戸惑う、画面レイアウトも違う、機能や設定のメニュー項目も全く違う
? 起動が遅い
? そもそも開発マシンの要求スペックが高い
? 大きなプロジェクトでは Indexing 処理に時間がかかる
? 動作が重い
? IDE の UI が SWT ではなく Swing で書かれているので、全体的に描画が遅い
? 英語版のみ
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 利用中
Google の最近の動き (1/2)
? 2015年6月、Eclipse ベースの開発環境の年内の開発及びサポート中止を表明
? Eclipse を含めた開発環境一式は既に配布停止、現在はプラグイン配布のみ
http://android-developers.blogspot.jp/2015/06/an-update-on-eclipse-android-developer.html
Google の最近の動き (2/2)
? 2015年11月、Android Dev Summit で Android Studio 2.0 発表
? “Instant Run”: コード修正をその場で動いてるアプリに反映?確認できる!
https://twitter.com/AndroidDev/status/668841078481657856
https://androiddevsummit.withgoogle.com/
(巷の話題) 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
は全然流行ら
ない…
(一応紹介) Eclipse 陣営の最近の動き
? 次期 Eclipse リリース “Neon” に向けて、“Andmore” プロジェクトを立ち上げ
? フォークした ADT Plugin に Maven の正式サポート等の若干の機能を追加
? 正式版リリースは 2016 年 6 月末を予定、その後もサポートが続くかわからない
https://projects.eclipse.org/projects/tools.andmore
Android Studio の魅力
? Android Studio の魅力は、主に以下の 3 要素からなる:
? ベース IDE である IntelliJ IDEA (いんてりじぇい あいであ) の魅力
? ビルドシステム Gradle (ぐれーどる) の魅力
? Android Studio (Gradle 拡張を含む) 独自機能の魅力
IntelliJ IDEA
? チェコの JetBrains 社が開発、姉妹製品に PyCharm や RubyMine 等
? インテリジェントなコードアシスタントや高度なリファクタリング機能が特徴
? Java, Scala, Groovy, Kotlin を標準でサポート
? OSS 版と有償版があり、有償版では Java EE, Spring, Play 等のフレームワークサ
ポートや Web, DB 開発のサポートが充実
Java 8 研修でも
IntelliJ を利用
(ただし自分だけ…)
Gradle
? Java と Groovy で作られたビルド自動化システム
? ビルド以外も何でもできるので、正確にはタスク自動化システム
? Groovy ベースの DSL※ で無駄のない簡潔な設定?タスク記述を実現
? Ant タスク実行機能や Maven リポジトリアクセス機能も搭載
ビルド定義 / パラダイム 手続き的 規約によるビルド
スクリプト Make Gradle
XML Ant Maven
「Gradle 徹底入門」(2014, 翔泳社) より
DSL: Domain Specific Language (ドメイン固有言語)
Layout Editor
? ADT のレイアウトエディター同様、様々な条件でプレビューできる
? 互換性やアクセシビリティ等のチェックが自動で行われる
Translations Editor
? 多言語リソースの効率的な入力や確認が可能、対応言語一覧ビューも装備
? 翻訳漏れは重大警告として厳しくチェック、Google に翻訳依頼する機能も…
簡易 Device Monitor
? メモリ, CPU, GPU, ネットワークの推移をリアルタイムで追跡
? ダンプやアロケーショントラッキングも可能
Android Device Monitor
? こちらは ADT 時代と全く同じ画面 (スタンドアロン版) が起動される
? 起動すると、前述の簡易モニターは無効になる… (DDMS の制約?)
Build Variants
? Build Variants = Build Types + Product Flavors
? Build Types
? Debug / Release 吐き分け機能
? 各種 APK 生成パラメーター等を切り替えられる (署名や難読化など)
? Product Flavors
? 差分開発を容易にするビルド切り替え機能 (仕組み自体は Build Types と同じ※)
? 広告あり/なし、体験版/製品版などの実現が最小限の差分だけで済む
※: 事前定義されている点、別々の初期値を持っている点が異なる
JVM Unit Testing
? 従来のインストゥルメンテーションテスト※に加え、Java VM を用いたユニット
テストを新たにサポート
? JUnit 4 + Hamcrest + Mockito による高いテストコード生産性
? UI テストはインストゥルメンテーションテスト、ユニットテストは JVM 上と使
い分けるのが Google の提唱する基本スタイル
※: 予め起動されたエミュレーターや実機などの Android OS を用意して実行するテスト
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 何が違うの?とか聞かれると脱線するので勘弁してください
Gauge
? テスト自動化ツール Gauge を内蔵、”Unit Testing Support” 機能やカバレッジ
ツールを実行し、容易にテスト結果やカバレッジ計測?集計を得られる
? あまり表舞台に出てこないが非常に強力なツール、もっと活用できれば…
? (こぼれ話) Gauge 自体は Go 言語で開発されている
ご清聴ありがとうございました

More Related Content

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

  • 1. It’s time to migrate to Android Studio YUTAKA YK KATOH 1ST SECTION, 1ST DEPARTMENT, GLOBAL BUSINESS DEVELOPMENT CENTER RICOH COMPANY LIMITED DevFest #2
  • 2. Android Studio とは ? Android Studio (あんどろいど すとぅーでぃおぅ): カイゼンの鬼 Google が開発した Android 専用の Java/C++ 開発環境 ? 2013年5月に発表、以後プレビューを経て2014年12月にバージョン1.0リリース ? Apache License 2.0 のオープンソースソフトウェア、無償で利用可能 ? Google の各種サービスや Google Cloud Platform を標準でサポート、容易にア プリへ組み込める (我らには不要) ? スマートウォッチ向けアプリの開発にも対応 (我らには…)
  • 3. 主なメリット ? 生産性が向上する ? ビルド作業やテスト作業の徹底的な自動化 ? 高度な入力支援とリファクタリングツール ? 高機能なレイアウトエディター ? 冗長性を排除したテストコード記述 ? バグを未然に防げる ? 性能、操作性、バージョン互換などをその場で検証 ? JVM ユニットテストや UI テストなど複数のテスト手段のサポート ? アノテーションによる静的解析の強化
  • 4. デメリットもある ? 既存プロジェクトは変換が必要、新旧両立や後戻りはできない ? Eclipse 内蔵ビルドシステム (及び Ant) から、Gradle に全面移行する必要がある ? 操作性が全然違う ? 用語差異に戸惑う、画面レイアウトも違う、機能や設定のメニュー項目も全く違う ? 起動が遅い ? そもそも開発マシンの要求スペックが高い ? 大きなプロジェクトでは Indexing 処理に時間がかかる ? 動作が重い ? IDE の UI が SWT ではなく Swing で書かれているので、全体的に描画が遅い ? 英語版のみ
  • 5. 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 利用中
  • 6. Google の最近の動き (1/2) ? 2015年6月、Eclipse ベースの開発環境の年内の開発及びサポート中止を表明 ? Eclipse を含めた開発環境一式は既に配布停止、現在はプラグイン配布のみ http://android-developers.blogspot.jp/2015/06/an-update-on-eclipse-android-developer.html
  • 7. Google の最近の動き (2/2) ? 2015年11月、Android Dev Summit で Android Studio 2.0 発表 ? “Instant Run”: コード修正をその場で動いてるアプリに反映?確認できる! https://twitter.com/AndroidDev/status/668841078481657856 https://androiddevsummit.withgoogle.com/
  • 8. (巷の話題) 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 は全然流行ら ない…
  • 9. (一応紹介) Eclipse 陣営の最近の動き ? 次期 Eclipse リリース “Neon” に向けて、“Andmore” プロジェクトを立ち上げ ? フォークした ADT Plugin に Maven の正式サポート等の若干の機能を追加 ? 正式版リリースは 2016 年 6 月末を予定、その後もサポートが続くかわからない https://projects.eclipse.org/projects/tools.andmore
  • 10. Android Studio の魅力 ? Android Studio の魅力は、主に以下の 3 要素からなる: ? ベース IDE である IntelliJ IDEA (いんてりじぇい あいであ) の魅力 ? ビルドシステム Gradle (ぐれーどる) の魅力 ? Android Studio (Gradle 拡張を含む) 独自機能の魅力
  • 11. IntelliJ IDEA ? チェコの JetBrains 社が開発、姉妹製品に PyCharm や RubyMine 等 ? インテリジェントなコードアシスタントや高度なリファクタリング機能が特徴 ? Java, Scala, Groovy, Kotlin を標準でサポート ? OSS 版と有償版があり、有償版では Java EE, Spring, Play 等のフレームワークサ ポートや Web, DB 開発のサポートが充実 Java 8 研修でも IntelliJ を利用 (ただし自分だけ…)
  • 12. Gradle ? Java と Groovy で作られたビルド自動化システム ? ビルド以外も何でもできるので、正確にはタスク自動化システム ? Groovy ベースの DSL※ で無駄のない簡潔な設定?タスク記述を実現 ? Ant タスク実行機能や Maven リポジトリアクセス機能も搭載 ビルド定義 / パラダイム 手続き的 規約によるビルド スクリプト Make Gradle XML Ant Maven 「Gradle 徹底入門」(2014, 翔泳社) より DSL: Domain Specific Language (ドメイン固有言語)
  • 13. Layout Editor ? ADT のレイアウトエディター同様、様々な条件でプレビューできる ? 互換性やアクセシビリティ等のチェックが自動で行われる
  • 14. Translations Editor ? 多言語リソースの効率的な入力や確認が可能、対応言語一覧ビューも装備 ? 翻訳漏れは重大警告として厳しくチェック、Google に翻訳依頼する機能も…
  • 15. 簡易 Device Monitor ? メモリ, CPU, GPU, ネットワークの推移をリアルタイムで追跡 ? ダンプやアロケーショントラッキングも可能
  • 16. Android Device Monitor ? こちらは ADT 時代と全く同じ画面 (スタンドアロン版) が起動される ? 起動すると、前述の簡易モニターは無効になる… (DDMS の制約?)
  • 17. Build Variants ? Build Variants = Build Types + Product Flavors ? Build Types ? Debug / Release 吐き分け機能 ? 各種 APK 生成パラメーター等を切り替えられる (署名や難読化など) ? Product Flavors ? 差分開発を容易にするビルド切り替え機能 (仕組み自体は Build Types と同じ※) ? 広告あり/なし、体験版/製品版などの実現が最小限の差分だけで済む ※: 事前定義されている点、別々の初期値を持っている点が異なる
  • 18. JVM Unit Testing ? 従来のインストゥルメンテーションテスト※に加え、Java VM を用いたユニット テストを新たにサポート ? JUnit 4 + Hamcrest + Mockito による高いテストコード生産性 ? UI テストはインストゥルメンテーションテスト、ユニットテストは JVM 上と使 い分けるのが Google の提唱する基本スタイル ※: 予め起動されたエミュレーターや実機などの Android OS を用意して実行するテスト
  • 19. 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 何が違うの?とか聞かれると脱線するので勘弁してください
  • 20. Gauge ? テスト自動化ツール Gauge を内蔵、”Unit Testing Support” 機能やカバレッジ ツールを実行し、容易にテスト結果やカバレッジ計測?集計を得られる ? あまり表舞台に出てこないが非常に強力なツール、もっと活用できれば… ? (こぼれ話) Gauge 自体は Go 言語で開発されている