読者です 読者をやめる 読者になる 読者になる

Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Java

システム開発の現場改善記 - ゆとり教育がスタートしたころに JUnit を導入した昔話

概要 ゆとり教育がスタートしたころに JUnit を導入した昔話です

システム開発の現場改善記 - Template Method パターンでチームの開発工数を 1 / 10 にした話 ※オチ付

概要 Template Method パターンでチームの開発工数を 1 / 10 にした話です

Java | Eclipseの設定でJavaDoc未記載の箇所を警告表示にする

概要 Eclipseの設定でJavaDoc未記載の箇所を警告表示にする 内容 下記の設定でJavaDocの警告表示が可能 ・設定=>Java=>コンパイラ=>Javadoc=>Process Javadoc commentsにチェック 例:publicとprotectedの要素でJavaDocがないものや、文法が誤っているものを…

Gradle | Javaのpackage-info.javaを自動生成するGradleカスタムPluginを作成

概要 Javaのpackage-info.javaを自動生成するGradleカスタムPluginを作成 内容 下記の記事で作成した内容をGradleのカスタムPlugin化します。 RubyでJavaのpackage-info.javaを一括生成するスクリプト http://d.hatena.ne.jp/tbpg/20120808/1344447924 要件 …

Java | Eclipse + Gradle + Cobertura PluginでJavaのテストカバレッジを計測する

概要 Eclipse+Cobertura PluginでJavaのテストカバレッジを計測する Cobertura=>コヴェルトゥーラ。スペイン語でcoverageの意。 詳細 Gradleプロジェクトを作成します。build.gradleに下記の設定を追加することでカバレッジを計測します。 build.gradle buil…

Eclpse | EclipseのコードテンプレートでJavaの流れるようなIFのSetterを生成

