SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler 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のテストのいろは

Mais conteúdo relacionado

Mais procurados

Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことasakahara
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –虎の穴 開発室
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化JustSystems Corporation
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン伸男 伊藤
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontendsPIXTA Inc.
 
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)Yoshikazu GOTO
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境Kazumi IWANAGA
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Nobuhiro Hatano
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さSho Okada
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Takafumi ONAKA
 
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座Hiroko Tamagawa
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 

Mais procurados (20)

Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいこと
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
 
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
 
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 

Semelhante a 今更聞けない? 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
 

Semelhante a 今更聞けない? 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
 

Mais de 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
 

Mais de 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決勝でのプレゼン資料
 

Último

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

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