開発を効率的に進めるられるまでの道程

Takao Sumitomo
Takao SumitomoWantedly, Inc. at Wantedly,inc.
DroidKaigi 2015/04/25 @cattaka_net
開発を効率的に
進めるられるまでの道程
Takao Sumitomo
@cattaka_net
DroidKaigi 2015/04/25 @cattaka_net
自己紹介
●
住友 孝郎(Takao Sumitomo)
●
Androidアプリ開発者
●
開発経歴
●
Androidアプリ
●
iOSアプリ(ちょっとだけ)
●
業務系Webアプリケーション
●
業務系Windowsアプリ
●
その他
●
電子工作
●
OpenCV
●
ウォンテッドリー株式会社所属
2014年12月〜
DroidKaigi 2015/04/25 @cattaka_net
Androidアプリ開発の経歴
●
HT-03Aの頃(2009年くらい)からAndroidアプリ
作ってます。
●
当時は受託と派遣を主にやってました。
●
手に負えなくなったアプリの改修をよくやってました
DroidKaigi 2015/04/25 @cattaka_net
プロの力が身につく
Androidプログラミングの教科書
DroidKaigi 2015/04/25 @cattaka_net
駄目コードについて、C87で書きました
技術サークル
TechBooster
DroidKaigi 2015/04/25 @cattaka_net
トピック
●
アプリ開発の効率化について
●
テストを書くに至った経緯
●
開発途中からテストを導入する話
DroidKaigi 2015/04/25 @cattaka_net
アプリ開発の効率化について
DroidKaigi 2015/04/25 @cattaka_net
ボトルネックの潜む場所
●
開発で行うこと
●
プログラムを書く
●
ソースコード管理
●
テスト
●
テスト版アプリの配布
●
これらをどこまで自動化するか?
DroidKaigi 2015/04/25 @cattaka_net
ボトルネックの対策
●
開発で行うこと
●
プログラムを書く
– 諦めて書く。良いライブラリを使う。良いIDEを使う。
●
ソースコード管理
– GitやSVNを使う。Git FlowやGitHub Flowを使う。
●
テスト
– JUnitを使う。
– JenkinsやTravisCIやCircleCIで自動化する。
●
テスト版アプリの配布
– DeployGate等を使う。
ここが一番ネックになる
DroidKaigi 2015/04/25 @cattaka_net
なのでテストの話をします
DroidKaigi 2015/04/25 @cattaka_net
テストを書くに至った経緯
DroidKaigi 2015/04/25 @cattaka_net
開発してるとよくある話
●
「バグゼロで」
●
「品質は100%で」
DroidKaigi 2015/04/25 @cattaka_net
どうしてたか?
●
エクセルのテストシート(山盛り)
●
エビデンス(という名のスクリーンショット)を取る
●
全機種で実機テスト
●
仕様変更があったとき
→全部再テストしてくださいね^^
ツライ!(゚Д゚)ツライ!(゚Д゚)
DroidKaigi 2015/04/25 @cattaka_net
よくある問題
●
小さなリファクタリング
●
意識してないところで壊れる、、orz
●
リファクタリングしないようにする
●
ハウルの動く城みたいになる
●
書きたいように書けなくなるので更にストレスが貯まる
ツライ!(゚Д゚)
DroidKaigi 2015/04/25 @cattaka_net
テストを書き始める
●
最初はロジックのテストから書く
●
要件一覧表の1項目1テストを書くこともやった
●
実は個人的に一番効果があった(効率悪いけど)
●
「壊す恐怖」から解放された
●
以降、設計レベルからテストを書くようにした
DroidKaigi 2015/04/25 @cattaka_net
開発途中からテストを導入する話
DroidKaigi 2015/04/25 @cattaka_net
普通のテスト
要求分析
基本設計
機能設計
詳細設計
コーディング
受け入れテスト
システムテスト
結合テスト
単体テスト
DroidKaigi 2015/04/25 @cattaka_net
普通のテスト
要求分析
基本設計
機能設計
詳細設計
コーディング
受け入れテスト
システムテスト
結合テスト
単体テスト
通常はテストも順番に作る。
後から作るのは大変。
DroidKaigi 2015/04/25 @cattaka_net
アプローチ
●
外部依存する箇所にDI(オレオレ可)を入れる
●
通信処理
●
データベース
●
プリファレンス
●
グローバル変数を取る(static変数)
●
シングルトンという名のグローバル変数も取る
●
投げっぱなしのスレッドを止める
●
最小限のリファクタリング
●
ひたすらテストを書く
DroidKaigi 2015/04/25 @cattaka_net
ひたすらテストを書く
DroidKaigi 2015/04/25 @cattaka_net
具体的な修正1
●
修正前
アプリケーション
通信処理データベース
SharedPreferences
DroidKaigi 2015/04/25 @cattaka_net
具体的な修正2
●
修正後
アプリケーション
通信処理データベース
SharedPreferences
DroidKaigi 2015/04/25 @cattaka_net
具体的な修正3
●
テスト時の構成
アプリケーション
通信処理のモックデータベースのモック
SharedPreferencesのモック
DroidKaigi 2015/04/25 @cattaka_net
具体的な修正3
●
テスト時の構成
アプリケーション
通信処理のモックデータベースのモック
SharedPreferencesのモック
要はこれらをモックに
差し替えられれば
テストが書ける
DroidKaigi 2015/04/25 @cattaka_net
どうやって差し替えるか
●
DaggerなどのDIライブラリを使う
●
オレオレDIを使う
オレオレDIでも無いより良い
DroidKaigi 2015/04/25 @cattaka_net
SharedPreferencesの差し替え
●
Context#getSharedPreferencesを付ける
●
呼ぶときの引数にPrefix等を付ける
●
直接↑を呼ぶのではなく、Factoryクラスを作る
DroidKaigi 2015/04/25 @cattaka_net
SharedPreferencesの差し替え
プロダクションコード
public class SharedPreferencesFactory {
static SharedPreferencesFactory INSTANCE = new SharedPreferencesFactory();
public static SharedPreferencesFactory getInstance() {
return INSTANCE;
}
public SharedPreferences newInstance(Context context, String name) {
return context.getSharedPreferences(name, Context.MODE_PRIVATE);
}
}
テスト用のダミー
public class DummySharedPreferencesFactory extends SharedPreferencesFactory {
public SharedPreferences newInstance(Context context, String name) {
SharedPreferences pref = context.getSharedPreferences(
"test_" + name, Context.MODE_PRIVATE);
pref.clear();
return pref;
}
}
テストのときは
ここをダミーに差し替える
DroidKaigi 2015/04/25 @cattaka_net
SQLiteOpenHelperの差し替え
●
RenamingDelegatingContextを使えば
一時的に別のDBファイルにできる
●
SQLiteOpenHelperにname=nullを渡すと
オンメモリのデータベースが作れる
どっちでもテストは書ける
DroidKaigi 2015/04/25 @cattaka_net
SqlteOpenHelperの差し替え
プロダクションコード
public class OpenHelperFactory {
static OpenHelperFactory INSTANCE = new OpenHelperFactory();
public static OpenHelperFactory getInstance() {
return INSTANCE;
}
@Override
public OpenHelper createOpenHelper(Context context) {
return new OpenHelper(context);
}
}
テスト用のダミー
public class DummyOpenHelperFactory extends OpenHelperFactory {
public OpenHelper createOpenHelper(Context context) {
Context c = new RenamingDelegatingContext(context, "test_");
return new OpenHelper(c);
}
}
テストのときは
ここをダミーに差し替える
DroidKaigi 2015/04/25 @cattaka_net
通信処理の差し替え
●
予め通信処理は1つにまとめておく
●
オレオレDIで通信処理を差し替える
●
偽の通信データを返すようにする
●
偽の通信データは
androidTest下のassetsに入れる
DroidKaigi 2015/04/25 @cattaka_net
ひたすらテストを書く
●
ブラックボックステスト
●
ウォークスルー
●
コンバージョンに繋がるところは重点的に書く
●
ログイン周り
●
応募
●
ユーザーのプロフィール入力
●
テストの粒度はマチマチ
DroidKaigi 2015/04/25 @cattaka_net
ひたすらテストを書く
DroidKaigi 2015/04/25 @cattaka_net
悲しいこともあるけど、、
DroidKaigi 2015/04/25 @cattaka_net
具体的な例
DroidKaigi 2015/04/25 @cattaka_net
たとえばリスト画面
●
この画面に関連する部品
●
Activity
●
Adapter
●
ListView
●
Database
●
どのテストを書く?
Activity
ListView
Database
Adapter
DroidKaigi 2015/04/25 @cattaka_net
Adapterのテスト
●
Adapter単独で考える
●
Contextとダミーのデータを与える
●
getViewで生成されたViewを確認する
●
InstrumentationTestCaseが使える
Activity
ListView
Database
Adapter
Context
Adapter
DummyData
生成されたView
getViewメソッド
これらが対応しているかのテストを書く
テストのときは切り離して考える
DroidKaigi 2015/04/25 @cattaka_net
Adapterのテスト
public void testGetView() {
List<CheckListItem> dummys = new ArrayList<>();
{ // ダミーデータを作る
dummys.add(new CheckListItem(1L, 1L, 1L, "Label1"));
dummys.add(new CheckListItem(2L, 2L, 2L, "Label2"));
}
Context context = getInstrumentation().getTargetContext();
MyAdapter sup = new MyAdapter(context, dummys);
{ // 1つめのViewの表示内容を確認する
View view = sup.getView(0, null, null);
assertThat(view, is(Matchers.instanceOf(CheckedTextView.class)));
assertThat(((CheckedTextView)view).getText().toString(), is("Label1"));
}
{ // 2つめのViewの表示内容を確認する
View view = sup.getView(1, null, null);
assertThat(view, is(Matchers.instanceOf(CheckedTextView.class)));
assertThat(((CheckedTextView)view).getText().toString(), is("Label2"));
}
}
DroidKaigi 2015/04/25 @cattaka_net
Databaseのテスト
●
CRUD系はテストを書く
●
RenamingDelegateContextが便利
●
InstrumentationTestCaseが使える
Activity
ListView
Database
Adapter
テストのときは切り離して考える
Database
DummyData1
DummyData2
insert
select
これらが対応しているかのテストを書く
DroidKaigi 2015/04/25 @cattaka_net
Databaseのテスト
@Override
protected void setUp() throws Exception {
super.setUp();
Context context = new RenamingDelegatingContext(
getInstrumentation().getTargetContext(), "test_");
mOpenHelper = new OpenHelper(context);
}
public void testInsertSelect() {
CheckListEntry orig = new CheckListEntry();
orig.setTitle("hoge");
{ // INSERTする
mOpenHelper.registerEntry(orig);
}
CheckListEntry dest;
{ // SELECTする
Long id = orig.getId();
dest = mOpenHelper.findEntry(id, false);
}
{ // 確認する
assertThat(dest.getTitle(), is("hoge"));
}
}
DroidKaigi 2015/04/25 @cattaka_net
Activity
●
外部依存やストレージのみダミーに置き換える
●
ActivityInstrumentationTestCase2が使える
●
それぞれの部品の疎通確認程度に留める
Activity
ListView
Database
Adapter
Activity
ListView
DummyDatabase
Adapter
Databaseのみダミーに置き換えて考える
これらが対応しているかのテストを書く
DroidKaigi 2015/04/25 @cattaka_net
ツールやライブラリ
●
基本的に一般的なものを使用
●
JUnit4
●
./gradlew connectedAndroidTest
●
./gradlew createCoverageReport
●
Espresso (android-test-kit)
●
UI周りのテストが簡潔に書ける
●
Mockito
●
モックが簡単に作れる
●
Crashlytics
./gradlew create(Debug/Release)CoverageReport
DroidKaigi 2015/04/25 @cattaka_net
connectedAndroidTestのレポート
DroidKaigi 2015/04/25 @cattaka_net
createCoverageReportのレポート
DroidKaigi 2015/04/25 @cattaka_net
標準でも十分強力
DroidKaigi 2015/04/25 @cattaka_net
まとめ
DroidKaigi 2015/04/25 @cattaka_net
いきなり効率化は無理
DroidKaigi 2015/04/25 @cattaka_net
少しずつ自動化しよう
DroidKaigi 2015/04/25 @cattaka_net
まずはテストを書くところから始めよう
DroidKaigi 2015/04/25 @cattaka_net
ボトルネックの対策
●
開発で行うこと
●
プログラムを書く
– 諦めて書く
●
ソースコード管理
– GitやSVNを使う。GitFlowやGitHubFlowを使う。
●
テスト
– JUnitを使う
– JenkinsやTravisCIやCircleCIを使う
●
テスト版アプリの配布
– DeployGateやFabricを使う
ここが解決すれば
後の自動化もできる
DroidKaigi 2015/04/25 @cattaka_net
サンプルアプリ
●
FastCheckList
●
テストが直ぐに実行できるようになっています
DroidKaigi 2015/04/25 @cattaka_net
貴方がテストを書けば
効率は上げられる
DroidKaigi 2015/04/25 @cattaka_net
ご清聴ありがとうございました
Takao Sumitomo
@cattaka_net
1 of 52

