SlideShare a Scribd company logo
サクサクアンドロイド 
amaya(@0x17E) 
Sep. 20, 2014 
Scala関西ビギナーズ
改め
(以前よりは)サクサク(Scalaで開発できる 
ようになった)アンドロイド 
amaya(@0x17E) 
Sep. 20, 2014 
Scala関西ビギナーズ
自己紹介 
⊃ amaya@0x17E 
⊃ 情報系B3 
⊃ 関西Scala ”ビギナーズ” にふさわしい(?)ビギナー 
⊃ 好きな言語 
⊃ C# 
⊃ > Scala <
Android開発?
JavaとXMLを行ったり来たり… 
正直面倒… 
…じゃないですか? 
少なくとも私はそれでやる気が無くなりました
AndroidにはDalvikVM(≒JVM) 
が載ってる…!
よっしゃ!Scalaも動くやろ!
ScalaでAndroidって 
実際どうなの?
ScalaでAndroid開発のよくある障壁 
⊃ DalvikVMのメソッド数上限65535個に引っかかる 
(scala-libraryそのものの関数の個数が多い) 
⊃ DalvikVMのLinearAllocの上限を超える 
⊃ immutableとGCの相性が微妙 
⊃ そもそもどこから手を付けていいのかよくわからない! 
⊃ ドキュメントドコドコ 
⊃ 誰かが闇だって言ってた
以前よりは 
環境良くなってるんですよ!!!!
ScalaでAndroid開発のパターン 
Scaloid/Macroid
ライブラリを使わない(=Java+XMLの代わりに 
Scala+XMLで頑張るタイプ)は大人しくJavaを 
使ったほうがいいので割愛します.
ScalaでAndroid開発のパターン 
1. Scaloid (https://github.com/pocorall/scaloid)
ScalaでAndroid開発のパターン 
(contd.) 
1. Scaloid (https://github.com/pocorall/scaloid) 
+ XMLから解放される 
+ Contextの扱いが楽(=> implicit!) 
+ その他, 基本的でよく使うものが最初から用意されている 
+ Scalaで書ける 
- Scaloidへの(ex. STextView, SImageView)への依存が強い 
→ カバーしている範囲を超えるとXMLを触ることに… 
- Vanilla Androidよりはマシなものの, コードが煩雑になりやすい
ScalaでAndroid開発のパターン 
(contd.) 
2. Macroid (https://github.com/macroid/macroid)
ScalaでAndroid開発のパターン 
(contd.) 
2. Macroid (https://github.com/macroid/macroid) 
+ (Scaloidよりも)XMLから解放される 
+ Contextの扱いが楽(=> implicit!) 
+ その他, 基本的でよく使うものが最初から用意されている 
+ Scalaで書ける 
- 比較的新しく, 公式ドキュメント以外の参考が無い 
- DSLの癖が強い
ScalaでAndroid開発のパターン 
(contd.) 
 android-sdk-plugin 
(https://github.com/pfn/android-sdk-plugin)
ScalaでAndroid開発のパターン 
(contd.) 
 android-sdk-plugin 
(https://github.com/pfn/android-sdk-plugin) 
+ android開発用のsbtPlugin 
+ ScaloidだろうがMacroidだろうがお世話になります 
+ sbtでお馴染み(?) “~”を付けることで継続ビルド 
+ proguradでapkダイエット→メソッド数上限を回避 
- ビルドが遅い…
まとめ 
+ UIの扱い全般が楽になる 
+ Javaの冗長な構文から逃れられ, 簡潔なコードに 
• for式, match式, map, filter, 型推論, 例外処理, etc 
• Javaの資産(library)はちゃんと使える 
• androidではJava8がまだ使えない現実 
+ Contextのような一部のroutineWorkを回避できる 
+ 効率的な抽象化が可能 
- GUIでレイアウトを作成できない(しにくい) 
- ドキュメントが圧倒的に少ない 
- ビルドが遅い…
時間が余れば一瞬だけデモ 
時間はないと予想…
ご静聴ありがとうございました 
Reference 
⊃ https://github.com/pocorall/scaloid 
⊃ https://github.com/macroid/macroid 
⊃ https://github.com/pfn/android-sdk-plugin 
⊃ http://taisukeoe.github.io/blog/2014/03/13/pfn-android-sdk-plugin/

More Related Content

Viewers also liked

20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama android20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama android
Kenichi Ohwada
 
Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみた
Tomoki YAMASHITA
 
Android Studio First Step Guide
Android Studio First Step GuideAndroid Studio First Step Guide
Android Studio First Step Guide
Masahiro Hidaka
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
Keiji Ariyama
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
 
オープンソースによるドローン開発の概要( #ABC2015S )
オープンソースによるドローン開発の概要( #ABC2015S )オープンソースによるドローン開発の概要( #ABC2015S )
オープンソースによるドローン開発の概要( #ABC2015S )
博宣 今村
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
 
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンドDevelopers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Masahiro Hidaka
 
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
schoowebcampus
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
 

Viewers also liked (10)

20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama android20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama android
 
Android Studio Pluginを使ってみた
Android Studio Pluginを使ってみたAndroid Studio Pluginを使ってみた
Android Studio Pluginを使ってみた
 
Android Studio First Step Guide
Android Studio First Step GuideAndroid Studio First Step Guide
Android Studio First Step Guide
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
 
オープンソースによるドローン開発の概要( #ABC2015S )
オープンソースによるドローン開発の概要( #ABC2015S )オープンソースによるドローン開発の概要( #ABC2015S )
オープンソースによるドローン開発の概要( #ABC2015S )
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンドDevelopers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
 
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
Android StudioではじめるAndroidアプリケーション実践入門 先生:日高 正博
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
 

Similar to サクサクアンドロイド

Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについてShinobu Okano
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
Asami Abe
 
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
Kazuhiro Sera
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
 
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン 【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
linkbal
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2lyrical_logical
 
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングScalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングJun Saito
 

Similar to サクサクアンドロイド (8)

Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
 
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン 【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]Scalaで萌える関数型プログラミング[エッセンシャル版]
Scalaで萌える関数型プログラミング[エッセンシャル版]
 
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2
 
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングScalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミング
 

More from Ryuichi ITO

scala.collection 再入門 (改)
scala.collection 再入門 (改)scala.collection 再入門 (改)
scala.collection 再入門 (改)
Ryuichi ITO
 
ゼロから始めるScala文法
ゼロから始めるScala文法ゼロから始めるScala文法
ゼロから始めるScala文法
Ryuichi ITO
 
ゼロから始めるScalaプロジェクト
ゼロから始めるScalaプロジェクトゼロから始めるScalaプロジェクト
ゼロから始めるScalaプロジェクト
Ryuichi ITO
 
Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.
Ryuichi ITO
 
OUCC LT会2
OUCC LT会2OUCC LT会2
OUCC LT会2
Ryuichi ITO
 
getstartedc#_2
getstartedc#_2getstartedc#_2
getstartedc#_2
Ryuichi ITO
 
getstartedc#_1
getstartedc#_1getstartedc#_1
getstartedc#_1
Ryuichi ITO
 

More from Ryuichi ITO (7)

scala.collection 再入門 (改)
scala.collection 再入門 (改)scala.collection 再入門 (改)
scala.collection 再入門 (改)
 
ゼロから始めるScala文法
ゼロから始めるScala文法ゼロから始めるScala文法
ゼロから始めるScala文法
 
ゼロから始めるScalaプロジェクト
ゼロから始めるScalaプロジェクトゼロから始めるScalaプロジェクト
ゼロから始めるScalaプロジェクト
 
Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.Internship final report@Treasure Data Inc.
Internship final report@Treasure Data Inc.
 
OUCC LT会2
OUCC LT会2OUCC LT会2
OUCC LT会2
 
getstartedc#_2
getstartedc#_2getstartedc#_2
getstartedc#_2
 
getstartedc#_1
getstartedc#_1getstartedc#_1
getstartedc#_1
 

Recently uploaded

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 

Recently uploaded (6)

CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 

サクサクアンドロイド