English Page

HASC Tool ページメニュー

はじめに

HASC Tool には「ダウンロード版」と「Sourceforge.jp版」があります。簡易バージョンはこちらからダウンロードができるので、是非ご利用ください。開発までやりたい人は「Sourceforge.jp版」をご利用ください。また、作成したソフトウェアをコミットしていただける方は、河口(Twitter @nkawa)までお知らせください。

HASC Toolとは?

HASC Toolは、HASC (人間行動センシングコンソーシアム)が開発する行動情報処理のためのツールであり、以下の機能を備えています。尚、この ToolはEclipse Pluginで開発しています。

  • データ関連
    • Hascloggerからのデータ受信機能
    • csvファイル形式のデータ読み込み
    • メタデータ、ラベルデータの読み込み
  • 信号処理関連
    • 直流波形、サイン波形などの簡単な波形の生成を行うフィルタの搭載
    • 入力波形に対して、平均、分散、フーリエ変換などの処理をするフィルタが存在
    • 目的に応じてフィルタを柔軟に組み合わせることが可能
    • 簡単なコーディングで新しいフィルタを作成可能
  • ラベル付与機能
    • 加速度、角速度情報等の行動波形に対してラベルを付与可能
  • 機械学習機能
    • 機械学習ツール "WEKA" との連携
    • "WEKA" が有する様々なアルゴリズムを容易に利用することが可能
  • 大規模データ処理機能
    • 目的にあったファイルの自動選択、編集が可能
    • ファイル名、ファイルパスの自動編集が可能


データの収集から分析、利用、評価までを単一のツールで実現します。HASC Tool & HASC サンプルデータのダウンロード版はこちらで入手できるので、是非ご利用ください。

開発環境のセットアップ

Eclipse RCPのインストール

HascToolはEclipse RCP で開発しているので、まずはEclipse RCP が必要となります。eclipseダウンロードのページから、Eclipse RCP/Plug-in Developersをダウンロードしてください。(下図参考)

ダウンロードしたファイルを解凍すればインストール完了です。


Eclipse RCP(3.6)にZest pluginをinstall

  1. Eclipse RCP を起動します。
  2. メニューバーからHelpを選択します。
  3. Help > install new software.. を選択します。
  4. Work with:でHelios - http://download.eclipse.org/releases/heliosを選択し、"Group items by category"のチェックを外します。
  5. 検索ボックスに"zest"と入れ、見つかった3つのpluginを全てinstall( Next → Next → accept にcheckを入れて Finish) します。

Eclipse RCP(3.6)にSubversiveをinstall

  1. Eclipse RCP を起動します。
  2. メニューバーからHelpを選択します。
  3. Help > Install New Software... をクリックしInstallダイアログを開きます。
  4. Work with:でHelios - http://download.eclipse.org/releases/heliosを選択し、 Collabration > Subversive SVN Team Provider (Incubaion)にチェックを入れます。
  5. Nextをクリックしインストールを完了します。
  6. Eclipseを再起動します。
  7. メニューバーからWindowを選択します。
  8. 指示に従って、SVNKit 1.*.* Implementation の最新版を取得します。
  9. インストールが終了したら、リポジトリからHASCToolを取得する準備は完了です。

HASC Toolのセットアップ

HASCToolの取得

  1. メニューバーからWindowを選択します。
  2. Window > Open Persepective > Other...にSVN Repository Exploringパースペクティブが追加されているのでクリックして開きます。
  3. SVN Repositoriesビューで右クリックし、New > Repository Location...をクリックします。
  4. New Repository Locationダイアログで必要な情報を入力します。
  5. URLにhttp://svn.sourceforge.jp/svnroot/hasc/を入力し、リポジトリを登録(Finishを押す)します。
  6. 登録したリポジトリの /trunk/pc の下から HascToolを選択します。
  7. 右クリックでCheck Outを選択すると、HASCToolが取得できます。

HascLoggerServerPluginの取得

  1. HASC のリポジトリの /trunk/pc の下からHascLoggerServerPluginを選択します。
  2. 右クリックでCheck Outを選択すると、HascLoggerServerPluginが取得できます。

HascToolDataPrjの取得

  1. HascToolDataPrjは、HASC Challengeで使用する行動データのサンプルです。
  2. HASC のリポジトリの /trunk/pc の下からHascToolDataPrjを選択します。
  3. 右クリックでCheck Outを選択すると、HascToolDataPrjが取得できます。

