SlideShare a Scribd company logo
1 of 16
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

Similar to 2012 09-26-scala (6)

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

More from Taisuke Oe (10)

Getting Started with Deep Learning using Scala
Getting Started with Deep Learning using ScalaGetting Started with Deep Learning using Scala
Getting Started with Deep Learning using Scala
 
Neural Network as a function
Neural Network as a functionNeural Network as a function
Neural Network as a function
 
Composable Callbacks & Listeners
Composable Callbacks & ListenersComposable Callbacks & Listeners
Composable Callbacks & Listeners
 
ScalaDays 2015 SF report #rpscala
ScalaDays 2015 SF report #rpscalaScalaDays 2015 SF report #rpscala
ScalaDays 2015 SF report #rpscala
 
Scala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidScala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in Android
 
AmazonElasticBeanstalk
AmazonElasticBeanstalkAmazonElasticBeanstalk
AmazonElasticBeanstalk
 
Smartphone security at ZenCoworking
Smartphone security at ZenCoworkingSmartphone security at ZenCoworking
Smartphone security at ZenCoworking
 
Rememb ar 0117
Rememb ar 0117Rememb ar 0117
Rememb ar 0117
 
Share english communication tips jp
Share english communication tips jpShare english communication tips jp
Share english communication tips jp
 
Share english communication tips jp
Share english communication tips jpShare english communication tips jp
Share english communication tips jp
 

Recently uploaded

Recently uploaded (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

2012 09-26-scala

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n