Java 開発 2.0: 容易な EC2

素早く CRUD Web アプリケーションを作成し、Amazon Elastic Compute Cloud 上で実行する

Java™ Web アプリケーションのホスティング用に EC2 インスタンスをプロビジョニングする作業は簡単です。この連載「Java 開発 2.0」の今回の記事では、Groovy、Spring、Hibernate を (Grails フレームワークを介して) 活用する Web アプリケーションを素早く作成し、EC2 インスタンスにデプロイする方法について説明します。

Andrew Glover, Author and developer

Andrew GloverAndrew Glover は、ビヘイビア駆動開発、継続的インテグレーション、アジャイル・ソフトウェア開発に情熱を持つ開発者であるとともに、著者、講演者、起業家でもあります。詳細は彼のブログにアクセスしてください。



2009年 10月 27日

Java 開発 2.0: EC2 も借りられます」で学んだように、Amazon の EC2 (Elastic Compute Cloud) は、仮想マシン (Linux®、OpenSolaris、さらには Windows® の仮想マシンまで) をホストする汎用インフラストラクチャー・サービスであり、どんなアプリケーションでも実行することができます。もちろん、このサービス上で、(この記事でこれから説明するように、Hibernate や Spring を使用する Web アプリケーションも含めて) 任意の Java アプリケーションを実行することができますが、そのためには、AMI (Amazon Machine Image) としても知られる仮想マシンすなわち「インスタンス」を作成するか、借りる必要があります。

Amazon の Web サービスを取り巻くコミュニティーはこの数年非常に活発であり、公開されている膨大な数の仮想マシンのカタログのなかから自分の要求に合うものを選択して使用することができます (「参考文献」を参照)。Linux には数多くの種類があることから、そのカタログにはさまざまな構成のソフトウェアや関連ツールが満載されていることが想像できると思います。この記事で求めている AMI は、以下の条件を満たす AMI です。

AMI を見つける

Amazon の膨大なカタログを調べてみると、ニーズに合う AMI が見つかるだけではありません。一部の AMI プロバイダーは、彼ら独自のインスタンス (無料、商用の両方) も Web 上で宣伝しています。例えば、Java Web Apps in a Box は、この記事で説明する Java Web 開発プロジェクトに非常に適しています (「参考文献」を参照)。私は Java Web Apps in a Box のサイトで、このインスタンスの起動に必要な、非常に重要な AMI ID を見つけることができました (このステップについては後ほど説明します)。

  • 既に Java (できれば最新のバージョン) がインストールされているもの
  • サーブレット・コンテナー (Tomcat など) が含まれるもの
  • 無料で使用できるデータベース (MySQL など) が含まれるもの

また、そうしたコンポーネントをインストールできる、(言うなれば) 白紙状態の仮想マシンを使うという選択肢もあります。しかし、時間をかけて探せば、ほぼどんな構成も見つかるとわかっているのは心強いものです。実際、ほとんどの場合、EC2 のプロビジョニングで最も困難な作業は、自分の好みにあった特定の仮想マシンを見つけることです。そして、望み通りの仮想マシンが見つかると、楽しいことが始まります。私は、私の要求を満たしてくれる仮想マシンを見つけることができたので、その使い方を説明することにします。この使い方は、前回の記事で説明した Eclipse の AWS プラグインを既にインストールしてあれば非常に簡単です。

Eclipse の AWS プラグインを利用すると、インスタンスを検索、起動、終了することができます。しかも、キー・ペアを適切に構成してあれば (Eclipse の AWS プラグインはこれを非常にうまく処理します)、ターミナル・ウィンドウから特定のイメージに ssh で接続し、さらに詳細な構成を行うことができます。

ただし前回の記事と同様、EC2 の詳細な説明を始めるためには、公開されている AMI の起動方法を詳しく説明する前に、簡単な Java アプリケーションを作成しておくのが得策です。Grails フレームワークを利用すると、アプリケーションで Spring と Hibernate を (さらにはその下位層にある永続ストアを) 活用することができます。

この連載について

Java 技術が初めて登場してから現在に至るまでに、Java 開発の様相は劇的に変化しました。成熟したオープンソースのフレームワーク、そしてサービスとして提供される信頼性の高いデプロイメント・インフラストラクチャーを利用できる (借りられる) おかげで、今では Java アプリケーションを短時間かつ低コストでアセンブルし、テスト、実行、保守することが可能になっています。この連載では Andrew Glover が、この新たな Java 開発パラダイムを可能にする多種多様な技術とツールを詳しく探ります。

