SlideShare a Scribd company logo
1 of 33
Download to read offline
今更聞けない?Androidのテストの
いろは
@kikuchy
Who?
● @kikuchy
● 菊池 紘
● 株式会社Diverse(ミクシィグループ)
● 一人で新規アプリ開発やってる最中です
● 求む、Androidエンジニア!!(iOSエンジニアも)
なんとなくテストしてきて幾星霜
よくわかってなかったこと
● 「実機で動かすテスト」って遅いイメージ。
本当に遅いのか?
● UIテスト、2年くらい前にAppiumに挑戦して挫折してそれっきり。
今時の始め方は?
● そもそもテストの種類ってどんなのがあって、
どうやって区別付けたら良いのか?
● この勉強会の内容かなり高度じゃないですか?
基本に立ち返ろう
目的
● これからAndroidアプリのテストを始めたい方に、
どこから手を付けたら良いのか見当をつけていただく
● 理解がぼんやりしていた方に、はっきりとした理解をしていただく
● 識者に突っ込んでいただいて私が勉強し直す
話さないこと
● テストランナー/フレームワークについて(JUnit4, JUnit5, Spek, etc)
● テストのための設計技法について(DI, MockやStub, etc)
● 自動テスト・手動テストの比較
● 品質保証の技法
区分
Androidのテストの種類
粒度実行場所 (開発マシンの)JVM
Android
(エミュレーター or 実機)
単体テスト/統合テスト Local Unit Test Instrumented Unit Test
UIテスト ❌ Instrumented (UI) Test
Local Unit Test (1)
● JVMの上でテストを行う
● 「apk作って実機に送って…」という手順が必要ないので、
Instrumented Unit Testより結果が出るまでが早い
● Android frameworkの機能は使えない
○ frameworkはランタイムが提供しているものだから
○ 代わりに、APIのクラスやメソッドをスタブした android.jarを使用できる
○ メソッドは全てRuntimeExceptionを飛ばすスタブに置き換えられている
○ その代わり全てのクラスから final修飾子が外されている
Local Unit Test (2)
● AndroidランタイムのAPIを使う場合はモックする必要がある
○ 有名なモックライブラリが Robolectric
○ finalが外れているのでMockitoなどで自前でモックすることも可能
http://robolectric.org/
Robolectric
● Android frameworkのAPIモック実装とテストランナー類がセットになった便利ツー
ル
● ほぼほぼ実機のAPIと同じように使える
○ SharedPreferencesにデータを記憶させることも可能
(一度テストが終わると内容は消える)
○ リソースも参照できる
○ 知っている限りでは、 AndroidKeyStoreは使用できなかった
● Activityのライフサイクルを試すようなことも可能
Robolectric導入 (1)
// build.gradle
android {
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
dependencies {
testImplementation "org.robolectric:robolectric:3.5.1"
}
Robolectric導入 (2)
@RunWith(RobolectricTestRunner.class)
public class ExampleRobolectricUnitTest {
@Test
public void testSaveInSharedPreferences() {
// RuntimeEnvironment.application でApplication Contextを入手できる
SharedPreferences sp = RuntimeEnvironment
.application
.getSharedPreferences("test", Context.MODE_PRIVATE);
sp
.edit()
.putInt("hoge", 1)
.apply();
Assert.assertEquals(sp.getInt("hoge", 0), 1);
}
}
http://site.mockito.org/
Mockito (1)
● 昔から有名なJavaのモックライブラリ
● あるインスタンスの特定のメソッドを呼んだら事前に設定した値を返す、
というモックインスタンスを生成することが可能
○ DIのためにinterfaceを用意しておくことがあるが、 Mockitoがあればinterfaceを用意しなくても済む
ケースが多い
Mockito (2)
● Mockito 2.1.0からはfinalクラスをモックするオプションもある
○ Kotlinで宣言したクラスは基本的に finalなので、これがないと非常にきつい
○ org.mockito:mockito-inline をdependenciesに追加すると有効になる
● Kotlinでテストを書く場合はMockito-Kotlinを使うと良い
○ when()を書く場合にバッククォートしないといけなくなるの避け
○ 他にも便利な関数がたくさん
Mockito導入 (1)
// build.gradle
dependencies {
testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
testImplementation "org.mockito:mockito-inline:2.8.9"
}
Mockito導入(2)
@Test
fun testWithMock() {
val dependee: Dependee = mock {
// Mockito-Kotlin は mock {} でモックの設定ができる
on { doSomething() }.then { Result(1) }
}
val depending = Depending(dependee)
val actual = depending.doAnotherThingWithSomething()
assertEquals(Result(1), actual)
}
Instrumented Unit Test
● Googleは結合テストの段階ではAndroidの上でテストすることを推奨している
● Test Support Libraryを導入して
RunWithアノテーションを書いて
androidTestディレクトリ以下にテストコードを置けば良いだけ
● 普通のUnitテストとほぼ何も変わらない
Instrumented Unit Testの例
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun testSaveSharedPreferences() {
val sp = InstrumentationRegistry
.getTargetContext()
.getSharedPreferences("hoge", Context.MODE_PRIVATE)
sp
.edit()
.putInt("hoge", 1)
.apply()
assertEquals(sp.getInt("hoge", 0), 1)
}
}
Instrumented UI Test
● 実機やエミュレーター上のアプリ操作と検証を自動で行う
● 画面操作のフレームワークが必要
○ 自アプリだけで完結する場合は Espresso
○ 他アプリとの連動が必要な場合は UI Automator
● 必要なものはTest Support Libraryにだいたい入っている
● WebやiOSと画面構成が同じならAppiumを使う手もある
○ Java/Kotlin以外でテストを書きたい場合も選択肢に入る
Espresso (1)
● Viewの取得、操作とアサーションの仕組みを提供するフレームワーク
● Viewを指定して操作を伝え、期待した結果を引き起こせたか確認するのが基本手
順
● 「ダイアログが表示されるまで待つ」とかは自動でやってくれる模様
● 3.0からパーミッションダイアログをスキップするなども可能になった
Espresso (2)
● 面倒なDatePickerなどの操作を簡略化してくれる
espresso-contribなど、補助ライブラリも充実している
● Android StudioのEspresso Test Recorderを使うと
デバイス上の操作をコードに落としてくれる
○ 詳しくは外山さんのDroidkaigi 2017のセッションを参照
https://academy.realm.io/jp/posts/droidkaigi17-espresso-test/
UI Automator
● デバイス状態の変更が可能
○ 画面回転
○ 通知欄を開く
○ ホームボタンやバックボタンなどを押下する
○ スクリーンショットを撮る
○ などなど
● 上記組み合わせで、自アプリ以外のアプリも操作する事が可能
○ 外部アプリとの連携のテストは Espressoではできない
○ Settingsから通知設定をいじったりパーミッションを変更したり、といったテストも可能
● Espressoと組み合わせて使用することもできる
○ 画面回転させてから操作、ということも可能
DEMO
(時間があれば)
Appium
● SeleniumのiOS/Android対応版
● Driver経由でデバイスを操作するためのもの
● WebDriver JSON Wire Protocolを喋るならどの言語でテストを書いても良い
● 中ではUI Automatorを使っているらしい
● 2年前にこれでテストを書こうとしてツラミウムになったのでそれ以来触ってないです
知っておくと便利なこと
遠隔実機提供サービス
● 手元にない種類の実機でテストをしたいときなどに使う
● 主に以下の2つが有名
○ Firebase Test Lab for Android
■ Instrumented Testだけでなく、botがなんかいい感じに UI操作してくれるRoboテストというも
のもある
■ Android Studioから実行して結果を見ることが可能
○ AWS Device Farm
■ 対応デバイス/OSバージョンの種類が多い
■ リモートデバイスをブラウザから操作可能
● 自前で同じようなものを作ることも可能
○ Open STF
CIサービスのInstrumented Test対応
● CIサービスによってはInstrumented Test可能なところがある
○ Bitrise
■ 立ち上げ済みのエミュレーターがいるので、テスト用 APKを投げると実行してくれる
○ CircleCI
■ Android SDKインストール済みイメージにはエミュレーターが入っているので、
自力でエミュレーターを立ち上げれば可能
宣伝
● DiverseではAndroid(Kotlin, Java), iOS(Swift), サーバー(Ruby, Kotlin)
開発ができるエンジニアを募集中です
● 特に新規事業のiOS開発チームリーダー募集に注力中
● 自分の力でサービスを成長させることに興味がある方、
お話させてください!
DM to @kikuchy or https://diverse-inc.co.jp/recruit/
今更聞けない? Androidのテストのいろは

