SlideShare ist ein Scribd-Unternehmen logo
1 von 21
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 言語で開発されている
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介Masataka Kono
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~Yabata Tomomitsu
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)Keiji Kamebuchi
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力Keiji Ariyama
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCodeYuki Igarashi
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)Takayoshi Tanaka
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行Yu Nobuoka
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibilityTakeshi Fujimoto
 
Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門OESF Education
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Tatsuya Ishikawa
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修akkuma
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Yasuhiro Matsuda
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方Makoto Yamazaki
 
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化Akira Inoue
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてShigeru Tatsuta
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介l_b__
 

Was ist angesagt? (20)

minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCode
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
 
Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
 
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps について
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介
 

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

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!Kazuaki Ueda
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化Katsuhiro Aizawa
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Masaki Takeda
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)Hiroyuki Kusu
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)masanori kataoka
 
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~Akira Inoue
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~normalian
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
Visual Studio を使った Windows Azure アプリケーション開発概要
Visual Studio を使った Windows Azure アプリケーション開発概要Visual Studio を使った Windows Azure アプリケーション開発概要
Visual Studio を使った Windows Azure アプリケーション開発概要Tomoyuki Iwade
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET するm ishizaki
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会mokelab
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み慎一 古賀
 
Google App Engine Java 入門
Google App Engine Java 入門Google App Engine Java 入門
Google App Engine Java 入門tantack
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 

Ähnlich wie GBDC 勉強会 #2 Android Studio 実践レポート (20)

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所Visual Studio Code 拡張の勘所
Visual Studio Code 拡張の勘所
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
 
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Visual Studio を使った Windows Azure アプリケーション開発概要
Visual Studio を使った Windows Azure アプリケーション開発概要Visual Studio を使った Windows Azure アプリケーション開発概要
Visual Studio を使った Windows Azure アプリケーション開発概要
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
 
ZendStudioのご紹介
ZendStudioのご紹介ZendStudioのご紹介
ZendStudioのご紹介
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
 
Google App Engine Java 入門
Google App Engine Java 入門Google App Engine Java 入門
Google App Engine Java 入門
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 

Mehr von Yutaka Kato

かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版Yutaka Kato
 
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Yutaka Kato
 
AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017Yutaka Kato
 
Vaadin 8 によるオール java web アプリ開発の仕組みと実践
Vaadin 8 によるオール java web アプリ開発の仕組みと実践Vaadin 8 によるオール java web アプリ開発の仕組みと実践
Vaadin 8 によるオール java web アプリ開発の仕組みと実践Yutaka Kato
 
Present でスライドを作ろう
Present でスライドを作ろうPresent でスライドを作ろう
Present でスライドを作ろうYutaka Kato
 
データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)Yutaka Kato
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016Yutaka Kato
 
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術Yutaka Kato
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 

Mehr von Yutaka Kato (9)

かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版
 
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
 
AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017
 
Vaadin 8 によるオール java web アプリ開発の仕組みと実践
Vaadin 8 によるオール java web アプリ開発の仕組みと実践Vaadin 8 によるオール java web アプリ開発の仕組みと実践
Vaadin 8 によるオール java web アプリ開発の仕組みと実践
 
Present でスライドを作ろう
Present でスライドを作ろうPresent でスライドを作ろう
Present でスライドを作ろう
 
データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016
 
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 

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 言語で開発されている