迅速さが重要

Java 開発 2.0 の基本的な特徴は、アプリケーションを構築するにあたり、借用したインフラストラクチャーを利用することに加え、徹底してオープンソースを活用することにあります。オープンソースのツールやフレームワーク、さらにはソリューションまで使用することで、企業は自分自身で大量のコードを作成する必要がなくなるため、ソフトウェア・アプリケーションを素早く組み立てることができます。開発を素早く、そして何と言っても非常に簡単に行えるようにするオープンソースのソリューションと言えば、Spring と Hibernate の 2 つが頭に浮かびます。

Java で開発を行っている全世界のほぼすべての現場では、Spring フレームワークを使用してアプリケーションを作成しています。Spring フレームワークは主に IoC (制御の反転) フレームワークとして知られていますが、今や Java で開発を行う上でまさに不可欠な要素となっています (Spring は AOP (Aspect-Oriented Programming: アスペクト指向プログラミング) フレームワークであり、OSGi コンテナーであり、Web フレームワークであり、さらに他の側面も持っています)。この Spring に引けをとらない Hibernate は、Java の ORM (Object-Relational Mapping) の世界では中心となるフレームワークです。一方 JDO (Java Data Object) も使われますが、その採用が広まる速さはとても Hibernate には及びません (JDO については連載の第 1 回で Google App Engine との関連で説明しました)。従って、現在と将来の Java 開発について考えてみると、おそらく Spring と Hibernate を組み合わせて使われる可能性が最も高いでしょう。(これは特定の作業を行うために両方のフレームワークが必要であるという意味ではありません。むしろ、ほとんどの場合はこの 2 つのフレームワークで実質的にあらゆるニーズに対応できる、ということを意味しています。)

一方 Groovy は、基本的に Java 開発を極めて容易なものにする開発プラットフォームです (「参考文献」を参照)。Groovy は大量の構文を必要としないという特徴を持った、単なる Java 言語にすぎませんが、Groovy を使うことで、ソリューションを素早く作成することに集中することができ、同じ問題を解決するために単純な Java コードを大量に作成する必要がなくなります。(こうした特徴を持つのは Groovy のみではありません。JVM 上で実行する他の多くの言語も、まったく同じ問題に対応することができます。) 私の場合、Groovy は、単に私のツール・セットの中にある 1 つの JAR ファイルにすぎません。

つまり、アプリケーションを素早く作成することを考える場合には、私は Groovy と Spring、そして Hibernate を考えます。そして Web アプリケーションの場合、この 3 つのすべてを非常にうまく組み合わせられる特定のフレームワークが Grails です。Grails は Spring の上に構築されていると同時に、Groovy をベースにしています。また GORM (Grails Object Relational Mapping)、つまり Grails による ORM 実装では、Hibernate をベースに使用しています。

この記事は基本的に Grails に関する記事ではありません。(Grails をマスターしたい方は、Scott Davis による連載記事「Grails をマスターする」を読むことをお勧めします。) とは言え、Grails を使うと、単純な Web アプリケーションを驚くほど容易に作成することができるので、次のセクションではその方法を説明しましょう。


Grials の基本

Grails の使い方は簡単です。これから説明する内容に従っていくと、(Spring と Hibernate を介して) データベースを利用する基本的な Web アプリケーションが即座に出来上がります。まず、Grails をダウンロードしたら (「参考文献」を参照)、そのファイルを解凍し、環境を構成します。環境の構成としては、GRAILS_HOME 環境変数が Grails のインストール・ディレクトリーを参照するように設定します。次に GRAILS_HOME/bin をパスに追加します。また JAVA_HOME 環境変数が設定されていることも確認します。

今度は (オペレーティング・システムに応じて) コンソール・ウィンドウまたはシェルを開き、コマンド・プロンプトから以下の内容を入力します。

grails create-app mytri

驚くことではありませんが、これによって mytri という名前の Grails Web アプリケーションが作成されます。このアプリケーションは、この連載の初めの頃に Google App Engine を利用して作成する方法を説明した、トライアスロンのイベントに関する情報を収集するアプリケーションという一般的なテーマなテーマに沿っています。

