SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~本格的なRoRスタイルフレームワーク「Play!」(3)

第9回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ユーザーが投稿した全メッセージを表示する

 MsgDataからPersonDataが取り出され、処理されていることがよく分かりました。@ManyToOneは、単に関連するインスタンスが1つあるだけなので非常に分かりやすいです。では、@OneToManyで関連付けたインスタンスの利用も行ってみましょう。先ほどのPerson用index.htmlを少し修正し、各ユーザーが投稿したメッセージまですべて表示されるようにしてみます。

#{extends 'main.html' /}
#{set title:'Home' /}
<h1>メッセージ表示</h1>
#{list items:datas, as:'data'}
	<li>${data.id}: ${data.name}(${data.mail})
	<ul>
	#{list items:data.messages, as:'message'}
		<li>${message.message}</li>
	#{/list}
</ul>
</li>
#{/list}
PersonDataの修正index。それぞれのユーザーが投稿したメッセージまで表示される
PersonDataの修正index。それぞれのユーザーが投稿したメッセージまで表示される

 コントローラーはまったく操作していません。#{list items:datas, as:'data'}の繰り返しの中で、更に#{list items:data.messages, as:'message'}という繰り返しを用意し、PersonDataのmessagesに設定されているListの全要素を取り出して表示しています。

 モデルの連携は、このようにモデルの参照をそのままフィールドに保管しているため、SQLのように面倒な検索を行ったりする必要がありません。ただ単に、必要なインスタンスを取得すれば、それと連携するモデルのインスタンスもそのまま得ることができます。ただし、そのためには、データを作成する際、関連するモデルのインスタンスを取得しフィールドに追加するなどの操作を行っておく必要があります。このあたりは、少々面倒に感じるかもしれません。

テストについて

 ある程度の規模の開発となると、重要になってくるのがテストです。Play!では、JUnitによるテストのための機能が標準で備わっています。作成した「sampleapp」プロジェクトの中を見ると、「test」というフォルダが用意されているはずです。このフォルダが、テストのためのコードを配置する場所です。そこには、標準で「ApplicationTest.java」「BasicTest.java」「Application.test.html」」というソースコードファイルが作成されています。これは、プロジェクトを作成した際に自動生成されたテスト用のソースコードで、これを修正するなどしてテストを自分なりに追加していくことが可能です。

 Play!では、テストは3種類に分けられます。「UnitTest(ユニットテスト)」「FunctionalTest(ファンクショナルテスト)」「SeleniumTest(セレニウムテスト)」です。サンプルのファイルが用意されているので、それを読むことで大体どういう形で書けばいいのか分かってくるでしょう。

 まずは、実際にサンプルのテストを実行してみましょう。これは、テストモードでサーバを実行して行います。コマンドプロンプトを起動し、Play!のディレクトリ(samppleappが置かれている場所)に移動します。そして、次のように実行してください。

play test sampleapp
コマンドプロンプトから、テストモードでsampleappを実行する
コマンドプロンプトから、テストモードでsampleappを実行する

 「Running in test mode.」と表示され、テストモードでサーバが実行されます。サーバが起動したら、ブラウザから以下のアドレスにアクセスをしてください。

 http://localhost:9000/@tests

ブラウザから、/@testsにアクセスする
ブラウザから、/@testsにアクセスする

 画面に「Tests runner」と表示されたページが現れます。ここで、それぞれのテストが一覧で表示されます。各テストは、クリックして選択できます。そして必要なテストを選択し、[Start!]ボタンを押すと、選択したテストをすべて実行します。実行結果は、各テストの項目の左にある[+]マークをクリックすることで表示できます。

「+」をクリックして結果を展開表示できる
ブラウザから、/@testsにアクセスする

 Tests runnerでは、用意したテストがすべて自動的に認識され表示されるので、その中から特定のものだけを選択して実行できます。テストを集中管理するページと考えればよいでしょう。プログラマは、ただテストのコードを書いて、指定された場所に配置すればいいだけです。

次のページ
UnitTestコードをチェックする

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4752 2010/02/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング