Groovyって?

GroovyとはJVM上で動作するスクリプト言語のことです。RubyやPythonなどの軽量プラグラミング言語と同じように

簡潔な記述でコードを書くことがきます。最近のプログラム言語の特徴である関数型プログラミングやメタプログラミング

などの機能も有しています。一番の特徴はJavaとの親和性です。GroovyではJavaとの高い互換性を持っており、

JavaのコードをそのままGroovyのコードして使うことが出来ます。GroovyではJavaコードを記述するよりかは

はるかに短いコードで読みやすく記述することができます。

Groovyが使われている身近な例としてはAndroid Stuidで使われているビルドシステムのGradleがGroovyで書かれています。

Groovy2.4からAndroid正式サポートすることになりました。Apple社もiOS向けプログラミング言語にObjective-Cに替わる

軽量言語Swiftをリリースしたのと、同時期にGroovyサポートを発表しています。とても興味深いですね。

 

 

Android StuidoでGroovyを使えるように設定

Android Stuid 1.1の前提で説明します。

1. build.gradleの変更

build.gradleファイルはProject用とModule用の2つあります。まずはProjectのbuild.gradleのdependenciesに

gradle-groovy-android-plugin:0.3.5 を追加します。

  buildscript {     
    repositories {         
      jcenter()     
    }    
   dependencies {         
      classpath "com.android.tools.build:gradle:1.0.1" 
      classpath "org.codehaus.groovy:gradle-groovy-android-plugin:0.3.5"      
      } 
    } 
   allprojects {    
      repositories {         
        jcenter()    
      } 
  }

 

次にModule用のbuild.gradleを編集します。apply plugin: ‘groovyx.grooid.groovy-android’の追加とcompileの依存関係にgroovy2.4の記述を付け足します。

 

apply plugin: "com.android.application"   
android {     compileSdkVersion 21     
              buildToolsVersion "21.1.2"'      
              defaultConfig {         
                  applicationId "lighthousew5.com.groovytest"
                  minSdkVersion 19         
                  targetSdkVersion 21         
                  versionCode 1         
                  versionName "1.0"
}     
buildTypes {         
      release {             
          minifyEnabled false             
          proguardFiles getDefaultProguardFile("proguard-android.txt"), 
          "proguard-rules.pro"
           }    
       } 
}   
apply plugin: "groovyx.grooid.groovy-android&"   
ependencies {     
  compile fileTree(dir: "libs", include: ["*.jar"])     
  compile "com.android.support:appcompat-v7:21.0.3"    
  compile "org.codehaus.groovy:groovy:2.4.0:grooid" }

以上で設定完了です。

 

ActivityクラスをGroovy化してみる

JavaのプログラムをGroovy化する前にソースフォルダーを scr/java → src/groovyへ変更します。

MainActivityクラスの拡張子を「.groovy」に変更します。Groovyコードを記述するこができます。

ListViewに文字列配列をデータとして表示するコードをサンプルとします。以下のような記述になります。

def products = ["Apple","Orange","Melon","Lemon"]         
def adapter = new ArrayAdapter<String>((this,android.R.layout.simple_list_item_1,products);          
def listView = (ListView)findViewById(R.id.listView)          
listView.onItemClickListener = {             
  AdapterView<?> parent, View view, int position, long id ->              
    def message = (String)parent.getItemAtPosition(position);             
    Toast.makeText(this,message,Toast.LENGTH_LONG).show();      
   }        
    listView.adapter = adapter;

 

動的な型変換、クロージャー、などGroovyの特徴を活かせば簡潔に記述できます。

swiftに似ているとも言われてます。