次に、新たに作成した Web アプリケーションのディレクトリーにカレント・ディレクトリーを変更し (cd mytri/)、以下の内容を入力します。

grails create-domain-class Triathlon

すると、Grails から数行の情報が出力され、その最後が次のように終わっているはずです。

Created DomainClass for Triathlon
Created Tests for Triathlon

今度はカレント・ディレクトリーを grails-app/domain に変更します。このディレクトリーを見ると、Triathlon.groovy という適切な名前のファイルがあります。このファイルを適当なエディターで開きます。この連載のこれまでの記事と同様、ファイルの内容に関する説明にはあまり時間をかけないことにします。つまり、とりあえず非常に単純にしておきます (後でいくらでも装飾することができます)。さまざまな関係を無視し、トライアスロンのいくつかのプロパティーのみに焦点を絞ります。

  • 日付
  • 種類 (スプリント・ディスタンス、ハーフ・アイアンマンなど)
  • 名前
  • 場所

では、リスト 1 のコードを Triathlon.groovy ファイルに追加します。

リスト 1. トライアスロンを表現する単純なドメイン・オブジェクト
class Triathlon {
 static constraints = {
  classification(inList:["Sprint", "Olympic", "1/2 Iron Man", "Iron Man"] )
 }

 String name
 String location
 Date eventDate
 String classification
}

このオブジェクトの constraints セクションによって、classification の種類が 4 つのうちのいずれか 1 つと指定されていることに注意してください。このファイルを保存して閉じます。

次に、このプロジェクトのホーム・ディレクトリー (mytri) に戻り、以下の内容を入力します。

grails generate-all Triathlon

このコマンドによって、おなじみの MVC (Model-View-Controller) のビューとコントローラーが作成されます。Triathlon オブジェクトはモデルです。

ここまで来たら大きく息をしてください。これで終わりなのです。これで、データベースの中でトライアスロンの大会に関するデータの作成、更新、削除、読み取りを行う簡単な Web アプリケーションを作成することができました。すごいと思いませんか。このアプリケーションを実行するためには、以下の内容を入力します。

grails run-app

ブラウザーを開き、http://localhost:8080/mytri にアクセスします。ドメイン・オブジェクトへの CRUD (作成、読み取り、更新、削除) 操作をサポートする、いくつかの汎用インターフェースが Grails によって生成されていることがわかります。

例えば、この mytri アプリケーションがロードされると (図 1)、generate-all コマンドを実行した際に Grails によって作成された TriathlonController オブジェクトに対応するリンクが表示されているはずです。

図 1. Grails アプリケーションのデフォルトのホームページ
Grails アプリケーションのホームページ

TriathlonController リンクをクリックすると、アプリケーションで使用しているデータ・ストアが空であることがわかります。しかし次に New Triathlon リンクをクリックすると、トライアスロンの大会に関するデータを作成するためのスマートなフォームが表示されます (図 2)。

図 2. トライアスロンの大会に関するデータを作成するためのフォーム
Grails によるデータ作成フォーム

このフォームにデータを入力し、そして Create リンクをクリックすると、トライアスロンの大会のリストに戻ります。なんと、新たに作成したオブジェクトがリストの中に表示されています (図 3)。

図 3. 作成に成功したトライアスロンの大会のリスト
Grails によるトライアスロンの大会のリスト

Grails は背後で、HSQL というメモリー内データベースを使っています。しかしここでは、Grails が使用しているスキーマをエクスポートし、そのスキーマを使って MySQL の中でデータベース・テーブルを作成できるようにします。

HSQL 以外のデータベースとやり取りするように Grails を構成する方法は極めて簡単です。mytri/grails-app/conf ディレクトリーにある DataSource.groovy ファイルを適当なエディターで開きます。このファイルの dataSource セクションに以下の行を追加します。

dialect=org.hibernate.dialect.MySQLDialect.class

この行は Hibernate の MySQL の方言を使うように Grails に指示しています。特に、MySQL 用の有効な DDL (Data Definition Language) ファイルを生成するように Grails に指示する必要があります。そこで次に、このプロジェクトのホーム・ディレクトリーにいることを確認してから、コンソールから以下の内容を入力します。

grails schema-export

