Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
papamitra
2,982 views
ScalaでAndroidアプリ開発
Read more
15
Save
Share
Embed
Embed presentation
Download
Downloaded 51 times
1
/ 44
2
/ 44
3
/ 44
4
/ 44
5
/ 44
6
/ 44
7
/ 44
8
/ 44
9
/ 44
10
/ 44
11
/ 44
12
/ 44
13
/ 44
14
/ 44
15
/ 44
16
/ 44
17
/ 44
18
/ 44
19
/ 44
20
/ 44
21
/ 44
22
/ 44
23
/ 44
24
/ 44
25
/ 44
26
/ 44
27
/ 44
28
/ 44
29
/ 44
30
/ 44
31
/ 44
32
/ 44
33
/ 44
34
/ 44
35
/ 44
36
/ 44
37
/ 44
38
/ 44
39
/ 44
40
/ 44
41
/ 44
42
/ 44
43
/ 44
44
/ 44
More Related Content
PDF
Real world android akka
by
Taisuke Oe
PDF
AndroidでScalaを使う際の問題点と対策
by
Mogi Isamu
PDF
ScalaMatsuri 2016
by
Yoshitaka Fujii
PPTX
Scala.jsはじめました?
by
K Kinzal
PPTX
Scala.jsはじめました!
by
K Kinzal
PDF
Sbtのマルチプロジェクトはいいぞ
by
Yoshitaka Fujii
PDF
ScalaにまつわるNewsな話
by
Yosuke Mizutani
PDF
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
by
Mogi Isamu
Real world android akka
by
Taisuke Oe
AndroidでScalaを使う際の問題点と対策
by
Mogi Isamu
ScalaMatsuri 2016
by
Yoshitaka Fujii
Scala.jsはじめました?
by
K Kinzal
Scala.jsはじめました!
by
K Kinzal
Sbtのマルチプロジェクトはいいぞ
by
Yoshitaka Fujii
ScalaにまつわるNewsな話
by
Yosuke Mizutani
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
by
Mogi Isamu
What's hot
PDF
Scalaでのプログラム開発
by
Kota Mizushima
PDF
Seasarプロジェクト徹底攻略
by
takezoe
PDF
Phantom Type in Scala
by
Yasuyuki Maeda
PDF
Scala警察のすすめ
by
takezoe
PDF
並行処理初心者のためのAkka入門
by
Yoshimura Soichiro
PDF
Akka入門
by
Masashi (Jangsa) Kawaguchi
PDF
Akka-Streams in Production
by
Kazunobu Raita
PDF
Trait in scala
by
Yuta Shimakawa
PDF
【LT】 怖くない恐怖のScala.js
by
Yuto Suzuki
PDF
Ruby on Rails 入門
by
Yasuko Ohba
PPTX
Akkaの翻訳みんなでやろう Let's translate akka doc
by
賢太郎 前多
PPTX
【LT】akka receive とScala Javaの違い
by
賢太郎 前多
PDF
実戦Scala
by
Yuto Suzuki
PDF
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
by
Kazuhiro Sera
PDF
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
ODP
Rpscala18th
by
nanjakkun
PPTX
Scala勉強会 初心者向けハンズオン前編
by
takeuchi-tk
PDF
進撃のSbt
by
Yuto Suzuki
PDF
akka-doc-ja
by
TIS Inc.
PDF
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
by
TanUkkii
Scalaでのプログラム開発
by
Kota Mizushima
Seasarプロジェクト徹底攻略
by
takezoe
Phantom Type in Scala
by
Yasuyuki Maeda
Scala警察のすすめ
by
takezoe
並行処理初心者のためのAkka入門
by
Yoshimura Soichiro
Akka入門
by
Masashi (Jangsa) Kawaguchi
Akka-Streams in Production
by
Kazunobu Raita
Trait in scala
by
Yuta Shimakawa
【LT】 怖くない恐怖のScala.js
by
Yuto Suzuki
Ruby on Rails 入門
by
Yasuko Ohba
Akkaの翻訳みんなでやろう Let's translate akka doc
by
賢太郎 前多
【LT】akka receive とScala Javaの違い
by
賢太郎 前多
実戦Scala
by
Yuto Suzuki
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
by
Kazuhiro Sera
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
Rpscala18th
by
nanjakkun
Scala勉強会 初心者向けハンズオン前編
by
takeuchi-tk
進撃のSbt
by
Yuto Suzuki
akka-doc-ja
by
TIS Inc.
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
by
TanUkkii
Viewers also liked
PDF
めんどくさくない Scala #kwkni_scala
by
Kazuhiro Sera
PDF
多分モダンなWebアプリ開発
by
tak-nakamura
PPT
No te comas la coma
by
Pablo Rico
PDF
Pythonおじさんのweb2py挑戦記
by
Yoshiyuki Nakamura
PDF
Wrapping a C++ library with Cython
by
fuzzysphere
PDF
ScalaプログラマのためのHaskell入門
by
Yasuaki Takebe
PDF
Scala@SmartNews AdFrontend を Scala で書いた話
by
Keiji Muraishi
PDF
Scalaと過ごした5ヶ月間
by
Haruki Okada
PDF
[Android] モジュール管理で ビルド高速化!
by
ichigotake .
PDF
言語アップデート -Scala編-
by
Kota Mizushima
PDF
Scala 初めての人が Heroku で Web アプリを公開するまで
by
Hideaki Miyake
PDF
15分でざっくり分かるScala入門
by
SatoYu1ro
PDF
2016 Android × Scala @ScalaMatsuri2016
by
Yasuyuki Sugitani
PDF
Androidアプリ開発で活躍必至!? ビルドツールGradle
by
amayaw9
PDF
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
by
Hitoshi Asai
PPTX
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
by
omi end
PPTX
Scalaで学ぶ関数型言語超入門
by
yujiro_t
PDF
Scala@SmartNews_20150221
by
Shigekazu Takei
PPTX
Hpcビジネスコンテンスト発表資料
by
Hironori Nakajo
KEY
Pythonについて
by
Kenji NAKAGAKI
めんどくさくない Scala #kwkni_scala
by
Kazuhiro Sera
多分モダンなWebアプリ開発
by
tak-nakamura
No te comas la coma
by
Pablo Rico
Pythonおじさんのweb2py挑戦記
by
Yoshiyuki Nakamura
Wrapping a C++ library with Cython
by
fuzzysphere
ScalaプログラマのためのHaskell入門
by
Yasuaki Takebe
Scala@SmartNews AdFrontend を Scala で書いた話
by
Keiji Muraishi
Scalaと過ごした5ヶ月間
by
Haruki Okada
[Android] モジュール管理で ビルド高速化!
by
ichigotake .
言語アップデート -Scala編-
by
Kota Mizushima
Scala 初めての人が Heroku で Web アプリを公開するまで
by
Hideaki Miyake
15分でざっくり分かるScala入門
by
SatoYu1ro
2016 Android × Scala @ScalaMatsuri2016
by
Yasuyuki Sugitani
Androidアプリ開発で活躍必至!? ビルドツールGradle
by
amayaw9
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
by
Hitoshi Asai
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
by
omi end
Scalaで学ぶ関数型言語超入門
by
yujiro_t
Scala@SmartNews_20150221
by
Shigekazu Takei
Hpcビジネスコンテンスト発表資料
by
Hironori Nakajo
Pythonについて
by
Kenji NAKAGAKI
Similar to ScalaでAndroidアプリ開発
PDF
ATN No.2 Scala事始め
by
AdvancedTechNight
PDF
Real World Android Akka - 日本語版
by
Taisuke Oe
PPTX
明日から業務で使うScala
by
martin_lover_ca
PDF
MoteMote Compiler Plugin
by
yoshiaki iwanaga
PDF
Scala2.8への移行
by
guest5f4320
PDF
Scala2.8への移行
by
Takeda Hiroyuki
PPTX
つぶLT20121215
by
遼一 杉浦
PDF
fanscala1 3 sbt
by
Toshiki Shinozaki
KEY
関ジャバ JavaOne Tokyo 2012報告会
by
Koichi Sakata
PDF
Scalaの現状と課題
by
Kota Mizushima
PDF
第1回名古屋Android勉強会Lt用資料
by
tantack
PDF
プログラミング言語Scala
by
TanUkkii
PPTX
サクサクアンドロイド
by
Ryuichi ITO
PPTX
僕の鮮やかなるScala導入失敗事例
by
Yosuke Uchiyama
PDF
Scala is-unscared
by
Kota Mizushima
PDF
こわくないScala
by
Kota Mizushima
PDF
JavaWorld Day 2009 Scala
by
Tomoharu ASAMI
PDF
Scala conf2013
by
Takafumi Ikeda
KEY
2012 09-26-scala
by
Taisuke Oe
PDF
Scala超入門 - 2014/12/13 Scala関西勉強会
by
Asami Abe
ATN No.2 Scala事始め
by
AdvancedTechNight
Real World Android Akka - 日本語版
by
Taisuke Oe
明日から業務で使うScala
by
martin_lover_ca
MoteMote Compiler Plugin
by
yoshiaki iwanaga
Scala2.8への移行
by
guest5f4320
Scala2.8への移行
by
Takeda Hiroyuki
つぶLT20121215
by
遼一 杉浦
fanscala1 3 sbt
by
Toshiki Shinozaki
関ジャバ JavaOne Tokyo 2012報告会
by
Koichi Sakata
Scalaの現状と課題
by
Kota Mizushima
第1回名古屋Android勉強会Lt用資料
by
tantack
プログラミング言語Scala
by
TanUkkii
サクサクアンドロイド
by
Ryuichi ITO
僕の鮮やかなるScala導入失敗事例
by
Yosuke Uchiyama
Scala is-unscared
by
Kota Mizushima
こわくないScala
by
Kota Mizushima
JavaWorld Day 2009 Scala
by
Tomoharu ASAMI
Scala conf2013
by
Takafumi Ikeda
2012 09-26-scala
by
Taisuke Oe
Scala超入門 - 2014/12/13 Scala関西勉強会
by
Asami Abe
ScalaでAndroidアプリ開発
1.
Scalaで Androidアプリ開発 papamitra
/ ScalaZa01
2.
自己紹介 ●
Twitter ID: papamitra ● Web: http://d.hatena.ne.jp/papamitra/ ● 名古屋Scala勉強会/第7回から参加 ● Scala歴: 6ヶ月 ● Android歴: 7ヶ月 ● Java歴: ほぼなし
3.
最初は別の言語で開発していたが…
とあるLispのJVM言語
4.
途中でScalaに乗り換えた
5.
Scalaで開発するメリットって?
6.
Androidアプリが動くまで
ソースコード ↓ .classファイル ↓ .dexファイル ↓ .apkファイル ↓ インストール、実行
7.
メソッド名を間違えた
(動的言語の場合) インストールまで完了して いざ、実行 ↓ NoSuchMethodException (そんなメソッドないよ)
8.
メソッド名を間違えた
(Scalaの場合) コンパイラが指摘 /src/main/scala/CameraService.scala:47: value comprress is not a member of android.graphics.Bitmap bitmap.comprress(Bitmap.CompressFormat.JPEG, 90, outStream) ^ one error found
9.
Scalaならコンパイラが強力に
エラーチェック ソースコード ↓ ←Scalaはここで多くのエラーを補足 .classファイル ↓ .dexファイル ↓ .apkファイル ↓ インストール、実行 ←ここで例外が起きるのは悲しい
10.
Scalaなら 実行時エラーが少なくて済む!
11.
型チェックなら Javaにもあるけど… Scalaならコードが
簡潔に書ける!
12.
Javaのコード例
(OnClickListener) Button button = (Button)findViewById(R.id.Button01); button.setOnClickListener(new OnClickListener{ public void OnClick(View v){ // クリック処理 } })
13.
Scalaのコード例
(OnClickListener) findView(TR.Button01).setOnClickListener( () => { // クリック処理 }) こんなに簡単に!
14.
Scalaのコード例
(OnClickListener) 暗黙の型変換を使用 implicit def funcToClicker0(f:() => Unit):OnClickListener = new OnClickListener() {def onClick(v:View):Unit=f.apply} http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-scala/
15.
Javaのコード例
(Cursor) public static void useAlarms() { Cursor cur = getAlarmsCursor(); if (cur.moveToFirst()) { do{ Alarm alarm = new Alarm(cur); // alarmを使うコード }while(cur.moveToNext()); } cur.close(); }
16.
Scalaのコード例
(Cursor) def useAlarms(){ using(getAlarmsCursor()){c=> c.map(new Alarm(_)).foreach(alarm=>{ // alarmを使ったコード })}}
17.
Scalaのコード例
(Cursor) def using[A <: {def close(): Unit}, B](param:A)(f: A=>B):B= try{ f(param) }finally{ param.close() } 『Scalaプログラミング入門』より
18.
Scalaのコード例
(Cursor) def useAlarms(){ using(getAlarmsCursor()){c=> c.map(new Alarm(_)).foreach(alarm=>{ // alarmを使ったコード })}}
19.
Scalaのコード例
(Cursor) private object EmptyCursorIter extends Iterator[Cursor]{ def hasNext = false def next:Cursor = throw new java.util.NoSuchElementException() } private class CursorIter(cur: Cursor) extends Iterator[Cursor]{ def hasNext = !cur.isLast() def next:Cursor = if (cur.moveToNext) cur else throw new java.util.NoSuchElementException() } implicit def cursor2Iterator(cur: Cursor): Iterator[Cursor] = if(!cur.moveToFirst) EmptyCursorIter else{ cur.moveToPrevious new CursorIter(cur) }
20.
Scalaなら簡潔で わかり易いコードが書ける!
21.
その一方 Javaっぽく書くこともできる
22.
JavaのHelloアプリ package org.example.hello; import android.app.Activity; import
android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello,Android"); setContentView(tv); } }
23.
ScalaのHelloアプリ package org.example.helloscala import android.app.Activity import
android.os.Bundle import android.widget.TextView class HelloAndroid extends Activity { override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) val tv = new TextView(this) tv.setText("Hello Android, it's me, Scala!") setContentView(tv) } }
24.
ちなみにClojureのHelloアプリ (ns org.example.hello.HelloAndroid
(:gen-class :extends android.app.Activity :exposes-methods {onCreate superOnCreate})) (defn -onCreate [this #^android.os.Bundle bundle] (.superOnCreate this bundle) (let [tv (new android.widget.TextView this)] (.setText tv "Hello Android from Clojure!") (.setContentView this tv)))
25.
Scalaで開発するメリット
まとめ ● とりあえずJavaっぽく書いて動かせるので AndroidとScala、両方初心者でも安心 ● Scalaに慣れてくればその機能でわかり易く 簡潔なコードが記述可能 ● しかもコンパイラの強力な型チェックで 実行時のエラーを低減
26.
デメリットはないの?
27.
アプリサイズが大きく…
コードサイズ apkサイズ Hello,World - 13KB Proguardを使っているものの… 1画面 同機能のJava実装と 1サービス 24KB 111KB 比較して4〜5倍(主観) 1ウィジェット 82KB 215KB 3画面 2サービス Android2.2からはSDカードにアプリをインストールできる →それほど気にならなくなる?
28.
protected staticにアクセス不可
Scalaの仕様で protected staticクラス/メソッド/フィールドにアクセス不可 Androidでは com.google.android.maps.ItemizedOverlay を継承して使うときに問題が… 現状Javaでラッパを書くしか手がない? →ItemizedOverlayにはラッパがあります http://github.com/brianhsu/ScalaMap
29.
Google Maps API(maps.jar)
使用でコンパイルエラー error: error while loading MapView, Missing dependency 'class android.view.ViewGroup$LayoutParams' android.jar,maps.jarはいずれも 実装が全て例外スローに 置き換えられたスタブ Rev22630にてコンパイルできるように修正されたようです 次期バージョン(2.8.1?)に期待
30.
Google Maps API(maps.jar)
でコンパイルエラー Q. 2.8.0以前のバージョンではどうすればよい? A. maps.jarを改変して回避する力技を公開しています http://d.hatena.ne.jp/papamitra/20100627/scala_maps
31.
Scalaで開発するデメリット
まとめ いろいろあるけどなんとかなるよ!
32.
Let's Scala +
Android !
33.
おまけ もうちょっとだけ続くんじゃ
34.
私のAndroid開発環境 ●
sbt + sbt-android-plugin Scala製ビルドツール ● ensime emacs上のScala開発環境 ● Eclipse + Abdroid-plugin xml編集するのに使用
35.
sbt-android-plugin ●
Apk作成はもちろん実機/エミューレータへのイ ンストールも面倒見てくれる ● proguardも勝手にかけてくれる ● インストールはファイル1つDLして パス通すだけ http://github.com/jberkel/android-plugin/raw/master/script/create_project
36.
sbt-android-plugin サンプルプロジェクトを作成して実機にインストールするまで $ create_project HelloAndroid
org.papamitra.helloandroid --platform android-2.1 --scala-version 2.8.0 --activity HelloAndroid $ cd HelloAndroid $ sbt update $ sbt install-device
37.
sbt-android-plugin
型付きリソース参照も装備! val button = findViewById(R.id.button).asInstanceOf[Button] val button = findView(TR.button)
38.
ensime ●
Emacs上のScala開発環境 ● 補完してくれたり ● クラスの詳細を表示したり ● Flymakeっぽいこともしてくれる ● http://github.com/aemoncannon/ensime
39.
ensime ●
補完
40.
ensime ●
クラス詳細
41.
ensime ●
flymake
42.
まとめ
43.
まとめ ご自分に合ったツールをお使いください
44.
おわり
Editor's Notes
#3
40秒
#7
50秒
#8
20秒
Download