4月28日にイスタンブールで行われた Istanbul Tech Talk にて、 Mario Zechner が発表した libGDX についてのプレゼン資料です
また、資料中にある Live-Coding Session に使用したコードは GitHub 上にて公開されています
各実装フェーズ毎にタグが切ってあり、また script.txt にその簡単な解説があるため、 libGDX にてどのように実装を行うかを把握するにはよい資料だと思います
(全体を把握しやすくするため、実装はかなりコンパクトにまとまっています)
2014年4月29日火曜日
2014年4月26日土曜日
libGDX のプロジェクト構成と共通インターフェイスについて
libGDX はマルチプラットフォーム対応のため、(プラットフォーム共通の)ゲームロジックの実装と、各プラットフォームに依存する実装は分離されています
セットアップツールを使い、プロジェクトを作成すると以下のようなディレクトリ構造にてプロジェクトが作成されます
(セットアップツールの "suprojects" の設定にて、 "Desktop" 、 "Android" 、 "Ios" 、 "Html" の4つすべてを選択した場合になります)
セットアップツールを使い、プロジェクトを作成すると以下のようなディレクトリ構造にてプロジェクトが作成されます
(セットアップツールの "suprojects" の設定にて、 "Desktop" 、 "Android" 、 "Ios" 、 "Html" の4つすべてを選択した場合になります)
"android"、 "desktop" 、 "html" 、 "ios" の各ディレクトリには、それぞれのプラットフォーム毎の実装、設定などを含みます
例えば、 "android" ディレクトリには "AndroidManifest.xml" ファイル、 "ios" ディレクトリには "Info.plist.xml" ファイルなどがあります
これらのプラットフォームの違いを吸収するため、 libGDX は次の5つのインターフェイスを用意しています
- Application … ライフサイクル、ウィンドウ管理などのアプリケーションレベルイベントインターフェイス
- Files … ファイルシステムインターフェイス
- Input … マウス、キーボード、タッチイベントや加速度センサーなどの入力イベントインターフェイス
- Net … HTTP(S) 、 Socket 通信などのネットワークインターフェイス
- Audio … PCM 入出力などのオーディオインターフェイス
- Graphics … OpenGL ES 2.0、3.0 インターフェイス
これらのインターフェイスを利用することで、開発者は個々のプラットフォームの差を意識することなく、実装を行うことができます
なお、プラットフォームによっては提供されていない機能や未実装の機能(2014年4月現在では iOS プラットフォームではコンパスが利用できないなど)が存在するため、すべての機能が共通して利用できるというわけではないので、ご注意ください
2014年4月23日水曜日
書評『Learning Libgdx Game Development』
Packt Publishing の "Learning Libgdx Game Development" のレビューです
本書は Java ゲーム開発フレームワークである libGDX にについて解説した書籍となります
目次は下記のようになっています
最初は小さなプログラムから開始し、徐々に機能を解説、追加していくことで libGDX が持つ多くの機能を段階的に学ぶことができます
本書にて対象とするプラットフォームは主にデスクトップと Android となり、 HTML 5 や iOS についてはサポートしている程度にしか記述されていません(特に iOS 対応に関しては、現在の RoboVM 採用前の Xamarin.iOS についての解説になっています)
開発そのものも大半をデスクトップでの動作前提に進められますが、それによりエミュレータの起動などの必要がなくなり、開発そのものに集中して作業が進められることができました
また、入力インターフェイスの調整以外はデスクトップと Android にてゲームロジックを変更することなく同様に動作させることが出来たため、デスクトップにて開発を進め、各モバイル端末で実際の動作確認と細かい調整という効率的な手法が選択できるかと思います(本書の対象外とはなりますが、 gradle を採用した最新のビルドツールによる、 iOS 上での動作も確認できています)
なお、 libGDX が今もなお活発に開発が進められているということもあり、書籍にある通りに記述しても最新のバージョンでは動作しない(※UI のセレクトボックスの仕様変更)というケースもありました
全体的には、 libGDX に関して必要な情報がまとまった良書だとおもいます
(2014年4月現在、 libGDX について書かれた唯一の書籍でもありますが…)
サンプル PDF もダウンロード可能ですので、興味があれば内容を確認してみてはいかがでしょうか
本書は Java ゲーム開発フレームワークである libGDX にについて解説した書籍となります
目次は下記のようになっています
- Introduction to Libgdx and Project Setup
- Cross-platform Development – Build Once, Deploy Anywhere
- Configuring the Game
- Gathering Resources
- Making a Scene
- Adding the Actors
- Menus and Options
- Special Effects
- Screen Transitions
- Managing Music and Sound Effects
- Advanced Programming Techniques
- Animations
最初は小さなプログラムから開始し、徐々に機能を解説、追加していくことで libGDX が持つ多くの機能を段階的に学ぶことができます
本書にて対象とするプラットフォームは主にデスクトップと Android となり、 HTML 5 や iOS についてはサポートしている程度にしか記述されていません(特に iOS 対応に関しては、現在の RoboVM 採用前の Xamarin.iOS についての解説になっています)
開発そのものも大半をデスクトップでの動作前提に進められますが、それによりエミュレータの起動などの必要がなくなり、開発そのものに集中して作業が進められることができました
また、入力インターフェイスの調整以外はデスクトップと Android にてゲームロジックを変更することなく同様に動作させることが出来たため、デスクトップにて開発を進め、各モバイル端末で実際の動作確認と細かい調整という効率的な手法が選択できるかと思います(本書の対象外とはなりますが、 gradle を採用した最新のビルドツールによる、 iOS 上での動作も確認できています)
なお、 libGDX が今もなお活発に開発が進められているということもあり、書籍にある通りに記述しても最新のバージョンでは動作しない(※UI のセレクトボックスの仕様変更)というケースもありました
全体的には、 libGDX に関して必要な情報がまとまった良書だとおもいます
(2014年4月現在、 libGDX について書かれた唯一の書籍でもありますが…)
サンプル PDF もダウンロード可能ですので、興味があれば内容を確認してみてはいかがでしょうか
2014年4月21日月曜日
libGDX 1.0 リリース
libGDX 1.0 がリリースされました
今回のリリースにて、 Android のバージョンは 2.2 以上(OpenGL ES 1.x サポートが除外されたため)が対象となりました
またセットアップツール、ドキュメントの大幅な刷新が行われています
(現状では公式ドキュメント以外では、ほぼ旧セットアップツール(gdx-setup-ui.jar)を使用した解説がほとんどとなりますので、ご注意ください)
今まで Eclipse での開発を推奨してきていましたが、ビルドツールに Gradle を採用することで IntelliJ IDEA 、および NetBeans での開発が簡単に行えるようになりました
(各 IDE 毎のセットアップドキュメントが整備されています)
2010年3月から始まり、4年経った今も活発に開発が行われているプロジェクトです
1.0 はプロジェクトにとっては単なる区切りでしかなく、今後も新たな機能や改善が行われていくかと思います
拙作の Gradle プラグインが本プロジェクトに採用されたことがきっかけで、コミュニティに参加するようになりましたが、何もわかっていない初心者でも歓迎してくれる良いコミュニティだと思います
( Unity や(アジア圏に強い) Cocos2d-x と比較して)日本ではまだまだ知名度の低いゲームエンジンゲーム(2D / 3D)開発フレームワークではありますが、おもしろいプロダクトと思いますので、機会がありましたら、ぜひ使ってみて下さい
こちらのブログでも今後も情報提供できたらと思います
こちらのブログでも今後も情報提供できたらと思います
2014年3月30日日曜日
NetBeans で libGDX プロジェクトを作成する
NetBeans で libGDX プロジェクトを作成する方法を紹介します
libGDX は Java 用クロスプラットフォームゲーム開発フレームワークで、現在 Windows, Mac, Linux, Android, iOS, BlackBerry, HTML5 をサポートしています
今までは開発には Eclipse を推奨していたこともあり、他の IDE にて開発するのは少し手間が必要でした
今回新たにセットアップツールの刷新が行われ、ビルドツールとして gradle が採用されたことにより、 NetBeans をはじめ、 Eclipse 以外の IDE 、エディタによる開発が簡単に行うことができるようになりました
本エントリでは、この新しいセットアップツールと、 NetBeans での libGDX プロジェクトの作成方法を紹介したいと思います
なお、 libGDX は現在も活発に開発が進められているプロジェクトであるため、閲覧される時点では挙動が異なる可能性があることをご了承ください
今回使用した環境は以下の通りになります
OS: Mac OS X 10.9.2
JDK: 1.7.0_51
Xcode: 5.1
※ Xcode は iOS プラットフォーム利用時のみ必要となります
NetBeans 8.0(Build 201403101706)
Gradle Support Plugin 1.3.0
まず、セットアップツールをダウンロードします
適当な場所に保存後、下記コマンドにてセットアップツール起動します
起動後、上記のようなウィンドウが表示されるので、各項目に適当な値を入力します
(※4月23日最新版セットアップツールに更新)
Name … アプリケーション名
Package … 作成するプロジェクトのパッケージ名
Game class … プラットフォーム共通(core)のメインゲームクラス名
Destination … プロジェクト作成先ディレクトリ
Android SDK … Android SDK のパス(local.properties に設定されます)
"Sub Project"、"Extensions" については必要に応じ、チェックを行ってください
入力後、 "Generate" ボタンをクリックすると、プロジェクトが "Destination" フィールドに指定した場所に生成されます
次に作成したプロジェクトを NetBeans で開きます
「ファイル > プロジェクトを開く」にて、生成されたディレクトリまで移動します
プロジェクトを開くと、以下のようなツリー構造で NetBeans に開かれます
作成したプロジェクト(ルートプロジェクト)は、5つのサブプロジェクトで構成されます
android … Android 用プロジェクト
core … プラットフォーム共通プロジェクト
desktop … デスクトップ (Windows, Mac, Linux) 用プロジェクト
gwt … HTML5(GWT) 用プロジェクト
ios … iOS 用プロジェクト
各サブプロジェクトはダブルクリックすることで開くことができます
まず、ルートプロジェクトの設定を行います
(ルートプロジェクトに行った設定はすべてのサブプロジェクトに反映されます)
ルートプロジェクトを右クリックし、コンテキストメニューから "プロパティ" を選択すると以下のようなウィンドウが表示されます
"Gradle home" の "Inherit" チェックボックスをはずします
また、テキストボックスに値が入力されている場合は、それも削除し、空白の状態にします
お使いの環境が Mac で、 JDK に Java 8 を使用されている場合は "Platform for build scripts"、"Target platform"、"Source Level" にて Java 7 (1.7) を選択してください
(デスクトップ用プロジェクトに使用されている lwjgl が2014年3月29日時点で Java 8 に対応していないため)
上記設定が終わったら、"OK" ボタンをクリックし、設定を反映します
プロジェクトの設定が終わったので、各サブプロジェクトを実行してみます
最初はデスクトップ用アプリケーションを実行します
サブプロジェクト内の desktop をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > run」と選択し、クリックします
ビルドが実行され、以下のようなウィンドウが表示されます
次に Android 用アプリケーションを起動します
実行するために事前に端末の接続、またはエミュレータの準備を事前に行っていてください
今回は Genymotion を実行環境として使用します
サブプロジェクト内の android をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > installDebug」と選択し、クリックします
Android 用のタスクは量が多いため、表示できていない場合は「Custom Tasks > Custom Tasks」と選択し、表示された "Execute Custom Tasks" ウィンドウの "Tasks" フィールドに "installDebug" と入力し、 "Execute" ボタンをクリックすることで同様に実行することができます
("Save And Execute" ボタンをクリックすると、実行したタスクが保存されるため、2回目以降は入力の手間が省けます)
ビルドが実行され、接続していた端末、またはエミュレータにアプリケーションがインストールされます
実行すると以下のように表示されるかと思います
次は HTML5 (GWT) 用アプリケーションを起動します
サブプロジェクト内の android をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > superDev」と選択し、クリックします
(リスト内に "gwtSuperDev" という似た名前のタスクがありますが、こちらでは正常に起動できませんので、間違えないようご注意ください)
次にブラウザを開き、 "http://localhost:9876/" へアクセスします
(制限はないのですが、 Google Chrome ブラウザの使用をおすすめします)
以下のような表示がされるので、"Dev Mode On"、"Dev Mode Off" をブックマークレットとしてブックマークバーに登録ください
次に "http://localhost:8080/gwt/" へアクセスします
最初に以下のようなダイアログが表示されますので、先ほど登録した "Dev Mode On" ブックマークレットを実行します
実行すると、以下のように表示されるので、 "Compile" ボタンをクリックします
コンパイル終了後、以下のように表示されます
(再度先ほどのダイアログが出る場合がありますが、ローディングが終わるまでお待ちください)
最後に iOS 用アプリケーションを起動します
サブプロジェクト内の ios をダブルクリックして開きます
libGDX は Java 用クロスプラットフォームゲーム開発フレームワークで、現在 Windows, Mac, Linux, Android, iOS, BlackBerry, HTML5 をサポートしています
今までは開発には Eclipse を推奨していたこともあり、他の IDE にて開発するのは少し手間が必要でした
今回新たにセットアップツールの刷新が行われ、ビルドツールとして gradle が採用されたことにより、 NetBeans をはじめ、 Eclipse 以外の IDE 、エディタによる開発が簡単に行うことができるようになりました
本エントリでは、この新しいセットアップツールと、 NetBeans での libGDX プロジェクトの作成方法を紹介したいと思います
なお、 libGDX は現在も活発に開発が進められているプロジェクトであるため、閲覧される時点では挙動が異なる可能性があることをご了承ください
今回使用した環境は以下の通りになります
OS: Mac OS X 10.9.2
JDK: 1.7.0_51
Xcode: 5.1
※ Xcode は iOS プラットフォーム利用時のみ必要となります
NetBeans 8.0(Build 201403101706)
Gradle Support Plugin 1.3.0
まず、セットアップツールをダウンロードします
適当な場所に保存後、下記コマンドにてセットアップツール起動します
$ java -jar gdx-setup.jar
(※4月23日最新版セットアップツールに更新)
Name … アプリケーション名
Package … 作成するプロジェクトのパッケージ名
Game class … プラットフォーム共通(core)のメインゲームクラス名
Destination … プロジェクト作成先ディレクトリ
Android SDK … Android SDK のパス(local.properties に設定されます)
"Sub Project"、"Extensions" については必要に応じ、チェックを行ってください
入力後、 "Generate" ボタンをクリックすると、プロジェクトが "Destination" フィールドに指定した場所に生成されます
次に作成したプロジェクトを NetBeans で開きます
「ファイル > プロジェクトを開く」にて、生成されたディレクトリまで移動します
作成したプロジェクト(ルートプロジェクト)は、5つのサブプロジェクトで構成されます
android … Android 用プロジェクト
core … プラットフォーム共通プロジェクト
desktop … デスクトップ (Windows, Mac, Linux) 用プロジェクト
gwt … HTML5(GWT) 用プロジェクト
ios … iOS 用プロジェクト
各サブプロジェクトはダブルクリックすることで開くことができます
まず、ルートプロジェクトの設定を行います
(ルートプロジェクトに行った設定はすべてのサブプロジェクトに反映されます)
ルートプロジェクトを右クリックし、コンテキストメニューから "プロパティ" を選択すると以下のようなウィンドウが表示されます
"Gradle home" の "Inherit" チェックボックスをはずします
また、テキストボックスに値が入力されている場合は、それも削除し、空白の状態にします
お使いの環境が Mac で、 JDK に Java 8 を使用されている場合は "Platform for build scripts"、"Target platform"、"Source Level" にて Java 7 (1.7) を選択してください
(デスクトップ用プロジェクトに使用されている lwjgl が2014年3月29日時点で Java 8 に対応していないため)
上記設定が終わったら、"OK" ボタンをクリックし、設定を反映します
プロジェクトの設定が終わったので、各サブプロジェクトを実行してみます
最初はデスクトップ用アプリケーションを実行します
サブプロジェクト内の desktop をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > run」と選択し、クリックします
ビルドが実行され、以下のようなウィンドウが表示されます
次に Android 用アプリケーションを起動します
実行するために事前に端末の接続、またはエミュレータの準備を事前に行っていてください
今回は Genymotion を実行環境として使用します
サブプロジェクト内の android をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > installDebug」と選択し、クリックします
Android 用のタスクは量が多いため、表示できていない場合は「Custom Tasks > Custom Tasks」と選択し、表示された "Execute Custom Tasks" ウィンドウの "Tasks" フィールドに "installDebug" と入力し、 "Execute" ボタンをクリックすることで同様に実行することができます
("Save And Execute" ボタンをクリックすると、実行したタスクが保存されるため、2回目以降は入力の手間が省けます)
実行すると以下のように表示されるかと思います
次は HTML5 (GWT) 用アプリケーションを起動します
サブプロジェクト内の android をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Tasks > superDev」と選択し、クリックします
(リスト内に "gwtSuperDev" という似た名前のタスクがありますが、こちらでは正常に起動できませんので、間違えないようご注意ください)
次にブラウザを開き、 "http://localhost:9876/" へアクセスします
(制限はないのですが、 Google Chrome ブラウザの使用をおすすめします)
以下のような表示がされるので、"Dev Mode On"、"Dev Mode Off" をブックマークレットとしてブックマークバーに登録ください
最初に以下のようなダイアログが表示されますので、先ほど登録した "Dev Mode On" ブックマークレットを実行します
(再度先ほどのダイアログが出る場合がありますが、ローディングが終わるまでお待ちください)
サブプロジェクト内の ios をダブルクリックして開きます
開いたプロジェクトを右クリックし、表示されたコンテキスト内から「Build」を選択し、クリックします
ビルド終了後、再度プロジェクトを右クリックし、「Tasks > launchiPhoneSimulator」と選択し、クリックします
(今回は iPhone シミュレータでの実行を行いますが、 iPad シミュレータ、および実機での実行も可能です)
実行後、以下のように表示されます
(初回実行時はシミュレータ起動までかなり時間が掛かりますのでご注意ください)
以上が、サポートする各プラットフォームでの実行となります
新しいセットアップツールと gradle を使用することで、簡単に NetBeans 上にプロジェクト構築が出来ることをご理解頂けたかと思います
実際のゲーム開発は、サブプロジェクトにあった core (プラットフォーム共通)プロジェクトを中心に実装していくことになります
libGDX を使用したゲーム開発の詳細については、また別のエントリにて紹介できればと思います
2014年1月19日日曜日
NetBeans と RoboVM で iOS アプリ開発(Gradle 編)
前回に引き続き、 NetBeans と RoboVM で iOS アプリ開発を行う方法についてです
今回は Gradle を使用した開発を紹介します
Gradle プラグインは公式では提供されていませんので、拙作のプラグインを利用します
使用する環境は以下の通りです
OS: Mac OS X 10.9.1
Xcode: 5.0.2
NetBeans: 7.4 (Build 201310111528)
まず、使用する環境に Gradle をインストールします
以下の例では、 Homebrew を使用してインストールを行っています
次に NetBeans に Gradle Support プラグインをインストールします
拙作のサンプルアプリケーションのリポジトリを clone します
このサンプルアプリケーションは、公式のサンプルアプリケーションを Gradle 対応に変更したプロジェクトになります
clone 後、 Gradle wrapper を利用するため、プロジェクトのプロパティを開き、以下のように「Gradle home」のフィールドを空白に設定します
設定後、実際に動かしてみます
Gradle プラグインのタスクは下記の通りになっています
今回は Gradle を使用した開発を紹介します
Gradle プラグインは公式では提供されていませんので、拙作のプラグインを利用します
使用する環境は以下の通りです
OS: Mac OS X 10.9.1
Xcode: 5.0.2
NetBeans: 7.4 (Build 201310111528)
まず、使用する環境に Gradle をインストールします
以下の例では、 Homebrew を使用してインストールを行っています
$ brew install gradle
次に NetBeans に Gradle Support プラグインをインストールします
拙作のサンプルアプリケーションのリポジトリを clone します
このサンプルアプリケーションは、公式のサンプルアプリケーションを Gradle 対応に変更したプロジェクトになります
clone 後、 Gradle wrapper を利用するため、プロジェクトのプロパティを開き、以下のように「Gradle home」のフィールドを空白に設定します
設定後、実際に動かしてみます
Gradle プラグインのタスクは下記の通りになっています
- launchIPhoneSimulator … iPhone シミュレータにて実行
- launchIPadSimulator … iPad シミュレータにて実行
- launchIOSDevice … 実機にて実行(要プロビジョニング済)
- createIPA … ipa ファイル生成
今回は Maven プラグインのときと同様に iPhone シミュレータにて実行します
プロジェクトのコンテキストメニューから「Tasks」>「launchIPhoneSimulator」を実行します
初回実行時はビルドに時間が掛かりますが、完了後以下のように iPhone シミュレータが起動します
Maven 、 Gradle を利用した RoboVM による iOS アプリケーション開発ということで前回、今回と紹介してきました
今後、 RoboVM についてより詳しい紹介を行えたらと思います
2014年1月18日土曜日
NetBeans と RoboVM で iOS アプリ開発(Maven 編)
NetBeans と RoboVM で iOS アプリ開発を行う方法について紹介します
まず、 RoboVM についてですが、 Java にて iOS 用ネイティブアプリケーションを作成することができるコンパイラ、およびライブラリとなります
(詳細は公式ページ等を参照ください)
RoboVM コミュニティでは上述のコンパイラ、ライブラリに加え、 Maven 用プラグイン、 Eclipse 用プラグインが配布されていますが、残念ながらNetBeans 用プラグインはありません
NetBeans にて RoboVM を利用するにはいくつか方法がありますが、 Maven プラグインを使用する方法が最も簡単かと思います
Maven プラグインの使い方を、サンプルアプリケーションを使って解説します
使用する環境は以下の通りです
OS: Mac OS X 10.9.1
Xcode: 5.0.2
NetBeans: 7.4 (Build 201310111528)
まず、 github にある RoboVM サンプルアプリケーションのリポジトリを cloneします
clone 後、最新の RoboVM 、 Maven プラグインを利用するために pom.xml を編集します
2014年1月18日現在、最新の RoboVM のバージョンは "0.0.8"、 Maven プラグインのバージョンは "0.0.8.1"になるので、以下の2カ所を修正します
設定後、実際に動かしてみます
Maven プラグインのゴールは下記の通りになっています
まず、 RoboVM についてですが、 Java にて iOS 用ネイティブアプリケーションを作成することができるコンパイラ、およびライブラリとなります
(詳細は公式ページ等を参照ください)
RoboVM コミュニティでは上述のコンパイラ、ライブラリに加え、 Maven 用プラグイン、 Eclipse 用プラグインが配布されていますが、残念ながらNetBeans 用プラグインはありません
NetBeans にて RoboVM を利用するにはいくつか方法がありますが、 Maven プラグインを使用する方法が最も簡単かと思います
Maven プラグインの使い方を、サンプルアプリケーションを使って解説します
使用する環境は以下の通りです
OS: Mac OS X 10.9.1
Xcode: 5.0.2
NetBeans: 7.4 (Build 201310111528)
まず、 github にある RoboVM サンプルアプリケーションのリポジトリを cloneします
clone 後、最新の RoboVM 、 Maven プラグインを利用するために pom.xml を編集します
2014年1月18日現在、最新の RoboVM のバージョンは "0.0.8"、 Maven プラグインのバージョンは "0.0.8.1"になるので、以下の2カ所を修正します
<plugin>
<groupId>org.robovm</groupId>
<artifactId>robovm-maven-plugin</artifactId>
<version>0.0.8.1</version>
<configuration>
<config>
<mainClass>org.robovm.sample.ios.RoboVMSampleIOSApp</mainClass>
<os>ios</os>
<arch>x86</arch>
</config>
</configuration>
</plugin>
<groupId>org.robovm</groupId>
<artifactId>robovm-maven-plugin</artifactId>
<version>0.0.8.1</version>
<configuration>
<config>
<mainClass>org.robovm.sample.ios.RoboVMSampleIOSApp</mainClass>
<os>ios</os>
<arch>x86</arch>
</config>
</configuration>
</plugin>
<dependency>
<groupId>org.robovm</groupId>
<artifactId>robovm-rt</artifactId>
<version>0.0.8</version>
</dependency>
<dependency>
<groupId>org.robovm</groupId>
<artifactId>robovm-cocoatouch</artifactId>
<version>0.0.8</version>
</dependency>
<groupId>org.robovm</groupId>
<artifactId>robovm-rt</artifactId>
<version>0.0.8</version>
</dependency>
<dependency>
<groupId>org.robovm</groupId>
<artifactId>robovm-cocoatouch</artifactId>
<version>0.0.8</version>
</dependency>
設定後、実際に動かしてみます
Maven プラグインのゴールは下記の通りになっています
- robovm:iphone-sim … iPhone シミュレータにて実行
- robovm:ipad-sim … iPad シミュレータにて実行
- robovm:ios-device … 実機にて実行(要プロビジョニング済)
- robovm:create-ipa … ipa ファイル生成
コンテキストメニューより「カスタム」>「ゴール...」を選択します
表示されたウィンドウにて、"robovm:iphone-sim" を入力し、「OK」ボタンをクリックします
初回実行時はビルドに時間が掛かりますが、完了後以下のように iPhone シミュレータが起動します
RoboVM はまだ開発途上のプロダクトですが、ゲーム開発などパフォーマンスが要求されるような場面でも十分に使用できるレベルまでになっていると思います
Java + RoboVM + NetBeans にて iOS アプリケーション開発に挑戦してみてはいかがでしょうか
2013年3月16日土曜日
NetBeans IDE 7.3 リリース
2012年3月14日水曜日
NetBeans Scala サポート(NetBeans 7.1 & Scala 2.9.x)
NetBeans Scala サポートに関して、最近動きがありましたので、ご紹介したいと思います
まず、ソースリポジトリは https://github.com/dcaoyuan/nbscala へ一本化されるようです
なお、バイナリ配布は以前と同様、 http://sourceforge.net/projects/erlybird にて行うとのことです
2012年3月14日現在、スナップショットビルドとして "nbscala-7.1v2.9.x-0.1" が入手可能となっています
上記スナップショットビルドをダウンロードし、含まれる nbm ファイルをインストールすることでプラグインを使用することができます
以前の投稿と比較すると、インストールするパッケージが大幅に増えているのがわかるかとおもいます
動作環境は以下の通りです(README.md より)
* Java 1.6 (Java 1.7 not supported yet)
* Maven 2.x/3.x
* NetBeans 7.1
Java 7 は未サポートとのことなので、ご注意ください
また、 NetBeans 7.1 とありますが、現状 7.1.1 でも動作に問題はないようです
正直、現状の完成度としては Scala IDE for Eclipse や IntelliJ IDEA の Scala プラグインには及びませんが、開発が再開したということで、今後より機能が充実していくよう、フィードバックできたらと思います
個人的に、 sbt 対応してくれたらなと願っています
まず、ソースリポジトリは https://github.com/dcaoyuan/nbscala へ一本化されるようです
なお、バイナリ配布は以前と同様、 http://sourceforge.net/projects/erlybird にて行うとのことです
2012年3月14日現在、スナップショットビルドとして "nbscala-7.1v2.9.x-0.1" が入手可能となっています
上記スナップショットビルドをダウンロードし、含まれる nbm ファイルをインストールすることでプラグインを使用することができます
以前の投稿と比較すると、インストールするパッケージが大幅に増えているのがわかるかとおもいます
動作環境は以下の通りです(README.md より)
* Java 1.6 (Java 1.7 not supported yet)
* Maven 2.x/3.x
* NetBeans 7.1
Java 7 は未サポートとのことなので、ご注意ください
また、 NetBeans 7.1 とありますが、現状 7.1.1 でも動作に問題はないようです
正直、現状の完成度としては Scala IDE for Eclipse や IntelliJ IDEA の Scala プラグインには及びませんが、開発が再開したということで、今後より機能が充実していくよう、フィードバックできたらと思います
個人的に、 sbt 対応してくれたらなと願っています
2012年3月3日土曜日
NetBeans IDE 7.1.1 リリース
NetBeans IDE 7.1.1 がリリースされました
位置づけとしては、パッチ1ということで、大きな変更はなく、下記のような対応がなされたようです
・GlassFish 3.1.2 のサポート
・最近のパッチの統合
・パフォーマンスの改善
今回のパッチにて改修されたバグの一覧はコチラになります
7.1 ご利用の方は、再インストールすることなく、そのままアップグレードできます
そして、恒例のスプラッシュです
7.1.1 に関する情報のページにて、次回は NetBeans 7.1 Patch 2 とあったので、(2012年3月3日現在) 記載されているスケジュール通り 7.1.2 が 4月下旬にリリースされる予定かと思います
不具合等、何かお気づきの点などありましたら、 ML Twitter 等へご連絡頂ければと思います
位置づけとしては、パッチ1ということで、大きな変更はなく、下記のような対応がなされたようです
・GlassFish 3.1.2 のサポート
・最近のパッチの統合
・パフォーマンスの改善
今回のパッチにて改修されたバグの一覧はコチラになります
7.1 ご利用の方は、再インストールすることなく、そのままアップグレードできます
そして、恒例のスプラッシュです
7.1.1 に関する情報のページにて、次回は NetBeans 7.1 Patch 2 とあったので、(2012年3月3日現在) 記載されているスケジュール通り 7.1.2 が 4月下旬にリリースされる予定かと思います
不具合等、何かお気づきの点などありましたら、 ML Twitter 等へご連絡頂ければと思います
2012年1月7日土曜日
NetBeans IDE 7.1 リリース
NetBeans IDE 7.1 がリリースされました
ダウンロードはコチラからできるようになっております
7.1 にて追加された新機能に関しては、コチラを参照ください
また、 Mac 用ニーモニック除去バージョンの7.1用日本語パックはコチラからダウンロードできます
恒例のスプラッシュです
今回、個人的な目玉新機能はやはり Git サポートです
github でのアウトプットも定着した昨今では、やはりありがたい新機能です
近日中にこの機能について紹介できたらと思います
これ以外にも JavaFX 2.0 サポート、 CSS3 サポート、 PHP 開発者には嬉しい Smarty サポートなどの機能追加も行われています
不具合等、何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
7.1 にて追加された新機能に関しては、コチラを参照ください
また、 Mac 用ニーモニック除去バージョンの7.1用日本語パックはコチラからダウンロードできます
恒例のスプラッシュです
今回、個人的な目玉新機能はやはり Git サポートです
github でのアウトプットも定着した昨今では、やはりありがたい新機能です
近日中にこの機能について紹介できたらと思います
これ以外にも JavaFX 2.0 サポート、 CSS3 サポート、 PHP 開発者には嬉しい Smarty サポートなどの機能追加も行われています
不具合等、何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
2012年1月1日日曜日
2012年やりたいこと
昨年後半はいろいろと個人的にバタバタしたため、ブログの更新もほとんどできていませんでした
(NetBeans 7.1 も RC2 まで現在リリースされていますが、ご紹介できていない状態ですし…)
今年は少し余裕ができるのではという感じなので、ブログも含め、以下のことを中心に学習、アウトプットをしていきたいと思っています
(宣言的に書かないと、そのままダラダラと流されそうなので…)
・ NetBeans の機能紹介
・ OrientDB を中心とする GraphDB 関連について
・ ネットワークなど、過去見送ってきた基礎知識に関しての学習記録
・ NetBeans 用プラグインの開発について
・ Scala や Python 、 PHP などについて
とにかく、継続してアウトプットすることを頑張りたいと思います
まずは、今月上旬には 7.1 が正式にリリースされる予定なので、そちらについて紹介できればと思います
(7.1 以降のリリーススケジュールについては、 2012年1月1日現在では不明ですが…)
今年も本ブログを何卒、宜しくお願い致します
(NetBeans 7.1 も RC2 まで現在リリースされていますが、ご紹介できていない状態ですし…)
今年は少し余裕ができるのではという感じなので、ブログも含め、以下のことを中心に学習、アウトプットをしていきたいと思っています
(宣言的に書かないと、そのままダラダラと流されそうなので…)
・ NetBeans の機能紹介
・ OrientDB を中心とする GraphDB 関連について
・ ネットワークなど、過去見送ってきた基礎知識に関しての学習記録
・ NetBeans 用プラグインの開発について
・ Scala や Python 、 PHP などについて
とにかく、継続してアウトプットすることを頑張りたいと思います
まずは、今月上旬には 7.1 が正式にリリースされる予定なので、そちらについて紹介できればと思います
(7.1 以降のリリーススケジュールについては、 2012年1月1日現在では不明ですが…)
今年も本ブログを何卒、宜しくお願い致します
2011年10月4日火曜日
NetBeans IDE 7.1 Beta リリース
2011年8月3日水曜日
NetBeans IDE 7.0.1 リリース
NetBeans IDE 7.0.1 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
今回は、先日リリースされた Java SE 7 の完全対応がメインとなっています
その他には、同梱されている Glassfish のバージョンがあがっていること、いくつかのバグフィックスがなされていることなどがあります
現在、7.0 をお使いの方は、自動アップデートにて 7.0.1 相当になりますので、再インストールすることなく、アップグレードできます
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
今回は、先日リリースされた Java SE 7 の完全対応がメインとなっています
その他には、同梱されている Glassfish のバージョンがあがっていること、いくつかのバグフィックスがなされていることなどがあります
現在、7.0 をお使いの方は、自動アップデートにて 7.0.1 相当になりますので、再インストールすることなく、アップグレードできます
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
2011年4月21日木曜日
NetBeans IDE 7.0 リリース
当初の予定よりも遅くなりましたが、 NetBeans IDE 7.0 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
7.0 によって追加、または改善された主なポイントは以下のようになっています
・シンタックス、ヒントなどのエディタ拡張を含んだ、JDK 7 サポート
・WebLogic Application Server 、 GlassFish 3.1 サポートの改修
・Oracle Database サポートの改善
・HTML5 編集サポート
・Maven 3 サポートと IDE への同梱
・CDI、REST サービス、Java Persistence 、Bean Validation のサポート改善
・PHPリネームリファクタリング対応
・外部での変更検出の改善
・C/C++ サポートの更新
その他の機能については、 コチラを参照頂ければと思います
また、以前にも書いていますが、 7.0 より JUnit が同梱配布されなくなりましたので、 NetBeans 本体インストール後別途プラグインとしてのインストールが必要となります
手順は簡単ですので、詳細は以前のエントリを参考にして頂ければと思います
次回のリリースは、4月21日時点でのロードマップ上ではバージョン番号が7.0.1、リリース予定日が2011年の7月になっています
また、主要な実装機能もコチラにて掲載が始まっています
(バージョン番号からもわかる通り、メインはバグフィックスと JDK7 の対応強化となり、新機能追加の予定はないようです)
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
7.0 によって追加、または改善された主なポイントは以下のようになっています
・シンタックス、ヒントなどのエディタ拡張を含んだ、JDK 7 サポート
・WebLogic Application Server 、 GlassFish 3.1 サポートの改修
・Oracle Database サポートの改善
・HTML5 編集サポート
・Maven 3 サポートと IDE への同梱
・CDI、REST サービス、Java Persistence 、Bean Validation のサポート改善
・PHPリネームリファクタリング対応
・外部での変更検出の改善
・C/C++ サポートの更新
その他の機能については、 コチラを参照頂ければと思います
また、以前にも書いていますが、 7.0 より JUnit が同梱配布されなくなりましたので、 NetBeans 本体インストール後別途プラグインとしてのインストールが必要となります
手順は簡単ですので、詳細は以前のエントリを参考にして頂ければと思います
次回のリリースは、4月21日時点でのロードマップ上ではバージョン番号が7.0.1、リリース予定日が2011年の7月になっています
また、主要な実装機能もコチラにて掲載が始まっています
(バージョン番号からもわかる通り、メインはバグフィックスと JDK7 の対応強化となり、新機能追加の予定はないようです)
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
2011年4月12日火曜日
オープンソース NoSQL データベース OrientDB を使ってみる #3
前回の投稿から半年以上過ぎましたが、OrientDB の紹介3回目です
前の2回は以下の通りです
・オープンソース NoSQL データベース OrientDB を使ってみる #1
・オープンソース NoSQL データベース OrientDB を使ってみる #2
データ間の関連(リレーション)について紹介します
データ間の関連とは2つの異なるレコードを関連付けることで、データの透過的な参照や複雑なデータ構造の表現が可能となります
OrientDB では参照型( Referenced relationships )と組込型( Embedded relationships )という2種類の関連付けをサポートしています
参照型は、フィールドに対象レコードのレコードID(全レコードにてユニークとなるID)を持つことでデータ間の関連付けを行います
そのため、関連付ける各レコードは独立したレコードとして各々参照できる必要があります
対して組込型は、フィールドに直接レコードをそのものを設定するもので、組み込まれたレコードを独立して参照することはできません
また、参照、組込型として関連付けられるデータは 1:1 だけでなく、各々 List 、 Set 、 Map という 1:N 、または N:M の関係を作ることができます
(今回はこの部分の説明の詳細は省略させて頂きます)
それでは実際にデータの登録を行い、どのような構造のレコードが生成されるかを説明したいと思います
今回使用した環境は下記の通りです
・Mac OS X 10.6.7
・Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
・OrientDB 0.9.25
・NetBeans 7.0 RC2
以降は上記環境にて、サーバの起動、専用クライアント(コンソール)の接続まで完了している前提で進めます
サーバやクライアントの起動方法、クライアントを使用したレコード操作などについては、前々回のエントリを参照ください
また、文中で使われるレコードIDは環境により異なりますので、お使いの環境にあわせて読み替えてください
まず、テストデータを登録するため、下記クエリを実行して Person クラスと Group クラスを作成します
( ">" はプロンプトとなりますので、コピーして実行する際にはご注意ください)
次に参照型の関連フィールドを持つレコードを作成します
関連付けるレコードは先ほど登録した Group クラスのレコードです
下記クエリを実行して、 レコードを登録します
(そのため、事前に関連づけるレコードIDを知っておく必要があります)
上記の場合、 "group" というフィールドにレコードIDを設定しており、これで Person クラスと Group クラスの各レコードが関連付けられることとなります
下記コマンドで Person クラスに6レコード登録されたことが確認できます
以下は select 文にて group フィールドに関連付けられた、 Group クラスの name フィールドを参照しています
(where 句にある "@rid" はレコードIDを意味するレコード属性になります)
(import 文、パッケージ名は省略しますのでご注意下さい)
参照型の関連付けを行う方法はクエリを使用したケースと同様にフィールドにレコードIDを設定します
Java API にてレコードID( Java API では ORID クラスにて表現されています)を取得するには、ODocument クラスの getIdentity() メソッドを使用します
なお、新規レコードの場合、事前に save() メソッドを呼び出してデータベースに登録が完了していないとレコードIDは取得できませんので、ご注意ください
レコードを取得する場合は下記のようになります
次に組込型の関連付けですが、現在(2011年4月12日時点)のバージョンではクエリによる組込型のレコードの登録、更新(参照は可能です)は対応しておらず、 Java API でのみとなります
Java API を利用する場合の登録は以下のようになります
参照型と大きく異なる点は作成した Weapon クラスの save()メソッドを呼び出していない点、取得した Person クラスの "weapon" フィールドに設定する際、第3引数に "OType.EMBEDDED" を設定している点です
レコードの参照方法に関しては、組込型も参照型も差異はありません
組込まれたレコードのフィールドも同様の形式で参照可能です
次回は、 OrientDB のグラフデータベースとしての機能を紹介したいと思います
(次はあまり期間をあけないようしたいと思います…)
前の2回は以下の通りです
・オープンソース NoSQL データベース OrientDB を使ってみる #1
・オープンソース NoSQL データベース OrientDB を使ってみる #2
データ間の関連(リレーション)について紹介します
データ間の関連とは2つの異なるレコードを関連付けることで、データの透過的な参照や複雑なデータ構造の表現が可能となります
OrientDB では参照型( Referenced relationships )と組込型( Embedded relationships )という2種類の関連付けをサポートしています
参照型は、フィールドに対象レコードのレコードID(全レコードにてユニークとなるID)を持つことでデータ間の関連付けを行います
そのため、関連付ける各レコードは独立したレコードとして各々参照できる必要があります
対して組込型は、フィールドに直接レコードをそのものを設定するもので、組み込まれたレコードを独立して参照することはできません
また、参照、組込型として関連付けられるデータは 1:1 だけでなく、各々 List 、 Set 、 Map という 1:N 、または N:M の関係を作ることができます
(今回はこの部分の説明の詳細は省略させて頂きます)
それでは実際にデータの登録を行い、どのような構造のレコードが生成されるかを説明したいと思います
今回使用した環境は下記の通りです
・Mac OS X 10.6.7
・Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
・OrientDB 0.9.25
・NetBeans 7.0 RC2
以降は上記環境にて、サーバの起動、専用クライアント(コンソール)の接続まで完了している前提で進めます
サーバやクライアントの起動方法、クライアントを使用したレコード操作などについては、前々回のエントリを参照ください
また、文中で使われるレコードIDは環境により異なりますので、お使いの環境にあわせて読み替えてください
まず、テストデータを登録するため、下記クエリを実行して Person クラスと Group クラスを作成します
( ">" はプロンプトとなりますので、コピーして実行する際にはご注意ください)
> create class Person > create class Group次に Group クラス のデータを登録します
> insert into Group (name) values ('Rebel Alliance')
> insert into Group (name) values ('Galactic Empire')下記コマンドで Group クラスに2レコード登録されたことが確認できます> browse class Group ---+--------+-------------------- #| REC ID |NAME ---+--------+-------------------- 0| 25:0|Rebel Alliance 1| 25:1|Galactic Empire ---+--------+--------------------"REC ID" は先の説明のレコードIDを指し、 "Rebel Alliance" は "25:0" 、 "Galactic Empire" は "25:1" のレコードIDを持つこととなります
次に参照型の関連フィールドを持つレコードを作成します
関連付けるレコードは先ほど登録した Group クラスのレコードです
下記クエリを実行して、 レコードを登録します
> insert into Person (name, surname, group) values ('Luke', 'Skywalker', 25:0)
> insert into Person (name, surname, group) values ('Han', 'Solo', 25:0)
> insert into Person (name, group) values ('Chewbacca', 25:0)
> insert into Person (name, surname, group) values ('Leia', 'Organa', 25:0)
> insert into Person (name, group) values ('Darth Sidious', 25:1)
> insert into Person (name, group) values ('Darth Vader', 25:1)レコードに関連付けを設定する場合は、フィールドに対象のレコードIDを直接記述します(そのため、事前に関連づけるレコードIDを知っておく必要があります)
上記の場合、 "group" というフィールドにレコードIDを設定しており、これで Person クラスと Group クラスの各レコードが関連付けられることとなります
下記コマンドで Person クラスに6レコード登録されたことが確認できます
> browse class Person ---+--------+--------------------+--------------------+-------------------- #| REC ID |NAME |SURNAME |GROUP ---+--------+--------------------+--------------------+-------------------- 0| 24:0|Luke |Skywalker |25:0 1| 24:1|Han |Solo |25:0 2| 24:2|Chewbacca |null |25:0 3| 24:3|Leia |Organa |25:0 4| 24:4|Darth Sidious |null |25:1 5| 24:5|Darth Vader |null |25:1 ---+--------+--------------------+--------------------+--------------------関連付けられたレコードに対しては、「フィールド名.対象レコードのフィールド名」の形式で指定することで値を参照することができます
以下は select 文にて group フィールドに関連付けられた、 Group クラスの name フィールドを参照しています
(where 句にある "@rid" はレコードIDを意味するレコード属性になります)
> select name, surname, group.name from Person where @rid = 24:0 ---+--------+--------------------+--------------------+-------------------- #| REC ID |NAME |SURNAME |GROUP ---+--------+--------------------+--------------------+-------------------- 0| -1:-1|Luke |Skywalker |Rebel Alliance ---+--------+--------------------+--------------------+--------------------また、他のフィールドと同様に where 句の検索条件としても使用できます
> select from Person where group.name = 'Rebel Alliance' ---+--------+--------------------+--------------------+-------------------- #| REC ID |NAME |SURNAME |GROUP ---+--------+--------------------+--------------------+-------------------- 0| 24:0|Luke |Skywalker |25:0 1| 24:1|Han |Solo |25:0 2| 24:2|Chewbacca |null |25:0 3| 24:3|Leia |Organa |25:0 ---+--------+--------------------+--------------------+--------------------Java API を利用する場合、参照型レコードの登録は以下のようになります
(import 文、パッケージ名は省略しますのでご注意下さい)
public class Main {
public static void main(String[] args) {
// admin ユーザでサーバーの demo データベースに接続します
ODatabaseDocumentTx database = new ODatabaseDocumentTx("remote:localhost/demo").open("admin", "admin");
// 新規レコード(Group)の作成
ODocument jediOrder = new ODocument(database, "Group");
jediOrder.field("name", "Jedi Order");
jediOrder.save();
// ユニークIDを取得
ORID jediOrderORID = jediOrder.getIdentity();
// 新規レコード(Rank)の作成
ODocument master = new ODocument(database, "Rank");
master.field("name", "Jedi Master");
master.save();
// ユニークIDを取得
ORID masterOrderORID = master.getIdentity();
ODocument knight = new ODocument(database, "Rank");
knight.field("name", "Jedi Knight");
knight.save();
// ユニークIDを取得
ORID knightOrderORID = knight.getIdentity();
ODocument padawan = new ODocument(database, "Rank");
padawan.field("name", "Padawan");
padawan.save();
// ユニークIDを取得
ORID padawanOrderORID = padawan.getIdentity();
// 新規レコード(Person)の作成
ODocument yoda = new ODocument(database, "Person");
yoda.field("name", "Yoda");
yoda.field("group", jediOrderORID);
yoda.field("rank", masterOrderORID);
yoda.save();
ODocument obiwan = new ODocument(database, "Person");
obiwan.field("name", "Obi-Wan");
obiwan.field("surname", "Kenobi");
obiwan.field("group", jediOrderORID);
obiwan.field("rank", knightOrderORID);
obiwan.save();
ODocument ahsoka = new ODocument(database, "Person");
ahsoka.field("name", "Ahsoka");
ahsoka.field("surname", "Tano");
ahsoka.field("group", jediOrderORID);
ahsoka.field("rank", padawanOrderORID);
ahsoka.save();
// 接続の解除
database.close();
}
}上記では Group クラスに1レコード登録、Rank クラスの新規作成と3レコード登録、 Person クラスに3レコード登録しています参照型の関連付けを行う方法はクエリを使用したケースと同様にフィールドにレコードIDを設定します
Java API にてレコードID( Java API では ORID クラスにて表現されています)を取得するには、ODocument クラスの getIdentity() メソッドを使用します
なお、新規レコードの場合、事前に save() メソッドを呼び出してデータベースに登録が完了していないとレコードIDは取得できませんので、ご注意ください
レコードを取得する場合は下記のようになります
public class Main {
public static void main(String[] args) {
// admin ユーザでサーバーの demo データベースに接続します
ODatabaseDocumentTx database = new ODatabaseDocumentTx("remote:localhost/demo").open("admin", "admin");
System.out.println("-----レコードIDを指定してレコードを取得-----");
// RID=24:6(Yoda) を取得
ODocument yoda = new ODocument(database, new ORecordId(24, 6));
// group フィールドを取得
ODocument yodaGroup = yoda.field("group");
Object yodaGroupName = yodaGroup == null ? "" : yodaGroup.field("name");
// rank 1フィールドを取得
ODocument yodaRank = yoda.field("rank");
Object yodaRankName = yodaRank == null ? "" : yodaRank.field("name");
// 取得レコードの出力
System.out.println("name : " + yoda.field("name"));
System.out.println("surname: " + yoda.field("surname"));
System.out.println("group : " + yodaGroupName);
System.out.println("rank : " + yodaRankName);
System.out.println();
System.out.println("-----クエリを実行してレコードを取得-----");
// SELECT 文を作成する
String selectQuery = "select from Person where group.name = 'Jedi Order' ";
// クエリを実行する
List<ODocument> people = database.query(new OSQLSynchQuery<ODocument>(selectQuery));
for (ODocument person : people) {
// group フィールドを取得
ODocument group = person.field("group");
Object groupName = group == null ? "" : group.field("name");
// rank 1フィールドを取得
ODocument rank = person.field("rank");
Object rankName = rank == null ? "" : rank.field("name");
// 取得レコードの出力
System.out.println("name : " + person.field("name"));
System.out.println("surname: " + person.field("surname"));
System.out.println("group : " + groupName);
System.out.println("rank : " + rankName);
System.out.println();
}
// 接続の解除
database.close();
}
}上記を実行すると、以下のように値が取得できます-----レコードIDを指定してレコードを取得----- name : Yoda surname: null group : Jedi Order rank : Jedi Master -----クエリを実行してレコードを取得----- name : Yoda surname: null group : Jedi Order rank : Jedi Master name : Obi-Wan surname: Kenobi group : Jedi Order rank : Jedi Knight name : Ahsoka surname: Tano group : Jedi Order rank : Padawan
次に組込型の関連付けですが、現在(2011年4月12日時点)のバージョンではクエリによる組込型のレコードの登録、更新(参照は可能です)は対応しておらず、 Java API でのみとなります
Java API を利用する場合の登録は以下のようになります
public class Main {
public static void main(String[] args) {
// admin ユーザでサーバーの demo データベースに接続します
ODatabaseDocumentTx database = new ODatabaseDocumentTx("remote:localhost/demo").open("admin", "admin");
// 新規レコードを作成
ODocument lightsaber = new ODocument(database, "Weapon");
lightsaber.field("name", "Lightsaber");
lightsaber.field("type", "sword");
// RID=24:0(Luke) を取得
ODocument luke = new ODocument(database, new ORecordId(24, 0));
luke.field("weapon", lightsaber, OType.EMBEDDED);
luke.save();
database.close();
}
}上記では Weapon クラスのレコードを1件作成し、 Person クラスのレコードの "weapon" フィールドに設定しています参照型と大きく異なる点は作成した Weapon クラスの save()メソッドを呼び出していない点、取得した Person クラスの "weapon" フィールドに設定する際、第3引数に "OType.EMBEDDED" を設定している点です
レコードの参照方法に関しては、組込型も参照型も差異はありません
> select from Person where @rid = 24:0 ---+--------+--------------------+--------------------+--------------------+-------------------- #| REC ID |NAME |WEAPON |SURNAME |GROUP ---+--------+--------------------+--------------------+--------------------+-------------------- 0| 24:0|Luke |-1:-1 |Skywalker |25:0 ---+--------+--------------------+--------------------+--------------------+--------------------参照型のフィールド "group" にはレコードIDの値("25:0")が設定されているのに対し、組込型は直接レコードが設定されているため、レコードIDは設定されていません
組込まれたレコードのフィールドも同様の形式で参照可能です
> select name, surname, weapon.name, weapon.type from Person where @rid = 24:0 ---+--------+--------------------+--------------------+--------------------+-------------------- #| REC ID |NAME |WEAPON |SURNAME |WEAPON2 ---+--------+--------------------+--------------------+--------------------+-------------------- 0| -1:-1|Luke |Lightsaber |Skywalker |sword ---+--------+--------------------+--------------------+--------------------+--------------------以上が OrientDB の関連付けの機能の紹介と利用方法になります
次回は、 OrientDB のグラフデータベースとしての機能を紹介したいと思います
(次はあまり期間をあけないようしたいと思います…)
2011年4月9日土曜日
NetBeans IDE 7.0 RC 2 リリース
NetBeans IDE 7.0 RC2 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
リリース予定が延びて、(4月9日現時点では)4月中予定というざっくりとした感じになったみたいです
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
リリース予定が延びて、(4月9日現時点では)4月中予定というざっくりとした感じになったみたいです
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
2011年3月30日水曜日
NetBeans IDE 7.0 RC 1 リリース
NetBeans IDE 7.0 RC1 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
既に3月も終わろうとしていますが、本日(2011年3月30日)時点では4月4日の正式リリース予定に変更はないようです
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
既に3月も終わろうとしていますが、本日(2011年3月30日)時点では4月4日の正式リリース予定に変更はないようです
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います
2011年2月20日日曜日
NetBeans IDE 7.0 Beta 2 リリース
NetBeans IDE 7.0 Beta2 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
既にご存知の方も多いかと思いますが、ライセンスの関係で NetBeans と JUnit は(ライセンス問題が解決するまでは)同梱されて配布されなくなるようです
といっても、同梱されないだけで、ユーザ自身でライセンスに承認することで関連モジュールと一緒にダウンロード、インストールすることが可能となっており、インストール後は従来通りの機能が利用できます
まず、インストール直後の初回起動にて、下記のようなメッセージが表示されます
(現在は英語で表示されていますが、日本語化が進めば、日本語のメッセージが表示されると思います)
「了解」ボタンをクリックすることで、ダウンロードを開始します
ダウンロードが終了すると、インストール画面が表示されます
「次へ」ボタンをクリックすると、JUnit ライセンス承認となりますので、内容を確認後、承認する場合は「すべてのライセンス契約条件に同意する。」チェックボックスをチェックし、「インストール」ボタンをクリックします。
以降はウィザードの指示に従い、 NetBeans の再起動を行って終了です
Beta 2 では JUnit 4.8.2 を利用することができます
正式リリースまでにライセンス問題が解決するかは不明ですので、インストール後に上記のようなひと作業があることを念頭に入れておく必要がありそうです
また、Beta 2 では以前ご紹介させて頂いていた Git サポートがインストール可能となっています
アップデートセンターの登録など、特別な設定をしなくても「使用可能なプラグイン」として表示されます
※開発途中のプラグインですので、ご利用は自己責任でお願いします
Beta 2 以降は、3月にRCリリース、4月に正式リリース予定となっています
何かお気づきの点などありましたら、 ML へご連絡頂ければと思います
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです
既にご存知の方も多いかと思いますが、ライセンスの関係で NetBeans と JUnit は(ライセンス問題が解決するまでは)同梱されて配布されなくなるようです
といっても、同梱されないだけで、ユーザ自身でライセンスに承認することで関連モジュールと一緒にダウンロード、インストールすることが可能となっており、インストール後は従来通りの機能が利用できます
まず、インストール直後の初回起動にて、下記のようなメッセージが表示されます
(現在は英語で表示されていますが、日本語化が進めば、日本語のメッセージが表示されると思います)
「了解」ボタンをクリックすることで、ダウンロードを開始します
ダウンロードが終了すると、インストール画面が表示されます
「次へ」ボタンをクリックすると、JUnit ライセンス承認となりますので、内容を確認後、承認する場合は「すべてのライセンス契約条件に同意する。」チェックボックスをチェックし、「インストール」ボタンをクリックします。
以降はウィザードの指示に従い、 NetBeans の再起動を行って終了です
Beta 2 では JUnit 4.8.2 を利用することができます
正式リリースまでにライセンス問題が解決するかは不明ですので、インストール後に上記のようなひと作業があることを念頭に入れておく必要がありそうです
また、Beta 2 では以前ご紹介させて頂いていた Git サポートがインストール可能となっています
アップデートセンターの登録など、特別な設定をしなくても「使用可能なプラグイン」として表示されます
※開発途中のプラグインですので、ご利用は自己責任でお願いします
Beta 2 以降は、3月にRCリリース、4月に正式リリース予定となっています
何かお気づきの点などありましたら、 ML へご連絡頂ければと思います
2011年1月14日金曜日
プロジェクトのアイコンを変えるプラグインを作ってみる
2011年1回目で早速一発ネタです
NetBans のプロジェクトウィンドウに表示されるアイコンをプラグインで変える方法についての紹介です
なお、7.0 以降に実装予定の API を使用していますので、お試しされる際には 7.0 Beta などをご使用下さい
また、実装予定の機能ですので、正式なリリースでは実装されない可能性があります
ご注意下さい
まず、事前に必要なものはプロジェクトのアイコンと差し替える画像です
16 x 16 のサイズの画像をご用意してください
今回は 以前作成したねこび〜んアイコンの画像を使用します
(オリジナルのねこび〜んはカネウチカズコさんによるものです)
次にモジュール用のプロジェクトを作成します
プロジェクト名などは適当な値を設定してください
プロジェクト作成後、事前に準備した画像ファイルを適当な場所にコピーします
(今回の例では、"resources" ディレクトリを作成し、その中にコピーしています)
次は今回のプラグイン(モジュール)に必要な API の設定を行います
プロジェクトのプロパティ画面の「ライブラリ」カテゴリを選択し、「ライブラリの依存関係」タブの「追加」ボタンをクリックし、"Lookup API"、"プロジェクト API"、"ユーティリティ API"の3つのAPIを追加します
追加後は下記のように表示されます
「了解」ボタンをクリックして、プロパティ画面を閉じます
最後にアイコンの差し替えに必要なクラスを作成します
(といっても、1クラスのみですが…)
クラスの中身は下記の通りです
(パッケージやクラス名は適当ですので、適宜読み替えてください)
今回使う API は ProjectIconAnnotator インターフェイスです
インターフェイス名からわかる通り、プロジェクトのアイコンに注釈(エラーマークなどのバッジ)を表示するための API ですので、今回のような使い方はいわば邪道だったりします
なお、 6.9.1 以前のバージョンではこの API が存在しないため、プロジェクトツリーが表示される前にアイコンを変更することは無理っぽいです
(詳しくは、 LogicalViewProvider を実装した各プロジェクトタイプのクラスなんかを見るとわかるかと思います)
最終的に、プロジェクトは以下のような構成になります
このプラグインを実行すると、以下のように表示されます
ということで、プロジェクトのアイコンを変えるプラグインについては以上です
今年は、昨年よりはもう少しエントリの数が増えるよう頑張りたいと思いますので、何卒よろしくお願いします
NetBans のプロジェクトウィンドウに表示されるアイコンをプラグインで変える方法についての紹介です
なお、7.0 以降に実装予定の API を使用していますので、お試しされる際には 7.0 Beta などをご使用下さい
また、実装予定の機能ですので、正式なリリースでは実装されない可能性があります
ご注意下さい
まず、事前に必要なものはプロジェクトのアイコンと差し替える画像です
16 x 16 のサイズの画像をご用意してください
今回は 以前作成したねこび〜んアイコンの画像を使用します
(オリジナルのねこび〜んはカネウチカズコさんによるものです)
次にモジュール用のプロジェクトを作成します
プロジェクト名などは適当な値を設定してください
プロジェクト作成後、事前に準備した画像ファイルを適当な場所にコピーします
(今回の例では、"resources" ディレクトリを作成し、その中にコピーしています)
次は今回のプラグイン(モジュール)に必要な API の設定を行います
プロジェクトのプロパティ画面の「ライブラリ」カテゴリを選択し、「ライブラリの依存関係」タブの「追加」ボタンをクリックし、"Lookup API"、"プロジェクト API"、"ユーティリティ API"の3つのAPIを追加します
追加後は下記のように表示されます
「了解」ボタンをクリックして、プロパティ画面を閉じます
最後にアイコンの差し替えに必要なクラスを作成します
(といっても、1クラスのみですが…)
クラスの中身は下記の通りです
(パッケージやクラス名は適当ですので、適宜読み替えてください)
package nekobean;
import java.awt.Image;
import javax.swing.event.ChangeListener;
import org.netbeans.api.project.Project;
import org.netbeans.spi.project.ProjectIconAnnotator;
import org.openide.util.ImageUtilities;
import org.openide.util.lookup.ServiceProvider;
@ServiceProvider(service = ProjectIconAnnotator.class)
public class NekoBeanProjectIcon implements ProjectIconAnnotator {
// アイコンの読み込み
private final Image nekoBeanIcon = ImageUtilities.loadImage("nekobean/resources/nekobean.png");
@Override
public Image annotateIcon(Project project, Image original, boolean bln) {
// 読み込んだアイコンを返します
return nekoBeanIcon;
}
@Override
public void addChangeListener(ChangeListener cl) {
}
@Override
public void removeChangeListener(ChangeListener cl) {
}
}今回使う API は ProjectIconAnnotator インターフェイスです
インターフェイス名からわかる通り、プロジェクトのアイコンに注釈(エラーマークなどのバッジ)を表示するための API ですので、今回のような使い方はいわば邪道だったりします
なお、 6.9.1 以前のバージョンではこの API が存在しないため、プロジェクトツリーが表示される前にアイコンを変更することは無理っぽいです
(詳しくは、 LogicalViewProvider を実装した各プロジェクトタイプのクラスなんかを見るとわかるかと思います)
最終的に、プロジェクトは以下のような構成になります
このプラグインを実行すると、以下のように表示されます
ということで、プロジェクトのアイコンを変えるプラグインについては以上です
今年は、昨年よりはもう少しエントリの数が増えるよう頑張りたいと思いますので、何卒よろしくお願いします
登録:
投稿 (Atom)









