このプロセスによって、sql.ddl というファイルが生成されます。このファイルには、MySQL の内部に適切なテーブルを作成するために実行する必要があるステートメントが含まれています (このステップを後ほど実行します)。最後に、DataSource.groovy ファイルから MySQL の方言の行を削除します。後ほどこの行は、別の場所に追加します。


Amazon インスタンスをプロビジョニングする

ここまでのところで、既にたくさんのことをしましたが、まだ EC2 には触れてさえいません。ただしそれは、良いことなのです。EC2 や EC2 と同様のサービスの良いところは、単純であり、即座に起動されることです。そこで Eclipse を開き (まだ AWS プラグインのインストールと構成を行っていなければ、AWS プラグインをインストールして構成します。手順の説明が必要な場合には先月の記事を参照してください。)、「Amazon EC2 Management」パースペクティブを開きます。そこから、「EC2 AMIs」ビューをクリックすると、ID とマニフェストを含む暗号のようなリストが表示され、またテキスト・ボックスがビュー上部の右端に表示されます (図 4)。

図 4. AMI のリスト
たくさんの AMI があります

このあまり目立たないテキスト・ボックスに ami-aa5abac3 と入力します。これが Java Web Apps in a Box に用意されている便利な AMI の ID です。図 5 は、その結果を示しています。

図 5. この記事に必要な AMI
AMI が 1 つだけあります

図 5 を見るとわかるように、ami-aa5abac3 という AMI が見つかり、そのマニフェストには tomcat と mysql という単語が含まれています。なかなか順調です。次に、この AMI を選択して右クリックし、「launch (起動)」を選択します。すると、AMI の起動方法を構成できる新しいダイアログが表示されます。AMI を起動する際には、キー・ペアとセキュリティー・グループを選択する必要があります (これは「Java 開発 2.0: EC2 も借りられます」の場合と同じです)。この画面を図 6 に示します。

図 6. AMI の起動オプションを構成する
AMI の起動オプションを構成する

Finish (完了)」ボタンをクリックすると、ご想像のとおり、インターネットのどこかに AMI が起動されます。Eclipse の「EC2 Instances」ビュー (図 7) を見ると、このインスタンスが起動待ちになっていることがわかります。

図 7. Eclipse の「EC2 Instances」ビュー
Eclipse の「EC2 Instances」ビュー

まもなく AMI の状態は、起動中から実行中に変わります。これには少し時間がかかる場合がありますが、我慢して待ちます。インスタンスが実行中になると、この AMI の公開 DNS が Eclipse の「EC2 Instances」ビューに表示されていることがわかります。これは、後でこの Web アプリケーションまでナビゲートする際に便利です。

MySQL を詳細に構成するために、ターミナル・セッションが必要です。インスタンスを選択して右クリックし、「Open Shell」を選択します。使われているローカル・マシンのオペレーティング・システムによっては、SSH をサポートするシェルを見つける必要があるかもしれません。(Windows の場合には Putty を使用することができます。「参考文献」を参照)。


MySQL と Grails を構成する

Eclipse の中で開いているシェル (新たに起動した AMI を参照しているシェル) の中で、以下のコマンドを使って MySQL にログインします。

mysql -u root --password=root

次に、この Grails インスタンス用に新しいユーザーを作成します。

mysql> CREATE USER 'grails'@'localhost' IDENTIFIED BY 'groovy';

そして、下記のユーザー権限をデータベースに設定します。

mysql> GRANT ALL ON *.* to 'grails'@'localhost';

次に、データベース (データベースの世界での見方によっては、スキーマ) を作成します。

mysql> create database mytri;

テーブルを作成するためには、その新たに作成されたデータベースを使い始める必要があります。

mysql> use mytri;

最後に、sql.ddl ファイルの最後の行を (改行を入れずに) 実行します。

mysql> create table triathlon (
   id bigint not null auto_increment, version bigint not null, classification varchar(12) 
   not null, event_date datetime not null, location varchar(255) not null, 
   name varchar(255) not null, primary key (id));

これで MySQL データベースが使えるようになりました。あとは Grails の構成を完成させ、Grails を使えばよいだけです。

MySQL を使用するように Grails を構成する

MySQL の JDBC ドライバーをダウンロードし (「参考文献」)、mytri/lib ディレクトリーに配置します。次に DataSource.groovy ファイルを開き、production セクションを更新します (リスト 2)。