概要 EclipseのコードテンプレートでJavaの流れるようなIFのSetterを生成 内容 以下の設定をテンプレートに追加する。名前:fluent 説明:流れるようなIF形式のSetter パターン /** * {@code ${name}}を設定し、自クラスのインスタンスを返却する. * * @para…

Java | JUnit4 + Selenium WebDriverでWebの自動テストを行う構成の1例

概要 Selenium WebdriverでWebの自動テストを行う構成の1例 準備 Selenium Webdriverによるテスト作成の設定について。Gradleの場合、build.gradleのdependenciesに以下を追加 compile 'org.seleniumhq.selenium:selenium-java:2.32.0'手動の場合は下記よりj…

Java | JMeterのBSF Lisnerを利用してレスポンス内容を加工して変数に格納する

概要 JMeterのBSF Lisnerを利用してレスポンス内容を加工して変数に格納する 内容 ・リスナーからBSF Lisnerを追加 BSF Lisner内の処理 var body = sampleResult.responseDataAsString; var search = body.slice(564,568); OUT.println(search); vars.put('h…

Java | JavaMailをラップして流れるようなIFにする

概要 JavaMailをラップして流れるようなIFにする 内容 JavaMailをラップして流れるようなIFにしてみます。 ※他のライブラリにも流用可能。 サンプルコード インターフェース import javax.mail.MessagingException; import javax.mail.internet.AddressExcep…

Java | opencsvでCSVファイルを操作する

概要 opencsvでCSVファイルを操作する 詳細 以下の手順でインストールする ・下記URLからtarボールを取得 http://sourceforge.jp/projects/sfnet_opencsv/・mavenでビルドする ・出来上がったjarをプロジェクトのビルドパスに設定する下記に入出力のサンプル…

Java | EasyMockで単体テストをMockする

概要 EasyMockで単体テストをMockする 詳細 EasyMockで単体テストをMockします。 導入手順 ・下記URLからjarをダウンロード http://sourceforge.net/projects/cglib/files/ http://sourceforge.net/projects/easymock/files/EasyMock/3.1/easymock-3.1.zip/d…

Java | opencsvでCSVファイルを操作する(tsv対応版)

概要 opencsvでCSVファイルを操作する(tsv対応版) 詳細 下記の記事のTSV対応版サンプルを作成。Java | opencsvでCSVファイルを操作する http://d.hatena.ne.jp/tbpg/20130514/1368543588 サンプルコード package opencsv; import java.io.ByteArrayInputStre…

Java | Futureパターンで非同期処理の結果を先に受け取る

概要 Futureパターンで非同期処理の結果を先に受け取る 詳細 Futureパターンにより、非同期処理の結果を先に受け取ります。 イメージとしては予約券。 サンプルコード package thread; import java.util.Date; import java.util.concurrent.Callable; import…

Java | mockitoで単体テストをMockする

概要 mockitoで単体テストをMockする 詳細 mockitoで単体テストをMockします。 業務ではdjUnitしか使って居なかったのですが、djUnitのMock機能は メソッドを文字列で指定するためリファクタリング対象外になる、という欠点があります。メソッドのリファクタ…

Java | JavaDB | JavaDBをサーバーモードで起動

パンくずリスト JavaDB JavaDBをサーバーモードで起動 概要 JavaDBをサーバーモードで起動 詳細 JavaDBをサーバーモードで起動する方法について。 DBサーバーの起動、停止について 操作 起動 起動 Javaのインストールディレクトリ\db\binstartNetworkServer.…

Java | JavaDB | Eclipse DBViewerプラグインでJavaDBを新規作成

パンくずリスト JavaDB Eclipse DBViewerプラグインでJavaDBを新規作成 概要 Eclipse DBViewerプラグインでJavaDBを新規作成 詳細 Eclipse DBViewerプラグインでJavaDBを新規作成する方法について。・メニュー>ウインドウ>パースペクティブを開く>DBViewe…

JavaDB関連情報まとめ

概要 当ブログで取り扱っているJavaDB関連情報メニュー 内容 Eclipse DBViewerプラグインでJavaDBを新規作成 JavaDBをサーバーモードで起動

Java | 複合キーのMap>取得ユーティリティ

概要 複合キーのMap>取得ユーティリティについてまとめます 詳細 Map>のKが複数キーを持つデータクラスとなるMapを Listから取得するユーティリティを作成する。KのすべてのカラムはTと同じ名前、同じデータ型であることを前提とする。 代表的な用途 テーブ…

Java | Eclipseのファイル検索機能+正規表現でHashMapをEnumMapに一括置換(命名の前提あり)

パンくず Java Eclipseのファイル検索機能でHashMapをEnumMapに一括置換 概要 Eclipseのファイル検索機能でHashMapをEnumMapに一括置換 詳細 Enumをキーとして利用する場合、HashMapよりもEnumMapのほうが高速に機能します。 既存システム上でEnumMapを全く…

配列を文字列として出力

概要 配列を文字列として出力する方法についてまとめます 詳細 配列を文字列として出力する場合にはArrays.toStringを利用します。 サンプルコード import java.util.Arrays; import java.util.Date; public class Sample { public static void main(String[…

HashMapとEnumMapの処理時間を比較

パンくず Java HashMapとEnumMapの比較 概要 HashMapとEnumMapの比較 詳細 HashMapとEnumMapの性能を比較します。比較時の使用はHashMapとEnumMapそれぞれに100個のEnumをキーに設定。 Valueには100個のIntegerを設定します。 設定後に、100個のEnumで100回M…

java.lang.reflect.Proxyによる自作AOPでトレースログ機能を実装

パンくず Java java.lang.reflect.Proxyによる自作AOPでトレースログ機能を実装 概要 java.lang.reflect.Proxyによる自作AOPでトレースログ機能を実装 内容 java.lang.reflect.Proxy を利用して、AOPによるTraceログ機能を実装します。※補足 AOP=アスペクト…

汎用Validator

パンくず Java JUnit 汎用Validator 概要 汎用Validator 内容 汎用的なValidatorを作成します。 要件は以下とします。・1つのValidatorの中に複数のエラー判定処理が存在する それぞれのエラー判定のどれか一つのエラーが成立した場合に Validator全体として…

JUnit | JUnit4のDataPointsによるテストと特定ケースの実行

パンくず Java JUnit JUnit4のDataPointsによるテストと特定ケースの実行 概要 JUnit4のDataPointsによるテストと特定ケースの実行 内容 JUnit4のDataPointsによって、テストをパラメータ化することができます。 パラメータ化されたケースはFixtureの配列と…

Java | 流れるようなデータクラス生成ツール

パンくず Java 流れるようなデータクラス生成ツール 概要 流れるようなデータクラス生成ツールについて 要件 定義用クラスに以下の内容を指定 ・データクラス名 ・データクラスJavaDoc ・データクラスJavaDoc用author ・フィールドコメントのリスト ・フィー…

JUnit | JUnit4のDataPointsによるテストとFixtureと流れるようなインターフェース

パンくず Java JUnit JUnit4のDataPointsによるテストとFixtureと流れるようなインターフェース 概要 JUnit4のDataPointsによるテストとFixtureと流れるようなインターフェース 内容 JUnit4のDataPointsによって、テストをパラメータ化することができます。 …

JUnit | JUnit4のDataPointsによるテストとパラメータ化の基準

パンくず Java JUnit JUnit4のDataPointsによるテストとパラメータ化の基準 概要 JUnit4のDataPointsによるテストとパラメータ化の基準 内容 JUnit4のDataPointsによって、テストをパラメータ化することができます。 詳細はTheoryとDataPointsとFixitureによ…

不要な分岐

概要 レビュー指摘「不要な分岐」について ※Javaの話です 内容 私が実際に指摘した「不要な分岐」について。 コードを見ていただくのが手っ取り早いかと思います。こういうコードを書くJava開発経歴10年のプログラマーとかが 居たりするのが日本の開発現場の…

不適切な命名

概要 レビュー指摘「不適切な命名」について ※Javaの話です 内容 「不適切な命名」のコードは可読性が下がります。 項目 内容 不適切な理由 汎用的な名前 param,obj等広い意味を表す名前 用途を読み取れない 日本語のローマ字読み helloではなくkonnichiwa等…

マジック分岐

概要 レビュー指摘「マジック分岐」について ※Javaの話です 内容 自分が独自に定義した数値に意味を持たせて 自分にしか分からない分岐を作成すること。 サンプルコード package review.ex3.magic_branch; public class MusicPlayer { enum MusicType { JPOP…

Java | 複数のデータクラスをマージするツール

パンくず Java 複数のデータクラスをマージするツール 概要 複数のデータクラスをマージするツールについて 要件 ・複数のデータクラスを指定可能 ・除外名のリストに設定した項目はマージ対象外 ・分離名のリストに設定した項目は名称+データ型名に名前を…

自作ユーティリティー | 複数項目のor比較。SQLのinをJavaで再現

パンくずリスト 自作ユーティリティ 複数項目のor比較。SQLのinをJavaで再現 概要 複数項目のor比較。SQLのinをJavaで再現 内容 複数項目の比較に便利なSQLのin句。 例えば曜日が火木土のどれかと一致すれば良いことを比較する場合、 select * from m_calend…

自作ユーティリティー

概要 Javaの自作ユーティリティーを管理。 ライブラリの知識などに乏しいので車輪の再発明をしている可能性も・・。 内容 複数項目のor比較。SQLのinをJavaで再現 汎用Validator 複合キーのMap<K,List<T>>取得ユーティリティ</k,list<t>

Java | JUnit4でEnclosed,Theory,DataPoints対応のテストコードの雛形を自動生成

パンくず Java JUnit4でEnclosed,Theory,DataPoints対応のテストコードの雛形を自動生成 概要 JUnit4でEnclosed,Theory,DataPoints対応のテストコードの雛形を自動生成 内容 JUnit4かつ以下の形式のテストコードの雛形を生成します。・クラス名はテスト対象…

JUnit | テストケースを無視する場合

パンくず Java JUnit テストケースを無視する場合 概要 テストケースを無視する場合 内容 無視したいテストケースがある場合は以下のアノテーションを利用する @Ignore("事情あり") 例えば、モック化している箇所を実際に繋げて動作確認したい場合などに 動…

RubyでJavaのpackage-info.javaを一括生成するスクリプト

概要 JavaDocのパッケージ内容を記述するpackage-info.javaを生成するスクリプト 内容 Javaの各パッケージごとのJavaDocを一括生成するためのスクリプトをRubyで作成します。要件は以下 ・ルートフォルダにrbファイルを配置 ・実行すると配下にあるすべての…

Java | Setterに値をセットするコードを自動生成

パンくず Java Setterに値をセットするコードを自動生成 概要 Setterに値をセットするコードを自動生成について 内容 大量のSetterに値を設定するようなコードは度々登場します。 このような場合に手でコードを書くと地味に時間がかかるものです。今回はSett…

JYaml | jYamlでオブジェクトをデシリアライズ

パンくず Java JYaml jYamlでオブジェクトをデシリアライズ 概要 jYamlでオブジェクトをデシリアライズについて サンプルコード 自作クラスに対するデシリアライズサンプルYamlデータファイル(yaml_object.yml) name: parentName nameType: FULL_NAME chil…

JYaml | YEdit導入

パンくず Java JYaml YEdit導入 概要 YEdit導入について YEditとは EclipseでYamlを編集するためのプラグインです。 Yamlはインデントに半角スペースを利用するなど、 他の開発環境のインデント設定とバッティングする可能性もあるため 専用のエディタを入れ…

JYaml | JYaml導入

パンくず Java JYaml JYaml導入 概要 JYaml導入について Yamlとは YAML(ヤムル)とは、構造化データやオブジェクトを文字列に シリアライズ(直列化)するためのデータ形式の一種。 スクリプト系言語の設定ファイルなどによく利用される。インデントを利用…

JYaml関連情報まとめ

概要 当ブログで取り扱っているJYaml関連情報メニュー Yaml(ヤムル)とは?については関連情報のサイトをご確認ください。 内容 JYaml導入 YEdit導入 jYamlでオブジェクトをデシリアライズ jYamlでオブジェクトのリストをデシリアライズ 関連情報 Yaml Wiki…

JYaml | jYamlでオブジェクトのリストをデシリアライズ

パンくず Java JYaml jYamlでオブジェクトのリストをデシリアライズ 概要 jYamlでオブジェクトのリストをデシリアライズについて ここまで出来るとテストクラスのリストデータ、など様々な用途で使えます。 サンプルコード 自作クラスのリストデータに対する…

JUnit | TheoryとDataPointsとFixitureによるパターン化テスト

パンくず Java JUnit TheoryとDataPointsとFixitureによるパターン化テスト 概要 TheoryとDataPointsとFixitureによるパターン化テスト 内容 JUnitのテストは基本的に ・事前条件の設定 ・テスト対象処理の実行 ・テスト結果の確認(assertThat) など似たよ…

JUnit | Quick JUnitによるテスト開発の効率化

パンくず Java JUnit Quick JUnitによるテスト開発の効率化 概要 Quick JUnitによるテスト開発の効率化について Quick JUnitとは EclipseのPluguin。 JUnitのテスト開発を補助してくれるツール。 Quick JUnitの機能 ・テストコードとプロダクトコードのの切…

JUnit | JUnitとは

パンくず Java JUnit JUnitとは 概要 JUnitに関する基礎情報 JUnitとは? JUnitとはJavaで開発されたプログラムにおいてユニットテスト(単体テスト)の 自動化を行うためのフレームワーク。 開発者 GoFの1人でもあるエーリヒ・ガンマとXPで知られるケント・…

JUnit関連情報まとめ

概要 当ブログで取り扱っているJUnit関連情報メニュー 内容 JUnitとは Eclipse QuickJUnit Pluginによるテスト開発の効率化 JUnit4による基本的なケース作成 TheoryとDataPointsとFixitureによるパターン化テスト テストケースを無視する場合 JUnit4のDataPo…

Java関連情報まとめ

概要 当ブログで取り扱っているJava関連情報メニュー Java言語 システム情報の取得 配列を文字列として出力 Futureパターンで非同期処理の結果を先に受け取る Java関連技術情報 JUnit JavaDoc再入門 Eclipseの設定でJavaDoc未記載の箇所を警告表示にする djU…

JUnit | JUnit4による基本的なケース作成

パンくず Java JUnit JUnit4による基本的なケース作成 概要 JUnit4による基本的なケース作成について テストケースのルール ・テストクラスはテスト対象のクラス名+Test ・テストメソッドは@Testアノテーションを付加するJUnit3以前ではテストクラスはTestC…

Javaで同名フィールドのコピーとパフォーマンスの計測。DRYを選ぶか高速化を選ぶか

概要 Javaで同名フィールドのコピーとパフォーマンスの計測 内容 Javaで同名フィールドのコピーを行う手法とそのパフォーマンス検証について。 ある2つのデータクラスがあり、同名のフィールドは同じ型であるとします。 この2つのデータクラスの同名フィール…

if文がネストするような条件をどうシンプルにするか?

概要 if文がネストするような条件をどうシンプルにするか? 問題 チェックロジック系など、条件文が多くなってくるとif文やswitch文の 記述が長くなりわかりにくくなる。 実際に仕事でもよく遭遇するタイプのコード。 例題 超人の必須チェック処理を想定。超…