パブリッククラウドへのデプロイの自動化

最近は、Webアプリケーションの本番環境やテスト環境として、パブリッククラウド(ここでは、EC2やAzureなどのIaaSを指すことにします)を使用する事例をよく聞きます。パブリッククラウドを使用するときの課題として、アプリケーションのデプロイの自動化があ…

サーバ側(Java)とクライアント側でエディタを別にする

クライアント側をJavaScriptプログラムで作成する場合は、サーバ側のJavaプログラムをEclipseで作成し、クライアント側のJavaScriptプログラムを別のエディタで作成したくなると思います(JavaScriptプログラムの作成に人気のエディタとして、JetBrainsのWebS…

Cucumber-JVMで、同じシナリオを異なるレイヤーでテストする

以前のブログでCucumber-JVMのテストを紹介したときは、ドメインクラス(Carクラス)のオブジェクトと直接やりとりする下位のレイヤーのプログラムのテストでしたが、同じシナリオを使って上位のレイヤーのテストも可能です。例えば、以前のブログで紹介したCa…

EclipseでXSD/DTDファイルを登録してタグ補完

EclipseのWTPに含まれるXMLエディタは、XMLファイルを編集する際、XSDやDTDファイルの内容に従ってタグや属性の補完をしてくれます。メジャーなXMLファイル(JPAのpersistence.xmlやSpring FrameworkのBean定義ファイルなど)は、EclipseがよしなにXSDやDTDフ…

Cucumber-JVMのHelloWorld

以前のブログでCucumber-JVMについて触れました。Cucumber-JVMは面白いプロダクトだし、使い方が非常に簡単なので、今回はCucumber-JVMのHelloWorldをブログに書きます。Cucumber-JVMの概要については以前のブログをご参照下さい。では、HelloWorldの手順を…

継続的デリバリのスモールスタート

継続的デリバリにはさまざまな概念やツールが関係するため、いざ導入しようとするとどこから手をつければ良いのか迷うと思います。また、最初から何もかもやろうとすると、目的を見失って、意味のない作業に追われてしまう危険性が高いです。今回のブログで…

保守とTrunkと継続的インテグレーション

システムの保守の現場では、保守案件(機能追加や障害対応)ごとにBranchを作成するいわゆるFeature Branchを活用した運用をよく見かけます。しかし、継続的インテグレーションのことを考えると、この運用は好ましくありません。継続的インテグレーションとは…

WebアプリケーションでSpring Integrationを使用する場合のスレッド

今回のブログは、Spring Framework Advent Calendar 2012の20日目の記事として投稿します。前回のブログで、WebアプリケーションでSpring Integrationを使用すると、Spring Integrationが生成するスレッドをAPサーバが管理できないので危険だというお話をし…

Spring Integrationの概要

今回のブログは、Spring Framework Advent Calendar 2012の13日目の記事として投稿します。前回のブログでSpring Integrationを話題にしたので、今回は、Spring Integrationの概要と、どのようなコーディングになるかを紹介したいと思います。ただ、独自の解…

Spring IntegrationとMuleの棲み分け

今回のブログは、Spring Framework Advent Calendar 2012の6日目の記事として投稿します。Springに関係する内容として何を書こうか考えたところ、最近、私の周りでよく話題になるSpring IntegrationとMuleについて、妄想レベルですが、書きたいと思います。S…

Artifact Repository周りの作業の自動化

前回のブログでArtifact Repositoryの概要を記載しました。今回は、CI(継続的ビルト)ツールと連携して、Artifact Repository周りの作業を自動化したフローの例を紹介します。CIツールはJenkins、Artifact RepositoryはNexus(開発元はSonatype)、ビルドツール…

Artifact Repository

リリースの流れに沿って複数の環境(テスト環境・本番環境など)にバイナリ(Javaの場合はjarやwarなど)をデプロイする場合は、環境ごとにバイナリをビルドするのではなく、1度ビルドして生成したバイナリを各環境で使用する方が良いと思います。環境ごとにビル…

Vagrantを利用したローカルPCの環境整備

テスト環境や本番環境と比べ、開発者のローカルPCのサーバ環境(APサーバ、DBサーバ、メッセージングサーバなど)は開発者個人の裁量で構築することが多く、十分に整備されてない傾向があります(例えば、データベースにオラクルを利用する場合、ローカルPCにオ…

システム自動管理ツールとSCMの活用(前回の続き)

前回のブログでは、システム自動管理ツールとSCMを利用して、環境設定のバージョン管理が行えることを紹介しました。今回は、任意の環境(開発・テスト・本番など)を、任意のバージョンに更新するときの作業(例えば、開発環境をバージョン2にするなど)の自動…

システム自動管理ツールとSCMの活用

障害対応や機能追加でシステムの改修を行った後は、開発環境・テスト環境などで動作を確認した後に本番環境に反映するのが一般的です。このとき、アプリケーションの変更は、ビルドとデプロイの方法が定型的なので、環境によって反映が漏れることは少ないで…

既存システムに対してテストコードを書く(2/2)

前回のブログでは、既存システムに後付でテストコードを書くときにJMockItが有用なことを紹介しました。今回のブログでは、Brettという人が書いたModern Mocking Tools and Black Magicの記事(以下、「Brettさんの記事」と呼びます)を参考にしながら、JMockI…

既存システムに対してテストコードを書く(1/2)

JUnitを始めとするテストツールが充実した現在も、運用・保守の現場では、テストコードが存在しないJavaの既存システムを目にすることがあります。このようなシステムに対して、後付でテストコードを書こうとすると、大抵は以下の問題に突き当たって、モック…

要求レベルのテストの自動化

ユーザーの要求が満たされてることをテストときは、要求を元に開発者やテスターがテスト項目を作成し、画面を操作しながら挙動を目視で確認するのが一般的だと思います。しかし、この方法だと、要求とテスト項目を紐づける手間がかかったり、テストが手動な…