SHOEISHA iD

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

連載記事

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

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Google App Engine for Javaを使ってみよう!

Google App Engine for Javaを使ってみよう!
(8)Unitテスト

Google App Engine for Javaを使ってみよう! (8)

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

 この連載では2009年4月に発表されたJava版のGoogle App Engineを解説します。今回はGoogle App Engineを利用したプログラムにUnitテストを実行する方法を勉強したいと思います。

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

はじめに

 Googleのインフラで実行されるクラウドサービス Google App Engineが2009年4月7日にJavaに対応しました。Javaエンジニアにも利用できるようになった、Google App Engineを一緒に勉強して行きましょう!

 今回はGoogle App Engineを利用したプログラムにUnitテストを実行する方法を勉強したいと思います。

対象読者

  • ウェブサービス開発に興味のあるJavaエンジニア
  • Google App Engine for Javaに興味がある方

必要な環境

  • 「Google Plugin for Eclipse」がインストールされている、Eclipse 3.3(Europa)か3.4(Ganymede)
  • Google Plugin for Eclipseに含まれるApp Engine SDKのバージョン1.2.2以降

 開発環境の構築手順については、第1回の解説を参照してください。

Google Plugin for Eclipseの注意点

 この連載を開始した初期の頃に[Google Plugin for Eclipse]をセットアップされた方は、App Engine SDKのバージョンが1.2.0か1.2.1になっていると思います。Eclipseのメニューから[Help]-[Software Updates]で、[Available Software]タブを選択し、[Google Update Site for Eclipse 3.X]にチェックを入れて[Install]ボタンを押してApp Engine SDKをアップデートして下さい。

Unitテストとは?

 Unitテストとは、個々のモジュール(部品)を対象としたテストです。テストの目的は、バグを事前に発見して製品の品質を高めることです。

 バグを早い段階で発見し、設計を強固にする手法として、契約による設計(Design by Contract、以下DbC)と呼ばれる設計手法が有効であることは10年以上前からバートランド・メイヤー氏によって提唱されています。DbCでは、個々のモジュールを次の3つの条件を用いた契約として定義します。

  • 事前条件 - 入力に対する条件
  • 事後条件 - 出力に対する条件
  • 不変条件 - 入出力に関わらず常に成立する条件

 Javaの公式ドキュメントにもDbCに関する記述があることからも分かるように、近年ではDbCの有効性が多くの開発者によって支持されています。

 Unitテストを用いることで、プログラムに修正を加えた後にもDbCの設計が破壊されていないことを補償することができ、DbCの堅牢性を維持することができます。

テストプログラムのススメ

 プロジェクトによっては、テストプログラムを書く十分な時間がなかったり、テストプログラムを書く文化がないままソースコードが大規模化してしまっていることがあると思います。 

 

 そんな場合に、私がオススメしているのは、一度バグが発生し、デバッグが完了したタイミングで、修正したメソッドに対してテストプログラムを書くことです。メソッド2~3個に数パターンのテストプログラムを書くことはそんなに時間がかかりません。 ãƒã‚°ã®æ··å…¥ç®‡æ‰€ã«çµ†å‰µè†ã‚’あてて守っていくようなイメージでテストプログラムを書いていきます。多くの場合、バグが混入しやすい箇所というのはプログラム全体でも限られているので、即効性があることが多いです。 

 

 このようにデバッグ範囲に対して、テストプログラムを開発することで、少なくとも自分が過去に修正した範囲は、他人が付近のプログラムを修正したことによって動かなくなるようなデグレードから守ることができます。

ApiProxyを使ってみよう!

 ApiProxyを利用すると、Google App Engineの全サービスにアクセスすることができます。テストプログラムでは、このApiProxyを利用することで各サービスのデータを調べることになります。

 まずは、以下の設定でApp Engineのプロジェクトを作成してください。今回はGWTを利用しませんので、Use Google Web Toolkitのチェックはハズして下さい(第2回の解説を参照して下さい)。また、日本語(2バイトコード)を扱いたいので、言語設定を必ず[UTF-8]に設定してください。

プロジェクトの設定(言語設定はUTF-8に)
Project name UnitTest
Package com.daisukeyamashita.test.unit