HascWekaPrjの取得

  1. HASC のリポジトリの /trunk/pc の下からHascWekaPrjを選択します。
  2. 右クリックでCheck Outを選択すると、HascWekaPrjが取得できます。

HASC Toolの説明

HascToolの起動

  • Projectで、HascToolを右クリック > Run As > Run configuration.. を選択します。
  • Eclipse Applicationの場所に、新規configurationを追加します。
  • Mainタブ
    • Name, Workspace Data Location を任意設定。
    • Run a product: の場所で jp.hasc.hasctool.ui.product を選びます。
  • Argumentsタブ
    • Program arguments に、 -consoleLog -clean を追加します。(直前に空白文字も必要)
      (-consoleLog:エラーログを親Eclipseのコンソールに表示する。-clean:古いplug-inが残らないようにする。)
  • Plug-ins タブ
    • Launch with: selected below only を選択します。
    • Deselect All ボタンを押します。
    • Workspaceにある、以下のpluginにチェックをつけます。
      • jp.hasc.hasctool.ui
      • jp.hasc.loggerserver
      • jp.hasc.hasctool.wekaPrj
    • Add Required Plug-ins ボタンを押します。
  • 各タブの設定が終了したら、Runボタンを押します。
  • 2回目以降は、Run > Run Historyから起動可能です。

RuntimeSampleView

RuntimeSampleViewの設定

  • Window > Show View > RuntimeSampleView を選択します。
  • RuntimeSampleViewの位置は、タブをドラッグすることで調整できます。

RuntimeSampleViewのボタン説明

    各々のボタンを押すと波形が生成されます。

  • CSV file ---: CSV形式ファイルをinputデータとする
  • CSV UDP ---: HASC Loggerからのリアルタイム情報をinputデータとする
  • stop: 再生停止
  • output CSV file: 再生された信号をCSVファイルに保存(次回再生時から、毎回上書き)
  • queue capacity: 時間同期用のキューの最大サイズ(空欄なら無限大、小さいとデッドロックします)
  • sleep time scale: 信号の時刻(の指定倍)に合わせてsleepしながら再生する。値が小さいと速く再生。0や空欄ならsleepしない。

View

RuntimeSampleViewの各ボタンを押した場合や、Project Explorerの中にあるhascxbdファイルを実行する際に自動生成されます。

  • VectorView:ある時刻でのベクトル要素を表示するビューです。
  • WaveView:ある要素の時系列情報を表示するビューです。
  • SpectrogramView:ある要素の周波数成分を表示するビューです。

ProjectExplorer

Eclipse側にあるデータフォルダをImportしたり、実行ファイルのexportを行います。


Block Class List

Eclipse側にあるクラスをリストで表示します。リスト内から目的のクラスを選択するとHASCXBDファイル内に新たなブロックを生成します。


エディタ

  • labelファイルやcsvファイルを開くと、波形ビュー付きテキストエディタで編集できます。
  • 波形ビューの ?L ボタンは、選択した時間範囲をテキストエディタに挿入します。
  • 波形ビューの ?t ボタンは、選択した時間範囲に含まれるデータをテキストエディタ上に表示します。
  • 波形ビューの +t,-t,+v,-vボタンは、表示する範囲を変更します。
  • csvファイルのコンテキストメニュー > New Label File で、新規labelファイルを作成できます。

hascxbdファイル(ブロック図)

  • 複数のブロックを連結させた、ブロック図を作成することにより、様々なデータ処理を行う仕組みです。
  • プロジェクトエクスプローラのhascxbdファイルのコンテキストメニューから、「ブロック図を実行」を選ぶと、ブロック図を実行できます。
  • ツールバーの「BD停止」ボタンを押せば実行停止します。
  • 具体的なブロックの種類と使い方については、現状ではまだドキュメントがないため、ソースファイル、ソースファイル付属の開発者ドキュメント(readme_developer.txt)、サンプルのhascxbdファイルなどを参考にして下さい。

