SlideShare una empresa de Scribd logo
1 de 24
サクサクアンドロイド 
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/

Más contenido relacionado

Destacado

20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama android20101024 3min cooking in Yokohama android
20101024 3min cooking in Yokohama androidKenichi 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 GuideMasahiro Hidaka
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力Keiji Ariyama
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleamayaw9
 
オープンソースによるドローン開発の概要( #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はクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiYukiya Nakagawa
 

Destacado (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 a サクサクアンドロイド

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_scalaKazuhiro 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.jstakezoe
 
【テックリンク】平日の夜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 a サクサクアンドロイド (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で楽しく学ぶ関数型プログラミング
 

Más de 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
 

Más de 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
 

サクサクアンドロイド