リスト 2. MySQL のドライバーと MySQL の方言の構成を DataSource.groovy に追加する
production {
 dataSource {
  driverClassName = "com.mysql.jdbc.Driver"
  username = "grails"
  password = "groovy"   
  dialect=org.hibernate.dialect.MySQLDialect.class
  url = "jdbc:mysql://localhost/mytri"
 }
}

この変更によって Grails の production インスタンスは、同じマシン (localhost) 上で実行されている MySQL データベースを参照するようになります。当然のことですが、この localhost のインスタンスはインターネットのどこかで実行されている AMI です。


Tomcat の管理インターフェースを使って Grails アプリケーションをデプロイする

ローカルでのテスト

ここではあくまでも時間を節約するために、この MySQL 用に構成された Grails インスタンスをローカルでテストするのをスキップすることにします。つまり、MySQL をローカルにインストールしている人はいないと想定し、EC2 イメージ上にある既存の MySQL インスタンスを活用することで作業を単純にします。ただし明確にしておきますが、本番で MySQL を使おうとしている場合には、ローカルに MySQL をインストールし、アプリケーションが適切に動作することをローカルで検証してからクラウドの中で起動する必要があります。

Grails アプリケーションは (他のすべての Java Web アプリケーションと同様)、WAR ファイルとしてデプロイされます。そのため、皆さんのコンピューターのシェルに戻り (このシェルは Grails の作業用に使用しているシェルのことであり、EC2 インスタンスを参照しているシェルのことではありません)、以下の内容を入力します。

grails -Dgrails.env=prod war mytri.war

すると、mytri.war という適切な名前の付いたファイルが作成されます。ここから先は、Tomcat の管理インターフェースを使用して、このアプリケーションを新たに起動された AMI にロードすればよいだけです。ここで、ターゲットの AMI に mytri.war を scp で送信することもできます。どちらを選ぶかは皆さん次第です。ここでは Tomcat のインターフェースを使うことにしますが、それは Tomcat が既に実行されており、ベースにあるファイルシステム上で AMI のパスを見つける必要がないからです。

Tomcat の管理インターフェースを構成する

Tomcat の管理インターフェースを使用する前に、このインターフェースを EC2 イメージ上で適切に動作するようにしなければなりません。というのも、AMI のデフォルトの構成は、(セキュリティー上の理由から) このインターフェースを使って下記を行うことを禁止しているからです。

  1. AMI インスタンスを参照するシェル・セッションに戻り、/usr/local/tomcat-6.0.20/conf ディレクトリーにある tomcat-users.xml ファイルを探すこと。
  2. このファイルを開き、manager という新しいロールを追加すること。
  3. 新しいユーザーを作成して (あるいは既存のユーザーを利用して)、このユーザーに manager ロールを持たせること。
  4. Tomcat を再起動すること。インスタンスの再起動方法としては、Eclipse のコンソールからインスタンスを再起動するか、あるいは単純に /usr/local/tomcat-6.0.20/bin ディレクトリーで停止スクリプトを実行してから起動スクリプトを実行するかのいずれかです。このどちらを実行するかは皆さん次第です。

Eclipse の「EC2 Instances」ビューに戻り、インスタンスを右クリックし、「Copy Public DNS Name」を選択します。次に、この公開 DNS の名前をブラウザーのアドレス・ボックスに貼り付けます。すると Tomcat の愛らしいウェルカム画面が表示されます。もし表示されない場合には、ネットワークの応答には少し時間がかかる場合があるため、数分待ってから再度試みます。

ページがロードされたら、左側にあるメニューの「Tomcat Manager」リンクをクリックします。するとユーザー名とパスワードを入力するように促されるので、先ほど構成したユーザー名とパスワードを入力します。管理インターフェースがロードされたら、「WAR file to deploy (WAR ファイルの配備)」のところまで下にスクロールし、「Browse (参照)」ボタンをクリックして mytri.war を見つけます。最後に、「Deploy (配備)」ボタンをクリックします。このファイルは大きな WAR ファイルなので、少し時間がかかっても心配する必要はありません。

アップロードが完了すると、「Applications (アプリケーション)」セクションに mytri アプリケーションが表示されていることがわかります。mytri アプリケーションのリンクをクリックします。すると、どこかで見たような画面が表示されます。この画面は図 2 とほとんど同じなのです。この画面から、新しいトライアスロンの大会を作成できるはずです。ただし今回は、インターネットのどこかにある EC2 インスタンス上の MySQL の中にトライアスロンの大会が作成されます。簡単だと思いませんか。