hascxdbファイルのフォーマット

  • <model.BeanBlock>要素は、ブロックを表します。
    • <name>要素は、ブロックを参照するための名前です。
    • <class>要素で指定したクラスのインスタンスを生成し、プロパティに値をセットします。
      jp.hasc.hasctool.runtime.RuntimeBeanを実装した、JavaBeans準拠のクラスである必要があります。
    • <properties>要素以下にプロパティの値を書きます。
    • <entry>要素は、1番目の子要素(<string>)がプロパティ名、2番目の子要素(値によりタグが変わる)がセットする値です。
  • <model.Connection>要素は、<output>要素で指定された出力ポートと、<input>要素で指定された入力ポートを接続します。
    • blockName属性はブロックの名前(<name>要素で指定したもの)
    • portName属性はポートのプロパティ名
    • <properties>要素以下にプロパティの値を書きます。
    • <entry>要素は、1番目の子要素(<string>)がプロパティ名、2番目の子要素(値によりタグが変わる)がセットする値です。
  • ファイルのパス
    • "$(projectRoot)/"で始まる場合は、プロジェクトルートからのパスを表します。
    • "/"で始まる場合は、ワークスペースからの絶対パスを表します。
    • そうでない場合は、hascxbdファイルがあるディレクトリからの相対パスを表します。
    • hascxbdファイル内に以下のキーワードを含む場合は、ユーザに入力ファイル(複数可)を選択させ、それぞれのファイルに対してブロック図が順次実行されます。
      • $(inputFile.path): 入力ファイルのパス
      • $(inputFile.parentPath): 入力ファイルがあるディレクトリのパス
      • $(inputFile.name): 入力ファイル名(ディレクトリのパスは含まず)
      • $(inputFile.nameWithoutExt): 入力ファイル名から拡張子を除いた名前
      • $(currentDateTime): 現在の時刻。形式は"日付-時刻-ms"
  • 詳細は、HascToolTestPrjに含まれているサンプルをご覧下さい。

Block Class List ビュー

  • Block Class List ビュー内のクラス名をダブルクリックすると、アクティブなブロック図エディタにそのクラスのブロックを追加できます。
  • ウィンドウ > ビューの表示 > Block Class List で、ビューが表示されます。

Hasc Toolのソースコード

  • jp.hasc.hasctool.ui.views.RuntimeSampleView
    runtimeモジュールの利用のサンプルが色々あります。
  • jp.hasc.hasctool.core.runtime.filter.SampleFilter1
    AbstractFilterを使った、簡単な1入力1出力フィルタの実装のサンプルです。
  • jp.hasc.hasctool.core.runtime.filter.label.SampleLabelingFilter
    入力値が閾値より大きい期間に、ラベルをつけるフィルタです。

HASC Toolの使用法

HascLoggerServer

  • iPhoneのHascLoggerから、ログファイルを受信するサーバです。
  • ログを保存したいディレクトリをProjectExplorerで選択し、ツールバーの(H)ボタンを押すと起動します。
  • bindするポート番号を指定します。(Macの場合は、1025番以降にする必要)
  • iPhoneの環境設定>HascLoggerで、upload URLを、http://PCのIPアドレス:ポート番号/に設定します。
  • iPhoneのHascLoggerからログをUploadすると、PCのHascTool上に表示されます。
  • もう一度ツールバーの(H)ボタンを押すとサーバが停止します。

ブロック図エディタ

  • hascxbdファイルを開くと、ブロック図エディタが開きます。
  • GraphViewタブを選ぶと、ブロック図がグラフで表示されます。
    • +B ボタンを押すと、ブロックを新規作成できます。新規作成するブロックのクラス名を入力して下さい。
      Block Class Listから必要なクラスを選択しても、ブロックは作成されます。
    • Ctrl(control)キーを押しながら、出力側ブロック(送信元)と入力側ブロック(受信先)を順に選び、+Cボタンを押すと、コネクションを新規作成できます。プロパティビューで、inputPort / outputPort の名前を適宜指定して下さい。
    • Del ボタンを押すと、選択したブロック(それに接続されたコネクションを含む)またはコネクションを削除します。
    • ブロックを選択すると、プロパティビューで、ブロックのプロパティ(プリミティブ型または文字列型のもののみ)を設定できます。
    • ブロック図を変更した場合は、Ctrl+Sでファイルを保存してから、実行して下さい。
    • Undo/Redoをしたい場合は、テキストエディタ(HascXBDタブ)に切り替えて行って下さい。
  • 時刻の単位は、microsecondsです。(1,000,000で1秒)
  • ブロックの出力ポートには、通常、複数のコネクションを接続することができます。
  • ブロックの入力ポートには、通常、単一のコネクションしか接続できません。複数入力のブロック(VectorConcatinatorなど)の場合は、入力ポートの数をinputPortCountプロパティで設定し、各コネクションを、inputPort[0],inputPort[1],… という名前の、別々のポートへと接続して下さい。

