SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Scalaで
Androidアプリ開発
  papamitra / ScalaZa01
自己紹介
●   Twitter ID: papamitra
●   Web: http://d.hatena.ne.jp/papamitra/
●   名古屋Scala勉強会/第7回から参加
●   Scala歴: 6ヶ月
●   Android歴: 7ヶ月
●   Java歴: ほぼなし
最初は別の言語で開発していたが…

   とあるLispのJVM言語
途中でScalaに乗り換えた
Scalaで開発するメリットって?
Androidアプリが動くまで
     ソースコード
          ↓
    .classファイル
          ↓
     .dexファイル
          ↓
     .apkファイル
          ↓
   インストール、実行
メソッド名を間違えた
    (動的言語の場合)

    インストールまで完了して
        いざ、実行
          ↓

NoSuchMethodException
      (そんなメソッドないよ)
メソッド名を間違えた
         (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
Scalaならコンパイラが強力に
        エラーチェック
  ソースコード
       ↓    ←Scalaはここで多くのエラーを補足
 .classファイル
       ↓
  .dexファイル
       ↓
  .apkファイル
       ↓
インストール、実行 ←ここで例外が起きるのは悲しい
Scalaなら
実行時エラーが少なくて済む!
型チェックなら
  Javaにもあるけど…


Scalaならコードが
 簡潔に書ける!
Javaのコード例
           (OnClickListener)


Button button = (Button)findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener{
        public void OnClick(View v){
           // クリック処理
        }
})
Scalaのコード例
          (OnClickListener)

findView(TR.Button01).setOnClickListener( () => {
    // クリック処理
})




     こんなに簡単に!
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/
Javaのコード例
            (Cursor)
public static void useAlarms() {
   Cursor cur = getAlarmsCursor();
   if (cur.moveToFirst()) {
      do{
         Alarm alarm = new Alarm(cur);
         // alarmを使うコード
      }while(cur.moveToNext());
   }
   cur.close();
}
Scalaのコード例
             (Cursor)


def useAlarms(){ using(getAlarmsCursor()){c=>
  c.map(new Alarm(_)).foreach(alarm=>{
    // alarmを使ったコード
  })}}
Scalaのコード例
                   (Cursor)

def using[A <: {def close(): Unit}, B](param:A)(f: A=>B):B=
  try{
    f(param)
  }finally{
    param.close()
  }
                 『Scalaプログラミング入門』より
Scalaのコード例
             (Cursor)


def useAlarms(){ using(getAlarmsCursor()){c=>
  c.map(new Alarm(_)).foreach(alarm=>{
    // alarmを使ったコード
  })}}
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)
  }
Scalaなら簡潔で
わかり易いコードが書ける!
その一方
Javaっぽく書くこともできる
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);
    }
}
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)
  }
}
ちなみに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)))
Scalaで開発するメリット
             まとめ
●   とりあえずJavaっぽく書いて動かせるので
    AndroidとScala、両方初心者でも安心

●   Scalaに慣れてくればその機能でわかり易く
    簡潔なコードが記述可能

●   しかもコンパイラの強力な型チェックで
    実行時のエラーを低減
デメリットはないの?
アプリサイズが大きく…
               コードサイズ   apkサイズ


 Hello,World     -      13KB
                                 Proguardを使っているものの…
  1画面                            同機能のJava実装と
 1サービス          24KB    111KB    比較して4〜5倍(主観)
1ウィジェット


                82KB    215KB
  3画面
 2サービス




Android2.2からはSDカードにアプリをインストールできる
→それほど気にならなくなる?
protected staticにアクセス不可
                       Scalaの仕様で
    protected staticクラス/メソッド/フィールドにアクセス不可




   Androidでは
   com.google.android.maps.ItemizedOverlay
   を継承して使うときに問題が…




現状Javaでラッパを書くしか手がない?
→ItemizedOverlayにはラッパがあります
 http://github.com/brianhsu/ScalaMap
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?)に期待
Google Maps API(maps.jar)
         でコンパイルエラー


Q.   2.8.0以前のバージョンではどうすればよい?


A.   maps.jarを改変して回避する力技を公開しています
http://d.hatena.ne.jp/papamitra/20100627/scala_maps
Scalaで開発するデメリット
        まとめ