すべてが適切に動作していると満足できたら、AMI を終了させることを忘れないでください。Amazon は (少額ながら) 時間で課金していることを忘れてはいけません。Eclipse の「EC2 Instances」ビューで、終了させる AMI インスタンスを右クリックし、表示されるメニューから AMI を終了させます。AMI が終了すると、すべてが消去されます。つまり、例えば再度トライアスロンを操作したい場合には、再度 MySQL データベースをセットアップする必要があります。(Amazon の Elastic Block Storage という別のサービスでは、AMI インスタンスの終了時にも一時データが消去されないようにすることで、こうしたデータを長期間保持できるようにしています。)


まとめ

今回の記事でも改めてわかるように、EC2 は Java 開発 2.0 の両方の側面を兼ね備えています。つまり、MySQL、Tomcat、(背後で Spring とHibernate を使用する) Grails などのオープンソース・パッケージを、レンタル・インフラストラクチャー上でフルに利用することができ、そのコストはハードウェア・リソースを独自に取得するよりもはるかに安価です。しかも EC2 はセットアップが非常に簡単な上に、独自のハードウェアを使って同じコストで行う場合に比べると、はるかにスケーラブルです。実際、この記事では大したことをしなかったと感じたら、まさにそれがポイントなのです。

来月はドキュメント指向データベースの CouchDB について説明します。CouchDB は、例えば MySQL とは明らかに異なります。なぜ一部の人達が CouchDB を未来のデータベースと呼ぶのか、次回の記事でその理由がわかります。

参考文献

学ぶために

  • Amazon Elastic Compute Cloud (Amazon EC2): Amazon EC2 本家のホームページにアクセスしてください。
  • Java 開発 2.0: EC2 も借りられます」(Andrew Glover 著、developerWorks、2009年9月): EC2 の実践的な使い方を学んでください。
  • Java Web Apps in a Box: Java Web Apps in a Box は、Java 6、Tomcat、MySQL を提供するクラウド・ベースのソリューションです。
  • Grails をマスターする」(Scott Davis 著、developerWorks): この連載記事は Grails を解説しています。Grails は、おなじみの Java 技術 (Spring や Hibernate など) を「設定より規約」などの最近の習慣と組み合わせた最新の Web フレームワークです。
  • S3 を利用して保管を容易にする」(Andrew Glover 著、developerWorks、2009年4月): オープンソースの JetS3t ライブラリーを使って、データの保管と取得に Amazon のS3 クラウド・サービスを活用する方法を学んでください。
  • Amazon Web サービスを利用したエンタープライズ・アプリケーションの統合」(Brian J. Stewart 著、developerWorks、2009年6月): XML と Amazon Web サービスを利用してエンタープライズ・アプリケーションを統合する方法、そして Microsoft .NET と Java という異なるプラットフォームで動作するアプリケーションの統合を利用して新しい機能を作成する方法を学んでください。
  • Amazon Web サービスを利用したクラウド・コンピューティング: 第 3 回 EC2 によるオンデマンド・サーバー」(Prabhakar Chaganti 著、developerWorks、2008年10月): この記事では、Amazon EC2 が提供する仮想サーバーを紹介しています。EC2 を利用すると、アプリケーションの需要に応じて即座にアプリケーションのコンピューティング要件を構成して容量を調整するのが容易になる仕組みを学んでください。
  • クラウド・コンピューティングとグリッド・コンピューティングの比較」(Judith Myerson 著、developerWorks、2009年3月): IaaS (Infrastructure as a Service) を使用して、Amazon の EC2 による完全なコンピューター・インフラストラクチャーを手に入れる方法を学び、グリッド・コンピューティングとクラウド・コンピューティングの類似点、相違点、検討しなければならない問題について理解してください。
  • Cloud Computing: 豊富なクラウド・リソースを揃えた IBM Cloud Computing Central にアクセスしてください。
  • Technology bookstore で、この記事で取り上げた技術やその他の技術に関する本を探してください。
  • developerWorks Java technology ゾーン: Java プログラミングのあらゆる側面を網羅した記事が豊富に用意されています。

製品や技術を入手するために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology, Cloud computing
ArticleID=448379
ArticleTitle=Java 開発 2.0: 容易な EC2
publish-date=10272009