サンプルデータのimport

  1. File>New>Project で新規作成します。
  2. 生成されたProjectを右クリック>import>FileSystemを選択します。
  3. Next>From directoryを設定します。
    (ダウンロードのページから取得したHASCフォルダを選択)
  4. すべてを選択>Finish で完了です。

実行ファイル(バイナリパッケージ)のexport

  1. Eclipse 3.6 (Helios) RCP MacOSX 64bits版を用意します。
  2. Delta packを以下のページからinstallします。
    • http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/index.php#DeltaPack
    • http://aniefer.blogspot.com/2009/06/using-deltapack-in-eclipse-35.html
  3. Eclipse RCP の eclipse.ini(Eclipse.appディレクトリの中にある) に -Dfile.encoding=UTF8 を書きます。(忘れるとコンパイルエラーが出ます)
  4. exportする前に、出力先のディレクトリの中身を消しておきます。(前のファイルが残ってるとエラーが出る場合があります)
  5. Product Configurationファイル(dist/hasctool.eclipse.3.6.product)を開きます。
    • Dependenciesタブのplug-inリストを設定します。(HascToolの起動設定と同様です)
    • OverviewタブのEclipse product export wizardリンクを実行します。
      • root directory名は hasctool にします。
      • Export for multiple platforms をチェックします。
      • platformsは、win32/x86, cocoa/x86 をチェックします。
  6. ターミナルで出力先のディレクトリへ移動し、(path to HascTool)/dist/after_export.sh を実行します。

フィルタの作成方法

Eclipse側で、"HascTool/src/jp/hasc/hasctool/core/runtime/filter"フォルダに新たにフィルタを書き足すことで、新しいフィルタを生成できます。

  • filter:下記に該当しないフィルタ(例:実数→複素数 変換フィルタ)
  • filter.file:ファイル関係のフィルタ
  • filter.frequency:フーリエ変換関係のフィルタ(例:逆フーリエ変換,ローパスフィルタ)
  • filter.interpolator:波形を描画するための補助的な役割を担うフィルタ(例:線形補間)
  • filter.label:ラベル関係のフィルタ
  • filter.tick:時刻をコントロールするフィルタ
  • filter.window:窓関数フィルタ

ボタン(RuntimeSampleView)の作成方法

Eclipse側ソースコード内の"HascTool/src/jp/hasc/hasctool/ui/views/RuntimeSamplesView.java"にボタンを書き足してください。(他のボタンを参考にして下さい)

フィルタの組み合わせを決定

  • Project Explorer 内でフォルダを選択します。
  • フォルダを右クリック>new>File>***.hascxbd(ファイル名を決める)
  • "HascToolTestPrj/HASCXBD"内に、既に作成されたhascxbdファイルがあるのでそちらを参考にして下さい。

バージョンの確認

  • メニューから、About HascToolを選び、Installation Details >Plug-insタブを開きます。
  • 「Privider:hasc.jp, Plug-in Name:HascTool」の行のVersionカラムが、HascToolのバージョン番号です。

既知の不具合と対処方法

  • 現状では、hascxbdファイルの新規作成ウィザードはありませんので、新規作成したい場合は既存のhascxbdファイルをコピーして利用して下さい。
  • 現状では、ブロック図エディタで、ブロックのレイアウトは保存されません。またブロック図を変更した際にレイアウトがリセットされます。
  • LabelEditorの波形ビューで、ラベルの両端がそれぞれ左右の表示範囲外にある場合、ラベルの背景色が塗られません。
  • プロジェクトエクスプローラ上でファイルを開いた時に、別の種類のエディタが起動してしまう、または、他の種類のエディタでファイルを開きたい場合は、コンテキストメニュー>「アプリケーションからファイルを開く」を選んで下さい。
  • 外部でファイルを編集した場合は、プロジェクトエクスプローラを更新したほうが良いかもしれません。(自動で行う設定になっていますが)
  • たまに、Refreshing workspace になったままになります。
    • BD停止 ボタンを押してタスクを止めれば、直るかもしれません。