More Related Content

What's hot

人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022Takayuki Shimizukawa
 
Wacate2018 winter jstqb-al-ta
Wacate2018 winter jstqb-al-taWacate2018 winter jstqb-al-ta
Wacate2018 winter jstqb-al-takauji0522
 
組み合わせテストの落とし穴〜有則と無則〜
組み合わせテストの落とし穴〜有則と無則〜組み合わせテストの落とし穴〜有則と無則〜
組み合わせテストの落とし穴〜有則と無則〜yufu yufu
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)Yasuharu Nishi
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証Yasuharu Nishi
 
テスト観点に関する取り組み事例
テスト観点に関する取り組み事例テスト観点に関する取り組み事例
テスト観点に関する取り組み事例NaokiKashiwagura
 
TPI NEXT ざっくり概要
TPI NEXT ざっくり概要TPI NEXT ざっくり概要
TPI NEXT ざっくり概要Akira Ikeda
 
LayerXのQAチームで目指したい動き方 (社内資料)
LayerXのQAチームで目指したい動き方 (社内資料)LayerXのQAチームで目指したい動き方 (社内資料)
LayerXのQAチームで目指したい動き方 (社内資料)mosa siru
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpkyon mm
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門Shuji Yamada
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT Akabane Hiroyuki
 
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-崇 山﨑
 

