19 Aug 2013, 15:32

夏休みの自由研究 『Console Karajan』

夏休みが4日間あったので、なにか自由研究をしてみようと思いました。

Kinectを使ってクラシック音楽を操るソフトをつくろうとしたのだけれども、結局Kinectをつかいこなすまで開発が進まなかったorz。というわけで、コンソールバージョンの日記でも。

[//www.youtube.com/embed/-9tmgcL0V-Y?rel=0]

実は、もともとゴールデンウィークにつくってたものだけれども、ゴールデンウィークの3日間で完成せず、夏休みの4日間でも完成せず。もう1週間もかけてるのに、一向に開発はすすまず。はたして、次はお正月か?

音源の制御には、VLCのAPIを利用。

テンポの変更検出は、4拍子ごとに実施しているけど、これだと精度が悪すぎた。また、急激にテンポを変更すると、きいていて違和感が。今後の課題。

こっちが本物のカラヤン。カックイイ(・∀・)

[//www.youtube.com/embed/FJ96i-m6cBk?rel=0]

ちなみに、テストはGoogleTest/GoogleMockを使ってバリバリ実施。むしろ、こっちが大変だった。GoogleTestはファイル操作系のwindows APIと相性が悪くて、これだけで半日潰れて、そのままうつになって、一日潰れた。

[//www.youtube.com/embed/lzsrTv3UA-I?rel=0]

19 Aug 2013, 15:05

Kinectで指揮者になる!世界のKinectHackerたち

オーケストラを指揮者のように操りたい!

クラオタならば誰もが夢想することですね。

何の役にも立たない指揮棒を楽器屋さんで購入して、真夜中の草木も眠る丑三つ時に、ブルックナーなんかをイヤホンで聞きながら暗闇に向かって指揮をするなんて、至福のひとときです。

そんな夢を叶えてくれる魔法のデバイス、それがKinect。

世界には、そんなクラオタたちのKinectハックが溢れかえっています。

今日は、そんなKinect Hackをまとめてみます。

Kinect conductor

はじめてみつけた動画がこれ。イタク感動した。

[//www.youtube.com/embed/uABuEIU-aNE?rel=0]

Virtual Conducting with the Microsoft Kinect

おんなじテンポをKinectで操る。

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

kinectを使用した指揮者体験アプリケーションの開発

これは大学生が研究のテーマにしたもの。

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

Kinect Fun Labs Election: Virtual Conductor

ダンスすると、いろんな音色がひろがる。楽しそう。

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

Wii Conductor Hero

これはKinectではなくて、wiiを使ったもの。

[//www.youtube.com/embed/rX-bQR4bkqY?rel=0]

Carpe Zythum – Kinect controlled pipe organ (full performance)

オルガンをKinectで操ります。パフォーマンスとしても感動的です。

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

AdMaestro

CDを音源として、自由自在にテンポを変更できるみたい。Made in Japan の 商用ソフトで値段は15000円。高い!

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

16 Aug 2013, 10:43

C++でCSVファイルの読み込み、書き込みをする方法メモ

C++でCSVファイルを扱う方法を調べてみましたので、メモします。

ヘッダファイルには、以下のインクルードが必要。

#include<fstream>
#include<iostream>

using namespace std;

出力

ofstreamを使います。

ofstreamでファイルを出力ストリームとして開き、<<演算子で書き出します。

書き出すときに、カンマを入れます。

開くときは、ofs(ファイル名)で開ける。ofs.close()処理はなくてもOK.

入力

ifstreamでファイルを入力ストリームとして開き、>>演算子で読み込みます。

カンマで区切るのが少しテクニックが必要!getlineをつかって、カンマをウマク検出します。getlineのために、

#include<string>

も必要となる。

getline関数は、文字列として読み込むので、文字列から数値に変換が必要な場合は、sstreamを使って変換します。

#include<ssteam>

string token;
int    hoge;
stringstream ss;

ss << token; //数値に変換
ss >> hoge; 

開くときは、ifs(ファイル名)で開ける。ifs.close()処理はなくてもOK.

11 Aug 2013, 13:56

レガシーコード改善ガイドを読了しました!心に響いた考え方の覚書

レガシーコード改善ガイドを読了したので、読書メモです。

20130811215651.jpg

分厚い本だけれども、とても良書だった。挫けそうだった時に読んだので、心に染み入るように文章が心に響いた。

もっとも、自分は仕事ではC言語のレガシーコードと戦っているのて、オブジェクト思考的な手法は使えない。そういう部分は読み飛ばした。

いろいろと心に残ったことはあるけれども、抜粋して書き出します。

整合部・形容点

以下、書籍から定義を引用します。

接合部

接合部(seam)とは、その場所を直接参照しなくても、プログラムの振る舞いを変えることのできる場所である。

許容点

どの接合部も許容点(enabling point)を持つ。許容点では、どの振る舞いを使うかを決定できる。

この2つの概念は大事。どんなコードも、依存関係を排除できる可能性があるということ。諦めてはいけいなということ。鋭い感性で、ズバッと許容点を探しだすスキルを磨くことが大事だ。

スプラウトメソッド

スプラウトメソッドとは、新規追加する機能は関数として抜き出して(スプラウトして)実装する方法。関数の呼び出しもとは、ドロドロの依存関係でテストがかけないれども、できたてホヤホヤの関数ならばテストがかけるはず。

if文のリファクタリングによく使う。こんなの。

if( (hogehoe && uhauha) ||
    (iyaiya) ||
    ((mouiya) && (dameda)) )

場合によっては、ファイル自体をテストハネースに組み入れることができない。そんなときは、新しいファイルを新規作成して、機能を独立させて実装する(これをしたら怒られたけどれも)

ラップメソッド

ラップメソッドはスプラウトメソッドの逆。既存の処理は、関数として独立させて追い出す。汚い部分は追い出す。SmelllCodeをラップする。臭いものには、クレラップ。

if(smell){
    /* 500 Step*/
}

ここに機能を追加しないといけないときは、ラップ関数を作成して、追い出す。

void lap(void) {
    if(smell){
        /* 500 Step*/
    }
    return 0;
}

あとは、きれいな関数たちでコードを書く。

seiketu();
lap();

プリプロセッサ接合部

このテクニックを知ったことは、一番の収穫かもしれない。プリプロセッサ接合部、便利すぎる!というか、すごいぞ!

例えば、コードの中にあるunko()が邪魔でしょうがない時は、プリプロセッサで消してしまえば良い。

#define unko{retrn 0}

スパイしたり、フェイクしたいときだって、置き換えは簡単。インクルードファイルを冒頭に書いてその先で後方置換してしまう。こんな風に、スパイだって自由自在だ。

hogehoge.c

#ifdef DEBUG
#include "Mock_unko.h"
#endif

Mock_unko.h

static int last_un;
static int last_ko;

void unko_Spy(int un, int ko)
{
    last_un = un;
    last ko = ko;
}
...

#define unko unko_Spy

多用し過ぎるとプロダクトコードがごっちゃになるとかで推奨されていないようだが、便利すぎるのでついつい使ってしまう。

仕様化テスト

振る舞いを維持するためには、テストが必要。しかし、その振る舞いすらよくわからないことがある。よく

いわれるのが

「仕様書を信じるナ!実機に聞け!」

実際の動作のみが唯一正しい真実なのだ。

この振る舞いを壊さないために、テストして明文化することでで、振る舞いを維持する。そのテストが仕様化テスト。

正直、今目の前にあるコードをテストで覆うのは無理!なので、既存処理に対する単体テストは諦めてる。とてもそんな工数はないし、コストパフォーマンスもない。そうではなくて、機能テストで覆うことに心の重点がシフトし始めている。それが、Fitnesseだったりする。

11 Aug 2013, 12:20

これぞテストの最終形態!FitNesseとRubySlimで実現するエンドツーエンドテスト

FitnesseとRubySlimを使ってでエンドツーエンドを書いてみました。

なんどもおんなじネタで恐縮だけれども、FitNesseとRubySlimを利用して、エンドツーエンドを実装してみました。

この記事は、以下の記事の延長になります。

FitNesse テストケースの用意

まずは、テストケースのページの作成です。

これは、前回の記事のまんま。

!contents -R2 -g -p -f -h

!define TEST_SYSTEM {slim}
!define TEST_RUNNER {/home/tsu-nera/src/ruby_fitnesse/rubyslim/bin/rubyslim}
!define COMMAND_PATTERN {ruby -I %p %m}
!define PATH_SEPARATOR { -I }
!path /home/tsu-nera/src/ruby_fitnesse/tests

こんな感じで、Decision Tableを作成しました。

|make directory                     |
|command       |expect  |get result?|
|mkdir testdir |testdir |0          |
|mkdir testdir2|testdir2|0          |
|mkdir testdir3|testdir4|0          |

Custom Fixturesの用意

ここからが本題。RubyでCustomFixtureを作成します。

/home/tsu-nera/src/ruby_fitnesse/testsに Test Fixtures作成。

なかなかウマクイカなかったので、こんな実験用コードも書いた。

require "./make_directory"
include Fixtures

@foo = MakeDirectory.new
@foo.set_command("mkdir testdir")
@foo.set_expect("/testdir/")
@foo.get_result
@foo = nil

これで、準備完了!Webからテストを実行します。

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

テスト結果のログは、’Output Capture’というところをクリックすると見れる。障害調査も完璧。

11 Aug 2013, 06:34

RubyのAPIレベルのテストを直叩きできるFitNesse用フレームワーク ‘RubySlim’

FitNesseをRubyで利用するためのslimフレームワーク、RubySlimを試してみました。

RubySlimは、FitNesseのブラグインで、FitNesseからRubyのコマンドを実行することができるツールです。

作者はボブおじさんです。作者直々のチュートリアル動画も見つけました。

RubySlimを使ってみる

作業用ディレクトリ作成
mkdir ruby_fitnesse
cd ruby_fitnesse
fitnesseのダウンロード
rubyslimのダウンロード
git clone https://github.com/unclebob/rubyslim.git
TestCase の作成

まずは、URLにアクセスして、現れたURLを編集します。

http://localhost/RubySlimFirstExample

TEST_RUNNERには、bin.rubyslimを設定。

!pathには、Custom Fixtureのパスを設定。

!contents -R2 -g -p -f -h

!define TEST_SYSTEM {slim}
!define TEST_RUNNER {/home/tsu-nera/src/ruby_fitnesse/rubyslim/bin/rubyslim}
!define COMMAND_PATTERN {ruby -I %p %m}
!define PATH_SEPARATOR {-I}
!path /home/tsu-nera/src/ruby_fitnesse/tests
Custom Fixture作成
mkdir -p /home/tsu-nera/src/ruby_fitnesse/tests
cd /home/tsu-nera/src/ruby_fitnesse/tests
emacs some_decision_table.rb

ファイルの命名規約が重要。 SomeDecisionTable -> some_decision_table.rbのようにする。

 module Fixtures
  class SomeDecisionTable
    def set_input(input)
      @x = input
    end

    def get_output
      @x
    end
  end
end
Decision Table

wikiに戻って、decision Tableを書く。

Fixtures は module名に対応させること。

|Import|
|Fixtures|

some decision table <-> SomeDecisonTable Classに対応させること。

set_input <-> input,get_output <-> get output?に対応する。

|some decision table|
|input|get output?  |
|1    |2            |

これで、準備完了。testを実行すればOK.

10 Aug 2013, 23:26

C/C++のAPIレベルのテストを直叩きできるFitNesse用フレームワーク ‘CSlim’

FitNesseをC/C++で利用するためのslimフレームワークではcslimがあります。これを試してみました。

前回の続きです。

CSlimを使うと、APIレベルのテストを直接実行できます。ほかのテストツールとの役割分担はこんな感じ?

  Web I/F   ... Selenium
  -----------------------------
  API       ... CSlim
  -----------------------------
  Function  ... xUnit(CppUTest)

Authors は Robert Martin, James Grenning, and Doug Bradburyです。James Gremmingさんといえば ‘Test-Driven Development for Embedded C’の著者ですね。

cslimは内部でCppUTestを使ってます。CppUTestもこの本が詳しいです。

Webのドキュメントは、githubのwikiにある、以下の2つのリンクが詳しい。

cslimを動かす

以下の記事を参考にして、自分も動かしてみました。

まずは、CSlimを実行するディレクトリを作成

$ mkdir cpp_fitnesse
$ cd cpp_fitnesse

cslimはCppUTestに依存しているので先に、CppUTestをダウンロードしてコンパイル。

git clone git@github.com:cpputest/cpputest.git
mv cpputest CppUTest
./configure
make

cslimをダウンロードしてコンパイル。

git clone git@github.com:dougbradbury/cslim.git
cd cslim
make

cslimとcpputestは同じディレクトリにある必要がある。

<path>/cslim
<path>/cpputest

ブラウザに、以下のURLにブラウザからアクセス。

http://localhost/CslimFirstExamples

編集画面がでるので、以下のように修正。(pathは自分の環境に合わせて)

!contents -R2 -g -p -f -h

!define TEST_SYSTEM {slim}
!define TEST_RUNNER {/home/tsu-nera/src/cpp_fitnesse/cslim/CSlim_cslim}
!define COMMAND_PATTERN {%m}
!define SLIM_VERSION {0.0}

次に、以下のURLにブラウザからアクセスして、同じようにテストのサブページを作成する。

http://localhost/CslimFirstExamples.DecisionTableExample

wiki形式でテストケースを書く。

|Modulus                 |
|value|divisor|remainder?|
|6    |2      |0         |
|13   |27     |13        |
|5    |2      |1         |

テストを実行すると、失敗する。

気を取り直して、テストケースを書く。コードはこのサイトを参照。

<path>/fixture/Modulus.cpp
<path>/fixture/Fixture.c

Pointは、テスト対象ファイルの下に、以下の様な記述をすること。これで、自分の関数をfixtureから呼び出すための登録ができる。

SLIM_CREATE_FIXTURE(Modulus) 
    SLIM_FUNCTION(setValue)
    SLIM_FUNCTION(setDivisor)
    SLIM_FUNCTION(remainder)
SLIM_END

また、Fixture.cにModulesフィクスチャを登録すること。

    SLIM_FIXTURE(Modulus)

再度makeしてテストを実行すると、今度は成功した。

for cygwin memo

Cygwin環境では、うまく動作させることができなかった。makefileに細工が必要なようだが、以下の記事を参考に編集すると、コンパイルはできるものの、Slim serverにアクセスできない。

my environment

  • FitNesse 20130530
  • CentOS 6.4

10 Aug 2013, 12:55

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

受け入れテスト用のテスト管理ツール、「Fitnesse」を使ってみました。

[toc]

Fitnesseとは

Fitnesseとは、wiki形式でフリーのテスト管理用ツールです。

以下のような特徴があります。

  • 簡単なセットアップ
  • 簡単に使えるwikiサーバ
  • 仕様書や要求がinputとして使える
  • 豊富な言語サボート

最近読み始めた、「実践アジャイルテスト」で頻繁に紹介されていました。

作者は、「ボブおじさん」こと、ロバート・マーチンさんです。以前、「CleanCoder」を読んだときにも、紹介されていました。

Fitnesseを導入する

環境

  • Windows 7 64bit
  • Java 1.6.0_2

Fitnesse の Download

正式版のダウンロードは、公式サイトの以下のリンクから。

また、開発版はgithubから。

Fitnesse の 起動

以下をコマンドラインから叩くだけ。

$ java -jar fitnesse-standalone.jar

こんなメッセージが表示されれば、起動完了。

FitNesse (v20130530) Started...
        port:              80
        root page:         fitnesse.wiki.FileSystemPage at ./FitNesseRoot
        logger:            none
        authenticator:     fitnesse.authentication.PromiscuousAuthenticator
        page factory:      fitnesse.responders.PageFactory
        page theme:        fitnesse_straight
        page version expiration set to 14 days.

http://localhost/にアクセスすると、Fitnesseが現れる。わぉ、簡単(・∀・)

Port指定の起動もできる。

$ java -jar fitnesse-standalone.jar -p 8080

Fitnesseの使い方

公式ドキュメントは以下。

Sample Test を動かす

起動したら、http://localhost/FitNesse.UserGuide.TwoMinuteExampleに移動。

右上に TEST とかかれたボタンがあるので押す。テストが走る。

あらら・・失敗orz.

次に TOOL ボタンの Propertyをクリック。続いて Action:というところにある Editにチェックを入れる。すると、 EDIT というボタンができるので、クリックする。編集画面が出るのて、表の部分を以下のように修正。

# before
| 100 | 4 | 25.0 |
# after
| 100 | 4 | 25.0 |

再びテストを実行すると、テストがすべてパスする。wikiで編集できる気軽さをまずは実感(・∀・)

Fitnesseの仕組み

Fitnesseの仕組みは、以下のページの図を参照。

FitNesse.UserGuide.OneMinuteDescription

オレンジの部分を自分で用意する必要がある。

  • TestCases
  • Custom Fixture
  • SUT

緑の部分は、FitNesseで用意されている。CustomFixtureを実行するためには、2つの手段がある。

FIT

HTMLでかかれたテスト管理用ツール。

FitnesseはこのFITのHTMLをwikiで実行できるようにしたもの、という言い方ができる。

SLIM

Fitnesseのwikiを解析して、CostomFixutreを実行するためのフレームワーク。

様々な言語に対応しているのが特徴。そのため、FITよりも拡張性がある。

ここからがいいところだけれども、続きはまた次回!

04 Aug 2013, 13:55

teratermマクロで自由自在にエンドツーエンドを書く!TTLのためのxUnitフレームワーク「TTLUnit」

Teratermマクロを利用してテスト自動化ができたらいいのになと思っていたのだけれども、いくらさがしても良いツールが見つからなかったので、つくてみました。

名づけて、 

TTLUnit

じゃじゃ~ん!githubにあげました。

本当ならば、Rubyでエンドツーエンドを書きたいところだが、Rubyだと、多段telnetをする方法がいつになっても、わからなかった。

しかし、Rubyはたいていの仕事で利用するPCにはインストールされていないので、どうしても多段telnetは必要。そして、teratermマクロならば多段telnetが可能だ。

これは、以下の記事のリベンジ、というか続編です。

[toc]

これはなに

TTLUnit とは、Tera Term Language(TTL)のためのxUnitフレームワーク。

使い方

フォルダパスの設定

テストをはじめる前に、フォルダパスの設定をする。 lib/config.ttl を修正。

  • BASE_DIR : TTLUnit デフォルトフォルダパス
  • LIB_DIR : TTLUnit ライブラリパス
  • TEST_DIR : テストフォルダパス
  • LOG_DIR : ログフォルダパス

以下のオブションもチェック。

  • TEST_PREFIX : テストケースのブレフィックスを指定
  • LOG_MODE : ログモード 1:有効 0:無効

テストスイートフォルダの作成

TTLUnitでは、テストスイートをフォルダで管理します。フォルダパスで指定したフォルダにテストスイートのフォルダを作成。

また、テストスイートのリストファイルをつくる必要がある。 ts_lit.ttl をテストフォルダに作成して、テストスイートを追加する。

; Pleas Modify Test Suite Max 
TEST_SUITE_MAX = 2
strdim test_suite TEST_SUITE_MAX

; Add your test suite folder
test_suite[0] = 'ts_mkdir'
test_suite[1] = 'ts_pwd'
test_suite[2] = ...

テストケースファイルの作成

テストケースファイルをテストスイートフォルダに作成する。テストファイルの名前は、決められたものを指定する(lib/config.ttlのTEST_PREfiX で指定したもの)

TTL の知識も必要。TTLコマンドリファレンスをチェック。

For Example: Test_mkdir_test_dir.ttl

;Test
sendln 'mkdir testdir'

;Assert
sendln 'ls'
Wait 'testdir'

;tearDown
sendln 'rmdir testdir'

exit

最終行は exit である必要がある。Wait commant 以降では、resultを返すTTLコマンドは使えません(苦し紛れの仕様です)

テスト実行

テストの実行方法は3つ

すべてのテストを実行

.ttlファイルをttpmacro.exeに関連付ける(これでクリックひとつで.ttlファイルがttpmacro.exeで開ける)

lib/RunAlltests.ttlを開く。すべてのテストスイート(ts_list.ttlに登録したもの)が実行される。

一つのテストスイートを実行

一つのテストスイートを選択すくこともできる。 lib/RunTestSuite.ttlを

開く。メッセージボックスがボップアップするので、テストスイートフォルダを入力する。

 ドラッグ & ドロップで実行

テストスイートフォルダを.batファイルにドラッグするだけで、テストが実行する。

example/RunTestSuite.batをご覧されたし。ttpmacro.exeとテストフォルダを指定する必要がある。

@echo off

set file=%*

rem Call TestSuite
"C:\Program Files (x86)\teraterm\ttpmacro.exe" "C:\cygwin\home\TSUNEMICHI\src\ttlunit\lib\RunTestSuite.ttl" %file%

テスト結果

テストが実行され、結果がポップアップする。

Tips

Setup と TaerDown

テストスイートフォルダに ‘setup.ttl’ , ‘teardown.ttl’があると、 SetUp と tearDownがテストケースの前、後ろで実行される。

テストフォルダに、’setup.ttl’ , ‘teardown.ttl’があると、 SetUp がすべてのテストの開始前に実行される。 TearDownが全てのテストの実行後に実行される。

Expect の表示

デフォルトのテスト結果では、Expectの値が表示されない。もし、どのWaitコマンドでテストが失敗したかをチェックしたい場合は、こんなふうにかく。

expect_str = 'hogehoge'
Wait expect_str
タイムアウト

デフォルトのタイムアウト値は 5秒にしている。もし、値を変えたい場合は、この行はどこでも書いて変更できる。

timeout = (your favorite value)
ログモード

ログモードをOnにすると、テストケース実行ごとに、ログフォルダにテスト結果をログすることができる。 lib/config.ttlを編集。

LOG_MODE = 1

動画

[//www.youtube.com/embed/h6iN5MiI3FI?list=UUT1w_8QIwJc5Ia67MjOWN1A]

03 Aug 2013, 23:10

最強ポモドーロアプリはコレだ!無料で使えるWindows用ポモドーロアプリ9選

Windows 7 で使える、最適なポモドーロタイマーを探してみました。


今回探した条件は、以下

  • オフラインで利用できること
  • トマトの見積もり機能があること

あとは、+ αの要素で

  • UIがオシャレなもの
  • 終了時にポップアップで知らせてくれるもの

ベストアプリだったもの

実は、すでにコレがベストだというものはありました。

「Pomodoro App」 が、自分の要件を満たす最高のAppだったのですが、これは最近になって、「TeamViz」というものに変わった。これは、オンライン前提のクラウド型アプリなので、条件から外れてしまった。(´・ω・`)

PomodorとGTDを組み合わせようという発想でできている。UIのオシャレさと、多機能さならば、これがベスト。

TeamViz | Unleash Your Team’s Productivity

カウント機能がないもの

ポモドーロ・テクニックは、基本形と発展形の2種類がある。

  • 基本形 ・・・ 25分集中して、5分休む。このインターバルを繰り返す。
  • 発展形 ・・・ 25分単位でタスク管理をする。一日のはじめに実行できるトマト数を見積もって、一日の終わりに評価する。Interupt task やUnexpected taskは 別タスクとして記録する。

今回探すのは、この発展系の方。といっても、細かくタスク管理するものがほしいわけではなく(それはOutlookでしているので)、単純にトマトの数を記録できればよい。

詳しくは、この本をどうぞ。

カウント機能がないけどオススメなものを以下に並べる。

いずれも、インストール不要で利用できる、とても軽量なアプリ。

focus booster

UIがとても、カッコイイ!しかし、これにはカウント機能が備わっていなかった。

focus booster – home; try the pomodoro technique

Pomodorium

なんと、ポモドーロ・テクニックとRPGゲームを組み合わせたもの。タスクをこなすごとにお金を手に入れて、旅をするゲーム。出オチっぽかったので、インストールだけしてやめた。

Pomodorium: best pomodoro timer windows

オフラインでは使えないもの

会社で利用したいので、オフラインというのが今回の条件だ。

オンラインで利用できるものは素晴らしいものがいくつもある。簡単に紹介。

Tomatoes

Webサービスでもっともオシャレなものは、これ。

githubとtwitterアカウントでログインして利用できる。簡単な統計機能もついている。

Tomatoes

TeamViz

冒頭でも紹介した、多機能なポモドーロアプリ。ポモドーロの枠をはみ出して、タスク管理アプリ。

TeamViz | Unleash Your Team’s Productivity

評価したもの

pomodario

そこそこ洗練されていて、タスク管理もあるのはこのアプリ。しかし、これはバグってた!トマトを7以上カウントできなかった。

pomodairo – An Air application for working with the Pomodoro technique – Google Project Hosting

AutoFocus

タスクをリストで箇条書きにして管理するもの。箇条書きにした結果が残るので、ある意味カウントあり。


XorTime

中国製のソフト。ハンドメイドなUIがとても気に入った。

Xoring

 まとめ

結論、Pomodoro Appに代わるベストアプリは見つからなかった。

アナログが一番よいのかもしれない?