いろいろあるけどなんとかなるよ!
Let's Scala + Android !
おまけ


もうちょっとだけ続くんじゃ
私のAndroid開発環境
●   sbt + sbt-android-plugin
    Scala製ビルドツール
●   ensime
    emacs上のScala開発環境
●   Eclipse + Abdroid-plugin
    xml編集するのに使用
sbt-android-plugin
●    Apk作成はもちろん実機/エミューレータへのイ
     ンストールも面倒見てくれる
●    proguardも勝手にかけてくれる
●    インストールはファイル1つDLして
     パス通すだけ
    http://github.com/jberkel/android-plugin/raw/master/script/create_project
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
sbt-android-plugin
               型付きリソース参照も装備!


val button = findViewById(R.id.button).asInstanceOf[Button]




              val button = findView(TR.button)
ensime
●   Emacs上のScala開発環境
●   補完してくれたり
●   クラスの詳細を表示したり
●   Flymakeっぽいこともしてくれる
●   http://github.com/aemoncannon/ensime
ensime
●   補完
ensime
●   クラス詳細
ensime
●   flymake
まとめ
まとめ




ご自分に合ったツールをお使いください
おわり

Más contenido relacionado

La actualidad más candente

並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門Yoshimura Soichiro
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconKazuhiro Sera
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編takeuchi-tk
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc賢太郎 前多
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 賢太郎 前多
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriYuta Okamoto
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-jaTIS Inc.
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.jsYuto Suzuki
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けーTanUkkii
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in ProductionKazunobu Raita
 

La actualidad más candente (20)

並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
Rpscala18th
Rpscala18thRpscala18th
Rpscala18th
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-ja
 
Akka入門
Akka入門Akka入門
Akka入門
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in Production
 

Destacado

No te comas la coma
No te comas la comaNo te comas la coma
No te comas la comaPablo Rico
 
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話omi end
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門yujiro_t
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaKazuhiro Sera
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-Kota Mizushima
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!	[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化! ichigotake .
 
2016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri20162016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri2016Yasuyuki Sugitani
 
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間Haruki Okada
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleamayaw9
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Hitoshi Asai
 
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門Yasuaki Takebe
 
Hpcビジネスコンテンスト発表資料
Hpcビジネスコンテンスト発表資料Hpcビジネスコンテンスト発表資料
Hpcビジネスコンテンスト発表資料Hironori Nakajo
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Scala@SmartNews_20150221
Scala@SmartNews_20150221Scala@SmartNews_20150221
Scala@SmartNews_20150221Shigekazu Takei
 
Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話Keiji Muraishi
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでHideaki Miyake
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 

Destacado (20)

No te comas la coma
No te comas la comaNo te comas la coma
No te comas la coma
 
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!	[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
 
2016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri20162016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri2016
 
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
 
ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門ScalaプログラマのためのHaskell入門
ScalaプログラマのためのHaskell入門
 
Hpcビジネスコンテンスト発表資料
Hpcビジネスコンテンスト発表資料Hpcビジネスコンテンスト発表資料
Hpcビジネスコンテンスト発表資料
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
Pythonについて
PythonについてPythonについて
Pythonについて
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
Scala@SmartNews_20150221
Scala@SmartNews_20150221Scala@SmartNews_20150221
Scala@SmartNews_20150221
 
Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話Scala@SmartNews AdFrontend を Scala で書いた話
Scala@SmartNews AdFrontend を Scala で書いた話
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 

Similar a ScalaでAndroidアプリ開発

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koakamiyam .
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
Scalaで型クラス入門
Scalaで型クラス入門Scalaで型クラス入門
Scalaで型クラス入門Makoto Fukuhara
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackTakahiro Yoshimura
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2DToshiyuki Ienaga
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Ryo RKTM
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 

Similar a ScalaでAndroidアプリ開発 (20)

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
 
Driverについて
DriverについてDriverについて
Driverについて
 
Scalaで型クラス入門
Scalaで型クラス入門Scalaで型クラス入門
Scalaで型クラス入門
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
Cve 2013-0422
Cve 2013-0422Cve 2013-0422
Cve 2013-0422
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 

ScalaでAndroidアプリ開発

Notas del editor

  1. 40秒
  2. 50秒
  3. 20秒