What's hot (20)

人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
mTCP使ってみた
mTCP使ってみたmTCP使ってみた
mTCP使ってみた
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
 
Wacate2018 winter jstqb-al-ta
Wacate2018 winter jstqb-al-taWacate2018 winter jstqb-al-ta
Wacate2018 winter jstqb-al-ta
 
組み合わせテストの落とし穴〜有則と無則〜
組み合わせテストの落とし穴〜有則と無則〜組み合わせテストの落とし穴〜有則と無則〜
組み合わせテストの落とし穴〜有則と無則〜
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
 
テスト観点に関する取り組み事例
テスト観点に関する取り組み事例テスト観点に関する取り組み事例
テスト観点に関する取り組み事例
 
TPI NEXT ざっくり概要
TPI NEXT ざっくり概要TPI NEXT ざっくり概要
TPI NEXT ざっくり概要
 
LayerXのQAチームで目指したい動き方 (社内資料)
LayerXのQAチームで目指したい動き方 (社内資料)LayerXのQAチームで目指したい動き方 (社内資料)
LayerXのQAチームで目指したい動き方 (社内資料)
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
 

Similar to 今更聞けない? Androidのテストのいろは

POとPOじゃない人の勉強会 第6回
POとPOじゃない人の勉強会 第6回POとPOじゃない人の勉強会 第6回
POとPOじゃない人の勉強会 第6回pepabo-po
 
新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なことHiroshi Kikuchi
 
グロースハック_UIscope_講演資料20150825
グロースハック_UIscope_講演資料20150825グロースハック_UIscope_講演資料20150825
グロースハック_UIscope_講演資料20150825Daisuke Hiraishi
 
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博schoowebcampus
 
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-nishio
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜Takao Sumitomo
 
とりあえず機械学習をやってみた
とりあえず機械学習をやってみたとりあえず機械学習をやってみた
とりあえず機械学習をやってみたsuzuki333333333
 
アジャイル入門
アジャイル入門アジャイル入門
アジャイル入門Kenji Morita
 
知識ゼロからモバイルアプリをデザインして失敗した話
知識ゼロからモバイルアプリをデザインして失敗した話知識ゼロからモバイルアプリをデザインして失敗した話
知識ゼロからモバイルアプリをデザインして失敗した話FujishiroRumi
 
「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) 「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) Taku Yajima
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend AndroidのススメSuzuki Junko
 
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つエンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つYusaku Kinoshita
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたことKohki Nakashima
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrumKenji Morita
 
プロトタイプから始めるユーザーテスト
プロトタイプから始めるユーザーテストプロトタイプから始めるユーザーテスト
プロトタイプから始めるユーザーテストKenji Ikehara
 
ユーザビリティテストをやってみよう
ユーザビリティテストをやってみようユーザビリティテストをやってみよう
ユーザビリティテストをやってみようscarletplover
 
InVision勉強会資料
InVision勉強会資料InVision勉強会資料
InVision勉強会資料TakuyaTakemoto
 
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...schoowebcampus
 
App inventor for bussiness
App inventor for bussinessApp inventor for bussiness
App inventor for bussinessTakeaki Tada
 

Similar to 今更聞けない? Androidのテストのいろは (20)

POとPOじゃない人の勉強会 第6回
POとPOじゃない人の勉強会 第6回POとPOじゃない人の勉強会 第6回
POとPOじゃない人の勉強会 第6回
 
