【ハウツー】
話題のJRubyを動かしてみよう 導入編 - JRubyのコツをつかむ においてJRubyを導入する方法を紹介した。ここではその次のステップを紹介したい。
JRubyを使ってプログラミングをはじめるにあたっていくつかコツがある。本稿ではその"コツ"を紹介したい。基本的にはプロジェクトサイトに用意されている文章と、成果物に同梱されているドキュメント、サンプルコードを読めばよいため、本稿と併せてそれらのドキュメントにも目を通してほしい。
JRubyは基本的にふたつのレベルでJavaとのインテグレーションをサポートしている。ひとつは低レベルサポート、もうひとつは高レベルサポートである。たとえばプロジェクトサイトに用意されているドキュメントから抜粋すると、低レベルサポートではリスト1.1のようにJavaのメソッドを利用する。これはJavaのリフレクションAPIに近いものだ。JRubyにおけるJavaサポートの本質といえるだろう。
RubyではJavaオブジェクトはすべてJavaObjectのインスタンスとして扱われることになる。Javaクラスの情報を表すものとしてはJavaClass、JavaMethod、JavaFieldが用意されている。リフレクションAPIとよく似ている。
この方法は原理こそ理解しやすいものの、使いやすいものではない。これを使いやすくするためのサポートが、もう一方の高レベルサポートとなる。要するに、java_method.invokeを使って処理をするような便利なラッパメソッドを集めたものが用意されているわけである。JRubyではこれをJavaProxyと呼んでいる。同じく、プロジェクトサイトに用意されているドキュメントから抜粋すると、リスト1.2のように記述できるということだ。
リスト1.2はjava.util.RandomをRubyで使っている例だが、違和感なく統合されていることがわかる。オブジェクトの変換などはJavaProxyを通じて自動的に実施されている。たとえばリスト1.2の場合、r.nextIntで返ってくるのはintだが、Fixnumへ自動的に変換されている。もちろんすべてが変換されるわけではない。コレクションなどは変換されずにコレクションのままである。まずはこういったあたりからJRubyの学習をはじめていくといいだろう。
| アジレント、ミリ波信号解析ソリューションを発表 [16:54 5/24] |
| NXP、独自のTrench 6テクノロジによる車載用パワーMOSFETファミリを発表 [16:52 5/24] |
| 産総研、光照射で損傷を自己修復できるゲル状スマートマテリアルを開発 [16:49 5/24] |
| アンテナ設置数が半分の33台に到達 - アルマ望遠鏡、2kmの干渉試験も成功 [16:45 5/24] |
| 人工知能実現へ一歩前進!? - NIMS、環境依存型「シナプス素子」を開発 [16:40 5/24] |
|
大阪駅「ギャレ大阪」跡地に約80店舗入居の新商業施設開業へ - JR西日本 [17:48 5/24] ライフ |
|
ネイティブの好むフレーズを集めたビジネス英会話ブック発売 - アルク [17:35 5/24] ライフ |
|
【レポート】【レポート】ネットワークレコーダー「nasne」先行プレビュー - Xperia/Sony Tabletでの使用感を確認!! [17:29 5/24] 携帯 |
|
自分らしさ発見! マイナビ×サンマリエのスペシャルセミナー開催 [17:21 5/24] ライフ |
|
『好きっていいなよ。』、2012年秋にTVアニメ化! スタッフ&キャストを紹介 [17:12 5/24] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。