ライブラリの追加

 Google App Engineでは、プログラムのテストを簡単にするために、ローカルのテスト環境用のスタブが用意されています。Unitテストを実行するには、スタブを含めたいくつかライブラリを別途追加する必要があります。

 [プロジェクト名]を右クリックし、[Properties]を選択します。

 [Java Build Path]-[Libraries]タブで、[Add External JARs]ボタンを押して、以下の2つのライブラリを追加します。

 少し深いですが、以下のディレクトリにあるappengine-api.stubs.jarとappengine-local-runtime.jarを追加します。

(Eclipseのインストールディレクトリ)\plugins
\com.google.appengine.eclipse.sdkbundle_1.2.2.v200907131030
\appengine-java-sdk-1.2.2\lib\

 続いて、[Add Library]ボタンを押します。[JUnit]を選択して、[Next]ボタンをクリックします。JUnitのバージョンを選択する画面に切り替わりますが、JUnit3を利用するので、そのまま[Finish]ボタンをクリックします。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Google App Engine for Javaを使ってみよう!連載記事一覧

もっと読む

この記事の著者

山下 大介(ヤマシタ ダイスケ)

  äº¬éƒ½å¤§å­¦ã‚’中心とした、産官学共同プロジェクトのSOBAプロジェクトに参加後、同プロジェクトで開発したP2P配信によるVoIP技術を2005年に商業化。オープンソース、VoIP、P2P、クラウドコンピューティングに精通。趣味はGoogleの追っかけ。現在は、株式会社SOBAプロジェクト取締役。ブログ:『~ ミネルヴァの梟は黄昏とともに飛び始める ~』所属:株式会社SOBAプロジェクトGoogle Developer Day 2008サポーター, 2009サポーターGoogle App Engine API Expert

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3919 2009/09/21 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計 NEW
  2. 2
    「CentOS Stream 10」発表、Linuxカーネル 6.12 LTSを搭載 NEW
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    AppleがSiriとChatGPTを統合、Apple Intelligence強化
  5. 5
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう!
  1. 6
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  2. 7
    Google、XRデバイス用OS「Android XR」発表 NEW
  3. 8
    フロントエンドの定番ライブラリ「React」バージョン19の新機能を紹介──アクションによる非同期処理の進化 NEW
  4. 9
    「CUDA」 ~マンガでプログラミング用語解説
  5. 10
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説

アクセスランキング

  1. 1
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計 NEW
  2. 2
    「CentOS Stream 10」発表、Linuxカーネル 6.12 LTSを搭載 NEW
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    AppleがSiriとChatGPTを統合、Apple Intelligence強化
  5. 5
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう!
  6. 6
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  7. 7
    Google、XRデバイス用OS「Android XR」発表 NEW
  8. 8
    フロントエンドの定番ライブラリ「React」バージョン19の新機能を紹介──アクションによる非同期処理の進化 NEW
  9. 9
    「CUDA」 ~マンガでプログラミング用語解説
  10. 10
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計 NEW
  2. 2
    「CentOS Stream 10」発表、Linuxカーネル 6.12 LTSを搭載 NEW
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    AppleがSiriとChatGPTを統合、Apple Intelligence強化
  5. 5
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう!
  1. 6
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  2. 7
    Google、XRデバイス用OS「Android XR」発表 NEW
  3. 8
    フロントエンドの定番ライブラリ「React」バージョン19の新機能を紹介──アクションによる非同期処理の進化 NEW
  4. 9
    「CUDA」 ~マンガでプログラミング用語解説
  5. 10
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説

アクセスランキング

  1. 1
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計 NEW
  2. 2
    「CentOS Stream 10」発表、Linuxカーネル 6.12 LTSを搭載 NEW
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    AppleがSiriとChatGPTを統合、Apple Intelligence強化
  5. 5
    【超時短テクニカルライティング】生成AIを活用してドキュメントを書く流れを掴もう!
  6. 6
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表
  7. 7
    Google、XRデバイス用OS「Android XR」発表 NEW
  8. 8
    フロントエンドの定番ライブラリ「React」バージョン19の新機能を紹介──アクションによる非同期処理の進化 NEW
  9. 9
    「CUDA」 ~マンガでプログラミング用語解説
  10. 10
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説