Gunma.web #11に参加してきました

今日はWebサイト作成のための勉強会Gunma.webに参加してきました。
20人くらい集まって大変盛り上がっていました。


LTをしてくださった方もたくさんいましたね。
さらにivoryworksさんは新作Androidアプリを公開しました。
その名も「JOJOしりとり」です。
https://play.google.com/store/apps/details?id=com.ivoryworks.android.jojoshiritori&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5pdm9yeXdvcmtzLmFuZHJvaWQuam9qb3NoaXJpdG9yaSJd
ジョジョの奇妙な冒険」で使われている言葉を使ってしりとりをするゲームです。
僕はジョジョを知らないのですが印象的な言葉が多いですね。
20th センチュリー・ボーイって何www


それから今日は参加者の方にWebページ作成ツールを紹介していただきました。
Aptanaというやつです。
フリーソフトですがAdobe Dreamweaverとほぼ同等の機能を持つそうです。
これはなかなか使えそうですね。


今回は技術的な話がたくさん聞けて良い刺激になりました。
tsurumauさんの魔法少女の仕事(俗に言うフリーランス)の話も面白かったです。
僕もあんなふうに面白いLTができるようになりたいですね。
そんなわけで皆さんの発表の構成も参考にさせていただきます。


今後ともよろしくお願いします。

四則演算のオペランドに対応する英語表現

四則演算のオペランドは2つあります。例えば2+3の場合、2と3がオペランドです。
このとき最初のオペランドの2を被加数といい、2番目のオペランドの3を加数といいます。
被加数は英語で augend 加数は addend と表現されます。

四則演算ごとにオペランドの英語表現があるのでまとめます。

第一オペランド 演算 第二オペランド
augend addend
minuend substrahend
multiplicand × multiplier
dividend ÷ divisor

ついでに日本語表現だと次のようになります。

第一オペランド 演算 第二オペランド
被加数 加数
被減数 減数
被乗数 × 乗数
被除数 ÷ 除数

Apache Thriftのインストール

UbuntuApache Thriftをインストールしました。

まず次のところからApache Thrift v0.8.0をダウンロード。
https://thrift.apache.org/

展開します。

tar xf thrift-0.8.0.tar.gz

ディレクトリ移動。

cd thrift-0.8.0

configureを実行。

./configure

makeを実行。

make

ここでエラーが出ました。

rake aborted!
cannot load such file -- spec/rake/spectask

調べてみるとRSpecのバージョンが関係してるみたいです。
とりあえずconfigureにオプションつけて解決しました。

./configure --without-ruby

もう一度make。

make

今度は通りました。

最後に

make install

でインストール出来ました。

でも何故か

make check

すると途中で

Timeout alarm expired; attempting to unblock transport

というのが5回くらい出て止まってしまいました。
現在原因調査中です。

UbuntuでサクッとGoogle Testを使ってみよう

サクッとGoogle Testを使ってみよう!

前回UbuntuでのGoogle Testのインストール方法を示したので、 今回は実際にGoogle Testを使ってテストをする。サクッとね。

前回の記事はこちら。
UbuntuでGoogle Testをインストール

開発環境について

動作確認をした環境はこちら。

OS Ubuntu 11.04
コンパイラ g++ 4.5.2
Google Test gtest 1.5.0

テスト対象のコードを考える

まずテスト対象のコードを考える*1
今回は引数同士を足した結果を返す関数addをテストする。addを定義してみよう。

int add(int x, int y) {
    return x + y;
}

テストコードを考える

次にテストコードを考える。 addの引数に具体的な値を与えて期待する値が得られるか確かめよう。

例えば2+3=5なので今回はaddの引数に2と3を与えて5が返ってくるか確かめるコードを記述する。

TEST(AddTest, TwoAndThree) {
    EXPECT_EQ(add(2, 3), 5);
}

Google Testではテストはマクロで記述する。
一つのテストを記述する時はTESTというマクロを使う。

TESTの最初の引数にはテストケース名、2番目の引数にはテスト名を記述する。 Google Testは複数のテストを行う場合テストケース名でグループ化してテストを実行する。 テストケース名が異なればそれぞれに同じテスト名を記述することができる。

TESTのブロック内にはこのテストで実行するC++のコード記述する。 ここにはアサーションというテストが成功あるいは失敗するための条件を記述することができる。 Google Testではアサーションをマクロを使って実現する。

EXPECT_EQGoogle Testで使えるアサーションの一つである。 最初の引数と2番目の引数が等しい場合に成功、そうでなかった場合失敗となる。

今回の場合add(2, 3)5が等しくなるか確かめたいので EXPECT_EQの最初の引数にadd(2, 3) 2番目の引数に5を与えた。

ソースコードを書く

それではテスト対象のコードとテストコードを繋げてファイルに書き込もう。
Google Testのマクロを使うときはgtest/gtest.hをインクルードする必要があるので注意。

add_test.cppというファイルにでも書き込むといいと思う。
Gistにも上げてあるので自分で書くのが面倒な人はダウンロードしてね*2
https://gist.github.com/1256079

本当はテスト対象のコードとかテストコードは 別のファイルに記述する方が実際の開発の状況に近いんだろうけど、 ここではサクッと記述してサクサクッとビルドしてサクサクサクッと実行できるコードを示したかったので 全部一つのファイルに記述することにした。

ビルド

Google Testはテスト用の実行ファイル作成して、それを実行することでテストを行う。

その実行ファイルを作るには、さっき記述したコードをコンパイルしてGoogle Testのライブラリとリンクする必要がある。 オプションに-lgtest_main-lpthread *3を付けてg++でビルドしよう。

$ g++ -o add_test -lgtest_main -lpthread add_test.cpp

テストの実行

それでは今回作ったテストを実行してみよう。
先ほどビルドした実行ファイルを実行する。

$ ./add_test

すると次のような結果が出力される。

Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN      ] AddTest.TwoAndThree
[       OK ] AddTest.TwoAndThree (0 ms)
[----------] 1 test from AddTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

とりあえずOKとか出てるので、なんとなくテストが成功したことが分かる。

もっと詳しい情報

もっと詳しい情報はこちらで。
Google Test — Google Test ドキュメント日本語訳

おまけ

ここからは雑記です。

C++のテストツールをいくつか試してみたんですが、 それらはおまじない的な何かをたくさん記述する必要があったり、 テストを実行するための準備が面倒なものが多くて困ってたんですよね。 その点Google Testはコードの記述もビルドも割と簡単にできるので、これから積極的に使おうと思ってます。 これからC++でテストを書いてみたいっていう人にもおすすめです!

Vimで開いてるテストコードをビルド・実行できたら最高ですね!(既にそういうものがあるのか、もしくは作れということなのか

*1:最初にテストコードから考えてもいいんじゃない!?って思った人はTDDについて調べてみると幸せになれるよ!

*2:たぶんコピペした方が早いと思うけどね!

*3:pthreadはGoogle Testのライブラリじゃないんだけど必要みたい

UbuntuでGoogle Testをインストール

Google Testをインストール

Ubuntuの場合apt-getでインストールできる。

インストールするパッケージを確認したい時は apt-cacheで次のように検索するとヒットする。

$ apt-cache search libgtest

libgtest-devとlibgtest0がインストールするパッケージである。
次のコマンドでインストールできる。

$ sudo apt-get install libgtest-dev
$ sudo apt-get install libgtest0

実際にGoogle Testを使ってテストをする方法はこちら
UbuntuでサクッとGoogle Testを使ってみよう