SlideShare a Scribd company logo
Submit Search
Upload
2016 Android × Scala @ScalaMatsuri2016
Report
Share
Yasuyuki Sugitani
Software Developer at Septeni Original
Follow
•
0 likes
•
1,837 views
1
of
19
2016 Android × Scala @ScalaMatsuri2016
•
0 likes
•
1,837 views
Report
Share
Download Now
Download to read offline
Technology
GANMA!というアプリのAndroid版をScalaで作り直したときの知見です
Read more
Yasuyuki Sugitani
Software Developer at Septeni Original
Follow
Recommended
GANMA!でDDDをやってみてから1年くらい経った by
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
6.4K views
•
34 slides
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~ by
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
25.5K views
•
41 slides
Uuidはどこまでuuidか試してみた by
Uuidはどこまでuuidか試してみた
Yu Yamada
9.6K views
•
21 slides
Generating unique id numbers in Azure by
Generating unique id numbers in Azure
Takekazu Omi
12.9K views
•
29 slides
Base DDD(ドメイン駆動設計) 参考文献を巡る旅 by
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe
12.9K views
•
94 slides
ドメイン駆動設計(DDD)導入判定チェックシート by
ドメイン駆動設計(DDD)導入判定チェックシート
Takuya Kawabe
14.8K views
•
30 slides
More Related Content
What's hot
CLR/H勉強会44回目 Windows Azureストレージについて by
CLR/H勉強会44回目 Windows Azureストレージについて
normalian
611 views
•
20 slides
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」 by
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
7.8K views
•
60 slides
Webの仕組みとプログラミング言語 by
Webの仕組みとプログラミング言語
Yossy Taka
2.6K views
•
43 slides
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話 by
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Satoru Takai
9.8K views
•
48 slides
マルチデバイス時代の高速化 by
マルチデバイス時代の高速化
Shin Takeuchi
2.2K views
•
49 slides
20131209_buildinsidermeetup by
20131209_buildinsidermeetup
kumake
4.1K views
•
48 slides
What's hot
(6)
CLR/H勉強会44回目 Windows Azureストレージについて by normalian
CLR/H勉強会44回目 Windows Azureストレージについて
normalian
•
611 views
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」 by Web Technology Corp.
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
•
7.8K views
Webの仕組みとプログラミング言語 by Yossy Taka
Webの仕組みとプログラミング言語
Yossy Taka
•
2.6K views
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話 by Satoru Takai
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Satoru Takai
•
9.8K views
マルチデバイス時代の高速化 by Shin Takeuchi
マルチデバイス時代の高速化
Shin Takeuchi
•
2.2K views
20131209_buildinsidermeetup by kumake
20131209_buildinsidermeetup
kumake
•
4.1K views
Viewers also liked
ScalaプログラマのためのHaskell入門 by
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
6.6K views
•
40 slides
AndroidでScalaを使う際の問題点と対策 by
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
5.9K views
•
24 slides
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発 by
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
Mogi Isamu
14.6K views
•
75 slides
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史 by
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
Yasuyuki Sugitani
1.1K views
•
35 slides
言語アップデート -Scala編- by
言語アップデート -Scala編-
Kota Mizushima
2.2K views
•
95 slides
[Android] モジュール管理で ビルド高速化! by
[Android] モジュール管理で ビルド高速化!
ichigotake .
2.5K views
•
24 slides
Viewers also liked
(20)
ScalaプログラマのためのHaskell入門 by Yasuaki Takebe
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
•
6.6K views
AndroidでScalaを使う際の問題点と対策 by Mogi Isamu
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
•
5.9K views
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発 by Mogi Isamu
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
Mogi Isamu
•
14.6K views
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史 by Yasuyuki Sugitani
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
Yasuyuki Sugitani
•
1.1K views
言語アップデート -Scala編- by Kota Mizushima
言語アップデート -Scala編-
Kota Mizushima
•
2.2K views
[Android] モジュール管理で ビルド高速化! by ichigotake .
[Android] モジュール管理で ビルド高速化!
ichigotake .
•
2.5K views
Androidアプリ開発で活躍必至!? ビルドツールGradle by amayaw9
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
•
1.3K views
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7 by Hitoshi Asai
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi Asai
•
1K views
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷 by Yasuyuki Sugitani
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Yasuyuki Sugitani
•
28.6K views
15分でざっくり分かるScala入門 by SatoYu1ro
15分でざっくり分かるScala入門
SatoYu1ro
•
20.8K views
ScalaでAndroidアプリ開発 by papamitra
ScalaでAndroidアプリ開発
papamitra
•
3K views
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話 by omi end
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
omi end
•
3K views
Scala@SmartNews_20150221 by Shigekazu Takei
Scala@SmartNews_20150221
Shigekazu Takei
•
14.9K views
Scala@SmartNews AdFrontend を Scala で書いた話 by Keiji Muraishi
Scala@SmartNews AdFrontend を Scala で書いた話
Keiji Muraishi
•
12.1K views
Scala勉強会 初心者向けハンズオン前編 by takeuchi-tk
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
•
5.7K views
磯野ー!関数型言語やろうぜー! by Ra Zon
磯野ー!関数型言語やろうぜー!
Ra Zon
•
10.3K views
Scalaで学ぶ関数型言語超入門 by yujiro_t
Scalaで学ぶ関数型言語超入門
yujiro_t
•
7.5K views
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek by Kazuhiro Sera
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Kazuhiro Sera
•
17.1K views
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24 by Kazuhiro Sera
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
•
23.3K views
数学プログラムを Haskell で書くべき 6 の理由 by Hiromi Ishii
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
•
32.8K views
Similar to 2016 Android × Scala @ScalaMatsuri2016
Gradleスクリプトを読み解く by
Gradleスクリプトを読み解く
Shoichi Matsuda
1.4K views
•
18 slides
Skinny Framework で始めた Scala by
Skinny Framework で始めた Scala
Ryuji Yamashita
12K views
•
42 slides
gradle2.4のルールベースモデルコンフィギュレーション by
gradle2.4のルールベースモデルコンフィギュレーション
Shinya Mochida
2.5K views
•
30 slides
ICDP普及活動 by
ICDP普及活動
Katsuhiro Masaki
2.7K views
•
35 slides
Scalaの現状と今後 by
Scalaの現状と今後
Kota Mizushima
8K views
•
19 slides
現場で使えるDynamoDBと冪等デザインパターン by
現場で使えるDynamoDBと冪等デザインパターン
cmaraiyusuke
3.5K views
•
96 slides
Similar to 2016 Android × Scala @ScalaMatsuri2016
(20)
Gradleスクリプトを読み解く by Shoichi Matsuda
Gradleスクリプトを読み解く
Shoichi Matsuda
•
1.4K views
Skinny Framework で始めた Scala by Ryuji Yamashita
Skinny Framework で始めた Scala
Ryuji Yamashita
•
12K views
gradle2.4のルールベースモデルコンフィギュレーション by Shinya Mochida
gradle2.4のルールベースモデルコンフィギュレーション
Shinya Mochida
•
2.5K views
ICDP普及活動 by Katsuhiro Masaki
ICDP普及活動
Katsuhiro Masaki
•
2.7K views
Scalaの現状と今後 by Kota Mizushima
Scalaの現状と今後
Kota Mizushima
•
8K views
現場で使えるDynamoDBと冪等デザインパターン by cmaraiyusuke
現場で使えるDynamoDBと冪等デザインパターン
cmaraiyusuke
•
3.5K views
とりあえず使えるSBT by Kiyotaka Kunihira
とりあえず使えるSBT
Kiyotaka Kunihira
•
2.6K views
Android studio で行ってみよう!! by Kazuaki Ueda
Android studio で行ってみよう!!
Kazuaki Ueda
•
5.4K views
DWANGO by ドワンゴ by scalaconfjp
DWANGO by ドワンゴ
scalaconfjp
•
636 views
実戦Scala by Yuto Suzuki
実戦Scala
Yuto Suzuki
•
3.2K views
Scalaと過ごした5ヶ月間 by Haruki Okada
Scalaと過ごした5ヶ月間
Haruki Okada
•
3.5K views
第1回名古屋Android勉強会Lt用資料 by tantack
第1回名古屋Android勉強会Lt用資料
tantack
•
405 views
AWS Lambdaのテストで役立つ各種ツール by Masaki Suzuki
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
•
1.8K views
Cocos2dx 8hour by Tomohiko Okita
Cocos2dx 8hour
Tomohiko Okita
•
1.6K views
AWS SDK for Go を使って作ってみた話 by uchimanajet7
AWS SDK for Go を使って作ってみた話
uchimanajet7
•
1.2K views
Lambda layerをDeployする方法を調べる by shotaueda3
Lambda layerをDeployする方法を調べる
shotaueda3
•
3.9K views
Scalaコーディングの準備 by Yusuke Arakaki
Scalaコーディングの準備
Yusuke Arakaki
•
848 views
Scalaの現状と課題 by Kota Mizushima
Scalaの現状と課題
Kota Mizushima
•
3.7K views
Scalaでのプログラム開発 by Kota Mizushima
Scalaでのプログラム開発
Kota Mizushima
•
2.5K views
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon by Kazuhiro Sera
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
•
15.1K views
Recently uploaded
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
120 views
•
42 slides
JJUG CCC.pptx by
JJUG CCC.pptx
Kanta Sasaki
6 views
•
14 slides
さくらのひやおろし2023 by
さくらのひやおろし2023
法林浩之
96 views
•
58 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development site
Atomu Hidaka
88 views
•
41 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
18 views
•
38 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdf
icebreaker4
335 views
•
13 slides
Recently uploaded
(11)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
•
120 views
JJUG CCC.pptx by Kanta Sasaki
JJUG CCC.pptx
Kanta Sasaki
•
6 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023
法林浩之
•
96 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 site
Atomu Hidaka
•
88 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
18 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdf
icebreaker4
•
335 views
IPsec VPNとSSL-VPNの違い by 富士通クラウドテクノロジーズ株式会社
IPsec VPNとSSL-VPNの違い
富士通クラウドテクノロジーズ株式会社
•
430 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門
mkoda
•
355 views
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by Hitachi, Ltd. OSS Solution Center.
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Hitachi, Ltd. OSS Solution Center.
•
60 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
•
58 views
定例会スライド_キャチs 公開用.pdf by Keio Robotics Association
定例会スライド_キャチs 公開用.pdf
Keio Robotics Association
•
111 views
2016 Android × Scala @ScalaMatsuri2016
1.
AndroidでScala Septeni Original 杉谷
2.
前説 • GANMA! という漫画配信サービスのAndroid版 はScalaで出来ています(1/18リリース版か ら) •
作成途中に得られた知見を思いつく限りご紹介 します
3.
使い物になる? • なってる • 道中の難所は多い •
乗り越えた先は比較的平穏
4.
ビルドシステム • ビルドシステムが2種類ある • android-idk-plugin •
SBTにAndroid-SDKを対応させるプラグイン • gradle-android-scala-plugin (@saturday06さん作) • GradleにScalaを対応させるプラグイン • gradle-android-scala-plugin の方を採用 • 標準ビルド環境へのプラグインなので、導入がとても楽 • IDEAとの統合に特殊操作不要 • Gradle前提の各種ライブラリがそのまま使える • 現状困っていることは無い
5.
良い:Scalaが使える • サーバ側もScalaなので、いつものようにさくさ く書けるうれしさ
6.
良い: Futureが美味 • Future/Promiseが標準で使えるので、コールバック地 獄を抑えられる •
onResume →ネットワーク通信 → 各種処理 → ロー ディングくるくる表示終わり、 とかがすっきり書ける • UI処理はメインスレッド縛り、がやや難点 • OEさんのUIExecutionContext • 自作のThreadUtil.runOnUiThread
7.
良い:lazyが美味 • View要素へのアクセスがすっきり書ける lazy private
val spaceTop = view.findViewById(R.id.author_top_space)
8.
パフォーマンス • 全然問題ない(クレーム無し) • ぬるぬるさくさく動く •
メモリ消費は荒いので、アプリによっては注意 が必要?
9.
つらい: ぬるぽ • Android側からNullよくやってくる •
Infra層とView層で徹底防御 • 怪しそうなのはOptionでよく包む
10.
つらい:Androidエンジニア 問題 • 居ない。 • 自社で育成するしかない。 •
チームのエンジニア全員が学習(Scalaエンジニ アx6, Obj-c,Swiftエンジニアx1)
11.
つらい:MultiDex地獄 • Dalvikは1dex 65,535メソッドまで制限 •
Scalaを使うと余裕で突破するのでMultiDex必須 • GANMA!アプリで3Dex( ProGuard適用済み) • 実際にはぴったり65,535詰めると2Dexだが、Android4.0.x系にバグが あって余裕を持たせないといけない • 初回起動がかなり遅い • テストAPKにMultiDexをかけると死ぬ • コマンドラインをいじってテストパッケージは除外 • 65,535超えないことを祈る。
12.
つらい:MultiDex地獄(2) tasks.matching { it.name.startsWith('dex') &&
!it.name.contains("Test") }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString() dx.additionalParameters += '--set-max-idx-number=45000' }
13.
つらい:テスト • AndroidのテストはJUnit3(標準),JUnit4(Espresso)しか使えない様子 • assertThatで頑張る •
UI交えたテストがものすごく転ける • IdlingResource(assert判定の条件が整うまで待つ)をとても しっかり作り込まないといけない • 関わるUI処理にFuture[Unit]を返させるようにして、厳密判定でき るようにする • (余談)iOSのQuick/Nimbleだと「条件が整うまで、何度も チェックする」と書けるので楽
14.
つらい:ライブラリ • javax依存があるライブラリは使えない • json4sを含む殆どのJSONライブラリがビル ド不能 •
json-lensesがなんとか動いた、 https:// github.com/jrudolph/json-lenses
15.
つらい:ビルド • ビルド遅い • Scalaが遅いというより全部が遅い •
差分コンパイルが効いて殆どScalaに時間がかか らなくても遅い • AndroidStudio次期版に、実行中のクラス差し替 え可能可、による爆速化があるがScalaでは使え なかった
16.
その他微妙につらい • IntelliJが起動する度に ScalaSDKどこ?
と効い てくる • IntelliJからテストのクラス指定するときちょっ と罠がある
17.
その他 • IntelliJ Ultimate使ってますがAndroid
Studio でもいけました
18.
以上です
19.
ご静聴ありがとうございま した! セプテーニではScalaエン ジニアを募集していま す!!!!!!!!!!! !!!!!!!!!!!!!