Recommended

用途に合わせたアニメーションの実装方法 by
用途に合わせたアニメーションの実装方法用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法Takao Sumitomo
18K views50 slides
テストがあればなんとかなる〜効率化までの道程〜 by
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜Takao Sumitomo
14K views34 slides
Android学ぶを君へ。生き抜くためのナレッジ共有 by
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Shinobu Okano
61.2K views160 slides
SQLiteDatabaseを無理矢理覗く by
SQLiteDatabaseを無理矢理覗くSQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗くTakao Sumitomo
3.8K views17 slides
potatotips (iOS/Android開発Tips共有会) 第19回 資料 by
potatotips (iOS/Android開発Tips共有会) 第19回 資料potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料Takao Sumitomo
9.3K views18 slides
Angularおじさんの1年 by
Angularおじさんの1年Angularおじさんの1年
Angularおじさんの1年Hayashi Yuichi
5.6K views30 slides

More Related Content

What's hot

僕らのデータ同期プラクティス by
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティスYukiya Nakagawa
24.2K views40 slides
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか) by
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)Hiroyuki Kusu
60.1K views63 slides
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく by
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくFumiya Sakai
2.7K views17 slides
少しずつ手厚くして不具合や仕様漏れを防ぐために by
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐためにFumiya Sakai
1.6K views19 slides
Angularモダンweb開発セミナー紹介 20170923 by
Angularモダンweb開発セミナー紹介 20170923Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923Staffnet_Inc
1.9K views14 slides
モダンなAndroidアプリ開発勉強会 by
モダンなAndroidアプリ開発勉強会モダンなAndroidアプリ開発勉強会
モダンなAndroidアプリ開発勉強会Shoichi Kakizaki
1.8K views68 slides

