[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
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() {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
まとめ
まとめ




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

More Related Content

What's hot (20)

並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
takezoe
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
Yuto Suzuki
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro 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
賢太郎 前多
 
Rpscala18th
Rpscala18thRpscala18th
Rpscala18th
nanjakkun
 
【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 #ScalaMatsuri
Yuta Okamoto
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
Yasuyuki Maeda
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-ja
TIS Inc.
 
Akka入門
Akka入門Akka入門
Akka入門
Masashi (Jangsa) Kawaguchi
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
Yuta Shimakawa
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
Yuto Suzuki
 
Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in Production
Kazunobu Raita
 
並行処理初心者のための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 の世界展開 #seasarcon
Kazuhiro 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 #ScalaMatsuri
Yuta Okamoto
 
akka-doc-ja
akka-doc-jaakka-doc-ja
akka-doc-ja
TIS Inc.
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto 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 Production
Kazunobu Raita
 

Viewers also liked (20)

No te comas la coma
No te comas la comaNo te comas la coma
No te comas la coma
Pablo 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_scala
Kazuhiro 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 Cython
fuzzysphere
 
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!	[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
ichigotake .
 
2016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri20162016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri2016
Yasuyuki Sugitani
 
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間
Haruki Okada
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi 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_20150221
Shigekazu 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
 
No te comas la coma
No te comas la comaNo te comas la coma
No te comas la coma
Pablo 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_scala
Kazuhiro 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 Cython
fuzzysphere
 
[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!	[Android] モジュール管理で ビルド高速化!
[Android] モジュール管理で ビルド高速化!
ichigotake .
 
2016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri20162016 Android × Scala @ScalaMatsuri2016
2016 Android × Scala @ScalaMatsuri2016
Yasuyuki Sugitani
 
Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間Scalaと過ごした5ヶ月間
Scalaと過ごした5ヶ月間
Haruki Okada
 
Androidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradleAndroidアプリ開発で活躍必至!? ビルドツールGradle
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Hitoshi 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_20150221
Shigekazu 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
 

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

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でnodejs
Takayoshi Tanaka
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
kamiyam .
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
Goro Fuji
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
Hideyuki Takeuchi
 
Driverについて
DriverについてDriverについて
Driverについて
幸雄 村上
 
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_hack
Takahiro Yoshimura
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki 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
 
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でnodejs
Takayoshi Tanaka
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
kamiyam .
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
Goro 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_hack
Takahiro Yoshimura
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki 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
 

ScalaでAndroidアプリ開発

Editor's Notes