新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと新規Androidアプリ開発において何より大切なこと
新規Androidアプリ開発において何より大切なこと
 
グロースハック_UIscope_講演資料20150825
グロースハック_UIscope_講演資料20150825グロースハック_UIscope_講演資料20150825
グロースハック_UIscope_講演資料20150825
 
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
 
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
 
とりあえず機械学習をやってみた
とりあえず機械学習をやってみたとりあえず機械学習をやってみた
とりあえず機械学習をやってみた
 
アジャイル入門
アジャイル入門アジャイル入門
アジャイル入門
 
知識ゼロからモバイルアプリをデザインして失敗した話
知識ゼロからモバイルアプリをデザインして失敗した話知識ゼロからモバイルアプリをデザインして失敗した話
知識ゼロからモバイルアプリをデザインして失敗した話
 
「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) 「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮)
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つエンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
 
WWDC15_AdTech
WWDC15_AdTechWWDC15_AdTech
WWDC15_AdTech
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrum
 
プロトタイプから始めるユーザーテスト
プロトタイプから始めるユーザーテストプロトタイプから始めるユーザーテスト
プロトタイプから始めるユーザーテスト
 
ユーザビリティテストをやってみよう
ユーザビリティテストをやってみようユーザビリティテストをやってみよう
ユーザビリティテストをやってみよう
 
InVision勉強会資料
InVision勉強会資料InVision勉強会資料
InVision勉強会資料
 
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...
【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束・表現方法 先生:【人間中心イノベーション概論】4限目:創出 アイデア発想の発散・収束...
 
App inventor for bussiness
App inventor for bussinessApp inventor for bussiness
App inventor for bussiness
 

More from Hiroshi Kikuchi

Android Developer Toolsのバグを見つけて直してもらった話
Android Developer Toolsのバグを見つけて直してもらった話Android Developer Toolsのバグを見つけて直してもらった話
Android Developer Toolsのバグを見つけて直してもらった話Hiroshi Kikuchi
 
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選Hiroshi Kikuchi
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテストHiroshi Kikuchi
 
KotlinJSって正直どうなん
KotlinJSって正直どうなんKotlinJSって正直どうなん
KotlinJSって正直どうなんHiroshi Kikuchi
 
画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろうHiroshi Kikuchi
 
テストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたいテストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたいHiroshi Kikuchi
 
Android thingsやってみた
Android thingsやってみたAndroid thingsやってみた
Android thingsやってみたHiroshi Kikuchi
 
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのかどうしてコードはレガシーになるのか
どうしてコードはレガシーになるのかHiroshi Kikuchi
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたHiroshi Kikuchi
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発Hiroshi Kikuchi
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話Hiroshi Kikuchi
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な APIHiroshi Kikuchi
 
Designing Auto Generated Codes
Designing Auto Generated CodesDesigning Auto Generated Codes
Designing Auto Generated CodesHiroshi Kikuchi
 
C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!Hiroshi Kikuchi
 
Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料Hiroshi Kikuchi
 

More from Hiroshi Kikuchi (15)

Android Developer Toolsのバグを見つけて直してもらった話
Android Developer Toolsのバグを見つけて直してもらった話Android Developer Toolsのバグを見つけて直してもらった話
Android Developer Toolsのバグを見つけて直してもらった話
 
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
モバイルアプリ開発をグッと楽にするKotlinの便利なところ3選
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテスト
 
KotlinJSって正直どうなん
KotlinJSって正直どうなんKotlinJSって正直どうなん
KotlinJSって正直どうなん
 
画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう画面状態を抽象化してテスタブル設計ライフを送ろう
画面状態を抽象化してテスタブル設計ライフを送ろう
 
テストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたいテストコードをアプリケーションコードと同じ階層に置きたい
テストコードをアプリケーションコードと同じ階層に置きたい
 
Android thingsやってみた
Android thingsやってみたAndroid thingsやってみた
Android thingsやってみた
 
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのかどうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
 
Designing Auto Generated Codes
Designing Auto Generated CodesDesigning Auto Generated Codes
Designing Auto Generated Codes
 
C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!C#でiPhone & Androidアプリ!
C#でiPhone & Androidアプリ!
 
Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料Ideatter : Tech-on2011決勝でのプレゼン資料
Ideatter : Tech-on2011決勝でのプレゼン資料
 

Recently uploaded

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Recently uploaded (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

今更聞けない? Androidのテストのいろは