What's hot(20)

僕らのデータ同期プラクティス by Yukiya Nakagawa
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
Yukiya Nakagawa24.2K views
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか) by Hiroyuki Kusu
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
Hiroyuki Kusu60.1K views
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく by Fumiya Sakai
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
Fumiya Sakai2.7K views
少しずつ手厚くして不具合や仕様漏れを防ぐために by Fumiya Sakai
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
Fumiya Sakai1.6K views
Angularモダンweb開発セミナー紹介 20170923 by Staffnet_Inc
Angularモダンweb開発セミナー紹介 20170923Angularモダンweb開発セミナー紹介 20170923
Angularモダンweb開発セミナー紹介 20170923
Staffnet_Inc1.9K views
モダンなAndroidアプリ開発勉強会 by Shoichi Kakizaki
モダンなAndroidアプリ開発勉強会モダンなAndroidアプリ開発勉強会
モダンなAndroidアプリ開発勉強会
Shoichi Kakizaki1.8K views
LIGにおけるフロントエンドチーム構築 by Hayashi Yuichi
LIGにおけるフロントエンドチーム構築LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築
Hayashi Yuichi4.6K views
[potatotips #18] Android M Developer Preview & Wear 最新トピック by Kenichi Kambara
[potatotips #18] Android M Developer Preview & Wear 最新トピック[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック
Kenichi Kambara3K views
Angular jsの継続的なバージョンアップ by Kazuyoshi Tsuchiya
Angular jsの継続的なバージョンアップAngular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップ
Kazuyoshi Tsuchiya13.5K views
Titaniumって何? by Toshiro Yagi
Titaniumって何?Titaniumって何?
Titaniumって何?
Toshiro Yagi5.2K views
ABC2016Spring Androidアプリ実装アンチパターン(暫定) by mokelab
ABC2016Spring Androidアプリ実装アンチパターン(暫定)ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
mokelab5K views
これからのモバイルWebと最新動向 by yoshikawa_t
これからのモバイルWebと最新動向これからのモバイルWebと最新動向
これからのモバイルWebと最新動向
yoshikawa_t5.8K views
いまさら聞けないHTML5概要 by yoshikawa_t
いまさら聞けないHTML5概要いまさら聞けないHTML5概要
いまさら聞けないHTML5概要
yoshikawa_t6.8K views
Xcode and iTC submission topics by Syo Ikeda
Xcode and iTC submission topicsXcode and iTC submission topics
Xcode and iTC submission topics
Syo Ikeda1.2K views

Viewers also liked

JobStreamerではじめるJavaBatchのクラウド分散実行 by
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行Yoshitaka Kawashima
11.4K views51 slides
Droid kaigiプレゼン by
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼンSuguru Oho
23K views56 slides
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben by
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syobobenkyon mm
6.4K views38 slides
データモデルは時空を越える by
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越えるterahide
5.1K views39 slides
絶対落ちないアプリの作り方 by
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方Fumihiko Shiroyama
52.9K views124 slides
プログラミング言語Clojureのニャンパスでの活用事例 by
プログラミング言語Clojureのニャンパスでの活用事例プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例sohta
13.6K views34 slides

Viewers also liked(13)

JobStreamerではじめるJavaBatchのクラウド分散実行 by Yoshitaka Kawashima
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima11.4K views
Droid kaigiプレゼン by Suguru Oho
Droid kaigiプレゼンDroid kaigiプレゼン
Droid kaigiプレゼン
Suguru Oho23K views
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben by kyon mm
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
kyon mm6.4K views
データモデルは時空を越える by terahide
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越える
terahide5.1K views
絶対落ちないアプリの作り方 by Fumihiko Shiroyama
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama52.9K views
プログラミング言語Clojureのニャンパスでの活用事例 by sohta
プログラミング言語Clojureのニャンパスでの活用事例プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta13.6K views
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について by Shinichi Kozake
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
Shinichi Kozake7.4K views
DB設計でこだわりたい三つの要素 by Takahiro YAMADA
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Takahiro YAMADA20.4K views
イミュータブルデータモデル(世代編) by Yoshitaka Kawashima
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima38.1K views
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 - by Yuki Anzai
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Yuki Anzai52.2K views
マテリアルデザインを用いたデザインリニューアル [フリル編] by YUKI YAMAGUCHI
マテリアルデザインを用いたデザインリニューアル [フリル編]マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
YUKI YAMAGUCHI93.7K views
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2] by bitter_fox
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
bitter_fox13.6K views

Similar to 開発を効率的に進めるられるまでの道程

AndroidアプリのUI/UX改善例 by
AndroidアプリのUI/UX改善例AndroidアプリのUI/UX改善例
AndroidアプリのUI/UX改善例Kenichi Kambara
2.9K views18 slides
Android Wear最新トピック+α by
Android Wear最新トピック+αAndroid Wear最新トピック+α
Android Wear最新トピック+αKenichi Kambara
1.4K views25 slides
「Camelog」Android開発秘話 by
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話Shoya Tsukada
1.1K views76 slides
プロダクトを育てるのにGoogleのサービスが助けてくれること by
プロダクトを育てるのにGoogleのサービスが助けてくれることプロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれることTakao Sumitomo
1.2K views39 slides
高速でトライ&エラーを するために気をつけてること by
高速でトライ&エラーを するために気をつけてること高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてることTakao Sumitomo
1.1K views37 slides
iPhone/Android アプリをまとめて省エネ開発する技術 by
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
1.6K views30 slides

Similar to 開発を効率的に進めるられるまでの道程(20)

AndroidアプリのUI/UX改善例 by Kenichi Kambara
AndroidアプリのUI/UX改善例AndroidアプリのUI/UX改善例
AndroidアプリのUI/UX改善例
Kenichi Kambara2.9K views
Android Wear最新トピック+α by Kenichi Kambara
Android Wear最新トピック+αAndroid Wear最新トピック+α
Android Wear最新トピック+α
Kenichi Kambara1.4K views
「Camelog」Android開発秘話 by Shoya Tsukada
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話
Shoya Tsukada1.1K views
プロダクトを育てるのにGoogleのサービスが助けてくれること by Takao Sumitomo
プロダクトを育てるのにGoogleのサービスが助けてくれることプロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo1.2K views
高速でトライ&エラーを するために気をつけてること by Takao Sumitomo
高速でトライ&エラーを するために気をつけてること高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Takao Sumitomo1.1K views
iPhone/Android アプリをまとめて省エネ開発する技術 by vaccho
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
vaccho1.6K views
Realm meetup LT大会(Androidアプリへの適用経験談) by Kenichi Kambara
Realm meetup LT大会(Androidアプリへの適用経験談)Realm meetup LT大会(Androidアプリへの適用経験談)
Realm meetup LT大会(Androidアプリへの適用経験談)
Kenichi Kambara1.6K views
[展開用]Android wear abc2014w-kenichikambara by Kenichi Kambara
[展開用]Android wear abc2014w-kenichikambara[展開用]Android wear abc2014w-kenichikambara
[展開用]Android wear abc2014w-kenichikambara
Kenichi Kambara1.5K views
Android IoTとプログラミング教育 by Kenichi Yoshida
Android IoTとプログラミング教育Android IoTとプログラミング教育
Android IoTとプログラミング教育
Kenichi Yoshida2K views
Android6.0の機能まとめ 実機でサンプルを動かしてみた by Satoshi Noda
Android6.0の機能まとめ 実機でサンプルを動かしてみたAndroid6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Satoshi Noda2.3K views
IoTで5days学生インターン by Kazuya Fukumoto
IoTで5days学生インターンIoTで5days学生インターン
IoTで5days学生インターン
Kazuya Fukumoto1.5K views
Androidのつながる秘訣 by 高見 知英
Androidのつながる秘訣Androidのつながる秘訣
Androidのつながる秘訣
高見 知英651 views
[社内向け]Titanium勉強会 by Rei Matsushita
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会
Rei Matsushita1.2K views
HTML5/JavaScriptで作るAndroidアプリ開発seminar by kujirahand kujira
HTML5/JavaScriptで作るAndroidアプリ開発seminarHTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
kujirahand kujira40K views
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み by Kenichi Kambara
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
Kenichi Kambara3.4K views
【アド部】第8回定例会 アプリインストール施策のその次は? by Noriaki UCHIYAMA
【アド部】第8回定例会 アプリインストール施策のその次は?【アド部】第8回定例会 アプリインストール施策のその次は?
【アド部】第8回定例会 アプリインストール施策のその次は?
Noriaki UCHIYAMA1.3K views
IoTあるじゃん北海道支部勉強会#1 by Koyo Takenoshita
IoTあるじゃん北海道支部勉強会#1IoTあるじゃん北海道支部勉強会#1
IoTあるじゃん北海道支部勉強会#1
Koyo Takenoshita1.7K views
Android Wearアプリ開発経験談 by Kenichi Kambara
Android Wearアプリ開発経験談Android Wearアプリ開発経験談
Android Wearアプリ開発経験談
Kenichi Kambara7.1K views
Android Wearの概要とアプリ開発の基礎 by Kenichi Kambara
Android Wearの概要とアプリ開発の基礎Android Wearの概要とアプリ開発の基礎
Android Wearの概要とアプリ開発の基礎
Kenichi Kambara2.3K views

More from Takao Sumitomo

僕は上スワイプでBottomSheetを出したかっただけなんだ by
僕は上スワイプでBottomSheetを出したかっただけなんだ僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだTakao Sumitomo
2.3K views29 slides
sharedUserIdを使った俺得開発ツールの作り方 by
sharedUserIdを使った俺得開発ツールの作り方sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方Takao Sumitomo
3.8K views37 slides
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話 by
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話Takao Sumitomo
977 views66 slides
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド by
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンドCamera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンドTakao Sumitomo
2.2K views27 slides
アプリを成長させるためのログ取りとログ解析に必要なこと by
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことTakao Sumitomo
28.3K views120 slides
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと by
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なことTakao Sumitomo
2.1K views119 slides

More from Takao Sumitomo(20)

僕は上スワイプでBottomSheetを出したかっただけなんだ by Takao Sumitomo
僕は上スワイプでBottomSheetを出したかっただけなんだ僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
Takao Sumitomo2.3K views
sharedUserIdを使った俺得開発ツールの作り方 by Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo3.8K views
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話 by Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo977 views
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド by Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンドCamera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Takao Sumitomo2.2K views
アプリを成長させるためのログ取りとログ解析に必要なこと by Takao Sumitomo
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo28.3K views
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと by Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo2.1K views
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた by Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきたMaker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Takao Sumitomo3.4K views
Viewを動的に変化させるアプローチ by Takao Sumitomo
Viewを動的に変化させるアプローチViewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
Takao Sumitomo7.1K views
AdapterToolboxでRecyclerViewを楽にする by Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にするAdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
Takao Sumitomo2.4K views
エンジニアがプロダクト育成を始めるまでにやったこと by Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったことエンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Takao Sumitomo2.4K views
勉強会資料 データ構造とアルゴリズム by Takao Sumitomo
勉強会資料 データ構造とアルゴリズム勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
Takao Sumitomo2.5K views
勉強会資料 Uml概要 by Takao Sumitomo
勉強会資料 Uml概要勉強会資料 Uml概要
勉強会資料 Uml概要
Takao Sumitomo3.3K views
Firefox OSの何が嬉しいか by Takao Sumitomo
Firefox OSの何が嬉しいかFirefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Takao Sumitomo1.8K views
HTML5でFirefox OSアプリを作ろう by Takao Sumitomo
HTML5でFirefox OSアプリを作ろうHTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
Takao Sumitomo2.3K views
フォクすけロボ開発進捗報告 by Takao Sumitomo
フォクすけロボ開発進捗報告フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
Takao Sumitomo1.3K views
今更ながらCSS3を試してみた by Takao Sumitomo
今更ながらCSS3を試してみた今更ながらCSS3を試してみた
今更ながらCSS3を試してみた
Takao Sumitomo1.3K views
Crystalskullを改造してみる by Takao Sumitomo
Crystalskullを改造してみるCrystalskullを改造してみる
Crystalskullを改造してみる
Takao Sumitomo1.9K views
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら by Takao Sumitomo
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったらもしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
Takao Sumitomo4.4K views
アンドロイダー的にHTML5でどこまでできそうか by Takao Sumitomo
アンドロイダー的にHTML5でどこまでできそうかアンドロイダー的にHTML5でどこまでできそうか
アンドロイダー的にHTML5でどこまでできそうか
Takao Sumitomo2.6K views

Recently uploaded

PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PC Cluster Consortium
45 views12 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
76 views29 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
90 views41 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
23 views36 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
25 views17 slides

Recently uploaded(12)

PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.76 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka90 views
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga25 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda453 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4380 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...

開発を効率的に進めるられるまでの道程