SlideShare a Scribd company logo
ScalaでAndroidアプリを作ると
         何が良いのか?
         株式会社hemplant  麻植泰輔
                 Twitter:@OE_uia
               Facebook:oe.taisuke
自己紹介
麻植(おえ)

Twitter:@OE_uia, Facebook:oe.taisuke


ScalaでAndroidアプリ&オレオレAPI開発

株式会社hemplant(麻 hemp + 植 plantが由来)

決して大麻工場ではありません(‘・ω・`)



次回のScalaConferenceで会計職担当。
ScalaでAndroidアプリ開発?


AndroidアプリをScalaで開発するとき
の問題について、@lyrical_logicalさ
んが第86回で発表済み。

Twitter界隈では素人は手を出すな、
ということでFA? (‘・ω・`)
ScalaでAndroidアプリ開発?

じゃあ反論するのか?

答)できません (‘・ω・`)
でも良いとこもあるよ?というのを
Androidという文脈でアピールするの
を試みます。
Scalaで開発するメリット


とにかく簡潔に書ける その1

ScalaのCollection APIは並行コレク
ションを除いて使用可能。

高階関数 ヒャッハ-!!
Scalaで開発するメリット

とにかく簡潔に書ける その2

Androidアプリで頻出のEventListener
やRunnableも、関数から暗黙の型変
換で無名クラス化すると簡潔に。


処理のカプセル化>コード量削減
Scalaで開発するメリット

         EventListenerの書き換え例
JAVA:
button.setOnClickListener(
 new View.OnClickListener() {
   public void onClick(View v) {
     // クリック時の処理
     }
 }
);

SCALA:
button.setOnClickListener{(v:View)=>
    // クリック時の処理
}
Scalaで開発するメリット

とにかく簡潔に書ける その3

Resourceへのアクセスや、Viewのコン
ストラクタに必ず使われるContext
を、暗黙の引数化

注:Contextはメモリリークの頻出場
所なので、注意は必要
Scalaで開発するメリット


    Contextの暗黙の引数化
JAVA:
Toast.makeText(
 context,"写真を保存しました。",Toast.LENGTH_SHORT
).show()



SCALA:
"写真を保存しました".toast
Scalaで開発するメリット

とにかく簡潔に書ける その4

構造的部分型(Structual Subtyping)

ArrayAdapter(縦スクロール型)と
PagerAdapter(横スワイプ型)は、どち
らもnotifyDataSetChanged():Unitを持
つが継承関係なし。
Scalaで開発するメリット


    ViewPagerとArrayAdapterを纏める
type Observer = {def notifyDataSetChanged():Unit}

val vAdapter = new ArrayAdapter[POJO]{...}
val hAdapter = new PagerAdapter[POJO]{...}

val adapterMap:Map[String,Observer] = Map(
 "vertical"->vAdapter,
 "horizontal"->hAdapter
 )

def onComplete(){
  adapterMap.values.foreach{_.notifyDataSetChanged}
}
Scalaで開発するメリット

とにかく簡潔に書ける その5

TypedResources
ResourceIDとViewを結びつける際、
通常は型キャストが必要だが、
android-pluginのTypedResourcesでは型
キャスト不要。
Scalaで開発するメリット



    Resourceファイルから型情報も取得
JAVA:
Button button = (Button)findViewById(R.id.button1);

SCALA:
val button = findView(TR.button1)
その他のメリット

Traitのmixin継承で、デフォルトの実
装パターンをオレオレフレームワー
ク化

ServerSideのオレオレAPIも同じ言語
でサクっと作れるから、頭の切り替
えが不要。
Scalaで開発するメリット

こんな感じでAndroidアプリの工数が
下がるだけでなく、作るのも楽しく
なりますYO!

勿論環境設定+習熟に時間がちょっ
ぴり(?)かかりますので、最初は締切
の緩いプロジェクトでの使用を推奨
します。
参考文献:

Scala my Android
http://ktoso.github.com/scala-android-
presentation/#/


現状 #Scala で #Android をやるのは
思っている以上に罠が多いという話 -
Togetter http://togetter.com/li/367665

More Related Content

PDF
アイスタイル特設サイトにおけるVue.jsの導入事例
PDF
アイスタイル特設サイトにおけるVue.js導入事例(再演)
PDF
リーン・スタートアップと Ci について @ DevOps 懇親会 #1
PDF
カメラを利用したアプリを作って約1000人で遊んだ話
PDF
国内初事例に学ぶSAPUI5
PDF
フロントエンドエンジニアが知るべきFirebaseの世界
PDF
ScalaでAndroidアプリ開発
PDF
プログラミング言語Scala
アイスタイル特設サイトにおけるVue.jsの導入事例
アイスタイル特設サイトにおけるVue.js導入事例(再演)
リーン・スタートアップと Ci について @ DevOps 懇親会 #1
カメラを利用したアプリを作って約1000人で遊んだ話
国内初事例に学ぶSAPUI5
フロントエンドエンジニアが知るべきFirebaseの世界
ScalaでAndroidアプリ開発
プログラミング言語Scala

Similar to 2012 09-26-scala (6)

PPTX
アドテク企業のScala導入について振り返るlt
PPTX
131207 NECTJ Workshop 2
PDF
「Camelog」Android開発秘話
KEY
App inventorで想いを形に
PPTX
MRアプリを Power Apps で爆速開発 ~Low Code で 仮想世界へGo!~
PDF
Nyle流 Scalaとの付き合い方
アドテク企業のScala導入について振り返るlt
131207 NECTJ Workshop 2
「Camelog」Android開発秘話
App inventorで想いを形に
MRアプリを Power Apps で爆速開発 ~Low Code で 仮想世界へGo!~
Nyle流 Scalaとの付き合い方
Ad

More from Taisuke Oe (10)

PDF
Getting Started with Deep Learning using Scala
PDF
Neural Network as a function
PDF
Composable Callbacks & Listeners
PPTX
ScalaDays 2015 SF report #rpscala
PDF
Scala2.10.x bytecode problems in Android
KEY
AmazonElasticBeanstalk
KEY
Smartphone security at ZenCoworking
PDF
Rememb ar 0117
PDF
Share english communication tips jp
PPTX
Share english communication tips jp
Getting Started with Deep Learning using Scala
Neural Network as a function
Composable Callbacks & Listeners
ScalaDays 2015 SF report #rpscala
Scala2.10.x bytecode problems in Android
AmazonElasticBeanstalk
Smartphone security at ZenCoworking
Rememb ar 0117
Share english communication tips jp
Share english communication tips jp
Ad

2012 09-26-scala

Editor's Notes