外付けHDDとUSB3.0ハブ

PS4へ天真爛漫にゲームをインストールしてたら、いつの間にか残り容量が10GBくらいになってたので外付けHDDを購入しました。

ただ自分の持ってるPS4だとUSBポートがフロントに2つしかないので、こちらも併せて購入。

バスパワータイプだとワイヤレスサラウンドヘッドセットが不安定になる、という話を読んだのでセルフパワータイプにしました。

PS4側にはHDDとハブ、ハブにはワイヤレスサラウンドヘッドセットのアダプターと本体(充電用)、そしてキーボードを挿してます。まだ通話は試してませんが、音だけなら特に問題なさそうな感じです。ただ、PS4周辺がケーブルでちょっとアレな感じになってるのが気になりますが…。次のステップではもうちょっとケーブルの配置などを考えてみようと思います。

実践ドメイン駆動設計

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

ドメイン駆動設計という言葉は知っていたものの、それが一体どういうモノであるのかまったく理解出来ていませんでした。今年の2月から環境が変わったこともあり、そろそろちゃんと勉強しないといけないなと思っていたところにTwitterでこの書籍が発売されることを知ったので迷わず購入してみました。

まだ触りくらいしか読んでいないのでなんとも言えないですが、実践と謳っているだけあって、ではどうすれば良いのか?という疑問に答えてくれるのではとワクワクしています。通勤途中に読めるような大きさじゃないじゃないのが残念ですが、家でじっくり読んでしっかり理解しろというお達しなのかもしれませんw

参考

9月の映画

今月の映画リスト。同僚やお客さんのオススメ、予告編などを参考に、今までとは違った感じの映画を観るようになってきました。

8月の映画

今月観た映画リスト。夏休みがあったお陰で24本にもなりました。スゴイ今更ですが映画って楽しいですねw

Gitの導入

職場で新しいPCが支給されたので、Gitの導入方法についてのメモを残しておきます。OSはWindows7です。

Git for Windows

以前はmsysgitという名前でしたが、いつからかGit for Windowsという名前に変わったようです。
公式サイトから最新版をダウンロードします。今回はGit-1.9.4-preview20140611.exeをダウンロードしました。

インストールでは特に変更する部分はありませんが、「Adjusting your PATH environment」Run Git from the Windows Command Promptを選択しました。これはWindowsコマンドプロンプトなどからGitコマンドを使用できるようにするためです。

Console2

Windowsコマンドプロンプトはとにかく使いづらいので、使いやすいものに置き換えます。

このままでは日本語入力ができないので、以下の日本語対応パッチをダウンロードしてConsole2.exeを置き換えます。

ただし、パッチを当ててもdirコマンドなどを実行した際にズレることがあるので、その場合は

  • View -> Console Window を選択
  • コンソールウィンドウのプロパティを選択
  • プロパティダイアログのフォントを選択
  • フォントでMS ゴシックを選択

以上で日本語が表示されてもズレないようになります。

Console2からGit Bashを使う

Console2はタブの切り替えで任意のシェルを使うことができるので、Git for WindowsもConsole2から呼び出せるように設定します。

  • Edit -> Settings... を選択

  • 左ペインでTabsを選択

  • 右ペインでAddボタンをクリック
  • Title: Git, Shell: "C:\Program Files (x86)\Git\bin\sh.exe" --login -iを入力
  • Icon: C:\Program Files (x86)\Git\etc\git.icoを入力(Optional)

これでタブを開く際にGitを選ぶとGitコマンドが使えるプロンプトが起動します。
他にもホットキーの設定やマウスの挙動設定、背景色の透過設定などもできるので色々とカスタマイズが捗りそうです。

参考にさせて頂いたページ

7月の映画

W杯からこっち、深夜にテレビを観るのが習慣になってしまったため、映画をレンタルしてます。7月に借りた映画のリストが以下。

有名なタイトルしか借りてないので概ね面白いですが、中にはとんでもなくつまらないモノがあったり。まぁこういうのは個人差が大きいのであまり参考にならないと思いますが一応。

上のリストはTUTAYA LOGから引っ張ってきました。
こういうの欲しいなぁと思ったものがだいたいあるっていうのは便利な世の中ですね。

自分が観た作品は毎月リストアップしていく予定です。

Groovyによる宣言的セットアップ

Groovyによる宣言的セットアップ

jUnit実践入門の第7章「テストフィクスチャ」で、フィクスチャ(テストデータ)のセットアップ方法が紹介されています。フィクスチャのセットアップにはインラインセットアップや暗黙的セットアップ、外部リソースからのセットアップなど色々な方法がありますが、個人的にGroovyによる宣言的セットアップというのが気になったので実際にやってみました。

