Submit Search
Upload
2016 Android × Scala @ScalaMatsuri2016
•
0 likes
•
1,837 views
Yasuyuki Sugitani
Follow
GANMA!というアプリのAndroid版をScalaで作り直したときの知見です
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 19
Download now
Download to read offline
Recommended
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
Uuidはどこまでuuidか試してみた
Uuidはどこまでuuidか試してみた
Yu Yamada
Generating unique id numbers in Azure
Generating unique id numbers in Azure
Takekazu Omi
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe
ドメイン駆動設計(DDD)導入判定チェックシート
ドメイン駆動設計(DDD)導入判定チェックシート
Takuya Kawabe
ぼくはきみの盾 ツール-データ編
ぼくはきみの盾 ツール-データ編
勝成 鈴江
楽しいゲーム開発管理
楽しいゲーム開発管理
Maki Koiwa
Recommended
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
Uuidはどこまでuuidか試してみた
Uuidはどこまでuuidか試してみた
Yu Yamada
Generating unique id numbers in Azure
Generating unique id numbers in Azure
Takekazu Omi
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Takuya Kawabe
ドメイン駆動設計(DDD)導入判定チェックシート
ドメイン駆動設計(DDD)導入判定チェックシート
Takuya Kawabe
ぼくはきみの盾 ツール-データ編
ぼくはきみの盾 ツール-データ編
勝成 鈴江
楽しいゲーム開発管理
楽しいゲーム開発管理
Maki Koiwa
CLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows Azureストレージについて
normalian
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Yossy Taka
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Satoru Takai
マルチデバイス時代の高速化
マルチデバイス時代の高速化
Shin Takeuchi
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
Mogi Isamu
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
Yasuyuki Sugitani
言語アップデート -Scala編-
言語アップデート -Scala編-
Kota Mizushima
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
ichigotake .
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi Asai
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Yasuyuki Sugitani
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
omi end
Scala@SmartNews_20150221
Scala@SmartNews_20150221
Shigekazu Takei
Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話
Keiji Muraishi
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
More Related Content
What's hot
CLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows Azureストレージについて
normalian
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Yossy Taka
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Satoru Takai
マルチデバイス時代の高速化
マルチデバイス時代の高速化
Shin Takeuchi
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
What's hot
(6)
CLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows Azureストレージについて
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
マルチデバイス時代の高速化
マルチデバイス時代の高速化
20131209_buildinsidermeetup
20131209_buildinsidermeetup
Viewers also liked
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門
Yasuaki Takebe
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
Mogi Isamu
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
Mogi Isamu
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
Yasuyuki Sugitani
言語アップデート -Scala編-
言語アップデート -Scala編-
Kota Mizushima
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
ichigotake .
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi Asai
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Yasuyuki Sugitani
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
omi end
Scala@SmartNews_20150221
Scala@SmartNews_20150221
Shigekazu Takei
Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話
Keiji Muraishi
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
yujiro_t
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Kazuhiro Sera
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
Viewers also liked
(20)
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
2016 ScalaMatsuri LT / セプテーニ・オリジナルの文化と歴史
言語アップデート -Scala編-
言語アップデート -Scala編-
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
Scalaに至るまでの物語 - Septeni × Scala 第一回 杉谷
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala@SmartNews_20150221
Scala@SmartNews_20150221
Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
Similar to 2016 Android × Scala @ScalaMatsuri2016
Gradleスクリプトを読み解く
Gradleスクリプトを読み解く
Shoichi Matsuda
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
Ryuji Yamashita
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーション
Shinya Mochida
ICDP普及活動
ICDP普及活動
Katsuhiro Masaki
Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
現場で使えるDynamoDBと冪等デザインパターン
現場で使えるDynamoDBと冪等デザインパターン
cmaraiyusuke
とりあえず使えるSBT
とりあえず使えるSBT
Kiyotaka Kunihira
Android studio で行ってみよう!!
Android studio で行ってみよう!!
Kazuaki Ueda
DWANGO by ドワンゴ
DWANGO by ドワンゴ
scalaconfjp
実戦Scala
実戦Scala
Yuto Suzuki
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間
Haruki Okada
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
tantack
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
Cocos2dx 8hour
Cocos2dx 8hour
Tomohiko Okita
AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話
uchimanajet7
Lambda layerをDeployする方法を調べる
Lambda layerをDeployする方法を調べる
shotaueda3
Scalaコーディングの準備
Scalaコーディングの準備
Yusuke Arakaki
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
Similar to 2016 Android × Scala @ScalaMatsuri2016
(20)
Gradleスクリプトを読み解く
Gradleスクリプトを読み解く
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーション
ICDP普及活動
ICDP普及活動
Scalaの現状と今後
Scalaの現状と今後
現場で使えるDynamoDBと冪等デザインパターン
現場で使えるDynamoDBと冪等デザインパターン
とりあえず使えるSBT
とりあえず使えるSBT
Android studio で行ってみよう!!
Android studio で行ってみよう!!
DWANGO by ドワンゴ
DWANGO by ドワンゴ
実戦Scala
実戦Scala
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
Cocos2dx 8hour
Cocos2dx 8hour
AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話
Lambda layerをDeployする方法を調べる
Lambda layerをDeployする方法を調べる
Scalaコーディングの準備
Scalaコーディングの準備
Scalaの現状と課題
Scalaの現状と課題
Scalaでのプログラム開発
Scalaでのプログラム開発
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Recently uploaded
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: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
atsushi061452
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Recently uploaded
(11)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介: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
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
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エン ジニアを募集していま す!!!!!!!!!!! !!!!!!!!!!!!!
Download now