Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Getting Started

Excerpt
hiddentrue

Setting up your Java environment

Java環境を設定

Excerpt
hiddentrue

Groovy requires Java, so you need to have a version available (1.4 or greater is required). Here are the steps if you don't already have Java installed:


GroovyはJavaが必要です、したがって利用可能なバージョンを取得してください (1.4かそれ以上が必要)。ここでは、まだJavaをインストールしていない場合のステップを記述します:

  • Excerpt
    hiddentrue

    Get the latest Java distribution from the http://java.sun.com website.

    http://java.sun.com webサイトから最新のJavaディストリビューションを取得

  • Excerpt
    hiddentrue

    Run the installer.

    インストーラを実行

  • Excerpt
    hiddentrue

    Set the JAVA_HOME environment variables. On Windows, follow these steps:

    JAVA_HOMEの環境変数を設定。Windows上では、以下のステップに従ってください:

    • Excerpt
      hiddentrue

      Open the System control panel

      システムコントロールパネルを開く

    • Excerpt
      hiddentrue

      Click the Advanced tab

      拡張タブをクリック

    • Excerpt
      hiddentrue

      Click the Environment Variables button

      環境変数ボタンをクリック

    • Excerpt
      hiddentrue

      Add a new System variable with the name JAVA_HOME and the value of the directory Java was installed in (mine is C:\Program Files\Java\jdk1.5.0_04)

      JAVA_HOMEという名前の新しいシステム変数を追加し、Javaがインストールされたディレクトリを値に設定(例えば、C:\Program Files\Java\jdk1.5.0_04)

    • Excerpt
      hiddentrue

      Optionally add %JAVA_HOME%\bin to your system path

      任意でシステムパスとして、%JAVA_HOME%\binを追加
      Excerpt
      hiddentrue

      (Note: as an alternative to setting a system environment variable, you can create yourself a '.bat' or '.cmd' file which sets the variable. You then need to run that batch file in any console window in which you wish to run Java and double clicking on '.bat' or '.cmd' files containing Java invocation instructions won't work. If you are unsure about what this means, follow the earlier instructions.)


      (注意: システム環境変数を設定する別の方法として、変数を設定した'.bat'あるいは'.cmd'ファイルを用意することもできます。そしてJavaを実行させたいコンソールウインドウ内でそのバッチファイルを実行する必要があります。ただ単にJavaを呼び出す命令を含む'.bat'あるいは'.cmd'ファイルをダブルクリックするだけでは実行しないでしょう。この記述の意味が解らないのであれば、上記の「Java環境を設定」の説明に従ってください)

Excerpt
hiddentrue

Setting up your Groovy environment

Groovy環境に設定

  • Excerpt
    hiddentrue

    Get a copy of the Groovy distribution from the website, and copy it to some place on your hard drive.

    webサイトからGroovyディストリビューションのコピーを取得し、ハードディスクの適当な場所にそれをコピーします

  • Excerpt
    hiddentrue

    Unzip the groovy archive to some logical place on your hard drive, I have mine in C:\dev\groovy-1.0-jsr-06

    ハードディスクの適当な場所にgroovyのアーカイブをunzipします(例えば、C:\dev\groovy-1.0-jsr-06)

  • Excerpt
    hiddentrue

    Set the GROOVY_HOME environment variables. On Windows, follow these steps:

    GROOVY_HOMEの環境変数を設定します。Window上では、以下のステップに従ってください:

    • Excerpt
      hiddentrue

      Add a new System variable with the name GROOVY_HOME and the value of the directory groovy was installed in (mine is C:\dev\groovy-1.0-jsr-06)

      GROOVY_HOMEという名前の新しいシステム変数を追加し、groovyがインストールされたディレクトリを値に設定します(例えば、C:\dev\groovy-1.0-jsr-06)

    • Excerpt
      hiddentrue

      Start a command prompt, and type "set" and hit return to see that your environment variables were set correctly.

      コマンドプロンプトを起動して、正しく環境変数が設定されたかを確認するために、"set"を入力してリターンキーを押します。

    • Excerpt
      hiddentrue

      Optionally add %GROOVY_HOME%\bin to your system path

      任意でシステムパスとして、%GROOVY_HOME%\binを追加します

    • Excerpt
      hiddentrue

      Try opening groovyConsole.bat by double clicking on the icon in the bin directory of the Groovy distribution. If it doesn't work, open a command prompt, and change to the bin directory and run it from there to see what the error message is.

      Groovyディストリビューションのbinディレクトリにある、groobyConsile

      Groovyディストリビューションのbinディレクトリにある、groovyConsole.batというiconをダブルクリックして開いてみましょう。もし起動しないのであれば、コマンドプロンプトを開いて、 どのようなエラーメッセージが発生しているかを観るために、binディレクトリに移動してgroovyConsole.batを実行してください。

Excerpt
hiddentrue

Setting up optional jar files

任意のjarファイルを設定

Excerpt
hiddentrue

You may wish to obtain optional jar files, either corresponding to Groovy modules (see module documentation for details) or corresponding to other Java classes you wish to make use of from Groovy. Some possibilities are listed below:


Groovyのモジュール(詳細はモジュールドキュメントを参照)、あるいはGroovyから利用したい他のJavaクラスに対応する任意のjarファイルが追加可能です。

...

Excerpt
hiddentrue

The recommended way for making Groovy be aware of your additional jar files is to place them in a predefined location. Your Groovy install should include a file called groovy-starter.conf. Within that file, make sure a line such as

追加されるjarファイルをGroovyが認識するための推奨される方法は、宣言済みの場所にそれらを置くことです。Groovyのインストールにより groovy-starter.conf というファイルが含まれているはずです。そのファイルの中で、次のような行がコメントアウトされてないことを確認してください

Code Block
none
none

load ${user.home}/.groovy/lib/*

...

Excerpt
hiddentrue

In the top part of the window of the groovyConsole, type the following


groovyConsoleウインドウの上に、以下を入力します

Code Block

println "Hello, World!"

Excerpt
hiddentrue

And then type <CTRL-R>.
Notice that the text gets printed out in the OS console window (the black one behind the groovyConsole window) and the bottom part of the groovyConsole says:


そして次に<CTRL-R>を入力します。
テキストはOSのコンソールウインドウに表示されることに注意してください、そしてgroovyConsoleの下部にはこう表示されます:

Code Block

groovy> println "Hello, World!"
null

Excerpt
hiddentrue

The line starting with "groovy>" is just the text of what the console processed. The "null" is what the expression "evaluated to". Turns out the expression to print out a message doesn't have any "value" so the groovyConsole printed "null".


"groovy>"で始まる行は、まさにコンソールが処理するコードのテキストです。"null"は評価結果を表わしています。コードの評価結果は、いかなる値も持っていません、したがってgroovyConsoleは"null"を表示しました。
Excerpt
hiddentrue

Next try something with an actual value. Replace the text in the console with:


次にある実際の値を入力します。コンソールにはあるテキストが返されます:

Code Block

123+45*67

Excerpt
hiddentrue

or your favorite arithmetic expression, and then type <CTRL-R> (I'm going to stop telling you to hit <CTRL-R>, I think you get the idea). Now the "value" printed at the bottom of the groovyConsole has more meaning.


あるいはあなたの好きな計算式を入力します、そして<CTRL-R>をタイプします(以後<CTRL-R>入力は省略します)。いまgroovyConsoleの下部に表示された値は、より価値があるでしょう。
Excerpt
hiddentrue

Variables

変数

Excerpt
hiddentrue

You can assign values to variables for later use. Try the following:


後で使用する変数に値を割り当てることもできます。以下を試してください:

Code Block

x = 1
println x

x = new java.util.Date()
println x

x = -3.1499392
println x

x = false
println x

x = "Hi"
println x

Excerpt
hiddentrue

Lists and Maps

リストとマップ

Excerpt
hiddentrue

The Groovy language has built-in support for two important data types, lists and maps (Lists can be operated as arrays in Java language). Lists are used to store ordered collections of data. For example an integer list of your favorite integers might look like this:


Groovy言語は、生来リストとマップ(リストはJava言語での配列にあたる操作が可能です)という二つの重要なデータタイプを持っています。

Code Block

myList = [1776, -1, 33, 99, 0, 928734928763]

Excerpt
hiddentrue

You can access a given item in the list with square bracket notation (indexes start at 0):


角括弧記号で与えられたリストの要素にアクセスできます(インデックスは0から始まります):

Code Block

println myList[0]

Excerpt
hiddentrue

Should result in this output:


結果は次の出力結果になります:

Code Block

1776

Excerpt
hiddentrue

You can get the length of the list with the "size" method:


"size"メソッドでリストのサイズが得られます:

Code Block

println myList.size()

Excerpt
hiddentrue

Should print out:


出力は:

Code Block

6

Excerpt
hiddentrue

But generally you shouldn't need the length, because unlike Java, the preferred method to loop over all the elements in an list is to use the "each" method, which is described below in the "Code as Data" section.


しかし、一般的にサイズは必要ないです。理由はJavaにはないですが、リストのすべての要素をループさせるのに適したメソッドとして、「each」メソッドが利用できるからです(これについては「データとしてのコード」のセクションで後述します)。
Excerpt
hiddentrue

Another native data structure is called a map. A map is used to store "associative arrays" or "dictionaries". That is unordered collections of heterogeneous, named data. For example, let's say we wanted to store names with IQ scores we might have:


もう一つの誕生時からあるデータ構造はマップと呼ばれるものです。マップは「連想配列」あるいは「ディクショナリ」として保存するのに使われます。このマップは、異なるタイプの順不同なコレクションと言われるデータです。例えば、所有するIQスコアと一緒に名前を保存したいとしましょう:

Code Block

scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]

Excerpt
hiddentrue

Note that each of the values stored in the map is of a different type. Brett's is an integer, Pete's is a string, and Andrew's is a floating point number. We can access the values in a map in two main ways:


マップにストアされるそれぞれの値は異なるタイプであることに注意してください。BrettのIQは、Integer。PeteはString。そしてAndrewは浮動小数。主に二つの方法でマップの値にアクセスできます:

Code Block

println scores["Pete"]
println scores.Pete

Excerpt
hiddentrue

Should produce the output:


出力はこうなるべきでしょう:

Code Block

Did not finish
Did not finish

Excerpt
hiddentrue

To add data to a map, the syntax is similar to adding values to an list. For example, if Pete re-took the IQ test and got a 3, we might:


マップにデータを追加するために、シンタックスは、リストに値を追加するのと同様です。例えば、PeteがIQテストの再試験を受けてスコア3を取ったとしましょう:

Code Block

scores["Pete"] = 3

Excerpt
hiddentrue

Then later when we get the value back out, it will be 3.


その後その値を取り出すと、3になっているでしょう。

Code Block

println scores["Pete"]

Excerpt
hiddentrue

should print out 3.


出力も3になるべきでしょう。
Excerpt
hiddentrue

Also as an aside, you can create an empty map or an empty list with the following:


また余談として、以下のように空のマップあるいは空のリストを生成することもできます:

Code Block

emptyMap = [:]
emptyList = []

Excerpt
hiddentrue

To make sure the lists are empty, you can run the following lines:


そのリストが空であることを確認するために、以下の行を実行しましょう:

Code Block

println emptyMap.size()
println emptyList.size()

Excerpt
hiddentrue

Should print a size of 0 for the List and the Map.


そのリストとマップに対してサイズ0が出力されるでしょう。
Excerpt
hiddentrue

Conditional Execution

条件付実行

Excerpt
hiddentrue

One of the most important features of any programming language is the ability to execute different code under different conditions. The simplest way to do this is to use the '''if''' construct. For example:


いかなるプログラム言語でも最も重要な特徴の一つは、異なる条件下での異なるコードの実行を可能にすることです。これを行う最も簡単な方法は、「if」構文を使用することです。例えば:

Code Block

amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
	println("Good morning")
} else {
	println("Good evening")
}

Excerpt
hiddentrue

Don't worry too much about the first line, it's just some code to determine whether it is currently before noon or after. The rest of the code executes as follows: first it evaluates the expression in the parentheses, then depending on whether the result is '''true''' or '''false''' it executes the first or the second code block. See the section below on boolean expressions.


一行目についてはそんなに心配することはありません、これはただ現在午前か午後を決定するためのコードです。残りのコードは次のように実行します: まず括弧内の式を評価して、その結果が「true」か「false」により一番目か二番目のコードブロックを実行します。詳細はBoolean式のセクションを参照してください。
Excerpt
hiddentrue

Note that the "else" block is not required, but the "then" block is:


「else」ブロックは必ずしも必要ではないですが、「then」ブロックは必要です:

Code Block

amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
	println("Have another cup of coffee.")
}

Excerpt
hiddentrue

Boolean Expressions

Boolean式

Excerpt
hiddentrue

There is a special data type in most programming languages that is used to represent truth values, '''true''' and '''false'''. The simplest boolean expression are simply those words. Boolean values can be stored in variables, just like any other data type:


ほとんどのプログラム言語にある特別なデータタイプとして正否値を表わすのに使われる「true」と「false」があります。これらのワードが最も簡単なboolean式です。Boolean値は他のデータタイプと同様に変数にストアすることができます。

Code Block

myBooleanVariable = true

Excerpt
hiddentrue

A more complex boolean expression uses one of the boolean operators:


より複雑なboolean式は、boolean演算子の一つを使います:

Code Block

* ==
* !=
* >
* >=
* <
* <=

Excerpt
hiddentrue

Most of those are probably pretty intuitive. The equality operator is '''==''' to distinguish from the assignment operator '''='''. The opposite of equality is the '''!=''' operator, that is "not equal"


それらのほとんどはおそらくかなり直観的です。等価演算子は代入演算子「=」と区別するために「==」を使用します。不等号は「not equal」ということで、「!=」演算子を使用します。
Excerpt
hiddentrue

So some examples:


したがっていくつかの例としては:

Code Block

titanicBoxOffice = 1234600000
titanicDirector = "James Cameron"

trueLiesBoxOffice = 219000000
trueLiesDirector = "James Cameron"

returnOfTheKingBoxOffice = 752200000
returnOfTheKingDirector = "Peter Jackson"

theTwoTowersBoxOffice = 581200000
theTwoTowersDirector = "PeterJackson"

titanicBoxOffice > returnOfTheKingBoxOffice  // evaluates to true
titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true
titanicBoxOffice >= titanicBoxOffice         // evaulates to true
titanicBoxOffice > titanicBoxOffice          // evaulates to false
titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice  // evaluates to false

titanicDirector > returnOfTheKingDirector    // evaluates to false, because "J" is before "P"
titanicDirector < returnOfTheKingDirector    // evaluates to true
titanicDirector >= "James Cameron"           // evaluates to true

Excerpt
hiddentrue

Boolean expressions are especially useful when used in conjunction with the '''if''' construct. For example:


Boolean式は、「if」構文と組み合わせて使用される時、特に有効です。例えば:

Code Block

if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)
{
	println(titanicDirector + " is a better director than " + returnOfTheKingDirector)
}

Excerpt
hiddentrue

An especially useful test is to test whether a variable or expression is null (has no value). For example let's say we want to see whether a given key is in a map:


特に有効なテストは、変数あるいは式がnull(値がない)かどうかを調べることです。例えば、与えられたキーがマップ内にあるかどうかを調べたいとしましょう:

Code Block

suvMap = ["Acura MDX":"\$36,700", "Ford Explorer":"\$26,845"]
if (suvMap["Hummer H3"] != null)
{
 	println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);
}

Excerpt
hiddentrue

Generally null is used to indicate the lack of a value in some location.


一般的に、nullはある場所で値が未設定であることを示すのに使用されます。
Excerpt
hiddentrue

Debugging and Troubleshooting Tips

デバッグとトラブルシュートのTips

  • Excerpt
    hiddentrue

    Print out the class of a variable that you're interested in with myVar.getClass(). Then look up the documentation for that class.

    興味のある変数のクラスを表示するために、myVar.getClass()を使います。そしてそのクラスのドキュメントを調べます。

  • Excerpt
    hiddentrue

    If you're having trouble with a complex expression, pare it down to a simpler expression and evaluate that. Then build up to your more complex expression.

    複雑な式で問題があれば、それをより簡単な式まで削り取って評価してください。そしてあなたのより複雑な式に組建て直しましょう。

  • Excerpt
    hiddentrue

    Try restarting the groovyConsole (this will clear out all the variables so you can start over.

    groovyConsoleを再起動してください(これによりすべての変数は初期化されるので、再実行しましょう)。

  • Excerpt
    hiddentrue

    Look for the topic you're interested in in the Groovy User Guide

    Groovy ユーザガイドであなたが興味のあるトピックを探しましょう。

Excerpt
hiddentrue

If you are a Java developer

もしJava開発者なら