Groovyプラグインのインストール

Groovy用のEclipseプラグインがあるので、まずはそれをインストールします。
Help->Install New Software...を選ぶとウィンドウが表示されるのでAddボタンをクリックして以下の内容を入力します。

Name Location
Groovy Eclipse Plugin http://dist.springsource.org/release/GRECLIPSE/e4.3/

インストールが終わっていつも通り再起動すると、コンテキストメニューのNewにGroovy関連が追加されます。試しにGroovy Classを作ってみるとJava Classと同様のウィザードが表示されるので、クラス名を「Hello」にしてFinishボタンをクリックするとHello.groovyが作成されます。

で、ここで一つ問題が。Groovyの書き方が分からない…w まぁそれは今回の主目的からは外れるので取り敢えず置いておくことにします。

セットアップを書いてみる

ユーザー情報を操作するDaoクラスのテストのセットアップをGroovyで書く、という仮想シナリオです。
まずはユーザー情報から。

public class User {
    private String userId;
    private String password;
    private String email;
    private Date birthDay;
    private Integer gender;

    /*
     * getter/setter省略。
     */
}

次にこのユーザー情報を生成するセットアップ。これはGroovyです。

class UserDaoTestHelper {
    static User createUser_通常ユーザーの場合() {
        new User(
                userId: "m-namiki",
                password: "pass",
                email: "example@sample.com",
                birthDay: new Date("2014/01/01 00:00:00"),
                gender: 0
                )
    }
}

で、最後にこれを使ったテストコードです。

public class UserDaoTest {

    @Test
    public void test() {
        User user = UserDaoTestHelper.createUser_通常ユーザーの場合();

        assertThat(user.getUserId(), is("m-namiki"));
        assertThat(user.getPassword(), is("pass"));
        assertThat(user.getEmail(), is("example@sample.com"));
        assertThat(user.getBirthDay(),
                is(new DateTime(2014, 1, 1, 0, 0, 0).toDate()));
        assertThat(user.getGender(), is(0));
    }

}

セットアップの部分でどんなデータなのかを分かりやすく書けるので、なかなか使い勝手は良さそうです。ただGroovy側で色々頑張ろうとするとそれは本末転倒なことになってしまうのでそこら辺の線引きをきちんと決めておかないと混乱の元になりそうなので注意しないとダメですね。

自分がテストを書く場合だと最近はインラインセットアップが多いですが、以前SAStrutsを使ったときにDBに対するテストを行う際はExcelでデータを作成する、というやり方がチームの人にかなり好意的に受け入れられていましたし、自分でも分かりやすく感じました。ただこれもデータを参照するのに外部ファイルをイチイチ開かなきゃいけないのがちょっと手間で、できればテストコードから簡単に、かつ見易い状態で参照できるのが良いはずなので、Groovyによるセットアップをプロジェクトに導入してみて色々試していきたいと思います。

実際にやってみた

上記はだいぶ前に書いたのですが(3ヶ月前…)ずっと下書きに入っててアップするのを忘れてました。なので、現在担当しているプロジェクトで導入してみた顛末も追記しておきます。

フィクスチャ自体は上記の通りHelperクラスを作ってそこで作成するようにした結果、だいぶコード量が少なくなってテストコードも見通しがよくなりました。
ただMavenでビルドする際にプラグインの追加等をしておかないと、*.groovyがコンパイルされず、当然それを利用しているクラスもコンパイルエラーとなるので、pom.xmlの設定をメモしておきます。

まずはdependenciesに以下を追加。

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>1.8.9</version>
</dependency>

次にpluginsに以下を追加。

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.4</version>
    <configuration>
        <providerSelection>1.8</providerSelection>
        <sourceEncoding>UTF-8</sourceEncoding>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>generateTestStubs</goal>
                <goal>testCompile</goal>
            </goals>
            <configuration>
                <sources>
                    <fileset>
                        <directory>${pom.basedir}/src/test/java</directory>
                        <includes>
                            <include>**/*.groovy</include>
                        </includes>
                    </fileset>
                </sources>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>1.8.9</version>
        </dependency>
    </dependencies>
</plugin>

これで、例えば mvn test 等を実行した際にGroovyが使えるようになります。

日本語文字化け問題

上記のplugin -> configuration -> sourceEncoding で文字コードを指定していますが、実はこれは効きません。gmavenのJIRAを見ても解決済みとなっていますが、実行すると.groovyに日本語が含まれている場合はコンパイルエラーとなってしまいます。

回避策としては、Windowsの場合、以下のように環境変数を設定してやると上手くいきますが、なんとも釈然としないですね...。

set MAVEN_OPTS="-Dgroovy.source.encoding=UTF-8"

参考にさせて頂いたページ