13 Oct 2013, 12:23

git pushで『You can’t push to …』でエラーする場合の対処方法メモ

久しぶりに、git pushをしてみたところ、以下のエラーがでて利用できなかった。

% git push
fatal: remote error:
  You can't push to git://github.com/tsu-nera/dotfiles.git
  Use https://github.com/tsu-nera/dotfiles.git

う~ん、なんでだろう。日頃pushしてないからかな・・・。

調べてみたところ、.git/configの設定が間違っているようだった。

%cat .git/config

[remote "origin"]
    url = git@github.com:tsu-nera/dotfiles.git

このurlの部分を以下のように変更する。

(変更前)url = git://github/com:tsu-nera/dotfiles.git
(変更後)url = git@github.com:tsu-nera/dotfiles.git

これで、git pushが成功するようになった。

06 Oct 2013, 05:35

Coursera Algorithms PartⅠを受講しました

アルゴリズムの知識を強化するために、Coursera Algorithms PartⅠを受講しました


Algorithms, Part I | Coursera


TopCoder対策の方法を探していたら、オンライン大学 Courseraの存在を知り、アルゴリズムのコースを受講してみた。初の受講ということで、感想を書いてみようと思います。

[//www.youtube.com/embed/gZV5jVF8lJ8?rel=0]

2つの壁

2つの言語の壁があっだ。EnglishとJavaだ。

英語はできないので、そもそもLectureを聞き取れるのかという疑問はあったものの、意外に大丈夫だった。たぶん、Sedgewick先生の英語がゆっくりでわかりやすかったからだと思う。これはけっこう自信がついた。

どちらかというと、Javaのほうが初めはけっこうきつかった。コンパイルの方法がわからん。Assignmet以前に、開発環境をEclipseで整えるのにアタフタ。でも、慣れてくればC++と大して変わらないことに気づく。これも自信がついた。内容的には、Javaの実装に関することも取り上げられていて、勉強になる。たとえばイテレータの使い方とか、汎用的なインターフェースに対する考察(Comparable型)など。

TopCoder対策

TopCoderの対策になったかというと、これはなったとは言えるものの効果的な方法ではなかった。

  • TopCoderは道具を使っていかにして問題を解くかが求められる。
  • Lectureでは道具そのものがどういうふうにできているかが説明される

とはいえ、Lectureの中でもアルゴリズムの使われ方の事例だったり、Assignmentではアルゴリズムを応用して問題を解いたりするので、全く一辺倒ではない。大学のLectureということもあるのだろう、比重は基礎よりだ。

Assignmentの内容が充実していて面白かった。

学習のススメ方について

ブリンストン大学のSedgewick先生による講義。

Lectureの動画をみて、Excerciseの問題を解いて、Assignmentを解くという繰り返し。Lectureを見るためのiPhone/iPadアプリがあるが、これはバグってて使えなかった。Chromeからいつでもどこでも動画を見れた。これが、Online大学の素晴らしいところだ。地獄の満員電車のなかでさえ、ジムのランニングマシンの上でさえ、Lectureを聴くことができる。

学習時間は、平均が週10時間とは書いてあったものの、自分の場合は週15時間(Lecture 5時間/Assignment 10時間)かかった。土日のうち、必ずどちらか1日はCourseraの勉強で潰れた。場合によっては、休日は土日の両方か潰れた(ノД`)

参考書籍は以下。買わなくても講義のスライドでなんとかなる。1000ページ!!

内容について

毎週の内容はこんな感じ。

  • week1 UnionFind いきなり知らないアルゴリズムがでてきたけれども、難しいことはなかかった。あとメモリと実行速度の計算。Assignmentはモンテカルロ・シミュレーションをつかった数値実験。
  • week2 スタックとキュー。それから、選択ソート、挿入ソート、シェルソートなどの簡単ソートアルゴリズムの紹介。このへんはまだ優しい。
  • week3 マージソートとクイックソート。そしてその発展形。再帰関数の紹介がマージソートでされる。このあたりから難しくなってきて追い詰められてくる。Assignmentは、パターン認識。
  • week4 ヒープ構造やヒープソートの紹介。BST。Assignmentは8puzzleというパズルをアルゴリズムで解く。キューを利用した幅優先探索。
  • week5 Sedgewick先生が考えた、Red-Black BSTが解説される。本人から解説されると、おおすげえとおもった。テクニックとしては、ここで深さ優先探索が出てくる。AssignmentはKd-treeの実装。
  • week6 ハッシュデータ構造と探索。あと、setをつかった検索方法も応用として紹介される。インデックス検索の仕組みが解説されていて、なるほどと思う。Assginmentはなくて、FinalExamがある。

全体として、自分にはレベルが高く、半分くらいしかワカラなかったし、問題も解けなかった。最後の方はなかなかグロッキー。

 終わりに

学生のころはあまりまじめに勉強しなかったし、頭も成績も悪くて院には進まずに就職した。学生のころに勉強していなかったのをとても後悔している。とくに、今の仕事では、ハードウェアに関する知識が必須だけれども、自分は情報系を専攻したのでまったくない。また、統計をしっかり勉強しなかったことにも後悔している。

Courseraは教育の格差をなくし、全ての学ぶ意欲のあるひとに機会を与えてくれる。社会人の自分にも、Courseraを通じて再び学問に触れることができることはとても嬉しいことだ。

理想的には、1度に2つのコースを受講したいが、勉強時間の確保が難しいかな。。週20~30時間。定時退社したい。とりあえず、生活と人格が破綻するまで頑張る。

次は、Algorithms PartⅡに挑戦!

29 Sep 2013, 04:23

『Modern C++ Programming with Test-Driven Development』写経環境をWindows上のCentOSに構築

C++ の TDD本、『Modern C++ Programming with Test-Driven Development』の写経環境を構築するためのメモです。

[toc]

ebookはここから購入できる。

各ツールの説明は、書籍の第1章に載っています。自分のPCはWindowsなのですが、Virtual Box 上に CentOSをインストールしてそこに開発環境を構築し、、Sambaを経由してWindows上のEclipse上から写経をしようと考えています。なので、ベースは CentOS。そのへんの導入方法は過去記事を参照のこと。

Windows環境だと、CygwinのgccやVisualStudioを利用するてもあるけれども、コンパイル時間が遅いので今回はやめた。

環境

  • CentOS 6.4(on VirtualBox on Windows 7 64bit)
  • Eclipse 4.3 kepler

ソースコードの取得

githubはこのリンクから。

コードはここからダウンロード可能。

g++

CentOSでは、C++11対応のg++4.7.2をインストールするには一工夫が必要。

cmake

サンプルコードのコンパイルには、cmakeを利用するので必要。

sudo yum -y install cmake
% cmake -version
cmake version 2.6-patch 4

Google Mock

この本の主人公、GoogleMockをインストールします。

まずは、gmockをサイトからダウンロードして解凍。最新版は1.7だが、現時点(201310)では、1.7だとサンプルテストがエラーしたので、1.6で入れる。

以下のサイトからダウンロード。

落としたら適当な場所におく。SampleSourseのcmakeでのビルドのために、パスを通す。

export GMOCK_HOME=/home/tsu-nera/tools/gmock

GMOCK_HOMEで、以下を実行。

mkdir mybuild
cd mybuild
cmake ..
make

続いて、gtestの方もビルドする。

cd $GMOCK_HOME/gtest
mkdir mybuild
cd mybuild
cmake ..
make

サンプルコードを動かて、テストが成功すればOK.

cd /home/tsu-nera/repo/modernCTDD/c2/2
cmake CMakeLists.txt
make
./test
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from SoundexEncoding
[ RUN      ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord
[       OK ] SoundexEncoding.RetainsSoleLetterOfOneLetterWord (0 ms)
[----------] 1 test from SoundexEncoding (1 ms total)

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

おまけ、VisualStudioへのGoogleMock導入方法は以前まとめた気がした。

Eclipseの設定

Windows上でのEclipseの設定。前述のとおり、ここでは、Sambaを経路してWindows上から使います。Sambaの設定は省略です。

プロジェクト・エクスプローラを右クリックして、

  • インポート -> C/C++ -> Existing Code as Makefile Project

次に、ヘッダファイルのパスを設定する。プロジェクトのプロパティから

  • C/C++一般 -> パスおよびシンボル

を選択する。インクルードでGMockとGTestのインクルードパスを追加。

Z:\tools\gmock\include
Z:\tools\gmock\gtest\include

リモートビルドの設定はめんどくさかったので、とりあえずビルドはコンソールからコマンドを叩きます。

とりあえず、ここまでで初めの章をすすめる準備が整った。あとはひたすら読み進めるのみだが。。。Keine Zeit!!!

libcurl

Chapter5で必要となる。サイトから最新版をダウンロード。

以下のコマンドでインストール。

tar zvxf curl-7.32.0.tar.gz
export CURL_HOME=/home/tsu-nera/tools/curl-7.32.0
cd $CURL_HOME
mkdir build
cd build
cmake ..
make

JsonCpp

Chapter5で必要となる。サイトから最新版をダウンロード。

インストールには、pythonで書かれたビルドツールsconsというものが必要らしい。(makeのようなもの)。以下から落とす。

適当なところに解凍する。setup.pyが中にあるので、sconsをインストール。

sudo python setup.py install

つづいて、jsonをビルドする。

tar zvxf jsoncpp-src-0.5.0.tar.gz
export JSONCPP_HOME=/home/tsu-nera/tools/jsoncpp-src-0.5.0
cd $JSONCPP_HOME
scons platform=linux-gcc
cd $JSONCPP_HOME/libs
cp linux-gcc-4.4.7/libjson_linux-gcc-4.4.7.so libjson_linux-gcc.so

環境変数のバージョン(gcc 4.4.7)でしか、ビルドできなかった。。。とりあえず動作する。

追記:ビルドのために以下も。

export LD_LIBRARY_PATH=$JSONCPP_HOME/libs:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$CURL_HOME/build/lib:$LD_LIBRARY_PATH

Boost

C++をbotstさせるライブラリ群、Boostをインストールします。以下から、最新版を落とす。

任意のディレクトリに配置して、パスを通す。

tar zvxf boost_1_54_0.tar.gz
export BOOST_ROOT=/home/tsu-nera/tools/boost_1_54_0
export BOOST_VERSION=1.54.0

続いて、必要なライブラリをBuildする。

cd $BOOST_ROOT
./bootstrap.sh --with-libraries=filesystem,system
./b2

CppUTest

レガシーコードに対するモックはGoogleMockよりも、CppUTestのほうがモックしやすいという理由で、CppUTestも紹介されている。以下からダウンロード。

以下でインストール。

tar xvzf cpputest-3.3.tar.gz
export CPPUTEST_HOME=/home/tsu-nera/tools/cpputest-3.3
cd $CPPUTEST_HOME
make
make -f Makefile_CppUTestExt

※3.4,3.5はまだ動かない。

rlog

Chapter8でrlogが使われます。

rlog – C++ logging library – Google Project Hosting

以下でインストール。

tar xvzf rlog-1.4.tar.gz 
export RLOG_HOME=/home/tsu-nera/tools/rlog-1.4
cd $RLOG_HOME

27 Sep 2013, 14:45

潜在バグに苦しむ日々

バグにハマって辛い思いをしている。

if else文で、必ずelseになるというバカらしい単純バグ。

いろいろ怒られて謝る。バグの作り込み原因の分析をして、再現試験と類似の試験をたくさん実施して、報告資料も作成して、今週は精神的に参った。

自分でつくりこんだものならばしょうがないと思う。しかし、これが自分で作ったものでないから虚しい。4年前にバグは仕込まれ、自分は半年前に担当者になったが、正直、機能を全ては理解していない。

設計書に仕様は書いていないし、テストコードもない。というより、テストしていないらしい。!自分でテストコード書いたら、10分あればテストハネースに組み入れられたので、実施しないのは単なる怠慢。

設計書に仕様を書かない理由は、この処理はなにがおこるかわからないので、なにが起こっても大丈夫なようにいろいろと論理を入れている。だから設計書にはなにもかかないそうだ。

恐るべきレガシーコードだ。そうはいっても、なにも始まらないので、笑顔でレガシーコードに向きあおう。

22 Sep 2013, 15:24

重複コードを撃退!DRY原則をC言語で実践するためのCPDを調べた

はじめに

TDDが好きなので、コードの重複を計測するツール PMDについて調べてみた。

DRY原則とは

DRY原則とは、”Don’t Repeat YourSelf”の略。

簡単に言ってしまえば、コピペするな、ということだ。

重複なコードを書くならば、リファクタリングして、共通部分は共通化しようという考え方。

CPDで重複コードを計測する

このコードの重複さを計測するツールが PMDだ。PMD公式サイトから最新版をダウンロードする。

PMDはJAVA用のツールだが、それに付随するCPDというコマンドで、オプションにJAVA以外の言語を指定すると、他の言語でも使える。(C言語, C++, PHPとか)

Windowsの場合

<div class="outline-text-3" id="text-3-1">
  <p>
    zipファイルを解凍したら /bin配下に cpd.batというファイルがある。 これがコマンドラインから実行するためのコマンドになる。
  </p>

  <p>
    cpdの使い方は以下の通り。
  </p>

  <pre><code>cpd 

–minimum-tokens xxx 重複差を指定する。xxxを50にすれば50行以上の重複を報告 –files xxx ファイルのパス [–language xxx] 言語。自分はC言語を使いたいので –language c みたいな [–encoding xxx] エンコード指定 [–format (xml|text|csv|vs)] 出力フォーマット指定

  <p>
    例えば、重複度10でC言語でXML出力ならば、こんな感じ。
  </p>

  <pre><code>“C:\Program Files (x86)\pmd-bin-5.0-alpha\bin\cpd”

–minimum-tokens 10 –files src –language c –format xml>cpd_result.xml

  <p>
    最後にリダイレクトでファイルに出力してやる。
  </p>

  <p>
    現在の最新版 pmd 5.0だとエラーして苦労した。
  </p>

  <ul class="org-ul">
    <li>
      <i>CPDでsaxon9-dom.jarがないよと怒られ</i>
    </li>
  </ul>
</div>

Jenkins DRY Pluginを入れる

XML形式で出力した結果をJenkinsで表示してみる。

をJenkinsのプラグインで追加する。

プラグインをインストールすると、[ビルド後の処理の追加]で重複コード分析の集計が現れるので、さきほど出力したファイルを追加。

image

出力結果

image

 

はじめに

TDDが好きなので、コードの重複を計測するツール PMDについて調べてみた。

DRY原則とは

DRY原則とは、”Don’t Repeat YourSelf”の略。

簡単に言ってしまえば、コピペするな、ということだ。

重複なコードを書くならば、リファクタリングして、共通部分は共通化しようという考え方。

CPDで重複コードを計測する

このコードの重複さを計測するツールが PMDだ。PMD公式サイトから最新版をダウンロードする。

PMDはJAVA用のツールだが、それに付随するCPDというコマンドで、オプションにJAVA以外の言語を指定すると、他の言語でも使える。(C言語, C++, PHPとか)

Windowsの場合

<div class="outline-text-3" id="text-3-1">
  <p>
    zipファイルを解凍したら /bin配下に cpd.batというファイルがある。 これがコマンドラインから実行するためのコマンドになる。
  </p>

  <p>
    cpdの使い方は以下の通り。
  </p>

  <pre><code>cpd 

–minimum-tokens xxx 重複差を指定する。xxxを50にすれば50行以上の重複を報告 –files xxx ファイルのパス [–language xxx] 言語。自分はC言語を使いたいので –language c みたいな [–encoding xxx] エンコード指定 [–format (xml|text|csv|vs)] 出力フォーマット指定

  <p>
    例えば、重複度10でC言語でXML出力ならば、こんな感じ。
  </p>

  <pre><code>“C:\Program Files (x86)\pmd-bin-5.0-alpha\bin\cpd”

–minimum-tokens 10 –files src –language c –format xml>cpd_result.xml

  <p>
    最後にリダイレクトでファイルに出力してやる。
  </p>

  <p>
    現在の最新版 pmd 5.0だとエラーして苦労した。
  </p>

  <ul class="org-ul">
    <li>
      <i>CPDでsaxon9-dom.jarがないよと怒られ</i>
    </li>
  </ul>
</div></p>

Jenkins DRY Pluginを入れる

XML形式で出力した結果をJenkinsで表示してみる。

をJenkinsのプラグインで追加する。

プラグインをインストールすると、[ビルド後の処理の追加]で重複コード分析の集計が現れるので、さきほど出力したファイルを追加。

image

出力結果

<div class="outline-text-2" id="text-5">
  <a href="http://hmi-me.ciao.jp/wordpress/wp-content/uploads/image27.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://hmi-me.ciao.jp/wordpress/wp-content/uploads/image_thumb27.png" alt="image" width="566" height="281" border="0" /></a> </p> 

  <p>
    Jenkinsさんと一緒に思わずニンマリ。
  </p></p>
</div></p>

08 Sep 2013, 09:45

JUnitでthrowで投げた例外を検証する方法のメモ

最近記事投稿数が少ないので、ごまかし程度にメモを。

錆びついたJavaの知識にオイル刺しをしている日々ですが、今日は例外処理をJUnitで実施する方法を調べました。

まずは、Javaでの例外の投げ方。以下の用に記述することで、例外を投げてプログラムを終了させることができます。

throw new (エラー)

たとえば、キューにエンキューしたときに、NULLをエンキューしようとしたときは、以下のようにしてjava.lang.NullPointerExceptionの例外を投げる。

public void addFirst(Item item)
  {
    if(item == null)
      throw new java.lang.NullPointerException();
        ...
}

これを、Junitで期待した例外で終了したかどうかを検証するためには、try、catchを利用する。fail()がコールされないことを持ってして、成功と判断する。なかなかトリッキーな方法だ。

 try{
   (例外を発生させる関数);
   fail("Error");
 }catch((エラー) expected){ }

たとえば、以下のようなテストを記述する。

@Test
public void DequeAddFirstNull()
{
 Deque que = new Deque();

 try{
   que.addFirst(null);
   fail("Error");
 }catch(NullPointerException expected){ }
}

08 Sep 2013, 02:00

TopCoder SRM 590 div2 250

TopCoderに参戦!

深夜のTopCoderは起きてるのだけで辛い。。。>_<

CourseraのAlgorithms Part1のノルマをこなすために、この日は朝からずっとアルゴリズム漬けだった。15時間の勉強のあとに、TopCoder参戦。

Courseraはイバラの道だったな。。。休日が課題で潰れる。もっと平日定時退社できればいいのだけれども。

そんなこんなで、疲れ果ててほとんど問題が解けなかった。いつになっても全く成長できない。。。

 

01 Sep 2013, 07:53

EclipseとGithubを連携させるプラグイン『EGit』を利用して、新しいリボジトリを作成する手順メモ

Githubにローカルリポジトリを登録する方法は以前調べました。

今回、Eclipseで管理しているプロジェクトをそのままGithubにアップロードしたかったので、その手順をメモします。

環境

  • Eclipse 4.3 Kepler
  • git 1.7.9

Egitプラグインをインストール

まだEGITがはいっていない場合は、インストールする。たぶん、デフォルトで搭載されているはず。

ローカルリポジトリの作成

Git管理したいプロジェクトを右クリックして

  • チーム -> プロジェクトの共用 -> Git -> 次へ
  • プロジェクトの親フォルダ内のリポジトリを使用または作成をチェック
  • 完了を選択。

これで、すでに.gitがある場合はそれをEclipseから見ることができ、.gitがない場合は新規作成されます。

無視するフォルダを選択して、チーム -> 無視 を選択。これで、.gitignoreにフォルダが登録されます。

  • .setting/org.eclipse.jdt.core.prefsはEclipseの設定ファイルなので、無視。
  • .classpathはビルド時の外部jarのパスがかかれたファイルなので残す。
  • .projectはEclipseプロジェクトの設定ファイルなので、残す。

.gitignore

/bin
/.settings

最後に、初回commitをしましょう。チーム -> コミットでコミットする。

githubにリポジトリリポジトリ作成

githubにリポジトリを作成します。詳細は、以前の記事と同じなので、省略。

ここでは、リモートリポジトリになにも作成しません。

EclipseとGithubを連携する

Githubにpushします。

チーム -> リモート -> プッシュを選択。

URIの欄に、HTTPSのURLを選択

https://github.com/tsu-nera/coursera-algorithms-part1.git

あとの欄は勝手に入力される。

続いて、ref mappingの設定。ここでは、ローカルのmaster branchに、リモートのmasterブランチを対応させる。

  • ソース参照 refs/heads/master
  • 宛先参照 master

これで、プッシュできるようになりました。

つづいて、プルの設定。

チーム -> リモート -> 次から取り出しを選択。

続いて、ref mappingの設定。ここでは、ローカルのmaster branchに、リモートのmasterブランチを対応させる。

  • ソース参照 refs/heads/master
  • 宛先参照 refs/remotes/origin/master

これで、フェッチを選んでもリモートから取れなくて、プルを選択するとリモートから取得できる。このへんは理由がよくわからない。

ちなにみ、作業中に以下のエラーがでた。

現在のブランチはプル用に構成されていません
構成にキー branch.master.merge の値がありません

以下のサイトを参考に解決。

01 Sep 2013, 02:49

テスターの視点を手に入れるために『実践アジャイルテスト』を読みました

実践アジャイルテストを読んだ読書メモです。



開発者以外の視点を手に入れるために、読んで見ました。テスターの人は連日自分のバグを洗い出してくれるので、私は感謝と憎悪そのたもろもろの、複雑な思いをテスターのひとたちに抱いている今日このごろです。

ディベロッパーよりは、テスターのための本。単体テスト、結合テストの上位に位置するテストについて書かれた本です。

また、Fitnesseがたくさん紹介されているらしいという口コミをきいたので、読んでみました。


受け入れテスト用フレームワーク「Fitnesse」導入手順のまとめ | Futurismo


正直にいうと、あまり深くは読んでいないです。流し読み。ただ、テストコードが本に一回も現れないため、スラスラ読めます。珠玉のアイデアを発見できたので、忘れないようにメモしておこうと思います。

ウォーターフォール型テスト vs アジャイルテスト

ウォーターフォールテストでは、長期間の中盤から最後にかけてテストを実施する。

アジャイルテストでは、まず機能テストを書く。テストファースト。短い開発期間の中で、シナリオテストを区切りにして、イテレーションを繰り返していく。テストが開発を駆動する点では、TDDとも言える。

どこでテストを書くかという点が異なる。最後にテストをするのがウォーターフォール。最初にテストをするのがアジャイルテスト。

アジャイルテストマトリックス

アジャイルテストは、4つの象限に分類できる。

機能テスト

第2象限:手動と自動テスト。

探索テスト
シナリオテスト
ユーザビリティテスト

第3象限:手動テストが必要。

単体テスト
結合テスト

第1象限: 自動テスト

パフォーマンステスト
~性テスト

第4象限:ツールでのテスト

                  <p>
                    &#160;
                  </p>

                  <p>
                    アジャイルとつくからには、自動化できることは自動化しようという意図が裏にある。
                  </p>

                  <h4>
                    第1象限
                  </h4>

                  <p>
                    単体テストや結合テストといっているのが、いわゆるxUnitフレームワークを利用した、開発者が実施するテスト。
                  </p>

                  <h4>
                    第2象限
                  </h4>

                  <p>
                    機能テスト。顧客テスト、ストーリーテストとも呼ばれる。顧客が求めている機能が満たされているかをテストする。
                  </p>

                  <h4>
                    第3象限
                  </h4>

                  <p>
                    シナリオテストや探索的テストがここに入る。
                  </p>

                  <p>
                    シナリオテストは、機能を組み合わせたワークフローのテスト。自動化できたりできなかったり。
                  </p>

                  <ul>
                    <li>
                      <a href="http://blog.livedoor.jp/prjmng/archives/52281332.html" target="_blank">ソフトウェアの品質を学びまくる:「シナリオテスト」とは一体、何なのか &#8211; その1</a>
                    </li>
                  </ul>

                  <p>
                    探索的テストは、バグってそうなところを経験と推測で試行錯誤しながら探していくテスト。詳しくは以下。
                  </p>

                  <ul>
                    <li>
                      <a href="http://www.itmedia.co.jp/im/articles/1111/07/news203.html">情報マネジメント用語辞典:探索的テスト(たんさくてきてすと) &#8211; ITmedia エンタープライズ</a>
                    </li>
                  </ul>

                  <p>
                    想定外の、げっこんなことやるのかよと、ぞっとするのがココ。
                  </p>

                  <h4>
                    第4象限
                  </h4>

                  <p>
                    製品を批評するテストがここに入る。観点のテスト。非機能テスト。例を以下に列挙。
                  </p>

                  <ul>
                    <li>
                      パフォーマンステスト、負荷テスト、ストレステスト。
                    </li>
                    <li>
                      セキュリティ
                    </li>
                    <li>
                      ユーザビリティ
                    </li>
                    <li>
                      保守容易性(mentainability)
                    </li>
                    <li>
                      導入容易性(Installability)
                    </li>
                    <li>
                      信頼性(reliablirity)
                    </li>
                  </ul>

                  <h3>
                    自動化テストのピラミッド
                  </h3>

                  <p>
                    4つのレベルに分類できる。
                  </p>

                  <table cellspacing="0" cellpadding="0" width="482" border="1">
                    <tr>
                      <td valign="top" width="275">
                        手動テスト
                      </td>

                      <td valign="top" width="205">
                        努力
                      </td>
                    </tr>

                    <tr>
                      <td valign="top" width="275">
                        GUI/CLIてテスト
                      </td>

                      <td valign="top" width="205">
                        Selenium,expect・・・
                      </td>
                    </tr>

                    <tr>
                      <td valign="top" width="275">
                        受け入れテスト(APIレイヤのテスト)
                      </td>

                      <td valign="top" width="205">
                        Fit,Fitnesse
                      </td>
                    </tr>

                    <tr>
                      <td valign="top" width="275">
                        単体テスト・コンポーネントテスト
                      </td>

                      <td valign="top" width="205">
                        xUnitフレームワーク
                      </td>
                    </tr>
                  </table>

                  <p>
                    &#160;
                  </p>

                  <p>
                    ここで新しく知ったのが、APIレイアのテスト。GUI/CLIなどの直接外に見えるI/Fの裏側のテスト。APIを直接テストすることで、よりテストを網羅的に、高速に実施することができる。
                  </p>

                  <p>
                    そして、そのためのツールがFitnesse。
                  </p>

                  <h3>
                    まとめ
                  </h3>

                  <p>
                    この本は膨大な分厚さ(500Pくらい!)で、流し読みではなくて何度読んでもそのたびごとに発見があると思われる本。品質保証のすべてが網羅的に書かれている良書。
                  </p>

                  <p>
                    単に、技術的な手法の紹介ではなくて、アジャイル開発に対してテストはどうあるべきかという思想が随所で書かれている。
                  </p>

                  <p>
                    機会があればまた読みなおしたい一冊。
                  </p>

                  <hr />

                  <div class="amazlink-box" style="overflow: hidden; font-size: small; zoom: 1; padding-bottom: 20px; text-align: left">
                    <div class="amazlink-list" style="clear: both">
                      <div class="amazlink-image" style="float: left; margin: 0px 12px 1px 0px">
                        <a href="http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%86%E3%82%B9%E3%83%88-%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A8%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-IT-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5/dp/4798119970%3FSubscriptionId%3DAKIAJBCXQ4WQGJ7WU3WA%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798119970" rel="nofollow" target="_blank"><img style="border-top: medium none; border-right: medium none; border-bottom: medium none; border-left: medium none" src="http://ecx.images-amazon.com/images/I/51TkJaY4jPL._SL160_.jpg" /></a>
                      </div>

                      <div class="amazlink-info" style="margin-bottom: 10px; height: 160px">
                        <div class="amazlink-name" style="margin-bottom: 10px; line-height: 120%">
                          <a href="http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%86%E3%82%B9%E3%83%88-%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A8%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-IT-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5/dp/4798119970%3FSubscriptionId%3DAKIAJBCXQ4WQGJ7WU3WA%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798119970" rel="nofollow" target="_blank">実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects’Archive ソフトウェア開発の実践)</a>
                        </div>

                        <div class="amazlink-powered" style="font-size: 80%; margin-top: 5px; line-height: 120%">
                          posted with <a title="アマゾンアフィリエイトリンク作成ツール" href="http://amazlink.keizoku.com/" target="_blank">amazlink</a> at 13.09.01
                        </div>

                        <p>
                          <noscript>
                            <a href="http://bust-up.gob.jp">xn--cck2b5as2b7b</a>
                          </noscript>
                        </p>

                        <div class="amazlink-detail">
                          Janet Gregory
                        </div>

                        <div class="amazlink-sub-info" style="float: left">
                          <div class="amazlink-link" style="margin-top: 5px">
                            <img src="http://amazlink.fuyu.gs/icon_amazon.png" width="18" /><a href="http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%86%E3%82%B9%E3%83%88-%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A8%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-IT-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5/dp/4798119970%3FSubscriptionId%3DAKIAJBCXQ4WQGJ7WU3WA%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798119970" rel="nofollow" target="_blank">Amazon</a> <img src="http://amazlink.fuyu.gs/icon_rakuten.gif" width="18" /><a href="http://hb.afl.rakuten.co.jp/hgc/g00q0724.n763w947.g00q0724.n763x2b4/archives/c=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F6255709%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Frms%2Fmsv%2FItem%3Fn%3D6255709%26surl%3Dbook" rel="nofollow" target="_blank">楽天</a>
                          </div></p>
                        </div></p>
                      </div></p>
                    </div></p>
                  </div>

                  <hr />

31 Aug 2013, 02:05

PC操作をジェスチャーでできる『Leap Motion』を購入をしました!初めての使い方まとめ

最近なにかと話題のセンサーデバイス、『Leap motion』(リープモーション)を購入をしました!

20130831091647.jpg

購入方法

注文はamazonでしました。価格は80ドルらしいが、アマゾンで購入したら12000円した。4000円ぼったくられた?畜生、やられたら倍返しだ!



Leap Motionとは

Leap Motionとは、手の動きだけでパソコンを操作するためのセンサーデバイスです。

動画を見たほうが早いかも。Youtubeの公式紹介動画はこちら。

[//www.youtube.com/embed/_d6KuiuteIA?rel=0]

開封してみる

箱の外観図。なんだか、iPhoneを購入した時のように、心がワクワクします!

20130831083848.jpg

箱をあけてみた!うわっ、小さい!Kinect涙目。。。

20130831083922.jpg

手のひらサイズです。手乗りインコのように可愛いです。よしよし、これからかわいがってあげるよ。

20130831091502.jpg

USBケーブルが短いものと長いもので2つついてきます。また、説明書っぽいものがあるけれども、ぽいだけで、実際はネットの情報を元にインストールします。これだけ!

20130831091246.jpg

 

マウスといっしょに撮影したもの。

20130831083959.jpg

LeapMotionを使ってみる

導入手順も動画でまとまっています。

 

Getting Started Windows from Leap Motion on Vimeo.

まずは、パソコンにLeapMotionようのソフトウェアをインストールします。以下からダウンロード。Windows用とMac用が用意されている。

Airspaceというアプリが入りました。これは、iPhoneでいうところのiTunesのようなもので、ここでアプリを管理します。

アプリを起動すると、簡単なオープニングデモ(Orientation)がはじまる。感動した!

20130831104925.jpg

アプリをインストールして遊ぶ

アプリは以下のサイトから落としてくることができます。


Airspace Store by Leap Motion


有料のものと無料のものがあるようです。

まだ、種類は多くないですが、これから大流行しそうな予感がします((o(´∀`)o)