SlideShare a Scribd company logo
1 of 55
Download to read offline
Lightweight-Stream-API
のあるAndroidアプリ開発
第1回スタートアップAndroid勉強会
About Me
Shinobu Okano
@operandoOS
Mercari, Inc.
Souzoh, Inc.
Lightweight-Stream-API?
"Stream API from Java 8 rewritten
on iterators for Java 7 and below."
https://github.com/aNNiMON/Lightweight-Stream-API
Lightweight-Stream-API?
Androidでも使える!!
Lightweight-Stream-API?
ヤター🍷
Lightweight-Stream-API Includes
• Functional interfaces
• Stream/IntStream
• Optional class
• Exceptional class
• Objects from Java 7
Streamだけじゃないんやでー!!
Lightweight-Stream-API Includes
ちなみに...
• Lightweight-Stream-APIって名前が長い...
• LSAって訳すっぽい
• READMEにLSAって記述があった
• 資料ないでLSAと書いてあるのは

Lightweight-Stream-APIという意味です
Stream
Stream?
Java 8で導入されたAPI
Stream?
"A sequence of elements
supporting sequential and
parallel aggregate operations."
Stream(正しくはないけど雑に...)
繰り返し処理のforやwhileをStreamにして
パイプライン的に処理する
Lightweight-Stream-API
• "without parallel processing but with a variety
of additional methods and with custom
operators"
• parallelは提供されていない
Lightweight-Stream-API ≠ Java 8 Stream
• イコールではない
• Java 8 Stream APIのようなインターフェイス
もったもの
Streamの流れ
• Streamの生成
• 中間操作 (map,filter,etc.)
• あるストリームを別のストリームに変換する操作
• 終端操作 (forEach,count,collect,etc.)
• 結果または副作用を生成する操作
Java 8 Stream
• スコアのListから30点以上のものを表示する
• Java 8のCollectionにStreamに変換するメソッドがある
List<Integer> scores = Arrays.asList(100, 30, 35, 20);
scores.stream() // Streamの生成
.filter(score -> score >= 30) // 中間操作
.forEach(System.out::println); // 終端操作
for
• スコアのListから30点以上のものを表示する
for (Integer score : scores) {
if (score >= 30) {
System.out.println(score);
}
}
Java 8 Parallel Stream
• parallelStream()で並列処理
• 並列で処理するので結果の順番は変わる可能性がある
List<Integer> scores = Arrays.asList(100, 30, 35, 20);
scores.parallelStream()
.filter(score -> score >= 30)
.forEach(System.out::println);
Lightweight-Stream-API
• スコアのListから30点以上のものを表示する
• Stream.ofでStreamを作る
List<Integer> scores = Arrays.asList(100, 30, 35, 20);
Stream.of(scores) // Streamの生成
.filter(score -> score >= 30) // 中間操作
.forEach(System.out::println); // 終端操作
出力じゃなくてListにしたい!(Lightweight-Stream-API)
• 終端操作をcollectにするだけなので簡単!
List<Integer> scores = Arrays.asList(100, 30, 35, 20);
List<Integer> filteredScores = Stream.of(scores)
.filter(score -> score >= 30)
.collect(Collectors.toCollection(ArrayList::new));
中間操作、終端操作のメソッドは色々ある!
• 全部説明できないので、javadocとかみて試してね!
• 大体ほしいと思う機能は ってるはず
• Stream - Lightweight-Stream-API javadoc
• http://static.javadoc.io/com.annimon/stream/
1.1.3/com/annimon/stream/Stream.html
Lightweight-Stream-API
• AndroidでJava 8のStreamっぽいものが使える!
• 中間操作と終端操作は同じで書ける
• 流れるように処理を書けるので気持ちいい!
• Java力 UP 💪
• Java 9でStreamに追加されるfunctionも使える!
• good-bye for??
Optional
Optional?
"A container object which may or
may not contain a non-null value."
Optional?(雑)
値をラップしてnullかもしれない
ことを表現するクラス
good-bye NullPointerException?
NO 😂
Optional - Java 8
Optional<String> optional = Optionalを返すメソッド();
// nullでなければ表示される
optional.ifPresent(System.out::println);
Optional - Lightweight-Stream-API
Optional<String> optional = Optionalを返すメソッド();
// nullでなければ表示される
optional.ifPresent(System.out::println);
同じや☺
Optional + Android
• Android SDKのAPIって思った以上にnullを返すものが多い
• ドキュメント読んで「え?null返るの?」と知るものも度々
• FragmentねーgetContextとかgetActivityとか…
• コードレビューでつっつかれたくない…
• Fragment#getResourcesもmHostがnullだと
IllegalStateException
Fragment#getContext()
"Return the Context this fragment is
currently associated with."
https://developer.android.com/reference/android/support/v4/app/Fragment.html#getContext()
Fragment#getContext()
• null返るやん👀
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}
Fragment + Optional
public static Optional<Context> getOptionalContext(Fragment fragment) {
if (fragment.isDetached()) {
return Optional.empty();
}
return Optional.ofNullable(fragment.getContext());
}
// 安全!
FragmentUtil.getOptionalContext(this)
.ifPresent(context -> {
Toast.makeText(context, "Optional", Toast.LENGTH_SHORT).show();
});
Fragment + Optional
public static Optional<FragmentActivity>
getOptionalFragmentActivity(Fragment fragment) {
if (fragment.isDetached()) {
return Optional.empty();
}
return Optional.ofNullable(fragment.getActivity());
}
// menuの更新
// 安全!
FragmentUtil.getOptionalFragmentActivity(this)
.ifPresent(FragmentActivity::supportInvalidateOptionsMenu);
Fragment + Optional
public static Optional<Bundle> getArguments(Fragment fragment) {
return Optional.ofNullable(fragment.getArguments());
}
// 安全!
FragmentUtil.getArguments(this)
.ifPresent(bundle -> {
// bundleから値を取り出す
});
複数のOptionalを扱う
• Optional AとOptional Bの両方がnullでなければ...みたいなパターン
• そもそもこれで正しいのかわからない...
Optional<FragmentActivity> optionalFragmentActivity =
FragmentUtil.getOptionalFragmentActivity(this);
Optional<String> titleOptional = titleOptional();
optionalFragmentActivity.ifPresent(fragmentActivity -> {
titleOptional.ifPresent(title -> {
fragmentActivity.setTitle(title);
});
});
複数のOptionalを扱う
• 2つのOptionalに値が入っていれば

TupleをOptionalでラップして返す
• これならどうだ💪
複数のOptionalを扱う
public static <T, R> Optional<Pair<T, R>> flatMapPair(Optional<T> a, Optional<R> b) {
if (a.isPresent() && b.isPresent()) {
// 2つのOptionalに値が入っていればTupleをOptionalでラップして返す
return Optional.ofNullable(Pair.create(a.get(), b.get()));
} else {
// そうでないならempty
return Optional.empty();
}
}
OptionalUtil.flatMapPair(optionalFragmentActivity,titleOptional)
.ifPresent(pair -> {
pair.getFirst()setTitle(pair.getSecond());
});
複数のOptionalを扱う💪💪💪
public static <F, R, T> Optional<Triplet<F, R, T>>
flatMapTriplet(Optional<F> a,
Optional<R> b,
Optional<T> c) {
if (a.isPresent() && b.isPresent() && c.isPresent()) {
return Optional.ofNullable(
Triplet.create(a.get(), b.get(), c.get()));
} else {
return Optional.empty();
}
}
💪
でも
JavaにTupleないやん...
Guild
• 💪
• Simple java tuples.
• https://github.com/operando/Guild
LSAのOptionalにしかない便利なメソッド
• Optional.stream()
• OptionalからStreamに変換できる
• 他にもいくつかある…
Optional.ofNullable(integers)
.stream()
.forEach(System.out::println);
Java 8で同じことをすると
• 一手間必要
Optional.ofNullable(integers)
.map(integers1 -> integers1.stream())
.orElse(Stream.empty())
.forEach(System.out::println);
Optionalにも中間操作、終端操作的なのがある
• 中間操作?的なの
• map,flagMap,filter,etc…
• 終端操作?的なの
• ifPresent,orElse,etc…
• Optional javadoc - Lightweight-Stream-API
• http://static.javadoc.io/com.annimon/stream/1.1.3/com/
annimon/stream/Optional.html
Optional
• AndroidでJava 8のOptionalと同じようなものが使える
• Java力 UP💪
• ifでnullチェックするより自然な感じでプログラムが書ける
• nullがなくなるわけではない
• 扱いが難しいこともある
• Optionalのラップしてる値がnullだった時の処理を忘れるとか...
Objects
Objectsもいいぞ!
• Java 7から追加されたAPI
• AndroidではminSdkVersion 19以上じゃない
とJava 7のAPIは使えないはず
Objectsもいいぞ!
• 2つの文字列を比較したい
String s1 = String返すメソッド();
String s2 = String返すメソッド();
// s1はnullかもしれない...
s1.equals(s2);
// Objects - Lightweight-Stream-API
// どちらかがnullでも安全!
Objects.equals(s1,s2);
Andorid N minSdkVersion 24
• Java 8のAPIがいくつか入ってる
• StreamとOptionalは入ってる
• 他にもいくつか…
• Lightweight-Stream-API使わなくてもよい
• minSdkVersion 24...何年先?
Android-Java-8-Stream-Example
• Lightweight-Stream-APIの作者がAndroidで
Java 8っぽく書くサンプルを書いてる
• https://github.com/aNNiMON/Android-
Java-8-Stream-Example
まとめ
• Lightweight-Stream-APIを使えば

AndroidでもStreamっぽいものとOptionalが使える
• Java力 UP💪につながる
• Android開発のJavaだとJava 6,7で技術が止まってしまう可能性も…
• 僕と一緒に開発する人にはJavaの力もつけてほしい💪
• Java 9も来年出るのでJava自体に関心を!
Links
• Lightweight-Stream-API version 1.1.3 javadoc
• http://static.javadoc.io/com.annimon/stream/1.1.3/overview-summary.html
• Stream - Java 8
• https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
• Java 8 Stream Tutorial
• http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
• Optional - Java 8
• https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
• Optionalの取り扱いかた
• http://irof.hateblo.jp/entry/2015/05/05/071450
Thanks

More Related Content

What's hot

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven DevelopmentRyo Tomidokoro
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Norito Agetsuma
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
LaravelとテストについてTakeo Noda
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTipsKenjiro Kubota
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Takahiro YAMADA
 
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発Kenjiro Kubota
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cNorito Agetsuma
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...Unity Technologies Japan K.K.
 

What's hot (14)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven Development
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
 
Laravelとテストについて
LaravelとテストについてLaravelとテストについて
Laravelとテストについて
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 
H2O and php
H2O and phpH2O and php
H2O and php
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所
 
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
 

Similar to Lightweight-Stream-APIのあるAndroidアプリ開発

ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」Kohsuke Kawaguchi
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)Tusyoshi Matsuzaki
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明furusin
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonNaoto Gohko
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenotekitsugi
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャShiroyagi Corporation
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)Teruaki Kinoshita
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive ExtensionsShin Ise
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能kimulla
 

Similar to Lightweight-Stream-APIのあるAndroidアプリ開発 (20)

Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
 
ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」
 
APIKit
APIKitAPIKit
APIKit
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE).NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
Fluentdへようこそ
FluentdへようこそFluentdへようこそ
Fluentdへようこそ
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
 
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 OmoidenoteCouchbase MeetUP Tokyo - #11 Omoidenote
Couchbase MeetUP Tokyo - #11 Omoidenote
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 

More from Shinobu Okano

OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!Shinobu Okano
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話Shinobu Okano
 
Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2Shinobu Okano
 
まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4Shinobu Okano
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺Shinobu Okano
 
まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3Shinobu Okano
 
Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1Shinobu Okano
 
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/Shinobu Okano
 
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Shinobu Okano
 
ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来Shinobu Okano
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools KnowledgeShinobu Okano
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
ChromeとAndroidの 過去・現在・未来  ver 0.1ChromeとAndroidの 過去・現在・未来  ver 0.1
ChromeとAndroidの 過去・現在・未来 ver 0.1Shinobu Okano
 
5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術Shinobu Okano
 

More from Shinobu Okano (20)

OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話
 
Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2Android Framework Code Readingのしおり ver 1.2
Android Framework Code Readingのしおり ver 1.2
 
まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4まったりAndroid Framework Code Reading #4
まったりAndroid Framework Code Reading #4
 
shinobu.apk #3
shinobu.apk #3shinobu.apk #3
shinobu.apk #3
 
Android + JSON-RPC
Android + JSON-RPCAndroid + JSON-RPC
Android + JSON-RPC
 
Inside Android N
Inside Android NInside Android N
Inside Android N
 
Gradle PluginとCIと俺
Gradle PluginとCIと俺Gradle PluginとCIと俺
Gradle PluginとCIと俺
 
shinobu.apk #2
shinobu.apk #2shinobu.apk #2
shinobu.apk #2
 
まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3まったりAndroid Framework Code Reading #3
まったりAndroid Framework Code Reading #3
 
Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1Android Framework Code Readingのしおり ver 1.1
Android Framework Code Readingのしおり ver 1.1
 
Kotlinにお触り
Kotlinにお触りKotlinにお触り
Kotlinにお触り
 
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
 
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
 
ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来ChromeとAndroidの過去・現在・未来
ChromeとAndroidの過去・現在・未来
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
 
shinobu.apk #1
shinobu.apk #1shinobu.apk #1
shinobu.apk #1
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
ChromeとAndroidの 過去・現在・未来  ver 0.1ChromeとAndroidの 過去・現在・未来  ver 0.1
ChromeとAndroidの 過去・現在・未来 ver 0.1
 
5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術5分で資料作ってSlideShareにアップロードする錬金術
5分で資料作ってSlideShareにアップロードする錬金術
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Lightweight-Stream-APIのあるAndroidアプリ開発