<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0' xmlns:atom='http://www.w3.org/2005/Atom'>
<channel>
<atom:link href='https://blog.totakke.net/' rel='self' type='application/rss+xml'/>
<title>
totakke blog
</title>
<link>
https://blog.totakke.net/
</link>
<description>
Toshiki Takeuchi's personal blog for sharing my ideas, notes, and works about technology
</description>
<lastBuildDate>
Wed, 05 Sep 2018 18:44:23 +0900
</lastBuildDate>
<generator>
clj-rss
</generator>
<item>
<guid>
https://blog.totakke.net/posts/2017-07-14-cavia/
</guid>
<link>
https://blog.totakke.net/posts/2017-07-14-cavia/
</link>
<title>
Clojureのテストリソース管理ツール「cavia」
</title>
<description>
&lt;h2&gt;&lt;a name=&quot;はじめに&quot;&gt;&lt;/a&gt;はじめに&lt;/h2&gt;&lt;p&gt;&lt;a href='https://github.com/totakke/cavia'&gt;cavia&lt;/a&gt;はClojureプロジェクトでリモートのテスト用リソースを扱うためのライブラリである。&lt;/p&gt;&lt;p&gt;しばしば、大きなサイズのファイルがテストに必要なときがある。たとえば、パーサーのプログラムのサンプルファイルや、画像処理におけるテスト画像などが考えられる。しかし、一般的に大サイズファイルやバイナリファイルをGitなどのSCMツールで管理するのは適切でない。それらをうまく管理するためにgit-annexやGit LFSといった外部ツールも存在するが、Clojureのエコシステムの中で解決したいケースのためにcaviaは作られた。&lt;/p&gt;&lt;p&gt;caviaは、リモートのリソースを自動的にダウンロードし、ハッシュをチェックしてくれる。また、簡単にリソースにアクセスする関数を提供してくれる。caviaを使うことで、いつものように&lt;code&gt;lein test&lt;/code&gt;を実行するだけでテスト用のリソースを使ってテストできる。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;使い方&quot;&gt;&lt;/a&gt;使い方&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;インストール&quot;&gt;&lt;/a&gt;インストール&lt;/h3&gt;&lt;p&gt;&lt;a href='https://clojars.org/cavia'&gt;Clojars&lt;/a&gt;で配布されているため、LeiningenやBootの依存設定に以下を追加する。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#91;cavia &amp;quot;0.4.1&amp;quot;&amp;#93;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;基本的にテスト時にしか使わないので、&lt;code&gt;:profiles :dev :dependencies&lt;/code&gt;に設定しておくのがよい。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;プロファイルの定義&quot;&gt;&lt;/a&gt;プロファイルの定義&lt;/h3&gt;&lt;p&gt;まず、リモートからダウンロードしたいリソース群を定義する。プロファイルの定義には&lt;code&gt;defprofile&lt;/code&gt;を用いる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;require '&amp;#91;cavia.core :as cavia :refer &amp;#91;defprofile&amp;#93;&amp;#93;&amp;#41;

&amp;#40;defprofile prof
  {:resources &amp;#91;;; 単純なHTTP
               {:id :resource1
                :url &amp;quot;http://example.com/resource1&amp;quot;
                :sha256 &amp;quot;0123456789abcdef01234567890abcdef01234567890abcdef01234567890abc&amp;quot;}
               ;; ベーシック認証
               {:id :resource2
                :url &amp;quot;http://example.com/resource2&amp;quot;
                :sha1 &amp;quot;123456789abcdef01234567890abcdef01234567&amp;quot;
                :auth {:type :basic, :user &amp;quot;user&amp;quot;, :password &amp;quot;password&amp;quot;}}
               ;; FTP
               {:id :resource3
                :url &amp;quot;ftp://example.com/resource3&amp;quot;
                :sha256 &amp;quot;23456789abcdef01234567890abcdef01234567890abcdef01234567890abcde&amp;quot;
                :auth {:user &amp;quot;user&amp;quot;, :password &amp;quot;password&amp;quot;}}
               ;; 圧縮されたファイル
               {:id :resource4
                :url &amp;quot;http://example.com/resource4.gz&amp;quot;
                :sha1 &amp;quot;3456789abcdef01234567890abcdef0123456789&amp;quot;
                :packed :gzip}&amp;#93;
   :download-to &amp;quot;.cavia&amp;quot;}&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;:resources&lt;/code&gt;にダウンロードするリソースの情報を記述する。&lt;/p&gt;&lt;p&gt;必須：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;:id&lt;/code&gt; - リソースファイルへのアクセス等に用いる。KeywordあるいはStringが使用できる。&lt;/li&gt;&lt;li&gt;&lt;code&gt;:url&lt;/code&gt; - リソースのリモートURL。HTTP/HTTPS/FTP/FTPSに対応している。&lt;/li&gt;&lt;li&gt;&lt;code&gt;:md5/:sha1/:sha256&lt;/code&gt; - リソースファイルのチェックに用いるハッシュ。MD5/SHA1/SHA256に対応している。複数指定されている場合、最も強いハッシュアルゴリズムが利用される。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;オプショナル：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;:auth&lt;/code&gt; - ベーシック認証あるいはダイジェスト認証の情報を記述する。&lt;/li&gt;&lt;li&gt;&lt;code&gt;:packed&lt;/code&gt; - 圧縮されたファイルをダウンロード後に自動的に展開する。現在のところgzip (&lt;code&gt;:gzip&lt;/code&gt;) のみ対応している。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;code&gt;:download-to&lt;/code&gt;にはリソースを配置するローカルのディレクトリを指定する。デフォルトでは&lt;code&gt;./.cavia&lt;/code&gt;に保存される。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;リソースのマネジメント&quot;&gt;&lt;/a&gt;リソースのマネジメント&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;&amp;#40;cavia/get! prof&amp;#41;&lt;/code&gt; - まだダウンロードされていないファイルをダウンロードする。&lt;/li&gt;&lt;li&gt;&lt;code&gt;&amp;#40;cavia/verify prof&amp;#41;&lt;/code&gt; - ダウンロード済のリソースのハッシュをチェックする。&lt;/li&gt;&lt;li&gt;&lt;code&gt;&amp;#40;cavia/clean! prof&amp;#41;&lt;/code&gt; - ダウンロード済のリソースを削除する。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;いちいちプロファイルを指定するのが面倒であれば、&lt;code&gt;with-profile&lt;/code&gt;マクロを用いるのがよい。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;with-profile prof
  &amp;#40;cavia/clean!&amp;#41;
  &amp;#40;cavia/get!&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ダウンロードの進捗などが標準出力に表示されるが、もし非表示にしたければ&lt;code&gt;without-print&lt;/code&gt;マクロを用いる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;without-print
  &amp;#40;cavia/get! prof&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;リソースへのアクセス&quot;&gt;&lt;/a&gt;リソースへのアクセス&lt;/h3&gt;&lt;p&gt;&lt;code&gt;recource&lt;/code&gt;関数にプロファイルに記述した&lt;code&gt;:id&lt;/code&gt;を渡せば、そのリソースへの絶対パスを取得できる。存在しないIDを渡した場合は&lt;code&gt;nil&lt;/code&gt;が返ってくる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;cavia/resource prof :resource1&amp;#41;
;;=&amp;gt; &amp;quot;/path/to/.cavia/resource1&amp;quot;

&amp;#40;cavia/resource prof :undefined&amp;#41;
;;=&amp;gt; nil
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;テストフレームワークとの組み合わせ例&quot;&gt;&lt;/a&gt;テストフレームワークとの組み合わせ例&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;clojure.test&quot;&gt;&lt;/a&gt;clojure.test&lt;/h3&gt;&lt;p&gt;clojure.testと組み合わせる場合は、次のようにfixture関数を作って、その中で&lt;code&gt;get!&lt;/code&gt;を呼び出すことで、各テストケースの実行前にリソースをダウンロードできる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;ns foo.core-test
  &amp;#40;:require &amp;#91;clojure.test :refer :all&amp;#93;
            &amp;#91;cavia.core :as cavia :refer &amp;#91;defprofile&amp;#93;&amp;#93;&amp;#41;&amp;#41;

&amp;#40;defprofile prof
  {:resources &amp;#91;{:id :resource1
                :url &amp;quot;http://example.com/resource1&amp;quot;
                :sha256 &amp;quot;0123456789abcdef01234567890abcdef01234567890abcdef01234567890abc&amp;quot;}&amp;#93;}&amp;#41;

&amp;#40;defn fixture-cavia &amp;#91;f&amp;#93;
  &amp;#40;cavia/get! prof&amp;#41;
  &amp;#40;f&amp;#41;&amp;#41;

&amp;#40;use-fixtures :once fixture-cavia&amp;#41;

&amp;#40;deftest your-test
  &amp;#40;testing &amp;quot;tests with the cavia's resource&amp;quot;
    &amp;#40;is &amp;#40;= &amp;#40;slurp &amp;#40;cavia/resource prof :resource1&amp;#41;&amp;#41; &amp;quot;resource1's content&amp;quot;&amp;#41;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;midje&quot;&gt;&lt;/a&gt;Midje&lt;/h3&gt;&lt;p&gt;Midjeと組み合わせる場合は、&lt;code&gt;with-state-changes&lt;/code&gt;を用いて、fact前に呼び出すのがよい。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;ns foo.t-core
  &amp;#40;:require &amp;#91;midje.sweet :refer :all&amp;#93;
            &amp;#91;cavia.core :as cavia :refer &amp;#91;defprofile with-profile&amp;#93;&amp;#93;&amp;#41;&amp;#41;

&amp;#40;defprofile prof
  {:resources &amp;#91;{:id :resource1
                :url &amp;quot;http://example.com/resource1&amp;quot;
                :sha256 &amp;quot;0123456789abcdef01234567890abcdef01234567890abcdef01234567890abc&amp;quot;}&amp;#93;}&amp;#41;

&amp;#40;with-profile prof

  &amp;#40;with-state-changes &amp;#91;&amp;#40;before :facts &amp;#40;cavia/get!&amp;#41;&amp;#41;&amp;#93;
    &amp;#40;fact &amp;quot;tests for a large file&amp;quot; :slow
      &amp;#40;slurp &amp;#40;cavia/resource :resource1&amp;#41; =&amp;gt; &amp;quot;resource1's content&amp;quot;&amp;#41;&amp;#41;&amp;#41;

  &amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;おわりに&quot;&gt;&lt;/a&gt;おわりに&lt;/h2&gt;&lt;p&gt;caviaが便利だと思えるケースはそんなにないかもしれないが、Clojure関連以外の余計な操作を必要としない点で有用だと考えている。筆者の場合は、Git LFS等でも扱いが難しい数十GB以上のテストリソースを用意するのに重宝している。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Fri, 14 Jul 2017 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2017-06-07-clj-jdbc-multi-insert/
</guid>
<link>
https://blog.totakke.net/posts/2017-06-07-clj-jdbc-multi-insert/
</link>
<title>
clojure.java.jdbcのマルチインサートは引数に注意
</title>
<description>
&lt;p&gt;ClojureのJDBCラッパーである&lt;a href='https://github.com/clojure/java.jdbc'&gt;clojure.java.jdbc&lt;/a&gt;を用いて、MySQLなどのRDBにデータを高速インサートしたい場合、&lt;code&gt;insert-multi!&lt;/code&gt;を用いて一括インサートすると良い。しかし、この関数は引数の与え方によってパフォーマンスが大きく変わってくるので注意しなければならない。&lt;/p&gt;&lt;p&gt;&lt;code&gt;insert-multi!&lt;/code&gt;はインサートしたいデータに対応する引数として、&lt;/p&gt;&lt;ol&gt;&lt;li&gt;マップのシーケンスを渡す: &lt;code&gt;&amp;#40;{:foo 1 :bar -1} {:foo 2 :bar -2} ...&amp;#41;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;ベクタ+ベクタのシーケンスを渡す: &lt;code&gt;&amp;#91;:foo :bar&amp;#93; &amp;#40;&amp;#91;1 -1&amp;#93; &amp;#91;2 -2&amp;#93; ...&amp;#41;&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;の2種類の方法がある。実は、方法2のほうが高速である。&lt;/p&gt;&lt;p&gt;clojure.java.jdbc 0.7.0-alpha3を使用して検証する。たとえば次のテーブル、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE TABLE example &amp;#40;
  id INT NOT NULL AUTO&amp;#95;INCREMENT,
  val1 INT,
  val2 INT,
  PRIMARY KEY &amp;#40;id&amp;#41;&amp;#41;
ENGINE = InnoDB;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に対して、1,000レコードのマルチインサートを100回行ってみる。&lt;/p&gt;&lt;p&gt;方法1を用いてマルチインサートを行うと、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;time
 &amp;#40;dotimes &amp;#91;&amp;#95; 100&amp;#93;
   &amp;#40;jdbc/insert-multi! db-spec :example
     &amp;#40;map &amp;#40;fn &amp;#91;n&amp;#93;
            {:val1 n, :val2 &amp;#40;inc n&amp;#41;}&amp;#41;
          &amp;#40;take 1000 &amp;#40;repeatedly #&amp;#40;rand-int 100&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;
;; &amp;quot;Elapsed time: 11948.622137 msecs&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;だが、方法2を用いてマルチインサートを行うと、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;time
 &amp;#40;dotimes &amp;#91;&amp;#95; 100&amp;#93;
   &amp;#40;jdbc/insert-multi! db-spec :example
     &amp;#91;:val1 :val2&amp;#93;
     &amp;#40;map &amp;#40;fn &amp;#91;n&amp;#93;
            &amp;#91;n &amp;#40;inc n&amp;#41;&amp;#93;&amp;#41;
          &amp;#40;take 1000 &amp;#40;repeatedly #&amp;#40;rand-int 100&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;&amp;#41;
;; &amp;quot;Elapsed time: 6845.109233 msecs&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;となり、この例では方法2のほうが1.74倍速い。&lt;/p&gt;&lt;p&gt;ソースコードを読むとわかるが、方法1ではマップごとに&lt;a href='https://github.com/clojure/java.jdbc/blob/java.jdbc-0.7.0-alpha3/src/main/clojure/clojure/java/jdbc.clj#L1137'&gt;別々のSQLが生成され&lt;/a&gt;、まとめて実行される。これでも&lt;code&gt;insert!&lt;/code&gt;を繰り返すよりは十分速いが、方法2では&lt;a href='https://github.com/clojure/java.jdbc/blob/java.jdbc-0.7.0-alpha3/src/main/clojure/clojure/java/jdbc.clj#L1153'&gt;ひとつのSQL&lt;/a&gt;にデータを全て入れて実行されるため、本来の意味でのマルチインサートとなっており、さらに高速である。&lt;/p&gt;&lt;p&gt;一方で、方法1ではAUTO INCREMENTな&lt;code&gt;id&lt;/code&gt;の値が&lt;code&gt;:generated&amp;#95;key&lt;/code&gt;として返ってくるが、方法2では何も返らない、という違いもある。使用シーンに応じて適切に使い分けるのが良い。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 07 Jun 2017 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2016-12-20-jungerer/
</guid>
<link>
https://blog.totakke.net/posts/2016-12-20-jungerer/
</link>
<title>
グラフやネットワークを扱うClojureライブラリ「Jungerer」
</title>
<description>
&lt;h2&gt;&lt;a name=&quot;はじめに&quot;&gt;&lt;/a&gt;はじめに&lt;/h2&gt;&lt;p&gt;&lt;a href='https://github.com/totakke/jungerer'&gt;Jungerer&lt;/a&gt;は私が開発したグラフ/ネットワークを扱うClojureライブラリです。Javaのライブラリである&lt;a href='http://jrtom.github.io/jung/'&gt;JUNG&lt;/a&gt; (Java Universal Network/Graph Framework)をラップして、Clojureから簡単に扱えるようにしています。&lt;/p&gt;&lt;p&gt;Clojureでグラフ/ネットワークを扱うライブラリとしては、他に純Clojureで実装された&lt;a href='https://github.com/aysylu/loom'&gt;Loom&lt;/a&gt;があります。Loomの解説記事も書いていますので、興味ある方はご覧ください。&lt;/p&gt;&lt;p&gt;&lt;a href='http://qiita.com/totakke/items/41d2007ebcbcc1b3d84e'&gt;Loomを用いたグラフ・ネットワーク分析 - Qiita&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Loomはとてもよくできたライブラリですが、ページランクなどの中心性を計算するアルゴリズムが不足しています。また、グラフの可視化に外部ツールであるGraphVizが必要となります。&lt;/p&gt;&lt;p&gt;Jungererでは、JUNGのもつ多くのアルゴリズムを利用することができます。それらはJavaで書かれているため高速に動作します。また、可視化にSwingを使っているため、外部への依存なしでClojureから即座に可視化することができます。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;使い方&quot;&gt;&lt;/a&gt;使い方&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;インストール&quot;&gt;&lt;/a&gt;インストール&lt;/h3&gt;&lt;p&gt;&lt;a href='https://clojars.org/jungerer'&gt;Clojars&lt;/a&gt;で配布されているため、LeiningenやBootの依存設定に以下を追加するだけです。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#91;jungerer &amp;quot;0.4.1&amp;quot;&amp;#93;
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;グラフの生成・変更&quot;&gt;&lt;/a&gt;グラフの生成・変更&lt;/h3&gt;&lt;p&gt;&lt;code&gt;jungerer.graph&lt;/code&gt;はグラフの作成やノードの追加など、グラフ自体のデータを取り扱います。&lt;/p&gt;&lt;p&gt;まずグラフを作成するには、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;require '&amp;#91;jungerer.graph :as g&amp;#93;&amp;#41;

&amp;#40;def graph &amp;#40;g/directed-graph &amp;#91;&amp;#91;1 2&amp;#93; &amp;#91;2 3&amp;#93; &amp;#91;4 2&amp;#93;&amp;#93;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようにします。&lt;code&gt;&amp;#91;1 2&amp;#93;&lt;/code&gt;はエッジをあらわし、その中の&lt;code&gt;1&lt;/code&gt;や&lt;code&gt;2&lt;/code&gt;がノードです。&lt;code&gt;directed-graph&lt;/code&gt;は有向グラフを作成するので、この場合、&lt;/p&gt;&lt;ul&gt;&lt;li&gt;1 → 2&lt;/li&gt;&lt;li&gt;2 → 3&lt;/li&gt;&lt;li&gt;4 → 2&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;という3つのつながりのあるグラフができます。無向グラフを作りたければ、&lt;code&gt;undirected-graph&lt;/code&gt;を使います。上の例ではノードに数値を入れていますが、文字列でもオブジェクトでも構わないです。&lt;/p&gt;&lt;p&gt;作成したグラフにエッジを追加したいときは、&lt;code&gt;add-edge!&lt;/code&gt;を使います。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;g/add-edge! graph &amp;#91;4 5&amp;#93;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Jungererが作成するグラフはミュータブルなため、&lt;code&gt;add-edge!&lt;/code&gt;や&lt;code&gt;add-node!&lt;/code&gt;は元のデータを変更してしまうことに注意してください。これはJavaライブラリであるJUNGが元々イミュータブルには作られていないためであり、Loomのデータ構造と比べるとClojureらしくはない点だといえます。&lt;/p&gt;&lt;p&gt;グラフのノードやエッジを取得するには以下のようにします。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;g/nodes graph&amp;#41;
;;=&amp;gt; #{1 4 3 2 5}

&amp;#40;g/edges graph&amp;#41;
;;=&amp;gt; &amp;#40;&amp;#91;1 2&amp;#93; &amp;#91;2 3&amp;#93; &amp;#91;4 5&amp;#93; &amp;#91;4 2&amp;#93;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;他にも多くのグラフ操作関数が用意されているので、詳しくはドキュメントを参照してください。&lt;/p&gt;&lt;p&gt;cf. &lt;a href='https://totakke.github.io/jungerer/jungerer.graph.html'&gt;jungerer.graphのドキュメント&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;様々なアルゴリズム&quot;&gt;&lt;/a&gt;様々なアルゴリズム&lt;/h3&gt;&lt;p&gt;&lt;code&gt;jungerer.algo&lt;/code&gt;にはノード間の最短経路や中心性などを計算するアルゴリズムが用意されています。&lt;/p&gt;&lt;p&gt;次のコードは、ダイクストラ法を用いてノード&lt;code&gt;4&lt;/code&gt;からノード&lt;code&gt;3&lt;/code&gt;への最短経路を計算します。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;require '&amp;#91;jungerer.algo :as a&amp;#93;&amp;#41;

&amp;#40;a/dijkstra-path graph 4 3&amp;#41;
;;=&amp;gt; &amp;#91;4 2 3&amp;#93;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;中心性を計算するアルゴリズムとして、たとえばページランクを計算したければ、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;def scorer &amp;#40;a/page-rank graph&amp;#41;&amp;#41;

&amp;#40;a/score scorer 2&amp;#41;
;;=&amp;gt; 0.26350079629361517
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようにします。&lt;code&gt;page-rank&lt;/code&gt;によってページランクのScorerを作り、&lt;code&gt;score&lt;/code&gt;関数にScorerとノードを渡すことで、そのノードの中心性スコアを取得できます。上の例ではノード&lt;code&gt;2&lt;/code&gt;のスコアを求めています。&lt;/p&gt;&lt;p&gt;&lt;code&gt;betweenness-centrality&lt;/code&gt;や&lt;code&gt;closeness-centrality&lt;/code&gt;などの様々なScorerを生成する関数が用意されているので、求めたい中心性によって利用するScorerを切り替えてください。他の経路探索アルゴリズムやScorer生成関数はドキュメントを参照ください。&lt;/p&gt;&lt;p&gt;cf. &lt;a href='https://totakke.github.io/jungerer/jungerer.algo.html'&gt;jungerer.algoのドキュメント&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;可視化&quot;&gt;&lt;/a&gt;可視化&lt;/h3&gt;&lt;p&gt;&lt;code&gt;jungerer.vis&lt;/code&gt;はグラフの可視化を担当しています。JavaのGUIツールキットであるSwingを用いて簡単にグラフを描画することができます。&lt;/p&gt;&lt;p&gt;&lt;code&gt;view&lt;/code&gt;関数にグラフを渡すだけで、すぐに可視化することができます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;require '&amp;#91;jungerer.vis :as v&amp;#93;&amp;#41;

&amp;#40;v/view graph&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://s3-ap-northeast-1.amazonaws.com/totakke-blog/img/2016-12-20-jungerer/graph1.jpg&quot; alt=&quot;グラフの可視化（デフォルト）&quot; /&gt;&lt;/p&gt;&lt;p&gt;グラフのレイアウトアルゴリズムを変更したいときは、グラフを&lt;code&gt;&amp;#42;&amp;#42;&amp;#42;-layout&lt;/code&gt;でラップしてから渡します。デフォルトでは&lt;code&gt;circle-layout&lt;/code&gt;が使われます。また、第2引数にはウィンドウに対するオプションをマップで渡すことができます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;v/view &amp;#40;v/kk-layout graph&amp;#41; {:title &amp;quot;My Graph&amp;quot;
                             :frame-size &amp;#91;640 520&amp;#93;
                             :node-label-fn &amp;#40;fn &amp;#91;node&amp;#93;
                                              &amp;#40;str &amp;quot;node&amp;quot; node&amp;#41;&amp;#41;
                             :edge-label-fn &amp;#40;fn &amp;#91;&amp;#91;node1 node2&amp;#93;&amp;#93;
                                              &amp;#40;str node1 &amp;quot; -&amp;gt; &amp;quot; node2&amp;#41;&amp;#41;}&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://s3-ap-northeast-1.amazonaws.com/totakke-blog/img/2016-12-20-jungerer/graph2.jpg&quot; alt=&quot;グラフの可視化（オプション指定）&quot; /&gt;&lt;/p&gt;&lt;p&gt;cf. &lt;a href='https://totakke.github.io/jungerer/jungerer.vis.html'&gt;jungerer.visのドキュメント&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;インポートとエクスポート&quot;&gt;&lt;/a&gt;インポートとエクスポート&lt;/h3&gt;&lt;p&gt;&lt;code&gt;jungerer.io&lt;/code&gt;を用いると、グラフを外部ファイルに書き出したり、読み込んだりできます。他のグラフソフトウェアと組み合わせて解析する際に利用します。&lt;/p&gt;&lt;p&gt;&lt;code&gt;load-pairs!&lt;/code&gt;を使うと、1行ごとに半角スペースをはさんでエッジ（ノードのペア）が記述されたファイル（e.g. &lt;a href='https://github.com/totakke/jungerer/blob/master/dev-resources/sample.pairs'&gt;sample.pairs&lt;/a&gt;）を読み込みます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;require '&amp;#91;jungerer.io :as i&amp;#93;&amp;#41;

&amp;#40;def graph &amp;#40;g/directed-graph&amp;#41;&amp;#41;

&amp;#40;i/load-pairs! &amp;quot;dev-resources/sample.pairs&amp;quot; graph&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;逆に、&lt;code&gt;save-as-pairs&lt;/code&gt;でグラフをファイルに書き出すことができます。先ほど読み込んだグラフにエッジをひとつ足して書き出してみると、元のファイルからエッジが増えて保存されているはずです。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;g/add-edge! graph &amp;#91;&amp;quot;AAA&amp;quot; &amp;quot;LLL&amp;quot;&amp;#93;&amp;#41;

&amp;#40;i/save-as-pairs &amp;quot;/tmp/sample-edited.pairs&amp;quot; graph&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;cf. &lt;a href='https://totakke.github.io/jungerer/jungerer.io.html'&gt;jungerer.ioのドキュメント&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;おわりに&quot;&gt;&lt;/a&gt;おわりに&lt;/h2&gt;&lt;p&gt;Clojureのグラフ/ネットワークライブラリであるJungererを紹介しました。基本的なネットワーク分析機能で十分なときはLoom、より高度な分析やパフォーマンスが必要なときはJungererと、使い分けるのがよいかと思います。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 20 Dec 2016 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2016-06-29-lazy-seq-loop/
</guid>
<link>
https://blog.totakke.net/posts/2016-06-29-lazy-seq-loop/
</link>
<title>
Clojureにおける遅延シーケンスとループ処理の組み合わせにひそむ罠
</title>
<description>
&lt;p&gt;Clojureにおける遅延シーケンスは非常に便利だが、繰り返し処理の中で用いたときに気づきにくいバグを生み出すことがある。以前、この問題にはまったことがあるので、ここにまとめておく。&lt;/p&gt;&lt;p&gt;本稿でとりあげる問題はStuart Sierra氏の記事&lt;a href='#cite1'&gt;&amp;#91;1&amp;#93;&lt;/a&gt;でも触れられており、一部サンプルコードを参考にしている。なお、本稿ではClojure 1.8を利用している。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;問題&quot;&gt;&lt;/a&gt;問題&lt;/h2&gt;&lt;p&gt;例として、&lt;a href='https://clojuredocs.org/clojure.core/concat'&gt;concat&lt;/a&gt;関数を用いる。&lt;code&gt;concat&lt;/code&gt;は、引数として2つのコレクションを受け取り、その中身をつなげて1つのシーケンスとして返す関数である。複数のコレクションをつなぎ合わせる処理はよく登場するため、Clojureを使っている人なら日常的に使用している関数のはずだ。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;concat &amp;#91;1 2&amp;#93; &amp;#91;3 4&amp;#93;&amp;#41;
;; =&amp;gt; &amp;#40;1 2 3 4&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;しかしこの関数は、使う場所によっては非常に気づきにくいバグを生み出すことがある。その問題は、&lt;code&gt;loop/recur&lt;/code&gt;内で&lt;code&gt;concat&lt;/code&gt;を用いたときに発生する。たとえば、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようなFractal sequenceを生成する関数を次のように書いてみる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn frac &amp;#91;n&amp;#93;
  &amp;#40;loop &amp;#91;i 0, ret &amp;#91;&amp;#93;&amp;#93;
    &amp;#40;if &amp;#40;&amp;lt; i n&amp;#41;
      &amp;#40;recur &amp;#40;inc i&amp;#41; &amp;#40;concat ret &amp;#40;range 1 i&amp;#41;&amp;#41;&amp;#41;
      ret&amp;#41;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;末尾最適化されないClojureでも、&lt;code&gt;loop/recur&lt;/code&gt;を使えばStackOverflowErrorを発生させずに済むはずだ。この&lt;code&gt;frac&lt;/code&gt;関数は、小さい&lt;code&gt;n&lt;/code&gt;を与えた場合は問題なく動作する。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;frac 8&amp;#41;
;; =&amp;gt; &amp;#40;1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6&amp;#41;

&amp;#40;take 21 &amp;#40;frac 100&amp;#41;&amp;#41;
;; =&amp;gt; &amp;#40;1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;しかし、大きな&lt;code&gt;n&lt;/code&gt;を与えると、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;first &amp;#40;frac 3000&amp;#41;&amp;#41;
;; StackOverflowError   clojure.core/seq--4357 &amp;#40;core.clj:137&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とStackOverflowErrorが発生してしまう。しかも、そのスタックトレースは&lt;code&gt;seq&lt;/code&gt;, &lt;code&gt;concat&lt;/code&gt;, &lt;code&gt;LazySeq&lt;/code&gt;がひたすら繰り返されていてわかりづらい。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;1. Unhandled java.lang.StackOverflowError
   &amp;#40;No message&amp;#41;

                  core.clj:  137  clojure.core/seq
                  core.clj:  706  clojure.core/concat/fn
              LazySeq.java:   40  clojure.lang.LazySeq/sval
              LazySeq.java:   49  clojure.lang.LazySeq/seq
                   RT.java:  521  clojure.lang.RT/seq
                  core.clj:  137  clojure.core/seq
                  core.clj:  706  clojure.core/concat/fn
              LazySeq.java:   40  clojure.lang.LazySeq/sval
              LazySeq.java:   49  clojure.lang.LazySeq/seq
                   RT.java:  521  clojure.lang.RT/seq
                  core.clj:  137  clojure.core/seq
                  core.clj:  706  clojure.core/concat/fn
              LazySeq.java:   40  clojure.lang.LazySeq/sval
              LazySeq.java:   49  clojure.lang.LazySeq/seq
                   RT.java:  521  clojure.lang.RT/seq
                  core.clj:  137  clojure.core/seq
              ...
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;原因&quot;&gt;&lt;/a&gt;原因&lt;/h2&gt;&lt;p&gt;以下は、&lt;code&gt;concat&lt;/code&gt;のソースコードから今回の問題と関係のない部分を取り去って単純化したものだ。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn concat &amp;#91;x y&amp;#93;
  &amp;#40;lazy-seq
    &amp;#40;if-let &amp;#91;s &amp;#40;seq x&amp;#41;&amp;#93;
      &amp;#40;cons &amp;#40;first s&amp;#41; &amp;#40;concat &amp;#40;rest s&amp;#41; y&amp;#41;&amp;#41;
      y&amp;#41;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;lazy-seq&lt;/code&gt;マクロによって、&lt;code&gt;concat&lt;/code&gt;は&lt;code&gt;LazySeq&lt;/code&gt;オブジェクトを返しているのがわかる。 今回のケースでは&lt;code&gt;loop/recur&lt;/code&gt;によって、&lt;code&gt;concat&lt;/code&gt;の入れ子構造、すなわち&lt;code&gt;LazySeq&lt;/code&gt;の&lt;code&gt;fn&lt;/code&gt;が別の&lt;code&gt;LazySeq&lt;/code&gt;を返す、という入れ子構造になってしまっている。&lt;/p&gt;&lt;p&gt;&lt;code&gt;first&lt;/code&gt;等の関数は中で&lt;code&gt;seq&lt;/code&gt;を呼び出すが、この&lt;code&gt;seq&lt;/code&gt;が&lt;code&gt;LazySeq&lt;/code&gt;を実体化させる。 その際、実体化した結果が再び&lt;code&gt;LazySeq&lt;/code&gt;だと、実値が変えるまで再帰的に実体化させていく。 そのため、末尾最適化されていない再帰関数のように、スタックがあふれてエラーが発生してしまう。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;解決策&quot;&gt;&lt;/a&gt;解決策&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;1.&amp;#95;遅延シーケンスを使わない&quot;&gt;&lt;/a&gt;1. 遅延シーケンスを使わない&lt;/h3&gt;&lt;p&gt;単純な解決方法は&lt;code&gt;concat&lt;/code&gt;を使わないことだ。同様のつなぎ合わせる処理は、&lt;code&gt;into&lt;/code&gt;を使うことでlazyではないものに変えることができる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn frac2 &amp;#91;n&amp;#93;
  &amp;#40;loop &amp;#91;i 0, ret &amp;#91;&amp;#93;&amp;#93;
    &amp;#40;if &amp;#40;&amp;lt; i n&amp;#41;
      &amp;#40;recur &amp;#40;inc i&amp;#41; &amp;#40;into ret &amp;#40;range 1 i&amp;#41;&amp;#41;&amp;#41;
      ret&amp;#41;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この改良した&lt;code&gt;frac2&lt;/code&gt;関数は、大きい&lt;code&gt;n&lt;/code&gt;に対しても問題なく動作する。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;first &amp;#40;frac2 3000&amp;#41;&amp;#41;
;; =&amp;gt; 1
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;2.&amp;#95;doallを使う&quot;&gt;&lt;/a&gt;2. doallを使う&lt;/h3&gt;&lt;p&gt;実体化していない&lt;code&gt;LazySeq&lt;/code&gt;が入れ子になることが問題なので、都度&lt;code&gt;doall&lt;/code&gt;で実体化させる手もある。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn frac3 &amp;#91;n&amp;#93;
  &amp;#40;loop &amp;#91;i 0, ret &amp;#91;&amp;#93;&amp;#93;
    &amp;#40;if &amp;#40;&amp;lt; i n&amp;#41;
      &amp;#40;recur &amp;#40;inc i&amp;#41; &amp;#40;doall &amp;#40;concat ret &amp;#40;range 1 i&amp;#41;&amp;#41;&amp;#41;&amp;#41;
      ret&amp;#41;&amp;#41;&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ただし、著しくパフォーマンスが低下する。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;time &amp;#40;first &amp;#40;frac3 1000&amp;#41;&amp;#41;&amp;#41;
;; &amp;quot;Elapsed time: 6800.704 msecs&amp;quot;
;; =&amp;gt; 1

&amp;#40;time &amp;#40;first &amp;#40;frac 1000&amp;#41;&amp;#41;&amp;#41;
;; &amp;quot;Elapsed time: 0.832 msecs&amp;quot;
;; =&amp;gt; 1
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;3.&amp;#95;concatの実装を変更する&quot;&gt;&lt;/a&gt;3. concatの実装を変更する&lt;/h3&gt;&lt;p&gt;&lt;code&gt;concat&lt;/code&gt;の実装自体を修正して、エラーが発生しないようにする方法を提案している人もいる&lt;a href='#cite2'&gt;&amp;#91;2&amp;#93;&lt;/a&gt;。ここでは説明しないが&lt;a href='https://gist.github.com/jondistad/2a4971fe8948ca2f6ba0'&gt;Gistにコード&lt;/a&gt;があるので、興味あれば見てみると面白いかもしれない。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;4.&amp;#95;別解&quot;&gt;&lt;/a&gt;4. 別解&lt;/h3&gt;&lt;p&gt;今回の場合、&lt;code&gt;mapcat&lt;/code&gt;を用いることで次のように書くこともできる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn frac4 &amp;#91;n&amp;#93;
  &amp;#40;mapcat &amp;#40;partial range 1&amp;#41; &amp;#40;range 1 n&amp;#41;&amp;#41;&amp;#41;

&amp;#40;frac4 8&amp;#41;
;; =&amp;gt; &amp;#40;1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6&amp;#41;

&amp;#40;first &amp;#40;frac4 3000&amp;#41;&amp;#41;
;; =&amp;gt; 1
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;考察&quot;&gt;&lt;/a&gt;考察&lt;/h2&gt;&lt;p&gt;&lt;code&gt;concat&lt;/code&gt;と&lt;code&gt;loop/recur&lt;/code&gt;の組み合わせにだけ注意していればよいという話ではない。結局のところ、&lt;code&gt;concat&lt;/code&gt;した結果に&lt;code&gt;concat&lt;/code&gt;を行うようなループ処理が行われれば、同様の問題が発生する。たとえば、&lt;code&gt;reduce&lt;/code&gt;や&lt;code&gt;iterate&lt;/code&gt;といった高階関数と組み合わせるケースが考えられる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;clojure&quot;&gt;&amp;#40;defn frac5 &amp;#91;n&amp;#93;
  &amp;#40;reduce concat &amp;#40;map &amp;#40;partial range 1&amp;#41; &amp;#40;range 1 n&amp;#41;&amp;#41;&amp;#41;&amp;#41;

&amp;#40;frac5 8&amp;#41;
;; =&amp;gt; &amp;#40;1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6&amp;#41;

&amp;#40;first &amp;#40;frac5 3000&amp;#41;&amp;#41;
;; StackOverflowError   clojure.core/seq--4357 &amp;#40;core.clj:137&amp;#41;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この問題を一般化するならば、「遅延シーケンスを返す関数を繰り返し適用する場合にこの問題が発生しうる」となる。回避するためには、Clojureプログラムを書く上で、ある関数が遅延シーケンスを返すのかそうでないのかを意識しておく必要がある。&lt;a href='https://clojure.github.io/clojure/clojure.core-api.html'&gt;clojure.core&lt;/a&gt;のシーケンス処理関数の仕様を全て把握しておくだけでも難しいが、本稿でとりあげた&lt;code&gt;concat&lt;/code&gt;と&lt;code&gt;loop/recur&lt;/code&gt;の組み合わせは最も登場しやすいパターンだと思うので、特に注意しておきたい。実際、以前に筆者がはまったときもこの組み合わせだった。&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;&lt;a name=&quot;参考文献&quot;&gt;&lt;/a&gt;参考文献&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a name=&quot;cite1&quot;&gt;&lt;/a&gt;&lt;a href='https://stuartsierra.com/2015/04/26/clojure-donts-concat'&gt;Clojure Don’ts: Concat – Digital Digressions by Stuart Sierra&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name=&quot;cite2&quot;&gt;&lt;/a&gt;&lt;a href='https://groups.google.com/forum/#!topic/clojure-dev/ewBuyloeiFs/discussion'&gt;Concat implementation without stack overflow - Google Groups&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 29 Jun 2016 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2013-02-05-install-openni2-mac/
</guid>
<link>
https://blog.totakke.net/posts/2013-02-05-install-openni2-mac/
</link>
<title>
OpenNI2をMac OS Xにインストール
</title>
<description>
&lt;p&gt;Mac OS X用のOpenNI2が公開されていたので、インストール方法を紹介します。デバイスはXtion PRO LIVEのみ動作確認しています。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;インストール&quot;&gt;&lt;/a&gt;1. インストール&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;1.1&amp;#95;libusbのインストール&quot;&gt;&lt;/a&gt;1.1 libusbのインストール&lt;/h3&gt;&lt;p&gt;Homebrewを使っている方は、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew install libusb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Macportsを使っている方は、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo port install libusb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;として、libusbをインストールしてください。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;1.2&amp;#95;openni2のインストール&quot;&gt;&lt;/a&gt;1.2 OpenNI2のインストール&lt;/h3&gt;&lt;p&gt;OpenNI2の&lt;a href='http://www.openni.org/openni-sdk/'&gt;SDKダウンロードページ&lt;/a&gt;に行き、&lt;code&gt;OpenNI 2.1 Beta &amp;#40;OS X&amp;#41;&lt;/code&gt;をダウンロードします。&lt;/p&gt;&lt;p&gt;OpenNIではインストール先は&lt;code&gt;/usr&lt;/code&gt;以下でしたが、今回は好きなところに置いて、そこへのパスを環境変数として設定するという方法になっています。ここでは、&lt;code&gt;/Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2&lt;/code&gt;にインストールすることにします。&lt;/p&gt;&lt;p&gt;先ほどダウンロードしたファイルを展開し、&lt;code&gt;/Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2&lt;/code&gt;というディレクトリ名で配置してください。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ cd /Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2
$ sudo ./install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と実行します。すると、&lt;code&gt;OpenNIDevEnvironment&lt;/code&gt;という環境変数の記されたファイルが生成されます。&lt;/p&gt;&lt;p&gt;&lt;code&gt;OpenNIDevEnvironment&lt;/code&gt;の中身は、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;export OPENNI2&amp;#95;INCLUDE=/Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2/Include
export OPENNI2&amp;#95;REDIST=/Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2/Redist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようになっているはずです。&lt;/p&gt;&lt;p&gt;これらの環境変数をターミナル起動時に読み込むように設定しておきましょう。&lt;code&gt;&amp;#126;/.bash&amp;#95;profile&lt;/code&gt;を編集して、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;source /Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2/OpenNIDevEnvironment
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を追記しておきます。&lt;/p&gt;&lt;p&gt;ターミナルを再起動するか、&lt;code&gt;$ source &amp;#126;/.bash&amp;#95;profile&lt;/code&gt;として環境変数を読み込みましょう。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;サンプル&quot;&gt;&lt;/a&gt;2. サンプル&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;2.1&amp;#95;サンプルの実行&quot;&gt;&lt;/a&gt;2.1 サンプルの実行&lt;/h3&gt;&lt;p&gt;サンプルの実行ファイルは最初から含まれています。Xtion PRO LIVEをPCに接続して、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ cd /Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2/Samples/Bin
$ ./SimpleViewer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とするとサンプルが実行されます。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;2.2&amp;#95;サンプルのビルド&quot;&gt;&lt;/a&gt;2.2 サンプルのビルド&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ cd /Users/&amp;#91;ユーザ名&amp;#93;/OpenNI2/Samples/SimpleViewer
$ make
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようにすることで、サンプルを自分でビルドすることもできます。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;xcodeプロジェクトの作成&quot;&gt;&lt;/a&gt;3. Xcodeプロジェクトの作成&lt;/h2&gt;&lt;p&gt;環境変数&lt;code&gt;OPENNI2&amp;#95;INCLUDE&lt;/code&gt;, &lt;code&gt;OPENNI2&amp;#95;REDIST&lt;/code&gt;を利用してプロジェクトを作成します。&lt;/p&gt;&lt;p&gt;詳しくはまた追記する予定。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 05 Feb 2013 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2013-01-23-food-webservice/
</guid>
<link>
https://blog.totakke.net/posts/2013-01-23-food-webservice/
</link>
<title>
食事系Webサービスまとめ
</title>
<description>
&lt;p&gt;&lt;img src=&quot;/img/5424749715_d708139970_z.jpg&quot; alt=&quot;photo&quot; /&gt;&lt;/p&gt;&lt;p&gt;最近、食事・料理に関するWebサービスがとても増えてきて、一体いくつあるんだろうと気になっていました。また、所属研究室が&lt;a href=&quot;http://www.hal.t.u-tokyo.ac.jp/crest/&quot; target=&quot;_blank&quot;&gt;食に関する研究プロジェクト&lt;/a&gt;に関わっていることもあり、そういった食事系Webサービスを国内・国外問わず色々と調べてまとめてみました。&lt;/p&gt;&lt;p&gt;予め断っておくと、リストアップされたサービス全てを実際に使ってみたわけではないので、その点はご了承ください。また、情報が間違っていたり、ここに載ってないこんなWebサービスがあるよ、といった場合はコメントにて教えていただけると嬉しいです。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;レストラン検索&quot;&gt;&lt;/a&gt;1. レストラン検索&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;食べログ&quot;&gt;&lt;/a&gt;食べログ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://tabelog.com/&quot;&gt;http://tabelog.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;言わずもがな。&lt;/p&gt;&lt;p&gt;全国70万店以上の飲食店を、ユーザの口コミをもとに集計した情報からランキングなどの形式で検索できる。やらせ書き込みの事件も大きくなるほど、みんな使っている？スマートフォンアプリもあるが、アプリは有料会員にならないと制限が多い。&lt;/p&gt;&lt;p&gt;運営会社は&lt;a href=&quot;http://kakaku.com/&quot; target=&quot;&lt;i&gt;blank&quot;&gt;価格.com&lt;/a&gt;で有名な&lt;a href=&quot;http://corporate.kakaku.com/&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;株式会社カカクコム&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;yelp&quot;&gt;&lt;/a&gt;Yelp&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.yelp.com/&quot;&gt;http://www.yelp.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;海外版食べログ、というか食べログが日本版Yelp？海外旅行したときには、美味しいレストランやバーを探すのに重宝するので覚えておきたい。&lt;/p&gt;&lt;p&gt;運営会社はYelp Inc.。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;ぐるなび&quot;&gt;&lt;/a&gt;ぐるなび&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.gnavi.co.jp/&quot;&gt;http://www.gnavi.co.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ぐるなびも日本では有名。飲食店の情報を調べられるポータルサイト。&lt;/p&gt;&lt;p&gt;運営会社は&lt;a href=&quot;http://www.gnavi.co.jp/company/&quot; target=&quot;_blank&quot;&gt;株式会社ぐるなび&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;rettyグルメ&quot;&gt;&lt;/a&gt;Rettyグルメ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://retty.me/&quot;&gt;http://retty.me/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;実名でのレストラン検索サービス。&lt;/p&gt;&lt;p&gt;Facebook、Twitterアカウントを使用する。他SNSのつながりを利用するため、信頼性が高い、ということが特徴だろうか。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://corp.retty.me/&quot; target=&quot;_blank&quot;&gt;Retty株式会社&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;grumee&quot;&gt;&lt;/a&gt;Grumee&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://grumee.net/&quot;&gt;http://grumee.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;こちらも友達が「お気に入り」したお店を探すことにできるサービス。スタンプも使えるチャットができたりと、LINEっぽい感じ。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://grumee.net/company.html&quot; target=&quot;_blank&quot;&gt;株式会社Grumee&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;foodstoq&quot;&gt;&lt;/a&gt;foodstoQ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://foodstoq.com/&quot;&gt;http://foodstoq.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;実名での飲食店Q&amp;Aサービス。&lt;/p&gt;&lt;p&gt;FacebookまたはTwitterアカウントを使う。検索機能はないが、友達におすすめのお店を「聞く」ことでお店を調べる、という方法が特長的。iPhoneアプリが無料、AndroidアプリはComing soon。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;レシピ検索&quot;&gt;&lt;/a&gt;2. レシピ検索&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;クックパッド&quot;&gt;&lt;/a&gt;クックパッド&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://cookpad.com/&quot;&gt;http://cookpad.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;言わずもがな、日本最大の料理レシピサイト。137万品を超えるレシピから検索することができ、主婦の強い味方。利用者は1200万人。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://info.cookpad.com/&quot; target=&quot;_blank&quot;&gt;クックパッド株式会社&lt;/a&gt;。社内には大きなキッチンがあるらしい。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;google&amp;#95;レシピ検索&quot;&gt;&lt;/a&gt;Google レシピ検索&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.google.co.jp/landing/recipes/&quot;&gt;http://www.google.co.jp/landing/recipes/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Googleの提供するレシピの検索。品目名で検索した後、材料・調理時間・カロリーなどの条件で絞り込むことができる。単一のレシピサービスだけではなく、様々なレシピサイトやブログのレシピから検索可能なのが強み。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;楽天レシピ&quot;&gt;&lt;/a&gt;楽天レシピ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://recipe.rakuten.co.jp/&quot;&gt;http://recipe.rakuten.co.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;楽天が運営するレシピサイトで、56万品以上のレシピが登録されている。レシピを投稿したり、レシピを見て料理を作ったりする・されると、ポイントが貯まる。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;dailybuzz&amp;#95;food&quot;&gt;&lt;/a&gt;DailyBuzz Food&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://food.dailybuzz.com/&quot;&gt;http://food.dailybuzz.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;料理のレシピをブログに載せることはよくあるが、DailyBuzz Foodはその中でも特に質の高いものを集めて、見やすく提供してくれる。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;foodgawker&quot;&gt;&lt;/a&gt;foodgawker&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://foodgawker.com/&quot;&gt;http://foodgawker.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;世界中の料理ブログから美味しそうな食事写真をピックアップし、一覧して表示してくれる。写真を見て気になった料理があれば、もとのブログにすぐジャンプできる。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;foodpad&quot;&gt;&lt;/a&gt;foodpad&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://foodpad.org/&quot;&gt;http://foodpad.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;単にレシピを検索できるだけでなく、そのレシピの栄養成分分析を行って表示してくれるサービス。&lt;/p&gt;&lt;p&gt;レシピ自体はクックパッドや楽天レシピなどの他サービスから引っ張ってきているみたい。当該レシピで使う食材の使用量を調べ、そこから栄養成分を計算する。そして、三大栄養素やミネラル、ビタミンの摂取量をレーダーチャート形式で分かりやすく表示してくれる。健康志向の人にとってはとても便利そうなサービス。クックパッドとかの機能として取り込まれてもおかしくないと思う。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;食と健康&quot;&gt;&lt;/a&gt;3. 食と健康&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;foodlog&quot;&gt;&lt;/a&gt;FoodLog&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.foodlog.jp/&quot;&gt;http://www.foodlog.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;食事の際、携帯電話で写真を撮り、メールに添付して送信するだけで食事日記を作れる。食事写真をアップロードすると、画像処理技術により自動的に栄養バランス（厚生労働省の&lt;a href=&quot;http://www.mhlw.go.jp/bunya/kenkou/eiyou-syokuji.html&quot; target=&quot;&lt;i&gt;blank&quot;&gt;食事バランスガイド&lt;/a&gt;）を推定してくれる。東京大学の&lt;a href=&quot;http://www.hal.t.u-tokyo.ac.jp/ja/index.html&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;相澤研究室&lt;/a&gt;が開発した技術をもとに作られたWebサービス。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://www.foo-log.co.jp/&quot; target=&quot;_blank&quot;&gt;foo.log株式会社&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;すぐわかる栄養成分ナビゲーター&quot;&gt;&lt;/a&gt;すぐわかる栄養成分ナビゲーター&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.glico.co.jp/navi/&quot;&gt;http://www.glico.co.jp/navi/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;簡単な操作で一般食品（1878品目）から、知りたい栄養成分情報を検索できるウェブサイト。グリコが提供している。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;donteat.at&quot;&gt;&lt;/a&gt;DontEat.at&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://donteat.at/&quot;&gt;http://donteat.at/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;一風変わったサービスで、衛生面で問題のある飲食店の情報を共有する。&lt;/p&gt;&lt;p&gt;Foursquareと連携させて使う。過去に問題有りとレポートされたレストランにチェックインすると、このアプリが警告を出してくれる。食事の栄養だけでなく、衛生面における健康を意識する人には役立ちそう。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;4.&amp;#95;食事の共有&quot;&gt;&lt;/a&gt;4. 食事の共有&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;ペコリ&amp;#95;by&amp;#95;ameba&quot;&gt;&lt;/a&gt;ペコリ by Ameba&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://pecolly.jp/&quot;&gt;http://pecolly.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;手作り料理の写真を撮影・加工して、投稿・共有したり、コメントを付け合ってコミュニケーションできるサービス。SNS機能はAmebaと連携している。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;piccious&quot;&gt;&lt;/a&gt;Piccious&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://piccious.com/&quot;&gt;http://piccious.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;“美味しい”を共有するiPhone/Androidアプリ。「食べたい」「飲みたい」「いいね」などのリアクションボタンが用意されている。Twitter, Facebookのアカウントを使用することもできる。無料。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;ラペコ&quot;&gt;&lt;/a&gt;ラペコ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://rapeco.jp/&quot;&gt;http://rapeco.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Twitterアカウントと連携させて、食事写真を共有するサービス。Webからは普通に写真を選択・アップロードして共有する。iPhoneなどでは、任意のTwitterクライアントアプリから、ラペコの投稿用アカウントである&lt;a href=&quot;https://twitter.com/uppeco&quot; target=&quot;_blank&quot;&gt;@uppeco&lt;/a&gt;宛に画像URLを付加してツイートすることでできる。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;超！美味しく変換&quot;&gt;&lt;/a&gt;超！美味しく変換&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://foodpic.net/&quot;&gt;http://foodpic.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;AccuSmartという画像補正エンジンを料理画像用に最適化し、より美味しく見えるように自動的に補正してくれるサービス。これまでに300万枚以上の食事写真がアップロード、変換されているらしい。変換できるのはJPG形式の画像のみ。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;miil&quot;&gt;&lt;/a&gt;miil&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://miil.me/&quot;&gt;http://miil.me/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;食事写真を共有できるiPhone/Androidアプリ。共有された写真に対してはコメントを付けるだけでなく、こちらには「食べたい」ボタンがある。コンテストなどもあるらしい。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;snapdish&quot;&gt;&lt;/a&gt;Snapdish&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://snapdi.sh/&quot;&gt;http://snapdi.sh/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;料理の写真をおいしく加工して、共有できる無料のiPhone/Androidアプリ。写真はレア・ミディアム・ウェルダンのボタンをタップするだけで加工できる。共有された料理に対して「もぐもぐ！」（Facebookの「いいね！」みたいな）してコミュニケーションをとることができる。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://vuzz.com/&quot; target=&quot;_blank&quot;&gt;ヴァズ株式会社&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;foodspotting&quot;&gt;&lt;/a&gt;Foodspotting&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.foodspotting.com/&quot;&gt;http://www.foodspotting.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;シンプルに携帯電話で食事写真を撮り、レビューをアップロードするというもの。アップロードされた食事写真は、都市別に分けられて見ることができる。アメリカではけっこうな人気だったらしいが、日本ではあまり聞かない。アプリはiPhone, Android, Windows Phone, blackberryに対応している。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;foodzy&quot;&gt;&lt;/a&gt;Foodzy&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://foodzy.com/&quot;&gt;https://foodzy.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;食事版FourSquare。健康的な食事などに対してバッジがもらえたりするらしい。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;untappd&quot;&gt;&lt;/a&gt;Untappd&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://untappd.com/&quot;&gt;https://untappd.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;お酒版Foursquare。&lt;/p&gt;&lt;p&gt;iPhone/Androidアプリがあり、飲んだビールに対してチェックインできる。お店の名前で検索することもでき、お店を選ぶとその店の酒類メニューが表示されて素晴らしい。&lt;/p&gt;&lt;p&gt;海外旅行に行ったときに、バーを探す方法としても使えるかもしれない。日本酒や焼酎は対応していないし、日本のバーの情報は少ないので、誰か日本版Untappdを作ってほしい。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;5.&amp;#95;食事マッチング&quot;&gt;&lt;/a&gt;5. 食事マッチング&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;ソーシャルランチ&quot;&gt;&lt;/a&gt;ソーシャルランチ&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.social-lunch.jp/&quot;&gt;http://www.social-lunch.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;知人とペアを組み、知らない人と2:2で一緒に昼食を食べることができるサービス。iOS、Androidそれぞれでアプリもリリースされている。Facebookアカウントを連携させて利用する。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://www.social-lunch.jp/pages/company&quot; target=&quot;_blank&quot;&gt;シンクランチ株式会社&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;ソーシャルランチ大学版&quot;&gt;&lt;/a&gt;ソーシャルランチ大学版&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.social-lunch.jp/campus/&quot;&gt;http://www.social-lunch.jp/campus/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;上述ソーシャルランチの大学生限定版。利用するには、対応大学のメールアドレスで認証するか、すでに認証を完了したユーザーから招待を受ける必要がある。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;coffeemeeting&quot;&gt;&lt;/a&gt;CoffeeMeeting&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://coffeemeeting.jp/&quot;&gt;http://coffeemeeting.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ソーシャルランチは昼食だが、CoffeeMeetingは「お茶」のマッチング。こちらもFacebookアカウントを連携させる。&lt;/p&gt;&lt;p&gt;使い方は、ミーティング可能な日時と場所を指定して、30分か60分でミーティングを登録しておく。お茶したい人から申し込みがあれば、その人とお茶できる。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://le-le-le.jp/&quot; target=&quot;_blank&quot;&gt;株式会社レレレ&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;肉会&quot;&gt;&lt;/a&gt;肉会&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://nikukai.jp/&quot;&gt;http://nikukai.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;焼肉についてのマッチングサービス。Facebookアカウントを使用する。&lt;/p&gt;&lt;p&gt;使い方は、毎日12時に肉会相手候補が1組紹介されるので、その「肉会オファー」を承諾をすれば肉会成立。その後、成立したペア同士で開催日時・場所を調整することができる。&lt;/p&gt;&lt;p&gt;運営は女子大生ブロガーとして有名な伊藤春香を中心としたメンバー。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;gohantabeyo.com&quot;&gt;&lt;/a&gt;gohantabeyo.com&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://gohantabeyo.com/&quot;&gt;http://gohantabeyo.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;たまたま相手もあなたとごはんたべたいというときに、Twitterのメッセージで知らせてくれる。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;tableshare&quot;&gt;&lt;/a&gt;TableShare&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://table-share.jp/&quot;&gt;https://table-share.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Facebookアカウントを使った食事マッチングサービス。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://www.bright-table.com/&quot; target=&quot;_blank&quot;&gt;株式会社ブライトテーブル&lt;/a&gt;。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;sakebii&quot;&gt;&lt;/a&gt;sakebii&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.sakebii.com/&quot;&gt;http://www.sakebii.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;飲み会のマッチングサービス。iPhoneアプリがリリースされている。AndroidアプリはComing soonらしい。&lt;/p&gt;&lt;p&gt;まず、親しい30名を上限にTwitter、Facebook、電話帳から「飲み仲間グラフ」をつくる。お酒を飲みたい時は、sakebiiを通じてその気持ちをシャウト（共有）する。sakebiiのタイムラインで飲み仲間のステータスを確認し、都合が合えば飲み会に行くという流れ。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;nomitomo&quot;&gt;&lt;/a&gt;nomitomo&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://nomitomo.co.jp/&quot;&gt;http://nomitomo.co.jp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;飲み会をマッチングするFacebookアプリ。&lt;/p&gt;&lt;p&gt;運営は&lt;a href=&quot;http://www.sgnl.jp/&quot; target=&quot;_blank&quot;&gt;株式会社シグナル&lt;/a&gt;。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;6.&amp;#95;その他&quot;&gt;&lt;/a&gt;6. その他&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;evernote&amp;#95;food&quot;&gt;&lt;/a&gt;Evernote Food&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://evernote.com/intl/jp/food/&quot;&gt;http://evernote.com/intl/jp/food/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;食事やレストランなどをEvernote上に記録できる、Evernoteの公式サービス。iPhone/Androidアプリがリリースされている。Evernote Food 2.0では、レシピの検索やクリップ、レストランの検索などもできるようになった。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;table&amp;#95;for&amp;#95;two&quot;&gt;&lt;/a&gt;Table For Two&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.tablefor2.org/project/app.html&quot;&gt;http://www.tablefor2.org/project/app.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;iPhoneアプリ。食事の写真をアップロードすると、自動的にカロリーと栄養バランスが解析される。解析の仕組みは上述のFoodLogを利用している。さらに、ヘルシーな食事のときや、社員食堂やレストランでTFT登録メニューを食べたときにその写真をアップロードすると、アフリカの子供への学校給食として協賛企業から1円が寄付される。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;open&amp;#95;beer&amp;#95;database&quot;&gt;&lt;/a&gt;Open Beer Database&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://openbeerdatabase.com/&quot;&gt;http://openbeerdatabase.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ビールに関する情報を取得可能なAPIが用意されている、フリーでパブリックなデータベース。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;参考リンク&quot;&gt;&lt;/a&gt;参考リンク&lt;/h2&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://matome.naver.jp/odai/2135361344282360301&quot; target=&quot;_blank&quot;&gt;海外・日本のグルメ・フード系webサービス総まとめ！ | NAVERまとめ&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://zenstartup.jp/2011/09/15/%E6%97%A5%E6%9C%AC%E3%81%A7%E3%81%AF%E3%81%82%E3%81%BE%E3%82%8A%E7%9F%A5%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%82%B0%E3%83%AB%E3%83%A1%E7%B3%BB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9/&quot; target=&quot;_blank&quot;&gt;日本ではあまり知られていないグルメ系サービスアプリ9つ | Zen Startup&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 23 Jan 2013 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2013-01-15-bootstrap-cool-file-input/
</guid>
<link>
https://blog.totakke.net/posts/2013-01-15-bootstrap-cool-file-input/
</link>
<title>
Bootstrapでかっこいいファイル選択フォームをつくる
</title>
<description>
&lt;p&gt;&lt;a href=&quot;http://twitter.github.com/bootstrap/&quot; title=&quot;Twitter Bootstrap&quot; target=&quot;_blank&quot;&gt;Twitter Bootstrap&lt;/a&gt;は全体的にクールですが、ファイル選択フォームがデフォルトのため少し残念です。ここでは、Bootstrapの他のコンポーネントを組み合わせてかっこいいファイル選択フォームをつくる方法を紹介します。&lt;/p&gt;&lt;p&gt;その選択フォームをつくるHTMLは以下のようなものです。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;file-input&amp;quot; name=&amp;quot;file&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;
&amp;lt;div class=&amp;quot;input-prepend&amp;quot;&amp;gt;
  &amp;lt;a class=&amp;quot;btn&amp;quot; onclick=&amp;quot;$&amp;#40;'#file-input'&amp;#41;.click&amp;#40;&amp;#41;&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;icon-folder-open&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;span id=&amp;quot;cover&amp;quot; class=&amp;quot;input-xlarge uneditable-input&amp;quot;&amp;gt;select file&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
  $&amp;#40;'#file-input'&amp;#41;.change&amp;#40;function&amp;#40;&amp;#41; {
      $&amp;#40;'#cover'&amp;#41;.html&amp;#40;$&amp;#40;this&amp;#41;.val&amp;#40;&amp;#41;&amp;#41;;
  }&amp;#41;;
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Twitter Bootstrapと&lt;a href=&quot;http://jquery.com/&quot; title=&quot;jQuery&quot; target=&quot;_blank&quot;&gt;jQuery&lt;/a&gt;を使っているので、&lt;code&gt;bootstrap.css&lt;/code&gt;と&lt;code&gt;jquery.js&lt;/code&gt;をロードしておいてください。&lt;/p&gt;&lt;p&gt;上のコードにより、下画像のようなファイル選択フォームが生成されます。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/tb-select-file-300x37.png&quot; alt=&quot;tb-select-file&quot; /&gt;&lt;/p&gt;&lt;p&gt;左側のフォルダマークの付いたボタンをクリックするとファイルセレクトウィンドウが表示され、選択することができます。選択されたファイル名が右側のテキストボックスに表示されます。&lt;/p&gt;&lt;p&gt;仕組みとしては、本来のfile inputを&lt;code&gt;style=&amp;quot;display: none;&amp;quot;&lt;/code&gt;で隠し、Bootstrapのかっこいいボタンを押したときに、&lt;code&gt;onclick=&amp;quot;$&amp;#40;'#file-input'&amp;#41;.click&amp;#40;&amp;#41;&lt;/code&gt;として本来のfile inputを起動するようにしています。ボタンとテキストボックスは&lt;code&gt;class=&amp;quot;input-prepend&amp;quot;&lt;/code&gt;によってくっつけ、ボタン画像はBootstrapにデフォルトで含まれるフォルダアイコン画像&lt;code&gt;class=&amp;quot;icon-folder-open&amp;quot;&lt;/code&gt;にしました。&lt;/p&gt;&lt;p&gt;この方法は、&lt;a href=&quot;http://duckranger.com/2012/06/pretty-file-input-field-in-bootstrap/&quot; title=&quot;Pretty file input field in Bootstrap&quot; target=&quot;_blank&quot;&gt;こちらの記事&lt;/a&gt;を参考にカスタムしたものです。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 15 Jan 2013 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-12-25-upupu-davdav/
</guid>
<link>
https://blog.totakke.net/posts/2012-12-25-upupu-davdav/
</link>
<title>
UpupuとDavdav: WebDAVを使った写真共有
</title>
<description>
&lt;p&gt;&lt;img src=&quot;/img/upupu-davdav.png&quot; alt=&quot;&quot; title=&quot;upupu-davdav&quot; /&gt;&lt;/p&gt;&lt;p&gt;WebDAVを使って簡単に写真共有できるツール、「Upupu」と「Davdav」を紹介します。&lt;/p&gt;&lt;p&gt;写真共有サービスは今や様々なものがありますが、外部サービスに依存せずにチーム内で簡単に写真が共有できると、ミーティングのログを撮り貯めたりするのに便利です。今回紹介するUpupuとDavdavは、&lt;a href=&quot;http://www.xcoo.jp/&quot; title=&quot;Xcoo, Inc.&quot; target=&quot;_blank&quot;&gt;Xcoo, Inc.&lt;/a&gt;で開発・公開されているツールで、Xcooの社内ツールとして実際に用いられているものです。オープンソースとして公開されているため、インストールさえできれば、誰でも利用することができます。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Upupu&lt;/strong&gt;は、WebDAVやDropboxに2タップ（撮影と送信）だけで写真をアップロードできるiOSアプリです。保存ディレクトリ名、ファイル名はアップロードの日時から自動的に生成されます。App Storeで&lt;a href=&quot;https://itunes.apple.com/us/app/upupu/id508401854?mt=8&quot; title=&quot;Upupu&quot; target=&quot;_blank&quot;&gt;850円で販売&lt;/a&gt;されています。また、GitHub上にオープンソースとして公開されているため、ソースコードをダウンロードしてビルドすれば、無料で利用することもできます。 → &lt;a href=&quot;https://github.com/xcoo/upupu&quot; title=&quot;GitHub xcoo/upupu&quot; target=&quot;_blank&quot;&gt;https://github.com/xcoo/upupu&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;div style=&quot;height: 240px; margin-bottom: 20px;&quot;&gt;&lt;img src=&quot;/img/upupu-ss&amp;#95;01.jpg&quot; alt=&quot;&quot; title=&quot;Upupu screenshot 01&quot; width=&quot;170px&quot; style=&quot;float: left; margin-right: 7px;&quot; /&gt;&lt;img src=&quot;/img/upupu-ss&amp;#95;02.jpg&quot; alt=&quot;&quot; title=&quot;Upupu screenshot 02&quot; width=&quot;170px&quot; style=&quot;float: left;  margin-right: 7px;&quot; /&gt;&lt;img src=&quot;/img/upupu-ss&amp;#95;03.jpg&quot; alt=&quot;&quot; title=&quot;Upupu screenshot 03&quot; width=&quot;170px&quot; style=&quot;float: left;&quot; /&gt;&lt;/div&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Davdav&lt;/strong&gt;は、Upupuを使ってWebDAVにアップロードした写真を、サムネイル付きで快適に閲覧するためのビューアです。Auto Pagerizeにも対応しています。DavdavもGitHub上にソースコードが置かれているので、誰でも利用可能です。 → &lt;a href=&quot;https://github.com/xcoo/davdav&quot; title=&quot;GitHub xcoo/davdav&quot; target=&quot;_blank&quot;&gt;https://github.com/xcoo/davdav&lt;/a&gt;&lt;/p&gt;&lt;p&gt;それでは以下に、UpupuとDavdavをソースコードからビルドし、インストールする方法を説明します。 なお、WebDAVのアップロード先環境は予め用意されているものとします。WebDAVの設置方法は検索すれば多くの説明サイトがありますので、そちらを参考ください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;upupuのインストール&quot;&gt;&lt;/a&gt;Upupuのインストール&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;ソースコードのダウンロード&quot;&gt;&lt;/a&gt;ソースコードのダウンロード&lt;/h3&gt;&lt;p&gt;Gitでcloneしてください。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ git clone https://github.com/xcoo/upupu.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;もしくは、&lt;a href=&quot;https://github.com/xcoo/upupu/zipball/master&quot; title=&quot;Upupu zipball master&quot;&gt;こちら&lt;/a&gt;からzipで圧縮されたファイルをダウンロード・展開してください。&lt;/p&gt;&lt;p&gt;その後、&lt;code&gt;Upupu.xcodeprj&lt;/code&gt;をXcode 4で開いてください。 iPhoneなどを接続して実行すればインストールされます。CertificateやDevice登録などのiOS開発の基本部分はここでは説明しませんので、他サイトを参考にしてください。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;dropboxを使う場合&quot;&gt;&lt;/a&gt;Dropboxを使う場合&lt;/h3&gt;&lt;p&gt;Upupuでは、WebDAVの他にアップロード先にDropboxを指定することもできます。&lt;/p&gt;&lt;p&gt;Dropboxを利用するには、Dropboxアプリの登録とUpupuの設定ファイルの書き変えが必要です。詳しくは&lt;a href=&quot;https://github.com/xcoo/upupu/tree/dev#2-use-dropbox&quot; target=&quot;_blank&quot;&gt;こちら&lt;/a&gt;をご覧ください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;davdavのインストール&quot;&gt;&lt;/a&gt;Davdavのインストール&lt;/h2&gt;&lt;p&gt;ここでは、UbuntuとApacheを用いたインストール方法を説明します。&lt;/p&gt;&lt;p&gt;Python 2.7以上、MySQL 5.0以上があれば、他の環境でも利用可能だと思います。その他の環境へのインストールは、&lt;a href=&quot;https://github.com/xcoo/davdav/wiki&quot; title=&quot;Davdav wiki&quot; target=&quot;_blank&quot;&gt;Davdav wiki&lt;/a&gt;のInstall manualを参照してください。&lt;/p&gt;&lt;p&gt;ある程度のLinuxの知識があることを前提としていますので、ご了承ください。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;1.&amp;#95;関連パッケージのインストール&quot;&gt;&lt;/a&gt;1. 関連パッケージのインストール&lt;/h3&gt;&lt;p&gt;まず、Ubuntuのapt-getを使ってGit, MySQL, Apache, Pythonのeasy&lt;i&gt;installをインストールしましょう。その後、easy&lt;/i&gt;installを使ってpipを、pipを使ってPythonの依存ライブラリをインストールします。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo apt-get update
$ sudo apt-get upgrade

# Install Git
$ sudo apt-get install -y git

# Install MySQL
$ sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

# Install Apache2
$ sudo apt-get install -y apache2 libapache2-mod-wsgi

# Install Python libraries
$ sudo apt-get install -y python-setuptools
$ sudo easy&amp;#95;install pip
$ sudo pip install Flask SQLAlchemy MySQL-python PIL configobj
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;2.&amp;#95;davdav用のユーザの作成&quot;&gt;&lt;/a&gt;2. Davdav用のユーザの作成&lt;/h3&gt;&lt;p&gt;Davdavを動かす用のユーザを作成しましょう。 また、サムネイル画像保存用のディレクトリをここで作成しておきます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo adduser davdav
$ sudo -H -u davdav mkdir /home/davdav/thumbnail
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;3.&amp;#95;davdavのダウンロード&quot;&gt;&lt;/a&gt;3. Davdavのダウンロード&lt;/h3&gt;&lt;p&gt;DavdavをGitHubからダウンロードします。 アップデートのしやすさを考えると、Gitでcloneしたほうが良いと思います。&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo -H -u davdav git clone https://github.com/xcoo/davdav.git /home/davdav/davdav&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;4.&amp;#95;mysqlのセットアップ&quot;&gt;&lt;/a&gt;4. MySQLのセットアップ&lt;/h3&gt;&lt;p&gt;MySQLにDavdavのデータベースを作成します。 sqlファイルを流し込んでデータベース作成しましょう。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ cd /home/davdav/davdav
$ mysql -u root -p &amp;lt; db/davdav.sql
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;5.&amp;#95;davdavの設定&quot;&gt;&lt;/a&gt;5. Davdavの設定&lt;/h3&gt;&lt;p&gt;テンプレートをコピーして、設定ファイルを作成します。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo -u davdav cp config/davdav.ini.example config/davdav.ini
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;作成した&lt;code&gt;davdav.ini&lt;/code&gt;を編集して、DB&lt;i&gt;URI, WEBDAV&lt;/i&gt;ROOT&lt;i&gt;URL, THUMB&lt;/i&gt;ROOT&lt;i&gt;URL, WEBDAV&lt;/i&gt;DIRの値を環境に合わせて書き変えましょう。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DB&lt;i&gt;URI&lt;/strong&gt;のuser, passwordは、先ほど作成したMySQLデータベースに接続できるユーザ名とパスワードにしてください。&lt;strong&gt;WEBDAV&lt;/i&gt;ROOT&lt;i&gt;URL&lt;/strong&gt;は、Upupuのアップロード先にしているWebDAVのURLです。&lt;strong&gt;THUMB&lt;/i&gt;ROOT&lt;i&gt;URL&lt;/strong&gt;は、サムネイル画像を見られるURLです。&lt;strong&gt;WEBDAV&lt;/i&gt;DIR&lt;/strong&gt;には、Ubuntu内でのWebDAVディレクトリのパスを指定します。&lt;/p&gt;&lt;p&gt;ここでは、Davdavを表示するドメインは&lt;code&gt;davdav.example.com&lt;/code&gt;と仮にしています。実際に使うドメインに書きかえてください。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;DEBUG=False
TESTING=False

DB&amp;#95;URI='mysql://user:password@localhost/davdav?charset=utf8'

WEBDAV&amp;#95;ROOT&amp;#95;URL='http://webdav.example.com/'
THUMB&amp;#95;ROOT&amp;#95;URL='http://davdav.example.com/thumbnail'

WEBDAV&amp;#95;DIR='/var/www/webdav'
THUMB&amp;#95;DIR='/home/davdav/thumbnail'

NUM&amp;#95;BY&amp;#95;PAGE=10

FOOTER&amp;#95;ENABLE=True

AUTH&amp;#95;ENABLE=False
AUTH&amp;#95;USERNAME='username'
AUTH&amp;#95;PASSWORD='password'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;それ以外の設定は、1ページ毎の表示日数やフッターの有無などですが、後でも編集可能なのでここではデフォルトにしておきます。&lt;/p&gt;&lt;p&gt;※Pythonの実行環境としてvirtualenvを使用する場合、&lt;code&gt;config/virtualenv.ini&lt;/code&gt;の設定も必要となります。それについては&lt;a href=&quot;https://github.com/xcoo/davdav#5-setup-configuration&quot; target=&quot;_blank&quot;&gt;こちらのREADME&lt;/a&gt;を見てください。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;6.&amp;#95;crontabの設定&quot;&gt;&lt;/a&gt;6. crontabの設定&lt;/h3&gt;&lt;p&gt;cronを使って、定期的に新規画像をチェックし、サムネイル画像を生成するようにします。 ここでは、5分毎にチェックするようにしています。&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo -H -u davdav crontab -e &lt;em&gt;/5 &lt;/em&gt; &lt;em&gt; &lt;/em&gt; * python /home/davdav/davdav/tool/cron.py&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;生成されたサムネイル画像は&lt;code&gt;/home/davdav/thumbnail&lt;/code&gt;以下に、サムネイルと実画像との対応付け情報はMySQLに保存されます。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;7.&amp;#95;apacheの設定&quot;&gt;&lt;/a&gt;7. Apacheの設定&lt;/h3&gt;&lt;p&gt;WSGIを使ってDavdavを動かせるように、Apacheの設定を書きます。&lt;/p&gt;&lt;p&gt;ここでは、VirtualHostを使って&lt;code&gt;davdav.example.com&lt;/code&gt;に接続したときに動作するようにしています。サムネイル画像もこのドメインから見られるように、Aliasを設定しています。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;apache&quot;&gt;&amp;lt;VirtualHost &amp;#42;:80&amp;gt;
    ServerName davdav.example.com

    WSGIScriptAlias / /home/davdav/davdav/app/davdav.wsgi
    WSGIDaemonProcess davdav user=www-data group=www-data processes=5 threads=10 home=/home/davdav/davdav/app python-path=/home/davdav/davdav/app
    WSGIProcessGroup davdav
    WSGIPassAuthorization On

    Alias /thumbnail /home/davdav/thumbnail
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最後に、Apacheをリスタートして完了です。&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo service apache2 restart&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;ウェブブラウザで&lt;code&gt;http://davdav.example.com&lt;/code&gt;を開いて、実際に動くことを確認してください。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 25 Dec 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-12-19-install-openni2-windows/
</guid>
<link>
https://blog.totakke.net/posts/2012-12-19-install-openni2-windows/
</link>
<title>
OpenNI2をWindowsにインストール
</title>
<description>
&lt;p&gt;&lt;a href=&quot;http://www.openni.org/&quot; title=&quot;OpenNI&quot; target=&quot;_blank&quot;&gt;OpenNI2 (Beta版)&lt;/a&gt; が公開されたようです。 インストールがとても簡単になっていますので、ご紹介します。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;インストール&quot;&gt;&lt;/a&gt;1. インストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.openni.org/openni-sdk/&quot; target=&quot;_blank&quot;&gt;OpenNI SDKのページ&lt;/a&gt;から、OSに合わせて、&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;32bitなら、OpenNI 2.0.0 Beta (Win32)&lt;/li&gt; &lt;li&gt;64bitなら、OpenNI 2.0.0 Beta (Win64)&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;をクリックしてダウンロード、解凍してください。&lt;/p&gt;&lt;p&gt;解凍されたフォルダ内の、&lt;code&gt;OpenNI-Windows-x&amp;#42;&amp;#42;-2.0.0.msi&lt;/code&gt;を実行します。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/openni2-install-window.jpg&quot; alt=&quot;&quot; title=&quot;openni2-install-window&quot; /&gt;&lt;/p&gt;&lt;p&gt;後は、指示に従って進めるだけでインストールが完了します。&lt;/p&gt;&lt;p&gt;Xtion PRO LIVEに関しては、今回はドライバをインストールする必要もありません。Kinect for XBOX, Kinect for Windowsは、&lt;a href=&quot;http://www.microsoft.com/en-us/kinectforwindows/&quot; title=&quot;Kinect for Windows SDK&quot; target=&quot;_blank&quot;&gt;Kinect for Windows SDK&lt;/a&gt;をインストールしていれば、そちらのドライバで動作します。&lt;/p&gt;&lt;p&gt;これまではドライバの衝突により、Xtionを使いたいときはPrimeSense公式、Kinectを使いたいときは&lt;a href=&quot;https://github.com/avin2/SensorKinect&quot; title=&quot;SensorKinect&quot; target=&quot;_blank&quot;&gt;SensorKinect&lt;/a&gt;と、いちいちドライバを入れかえないといけませんでしたが、その必要はなくなりました。OpenNI2とKinect for Windows SDKをインストールしておけば、上記3つを全て動かすことができます。 また、これまでのOpenNIでは64bit版の挙動が怪しく、Windows 64bitでも32bit版をインストールしておいたほうが安全でしたが、OpenNI2では特に問題なさそうです。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;動作確認&quot;&gt;&lt;/a&gt;2. 動作確認&lt;/h2&gt;&lt;p&gt;Xtion PRO LIVEやKinectなどのデバイスをPCに接続して、動作確認してみましょう。&lt;/p&gt;&lt;p&gt;「スタート」→「すべてのプログラム」→「OpenNI2 **-bit」→「NiViewer」 を起動してください。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/openni2-start-niviewer.jpg&quot; alt=&quot;&quot; title=&quot;openni2-start-niviewer&quot; /&gt;&lt;/p&gt;&lt;p&gt;プログラムは以前までのNiViewerと同じです。RGB画像やDepth画像が正しく表示されることを確認してください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;サンプル&quot;&gt;&lt;/a&gt;3. サンプル&lt;/h2&gt;&lt;p&gt;サンプルプログラムは、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;C:¥Program Files¥OpenNI2¥Samples
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;にあります。&lt;/p&gt;&lt;p&gt;&lt;code&gt;Bin&lt;/code&gt;フォルダ以下には各サンプルの実行ファイルがあるので、実行してみていろいろ遊んでみましょう。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 19 Dec 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-12-18-mac-os-x-app-retina-support/
</guid>
<link>
https://blog.totakke.net/posts/2012-12-18-mac-os-x-app-retina-support/
</link>
<title>
Mac OS Xアプリを自分でRetinaディスプレイに対応させる
</title>
<description>
&lt;p&gt;&lt;img src=&quot;/img/mac-retina-prv.png&quot; alt=&quot;&quot; title=&quot;mac-retina-prv&quot; width=&quot;640&quot; height=&quot;300&quot; class=&quot;alignnone size-full wp-image-996&quot; /&gt;&lt;/p&gt;&lt;p&gt;MBP Retinaモデルでは、Retinaディスプレイに対応していないアプリは文字がぼやけて表示されてしまいます。ここでは、自分でRetinaに対応させる方法を紹介します。&lt;/p&gt;&lt;p&gt;方法はとても簡単で、基本的には&lt;code&gt;Info.plist&lt;/code&gt;に、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSHighResolutionCapable&amp;lt;/key&amp;gt;
&amp;lt;true/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を書き足すだけです。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;info.plistの書き変え&quot;&gt;&lt;/a&gt;Info.plistの書き変え&lt;/h2&gt;&lt;p&gt;対象のアプリ（ここではHoge.appとしておきます）を右クリックし、Show Package Contentsを選択します。 その中の&lt;code&gt;Contents/Info.plist&lt;/code&gt;を適当なテキストエディタで開きます。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;
&amp;lt;dict&amp;gt;
    ...
    &amp;lt;key&amp;gt;NSHighResolutionCapable&amp;lt;/key&amp;gt;
    &amp;lt;true/&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のように、追記して保存します。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;有効化&quot;&gt;&lt;/a&gt;有効化&lt;/h2&gt;&lt;p&gt;まだこの段階では有効になりません。&lt;/p&gt;&lt;p&gt;Hoge.appをコピー＆ペーストして「Hoge.appのコピー」を作ります。そして、元のHoge.appを消去し、「Hoge.appのコピー」をリネームしてHoge.appにします。こうすることで設定が有効になります。&lt;/p&gt;&lt;p&gt;また、ログアウト＆ログインでも有効になります。&lt;/p&gt;&lt;p&gt;アプリのInfoを開いて、以下の画像のように「Open in Low Resolution」が選択可能だったら有効になっています。Retinaに対応していない場合は、これが選択不可能になっています。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/mac-retina-info.png&quot; alt=&quot;&quot; title=&quot;mac-retina-info&quot; width=&quot;528&quot; height=&quot;204&quot; class=&quot;alignnone size-full wp-image-998&quot; /&gt;&lt;/p&gt;&lt;p&gt;これでRetinaディスプレイ対応になりました。使っているアプリで開発が止まっているものなどは、このようにして自分でRetina対応させることができます。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 18 Dec 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-11-08-use-xtion-usb-3-0/
</guid>
<link>
https://blog.totakke.net/posts/2012-11-08-use-xtion-usb-3-0/
</link>
<title>
XtionをUSB 3.0で使うには
</title>
<description>
&lt;p&gt;&lt;img src=&quot;/img/xtion-live-pro.jpg&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;Xtion PRO LIVEをUSB 3.0ポートで使おうとしたら、デバイスマネージャ上でエラーが出てしまい使えませんでした。&lt;/p&gt;&lt;p&gt;その解決方法についてのメモです。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;ファームウェアを更新する&quot;&gt;&lt;/a&gt;ファームウェアを更新する&lt;/h2&gt;&lt;p&gt;なにはともあれ、まずはファームウェアを最新のものにしておきましょう。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.openni.org/Downloads/OpenNIModules.aspx&quot;&gt;OpenNIのダウンロードページ&lt;/a&gt;から、&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;OpenNI Compliant Hardware Binaries&lt;/li&gt; &lt;li&gt;Stable&lt;/li&gt; &lt;li&gt;Asus Xtion Firmware Upgrade Tool V1.06&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;として、ファームウェア更新ツールをインストールします。&lt;/p&gt;&lt;p&gt;Xtionを正しく認識できるポート（USB 2.0のポート）に接続して、ファームウェア更新ツールを起動し、ファームウェアを最新にします。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;asus&amp;#95;xtion&amp;#95;usb&amp;#95;3.0&amp;#95;hotfix&quot;&gt;&lt;/a&gt;ASUS Xtion USB 3.0 Hotfix&lt;/h2&gt;&lt;p&gt;私の環境では、ファームウェアアップデートだけでは治りませんでした。 &lt;a href=&quot;http://reconstructme.net/2012/10/13/asus-xtion-usb-3-0-hotfix/&quot;&gt;こちらの記事&lt;/a&gt;に修正ツールがあるので、次にこれを使ってみます。&lt;/p&gt;&lt;p&gt;記事中央の&lt;a href=&quot;http://reconstructme.net/?wpdmact=process&amp;amp;did=NjMuaG90bGluaw==&quot;&gt;ダウンロードリンク&lt;/a&gt;から修正ツールをダウンロードし、どこかに展開します。&lt;/p&gt;&lt;p&gt;Xtionを正しく認識できるポート（USB 2.0のポート）に接続して、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;FW579-RD1081-112v2/!Update-RD108x!.bat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を起動します。&lt;/p&gt;&lt;p&gt;プロンプトが立ち上がり、修正が行われ、最後に何かキーを叩いて閉じれば完了です。&lt;/p&gt;&lt;p&gt;これで、XtionをUSB 3.0のポートで使用できるようになりました。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 08 Nov 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-07-04-js-nanosec/
</guid>
<link>
https://blog.totakke.net/posts/2012-07-04-js-nanosec/
</link>
<title>
JavaScript上でナノ秒を計測する
</title>
<description>
&lt;p&gt;JavaScript上でナノ秒（nanoseconds）を計測する方法のメモ。&lt;/p&gt;&lt;p&gt;JavaScriptのパフォーマンスを測りたいときなど、普通はDateオブジェクトを使います。&lt;/p&gt;&lt;p&gt;現在時刻のミリ秒は、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;js&quot;&gt;var now = new Date&amp;#40;&amp;#41;;
console.log&amp;#40;now.getTime&amp;#40;&amp;#41;&amp;#41;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とすれば出力できます。&lt;/p&gt;&lt;p&gt;しかし、これで得られる値はミリ秒（milliseconds）です。&lt;/p&gt;&lt;p&gt;JavaScript単体では、もっと細かい値（マイクロ秒やナノ秒）を計測できないですが、Java appletを併用すればナノ秒を得ることができます。&lt;/p&gt;&lt;p&gt;次のような簡単なJavaのコードを書いてコンパイルし、&lt;a href=&quot;https://raw.github.com/totakke/js-nanosec-sample/master/Nano.jar&quot;&gt;Nano.jar&lt;/a&gt;とまとめておきます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;public class Nano extends java.applet.Applet {
    public long nanoTime&amp;#40;&amp;#41; {
        return System.nanoTime&amp;#40;&amp;#41;;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;そして、使いたいページのHTMLファイルに、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;...
&amp;lt;applet code=&amp;quot;Nano&amp;quot; archive=&amp;quot;Nano.jar&amp;quot; name=&amp;quot;nano&amp;quot; mayscript=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/applet&amp;gt;;
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のように貼り付けます。&lt;/p&gt;&lt;p&gt;JavaScriptからJava appletを呼び出すのにname属性を指定しておく必要があります。&lt;/p&gt;&lt;p&gt;後は、JavaScript上で&lt;code&gt;Nano.nanoTime&amp;#40;&amp;#41;&lt;/code&gt;という関数を呼び出せばナノ秒を取得できます。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;js&quot;&gt;var now = document.nano.nanoTime&amp;#40;&amp;#41;;
console.log&amp;#40;now&amp;#41;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでおーけー。&lt;/p&gt;&lt;p&gt;なお、GitHubにサンプルが置いてあります。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/totakke/js-nanosec-sample&quot;&gt;https://github.com/totakke/js-nanosec-sample&lt;/a&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 04 Jul 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-05-15-install-openni-with-homebrew/
</guid>
<link>
https://blog.totakke.net/posts/2012-05-15-install-openni-with-homebrew/
</link>
<title>
OpenNIをHomebrewでインストール
</title>
<description>
&lt;p&gt;&lt;img src=&quot;/img/openni-formula.jpg&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;最近、研究や仕事に使っているMBPをMacportsからHomebrewに完全移行しました。&lt;/p&gt;&lt;p&gt;OpenNI一式のインストールはMacだとinstall.shを叩かないといけなくて（sudoがいるし）、/usrに入ってしまうので管理しにくいなと思っていたので、Homebrewでインストールできるようにしてみました。&lt;/p&gt;&lt;p&gt;GitHub(&lt;a href=&quot;https://github.com/totakke/homebrew-openni&quot; target=&quot;_blank&quot;&gt;https://github.com/totakke/homebrew-openni&lt;/a&gt;) に公開してあります。&lt;/p&gt;&lt;p&gt;関連ファイルは/usr/local以下にインストールされます。モジュールやライセンスの登録は手動でやらないといけないという点が少しめんどいですが、OpenNIのサイトからダウンロードして展開してinstall.sh叩いて…よりは楽かなと思います。&lt;/p&gt;&lt;p&gt;README.mdに使い方が書いてありますが、ここに日本語の使い方を書いていきます。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;準備&quot;&gt;&lt;/a&gt;1. 準備&lt;/h2&gt;&lt;p&gt;まず、必要なFormulaをダウンロードしてきます。 &lt;code&gt;brew tap&lt;/code&gt;コマンドを使います。 現在、OpenNI本体はhomebrew-scienceから提供されているので、そちらもtapします。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew tap homebrew/science
$ brew tap totakke/openni
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;インストール&quot;&gt;&lt;/a&gt;2. インストール&lt;/h2&gt;&lt;p&gt;さて、Homebrewを使ってインストールしましょう。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;2.1&amp;#95;openni&quot;&gt;&lt;/a&gt;2.1 OpenNI&lt;/h3&gt;&lt;p&gt;OpenNI。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew install openni
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;2.2&amp;#95;sensor/sensorkinect&quot;&gt;&lt;/a&gt;2.2 Sensor/SensorKinect&lt;/h3&gt;&lt;p&gt;Xtion PRO LIVEを使う場合。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew install sensor
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;もしくは、Kinectを使う場合。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew install sensor-kinect
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;2.3&amp;#95;nite&quot;&gt;&lt;/a&gt;2.3 NITE&lt;/h3&gt;&lt;p&gt;そして、NITEのインストール。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew install nite
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;&lt;a name=&quot;2.4&amp;#95;確認&quot;&gt;&lt;/a&gt;2.4 確認&lt;/h3&gt;&lt;p&gt;これでインストールできました。サンプルを実行して動くかどうか試してみましょう。&lt;/p&gt;&lt;p&gt;サンプルは、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;/usr/local/Cellar/openni/1.5.7.10/share/sample
/usr/local/Cellar/nite/1.5.2.21/share/sample
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に入っています。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ cd /usr/local/Cellar/openni/1.5.7.10/share/sample/Bin/x64-Release
$ ./Sample-NiSimpleViewer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようにして、サンプルが動くことを確認しましょう。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;アンインストール&quot;&gt;&lt;/a&gt;3. アンインストール&lt;/h2&gt;&lt;p&gt;Homebrewからアンインストール。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew uninstall nite
$ brew uninstall sensor &amp;#40;or $ brew uninstall sensor-kinect&amp;#41;
$ brew uninstall openni
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;綺麗さっぱりアンインストールするには、次のディレクトリも削除します。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ rm -rf /usr/local/var/lib/ni /usr/local/var/log/primesense/XnSensorServer /usr/local/etc/primesense
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;※インストールに失敗する場合&quot;&gt;&lt;/a&gt;※インストールに失敗する場合&lt;/h2&gt;&lt;p&gt;OpenNIのインストール時に失敗する場合は、既にインストールされている&lt;code&gt;libusb&lt;/code&gt;に&lt;code&gt;&amp;ndash;universal&lt;/code&gt;オプションが付いていない可能性があります。 一度&lt;code&gt;libusb&lt;/code&gt;をアンインストールしてから、再度OpenNIをインストールしてみてください。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ brew uninstall libusb
$ brew install openni
&lt;/code&gt;&lt;/pre&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 15 May 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-05-03-moinmoin-maint-cleancache/
</guid>
<link>
https://blog.totakke.net/posts/2012-05-03-moinmoin-maint-cleancache/
</link>
<title>
MoinMoinを移行するときはキャッシュをクリア
</title>
<description>
&lt;p&gt;Scientific Linux 6で動かしてたMoinMoinのwikiを、Ubuntu 12に移行したとき、設定は正しく行なっているはずなのにInternal Server Errorが出てしまった。&lt;/p&gt;&lt;p&gt;どうも、こういうときはMoinMoinのキャッシュをクリアすると直るらしい。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ moin --config-dir=&amp;#91;wiki dir&amp;#93; --wiki-url=&amp;#91;wiki URL&amp;#93; maint cleancache
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでおーけー。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 03 May 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-05-03-casmi-sample-project/
</guid>
<link>
https://blog.totakke.net/posts/2012-05-03-casmi-sample-project/
</link>
<title>
casmi - (2) サンプルプロジェクト
</title>
<description>
&lt;p&gt;今回は、前エントリ（&lt;a href=&quot;http://blog.totakke.net/blog/java/casmi/casmi-install.html&quot;&gt;casmi - (1) インストール&lt;/a&gt;）の最後に書いたサンプルプロジェクトについて、もうちょっと詳しく書いてみます。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://casmi.github.com/&quot; target=&quot;_blank&quot;&gt;casmi&lt;/a&gt;, Mavenはインストール済という前提です。&lt;/p&gt;&lt;p&gt;まだの方は&lt;a href=&quot;http://blog.totakke.net/blog/java/casmi/casmi-install.html&quot;&gt;前エントリ&lt;/a&gt;を参考にインストールしてください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;サンプルリポジトリのクローン&quot;&gt;&lt;/a&gt;1. サンプルリポジトリのクローン&lt;/h2&gt;&lt;p&gt;GitHubで公開されている&lt;a href=&quot;https://github.com/casmi/casmi-examples&quot; target=&quot;_blank&quot;&gt;casmiのサンプルリポジトリ&lt;/a&gt;をクローンします。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ git clone https://github.com/casmi/casmi-examples.git
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;eclipseにインポート&quot;&gt;&lt;/a&gt;2. Eclipseにインポート&lt;/h2&gt;&lt;p&gt;Eclipseを起動して、&lt;/p&gt;&lt;p&gt;[File] -&gt; [Import...] -&gt; [Maven] -&gt; [Existing Maven Projects]&lt;/p&gt;&lt;p&gt;Root Directoryに、先ほどクローンした casmi-examplesディレクトリ を入れて[Finish]。&lt;/p&gt;&lt;p&gt;Mavenがきちんとセットアップされていれば、これだけでcasmiと依存ライブラリが自動的にダウンロードされます。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;サンプルの内容&quot;&gt;&lt;/a&gt;3. サンプルの内容&lt;/h2&gt;&lt;p&gt;src/main/java以下にパッケージで分けられて大量のサンプルが置いてあり、それぞれ実行できます。これらのサンプルのソースを見ながら動かしてみれば、大体casmiの使い方が分かります。ここで、各サンプルコードが何のサンプルなのか、簡単にリストアップしてみます。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;casmi&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;CursorExample.java&lt;/strong&gt;: カーソルを制御するサンプル。中央の円にカーソルを当てるとカーソルアイコンが変わる。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FullScreenExample.java&lt;/strong&gt;: フルスクリーンで表示するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;KeyboardExample.java&lt;/strong&gt;: メモ帳のような画面が表示され、キーボードでメッセージを書ける。エンターキーで改行も可。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;KeyboardSimpleExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MouseExample.java&lt;/strong&gt;: マウスの位置取得サンプル。三角形の1頂点がマウスに追従する。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MouseWheelExample.java&lt;/strong&gt;: マウスホイールを動かすと、四角形のオブジェクトが上下に動きます。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RecordExample.java&lt;/strong&gt;: 動画キャプチャのサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ScreenshotExample.java&lt;/strong&gt;: スクリーンショットのサンプル。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.extension.coni&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;KinectやXtionといった流行りのレンジセンサを扱えるパッケージ。CONIはCasmi OpenNIの略。使うにはOpenNI/NITEのインストールと、JNIライブラリのパスを通す必要がある。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;HandControlExample.java&lt;/strong&gt;: ハンドトラッキングを使って写真を切り替える。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HandExample.java&lt;/strong&gt;: ハンドトラッキングのサンプル。センサの前に立ち、手をプッシュ（突き出して→引く）か、ウェーブ（左右に振る）とトラッキングが開始される。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;IRExample.java&lt;/strong&gt;: センサのIR画像を取得・表示するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RecorderExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SimpleViewerExample.java&lt;/strong&gt;: RGB画像と距離画像を取得・表示するシンプルなサンプル。クリックするとRGB画像と距離画像を切り替えられる。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;UserTrackerExample.java&lt;/strong&gt;: ユーザトラッキングとスケルトントラッキングのサンプル。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.extension.cpop&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;CPopExample.java&lt;/strong&gt;: casmiで右クリックのポップアップメニューを制御するサンプル。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.extension.trackball&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TrackballExample.java&lt;/strong&gt;: オブジェクトの直感的な回転操作を行うサンプル。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;casmiの描画処理の基本サンプル群。casmiでは様々なエレメントを生成、追加することで簡単に描画できる。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;AlphaExample.java&lt;/strong&gt;: オブジェクトの透過サンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ArcExample.java&lt;/strong&gt;: 扇形オブジェクトの表示サンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;BackGroundColorExample.java&lt;/strong&gt;: 背景をデフォルト（黒色）以外の色に変更するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;BezierExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;BoxExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;BoxTextureExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;CameraExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;CircleExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ConeExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;CurveExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;EllipseExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ImageModeExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LightExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LineExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LinesExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MaskExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MaterialExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;PointExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;PolygonExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;QuadExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;QuadTextureExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RectExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RotateExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RoundrectExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SphereExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SphereTextureExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TextBoxExample.java&lt;/strong&gt;: テキストボックスのサンプル。上から左揃え・中央揃え・右揃え。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TextExample.java&lt;/strong&gt;: シンプルなテキストを表示するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TextExample2.java&lt;/strong&gt;: 長いテキストや、回転させてテキストを表示するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TextureExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TextureMaskExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TriangleExamle.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.color&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ColorSetExample.java&lt;/strong&gt;: 予め定義されたwebカラーから色を選択するサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GrayColorExample.java&lt;/strong&gt;: GrayColorクラスのサンプル。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LerpColorExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.font&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;FontExample.java&lt;/strong&gt;: アクセス可能なフォントを表示するサンプル。スクロールできる。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.gradation&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;GradationBezierExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GradationExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.group&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;GroupExample.java&lt;/strong&gt;: 複数のエレメントをまとめてグループエレメントとして扱うことができる。このサンプルでは、Group1.javaがグループとなっている。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.mouseover&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;MouseOverColorSetExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MouseOverExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MouseOverGroupExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MouseOverTextExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.graphics.object&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ObjectExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.net&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;HTTPExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.parser&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;casmiにはCSV, JSON, XMLのパーサーがデフォルトで含まれている。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;CSVExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;JSONExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;XMLExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.sql&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ruby on RailsのActiveRecordのようなO/Rマッピングをしてデータベースにアクセスできる。MySQLとSQLite3に対応。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;MySQLExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SQLiteExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.timeline&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;複数のシーンを作成しておき、スライドショーのように切り替える。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TimelineExample.java&lt;/strong&gt;: Scene0.java〜Scene3.javaで4つのシーンを定義。それらが順に切り替わる。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.tween&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;FlashのTweenのような滑らかなアニメーションを行う。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TweenCursorExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenEquationsExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenGroupRepeatExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenParallelExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenRepeatExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenSimpleExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TweenVertexExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;casmi.util&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;NoiseExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RandomExample.java&lt;/strong&gt;:&lt;/li&gt;&lt;/ul&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 03 May 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-04-30-ubuntu-x64-dice/
</guid>
<link>
https://blog.totakke.net/posts/2012-04-30-ubuntu-x64-dice/
</link>
<title>
Ubuntu (64bit) でDiCE動かすときのメモ
</title>
<description>
&lt;p&gt;Ubuntu (v.12.04, 64bit) で&lt;a href=&quot;http://www.hi-ho.ne.jp/yoshihiro&lt;i&gt;e/dice/linux.html&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;DiCE for Linux&lt;/a&gt; (v.0.19) をセットアップするときに引っかかったのでメモ。&lt;/p&gt;&lt;p&gt;DiCEを動かすにはlibssl.soとlibcrypto.soが必要となる場合がある（DDNSサービスに依る。今回はお名前.com）。&lt;/p&gt;&lt;p&gt;/usr/lib以下にlibssl.so.0, libcrypto.so.0としてシンボリックリンクを貼れば良いが、これが32bitのライブラリでないと動かない。&lt;/p&gt;&lt;p&gt;つまり64bitのサーバの場合、32bit用ライブラリを自分で入れないといけない。&lt;/p&gt;&lt;p&gt;こういうとき、&lt;strong&gt;getlibs&lt;/strong&gt;というのが便利らしい。&lt;/p&gt;&lt;p&gt;元のダウンロードサイトは今は閉じてしまっているが、&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://launchpad.net/~jcollins/+archive/jaminppa&quot; target=&quot;_blank&quot;&gt;https://launchpad.net/~jcollins/+archive/jaminppa&lt;/a&gt;&lt;/p&gt;&lt;p&gt;からダウンロードできる。&lt;/p&gt;&lt;p&gt;まず、getlibsのインストール。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo wget https://launchpad.net/&amp;#126;jcollins/+archive/jaminppa/+files/getlibs\&amp;#95;2.06-0ubuntu1&amp;#126;ppa2\&amp;#95;all.deb -O getlibs-all.deb
$ sudo dpkg -i getlibs-all.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;次に、ライブラリを入れる。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ getlibs -l libssl.so.0.9.8
$ getlibs -l libcrypto.so.0.9.8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで/usr/lib32/i386-linux-gnu以下にライブラリが入る。&lt;/p&gt;&lt;p&gt;/usr/libにシンボリックリンクを貼る。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo ln -s /usr/lib32/i386-linux-gnu/libssl.so.0.9.8 /usr/lib/libssl.so.0
$ sudo ln -s /usr/lib32/i386-linux-gnu/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでおーけー。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Mon, 30 Apr 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-03-28-casmi-install/
</guid>
<link>
https://blog.totakke.net/posts/2012-03-28-casmi-install/
</link>
<title>
casmi - (1) インストール
</title>
<description>
&lt;p&gt;今回は、&lt;a href=&quot;http://xcoo.jp/&quot; target=&quot;&lt;i&gt;blank&quot;&gt;Xcoo&lt;/a&gt;という会社からオープンソースで公開されている、可視化のためのJavaライブラリ「&lt;a href=&quot;http://casmi.github.com/&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;casmi&lt;/a&gt;」のインストール方法を書きます。&lt;/p&gt;&lt;p&gt;casmiの概要については先のエントリ「&lt;a href=&quot;/java/casmi/introduction.html&quot;&gt;casmi: 2D/3D可視化システムのためのオープンソースJavaライブラリ&lt;/a&gt;」に書いてあります。&lt;/p&gt;&lt;p&gt;なお、開発に便利なEclipse+Mavenを用います。&lt;/p&gt;&lt;p&gt;JDK (1.6以上), Eclipseはインストール済みという前提で進めていきます。casmi本体やサンプルプロジェクトはgithubで管理されているため、gitもインストールされていることが望ましいです。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;mavenのインストール&quot;&gt;&lt;/a&gt;1. Mavenのインストール&lt;/h2&gt;&lt;h3&gt;&lt;a name=&quot;mac&amp;#95;os&amp;#95;xの場合&quot;&gt;&lt;/a&gt;Mac OS Xの場合&lt;/h3&gt;&lt;p&gt;Mac OS Xには初めからMavenがインストールされているようです。&lt;/p&gt;&lt;p&gt;ターミナルから、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ mvn --version
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と実行して、きちんと表示されていれば大丈夫です。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;windowsの場合&quot;&gt;&lt;/a&gt;Windowsの場合&lt;/h3&gt;&lt;p&gt;&lt;ol&gt; &lt;li&gt;&lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;&lt;i&gt;blank&quot;&gt;Apache Maven Projectのページ&lt;/a&gt;の&lt;a href=&quot;http://maven.apache.org/download.html&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;download&lt;/a&gt;から、最新のMaven（執筆時点ではapache-maven-3.0.4.zip）をダウンロードしてください。&lt;/li&gt; &lt;li&gt;ダウンロードしたファイルを解凍し、できたapache-maven-3.0.xというディレクトリを、&lt;code&gt;C:\Program Files\&lt;/code&gt;以下に移動させます。&lt;/li&gt; &lt;li&gt;システム環境変数のPATHに、&lt;code&gt;C:\Program Files\apache-maven-3.0.x\bin&lt;/code&gt;を追加します。&lt;/li&gt; &lt;li&gt;システム環境変数にJAVA_HOMEがあるかどうかを確認してください。もしない場合は新規作成し、JDKのbinディレクトリのパスを入れておきましょう&lt;/li&gt; &lt;li&gt;システム環境変数の変更を行ったら一度再起動させます。&lt;/li&gt; &lt;li&gt;コマンドプロンプトを開いて、&lt;code&gt;$ mvn &amp;ndash;version&lt;/code&gt;と実行して、きちんと表示されていれば大丈夫です。&lt;/li&gt; &lt;/ol&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;ｍ2eclipseプラグインのインストール&quot;&gt;&lt;/a&gt;2. ｍ2eclipseプラグインのインストール&lt;/h2&gt;&lt;p&gt;EclipseでMavenプロジェクトを扱う場合、&lt;a href=&quot;http://eclipse.org/m2e/&quot; target=&quot;_blank&quot;&gt;m2eclipse&lt;/a&gt;というプラグインがとても便利なのでインストールしておきましょう。&lt;/p&gt;&lt;p&gt;Eclipse indigo (3.7) であれば、マーケットからインストールできると思います。&lt;/p&gt;&lt;p&gt;Eclipse Marketplaceから「maven」で検索すると、「&lt;strong&gt;Maven Integration for Eclipse&lt;/strong&gt;」というプラグインが出てくるのでそれをインストールしてください。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-23.06.53-.png&quot; alt=&quot;Screenshot of Eclipse Marketplace&quot; /&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;casmiプロジェクトの作成&quot;&gt;&lt;/a&gt;3. casmiプロジェクトの作成&lt;/h2&gt;&lt;p&gt;それでは、Eclipse上にcasmi用のプロジェクトを作成してみましょう。&lt;/p&gt;&lt;p&gt;Mavenのarchetypeを用いると、casmiのEclipse用テンプレートプロジェクトを簡単に作成することができます。&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;3.1&amp;#95;archetypeカタログの設定&quot;&gt;&lt;/a&gt;3.1 archetypeカタログの設定&lt;/h3&gt;&lt;p&gt;まず、m2eclipseにcasmiのarchetypeカタログを設定しておきます。&lt;/p&gt;&lt;p&gt;「設定」→「Maven」→「Archetypes」→「Add Remote Catalog...」と進みます。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-19.16.37-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;下画像のように、「Catalog File」欄に、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http://casmi.github.com/maven-repo/archetype-catalog.xml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と入力して、説明には適当な名前を設定して、OKしてください。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-19.17.13-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;h3&gt;&lt;a name=&quot;3.2&amp;#95;casmiプロジェクトの作成&quot;&gt;&lt;/a&gt;3.2 casmiプロジェクトの作成&lt;/h3&gt;&lt;p&gt;「新規プロジェクト」から「Maven Project」を選択します。&lt;/p&gt;&lt;p&gt;「Create a simple project (skip archetype selection)」のチェックは外しておき、次へ進みます。&lt;/p&gt;&lt;p&gt;Archetypeの選択画面になるので、「Catalog」のダイアログボックスから、先ほど設定したcasmiのarchetypeカタログを選択します。Version &lt;strong&gt;0.3.2&lt;/strong&gt;のarchetypeを選択し、次へ進みます。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-19.20.06-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;その後は、好きなGroupIDやArtifact IDを付けて進めていくと、Mavenプロジェクトが生成されます。下画像のようなプロジェクトが自動生成されれば成功です。これがcasmiプロジェクトの基本形となります。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-19.39.09-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;Java ApplicationとしてRun（実行）させてみると、真っ暗で小さなウィンドウが1つ表示されることを確認してみてください。ウィンドウ名は「title」となっているはずです。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-19.47.47-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;4.&amp;#95;簡単な図形を描いてみよう&quot;&gt;&lt;/a&gt;4. 簡単な図形を描いてみよう&lt;/h2&gt;&lt;p&gt;作成した新規casmiプロジェクトを使って、簡単な図形を表示するプログラムを書いてみます。&lt;/p&gt;&lt;p&gt;プロジェクトのsrc/main/[name]/App.java内の&lt;code&gt;setup&amp;#40;&amp;#41;&lt;/code&gt;関数に、以下のコードをコピーしてください。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;@Override
public void setup&amp;#40;&amp;#41; {
    setSize&amp;#40;800, 600&amp;#41;;

    Line line = new Line&amp;#40;100, 150, 200, 450&amp;#41;;
    line.setStrokeColor&amp;#40;new RGBColor&amp;#40;1.0, 0.0, 0.0&amp;#41;&amp;#41;;
    addObject&amp;#40;line&amp;#41;;

    RoundRect roundRect = new RoundRect&amp;#40;25, 400, 300, 200, 150&amp;#41;;
    roundRect.setFillColor&amp;#40;new RGBColor&amp;#40;0.0, 0.5, 0.0&amp;#41;&amp;#41;;
    roundRect.setStrokeColor&amp;#40;new RGBColor&amp;#40;0.0, 1.0, 0.0&amp;#41;&amp;#41;;
    addObject&amp;#40;roundRect&amp;#41;;

    Circle circle = new Circle&amp;#40;50&amp;#41;;
    circle.setFillColor&amp;#40;new RGBColor&amp;#40;0.0, 0.0, 1.0&amp;#41;&amp;#41;;
    circle.setPosition&amp;#40;700, 300&amp;#41;;
    addObject&amp;#40;circle&amp;#41;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行してみると左から、赤色の線・緑色の角丸四角形・青色の円が表示されると思います。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/img/Screen-Shot-2012-03-28-at-20.01.17-.png&quot; alt=&quot;enter image description here&quot; /&gt;&lt;/p&gt;&lt;p&gt;casmiではこのように、各エレメント（線や円など）のオブジェクトを生成、色や位置などを設定し、addObjectすることで画面に表示します。他にも様々なエレメントがあり、それらを組み合わせることで非常に簡単にプログラムから絵を描画することができます。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;6.&amp;#95;サンプルコード&quot;&gt;&lt;/a&gt;6. サンプルコード&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/casmi/casmi-examples&quot; target=&quot;_blank&quot;&gt;https://github.com/casmi/casmi-examples&lt;/a&gt;に大量のサンプルコードの含まれたプロジェクトが置いてあります。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ git clone https://github.com/casmi/casmi-examples.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;としてcloneし、eclipseにインポートしてみてください。&lt;/p&gt;&lt;p&gt;大方の使い方はこのサンプルのソースコードを見ると分かると思います。&lt;h2&gt;&lt;/h2&gt;&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href=&quot;/java/casmi/introduction.html&quot;&gt;casmi: 2D/3D可視化システムのためのオープンソースJavaライブラリ&lt;/a&gt;へ&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;/java/casmi/casmi-sample-project.html&quot;&gt;casmi - (2) サンプルプロジェクト&lt;/a&gt;へ&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 28 Mar 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2012-01-23-nightlight-bell-ii/
</guid>
<link>
https://blog.totakke.net/posts/2012-01-23-nightlight-bell-ii/
</link>
<title>
Night/Light-bell II 〜夜光鈴を作ってみた〜
</title>
<description>
&lt;p&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://ext.nicovideo.jp/thumb_watch/sm16426730?w=490&amp;h=307&quot;&gt;&lt;/script&gt;&lt;noscript&gt;&lt;a href=&quot;http://www.nicovideo.jp/watch/sm16426730&quot;&gt;【ニコニコ動画】Night/Light-bell II: 夜光鈴を作ってみた&lt;/a&gt;&lt;/noscript&gt;&lt;/p&gt;&lt;p&gt;漫画ARIA（AQUA）に登場する、光る風鈴「夜光鈴」をリアルで作った「Night/Light-bell II」です。 風が吹くとぼうっと光る、綺麗で涼しげな風鈴となっています。&lt;/p&gt;&lt;p&gt;なぜ“II”なのかというと、昔Arduinoを使って初代を制作していたからです。 初代はArduino本体が大きかったため、風鈴の中に全て収めることができず、また制作費も5000円くらいかかっていました。 Night/Light-bell IIでは、マイコンを使わないシンプルなアナログ電子回路にし、ボタン電池まで全てプラスチックカプセルの中に収めるように改良しました。&lt;/p&gt;&lt;p&gt;ちなみにNight/Light-bell IIの実装詳細については、冬コミC81で販売された「&lt;a href=&quot;http://www3.kitanet.ne.jp/~narumin/anohitolab&lt;i&gt;2011w.htm&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;あの人の論文集 Vol.2 No.2&lt;/a&gt;」に、技術の無駄遣い論文として掲載されています。 他にも面白い論文がたくさん載っているので、もし機会があれば買ってみてください。&lt;/p&gt;&lt;p&gt;ところで、ARIAはボクが一番好きな漫画ですね。 研究とも仕事とも関係なく、趣味でこういったものを作るのはとても楽しいです。 好きな漫画・アニメ・映画・小説などに登場するものを現実化することは、多くの研究者やクリエイターのモチベーションになりうるなあ、って思ったりしますね。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Mon, 23 Jan 2012 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-12-02-casmi-introduction/
</guid>
<link>
https://blog.totakke.net/posts/2011-12-02-casmi-introduction/
</link>
<title>
casmi: 2D/3D可視化システムのためのオープンソースJavaライブラリ
</title>
<description>
&lt;p&gt;今回は「casmi」というJavaライブラリについて紹介してみます。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://casmi.github.com/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/Screen-shot-2011-12-02-at-18.13.55-.png&quot; alt=&quot;casmi logo&quot; title=&quot;casmi logo&quot; width=&quot;222&quot; height=&quot;57&quot; class=&quot;aligncenter size-full wp-image-486&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;casmi (&lt;a href=&quot;http://casmi.github.com/&quot; target=&quot;&lt;i&gt;blank&quot;&gt;http://casmi.github.com/&lt;/a&gt;)は、&lt;a href=&quot;http://www.xcoo.jp/&quot; target=&quot;&lt;/i&gt;blank&quot;&gt;Xcoo&lt;/a&gt;という会社で開発されているオープンソースのJavaライブラリです。ライセンスはLGPLで配布されています。私も一部開発に関わらせて頂いています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://casmi.github.com/&quot; target=&quot;_blank&quot;&gt;公式ページ&lt;/a&gt;によれば、 &lt;blockquote&gt; &lt;p&gt; casmi is an opensource free software using a Java based library with OpenGL that in use in production or development of 2D/3D visualization systems. It can support programmers with simple and intuitive interfaces for implementation. It can work on cross platform (GNU/Linux, Mac OS X, and Windows). casmi is suitable for visualization, because it is originally designed for information visualization, especially with huge data sets. &lt;hr&gt; &lt;p&gt; casmiは、2D/3D可視化システム開発のための、OpenGLを用いたJavaライブラリです。プログラマーに対して、シンプルで直感的な実装を可能とし、また、クロスプラットフォーム（Linux, Mac OS X, Windows）で動作します。特に大きなデータセットに対する情報可視化のために設計されています。 &lt;/blockquote&gt; となっています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://casmi.github.com/gallery/&quot; target=&quot;_blank&quot;&gt;公式ページのGallery&lt;/a&gt;に、以下のようなcasmiを使って作られた可視化アプリケーションが紹介されています。各アプリケーションはソースコードも公開されているため、実機で動かすことも可能です。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://casmi.github.com/gallery/nuclearPlantsMap/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/npm-300x213.jpg&quot; alt=&quot;&quot; title=&quot;npm&quot; width=&quot;300&quot; height=&quot;213&quot; class=&quot;aligncenter size-medium wp-image-489&quot; /&gt;&lt;/a&gt;&lt;p align=&quot;center&quot;&gt;nuclear plants map: 原子力発電所の可視化&lt;/p&gt;&lt;/p&gt;&lt;p&gt;casmiを分かりやすく言えば、&lt;a href=&quot;http://processing.org/&quot; target=&quot;_blank&quot;&gt;Processing&lt;/a&gt;の純粋Java版みたいなものと言えます。&lt;/p&gt;&lt;p&gt;Processingはその簡便さのために（中身はJavaですが）独自のエディタや書き方を用いています。 プログラミングにそんなに慣れていない人が小さな可視化プログラムやメディアアート的な表現を行うには適していますが、より高度な開発を行うのには向いていません。特に中身がJavaであるにも関わらず、大規模なオブジェクト指向プログラミングを行うのは辛いという側面があります。&lt;/p&gt;&lt;p&gt;casmiはシンプルなJavaライブラリとして実装されているため、eclipseやNetBeansといったIDEで普通に用いることができます。&lt;a href=&quot;http://processing.org/learning/eclipse/&quot; target=&quot;_blank&quot;&gt;Processingをeclipseで使う方法&lt;/a&gt;も存在しますが、やはり簡便さのために削られたオブジェクト指向性により、Javaに慣れ親しんだプログラマには書き辛くなっています。またcasmiは、デフォルトでJOGL (Java OpenGL) を用いているため、高速な描画処理を可能としています。 casmiは、Javaに慣れ親しんだプログラマが簡易にグラフィカルアプリケーションを制作する際には、Processingより有効なツールとして機能するはずです。&lt;/p&gt;&lt;p&gt;casmiのバージョンは現在v.0.0.4とまだベータ段階で、バグも多くあると考えられます。また、Processingには協力な外部ライブラリが多数存在しますが、casmiにはまだありません。 しかし、熟練したJavaプログラマであっても、より簡易かつ慣れた環境でグラフィカルアプリケーションを制作したいというニーズは存在するはずなので、casmiは今後有望なツールの一つとなりえると思います。&lt;/p&gt;&lt;p&gt;またXcooでは、「&lt;a href=&quot;http://www.xcoo.jp/#casmi&quot; target=&quot;_blank&quot;&gt;casmi solution&lt;/a&gt;」という、casmiを使った受託型の可視化ソリューションサービスを行なっています。可視化やデジタルサイネージ、インスタレーションなどを作りたいといった興味があれば、連絡を取ってみるといいかと思います。&lt;/p&gt;&lt;p&gt;本ブログでも、今後casmiについて、使用方法などをちょくちょく書いていけたらと思っています。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Fri, 02 Dec 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-11-16-seat-over-time/
</guid>
<link>
https://blog.totakke.net/posts/2011-11-16-seat-over-time/
</link>
<title>
「時をかけるシート」：デジタルレールウェイミュージアム
</title>
<description>
&lt;p&gt;現在、大宮にある鉄道博物館にて「&lt;a href=&quot;http://www.railway-museum.jp/event/index.html&quot; target=&quot;_blank&quot;&gt;時間旅行展&lt;/a&gt;」という企画展が開催されています。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;時間旅行展&lt;/strong&gt; 会期：2011年10月8日（土）～2012年1月9日（月・祝） 　　　（※火曜日、年末年始（12/29～1/1まで）休館） 会場：鉄道博物館 2階 スペシャルギャラリー1・2 料金：無料（入館料のみ） 　　　（※入館料：一般1,000円、小中高生500円、幼児（3歳以上未就学児）200円）&lt;/p&gt;&lt;p&gt;時間旅行展の一部として、東京大学主導とした研究の成果としての新たな展示手法を展示する「&lt;a href=&quot;http://www.railway-museum.jp/press/pdf/20111108HP.pdf&quot; target=&quot;_blank&quot;&gt;デジタルレールウェイミュージアム&lt;/a&gt;」を開催しています。 その中の展示の一つとして、&lt;a href=&quot;http://www.totakke.net/works/prima&quot; target=&quot;_blank&quot;&gt;PRIMA&lt;/a&gt;を利用した展示「時をかけるシート」を展示させて頂くことになりました。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/drm&amp;#95;flyer&amp;#95;f.jpg&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/drm&amp;#95;flyer&amp;#95;f.jpg&quot; alt=&quot;&quot; title=&quot;drm&lt;/i&gt;flyer_f&quot; width=&quot;300&quot; height=&quot;216&quot; class=&quot;aligncenter size-medium wp-image-445&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/drm&amp;#95;flyer&amp;#95;b.jpg&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/drm&amp;#95;flyer&amp;#95;b.jpg&quot; alt=&quot;&quot; title=&quot;drm&lt;/i&gt;flyer_b&quot; width=&quot;300&quot; height=&quot;215&quot; class=&quot;aligncenter size-medium wp-image-444&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本展示は、時間旅行展における未来の部分、最新の通勤電車シートを展示したものに付属させてあります。 シートに腰掛けると、数十秒前の「過去の自分」と「現在の自分」が同時にディスプレイに出現します。また、タッチパネルを用いてその様子、展示空間をあらゆる角度から眺めることができます。 異なる時間軸に生きる複数の自分が一緒にいる、不思議な感覚を体験してみてください。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/seatovertime&amp;#95;overview.jpg&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/seatovertime&amp;#95;overview.jpg&quot; alt=&quot;&quot; title=&quot;seatovertime&lt;/i&gt;overview&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-435&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/seatovertime&amp;#95;display.jpg&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/seatovertime&amp;#95;display.jpg&quot; alt=&quot;&quot; title=&quot;seatovertime&lt;/i&gt;display&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-434&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/seatovertime&amp;#95;kinect.jpg&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/seatovertime&amp;#95;kinect.jpg&quot; alt=&quot;&quot; title=&quot;seatovertime&lt;/i&gt;kinect&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-442&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;「時をかけるシート」の展示期間は、11月16〜21日、12月21〜26日の2回となっています。 もし時間がありましたら是非、デジタルレールウェイミュージアムにお越しください。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Wed, 16 Nov 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-10-28-starting-kinect-wiki/
</guid>
<link>
https://blog.totakke.net/posts/2011-10-28-starting-kinect-wiki/
</link>
<title>
Kinect-wikiはじめました
</title>
<description>
&lt;p&gt;&lt;a href=&quot;http://www.kinect-wiki.info/&quot; target=&quot;&lt;i&gt;blank&quot;&gt;&lt;img src=&quot;/img/kinect&amp;#95;wiki&amp;#95;logo.png&quot; alt=&quot;&quot; title=&quot;kinect&lt;/i&gt;wiki_logo&quot; width=&quot;300&quot; height=&quot;155&quot; class=&quot;aligncenter size-medium wp-image-389&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本ブログでもKinectを扱うライブラリとして、OpenNIやKinect for Windows SDK betaを紹介してきました。 これらの情報はネット上に既に多く上がっていますが、ブログ記事として上げられているものがほとんどで、まとまった情報として手に入れにくいと感じました。&lt;/p&gt;&lt;p&gt;また、Kinect本として以下のような素晴らしい日本語書籍が既に発売されています。&lt;/p&gt;&lt;p&gt;&lt;div align=&quot;center&quot;&gt; &lt;ul&gt; &lt;li style=&quot;display:inline;&quot;&gt; &lt;a href=&quot;http://www.amazon.co.jp/gp/product/4798029815/ref=as&lt;i&gt;li&lt;/i&gt;tf&lt;i&gt;il?ie=UTF8&amp;tag=totakke-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4798029815&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.jp/widgets/q?&lt;/i&gt;encoding=UTF8&amp;Format=&lt;i&gt;SL110&lt;/i&gt;&amp;ASIN=4798029815&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=totakke-22&amp;ServiceVersion=20070822&quot; &gt;&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=totakke-22&amp;l=as2&amp;o=9&amp;a=4798029815&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; &lt;/li&gt; &lt;li style=&quot;display:inline;&quot;&gt; &lt;a href=&quot;http://www.amazon.co.jp/gp/product/489977303X/ref=as&lt;i&gt;li&lt;/i&gt;tf&lt;i&gt;il?ie=UTF8&amp;tag=totakke-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=489977303X&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.jp/widgets/q?&lt;/i&gt;encoding=UTF8&amp;Format=&lt;i&gt;SL110&lt;/i&gt;&amp;ASIN=489977303X&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=totakke-22&amp;ServiceVersion=20070822&quot; &gt;&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=totakke-22&amp;l=as2&amp;o=9&amp;a=489977303X&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; &lt;/li&gt; &lt;li style=&quot;display:inline;&quot;&gt; &lt;a href=&quot;http://www.amazon.co.jp/gp/product/4877832726/ref=as&lt;i&gt;li&lt;/i&gt;tf&lt;i&gt;il?ie=UTF8&amp;tag=totakke-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4877832726&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.jp/widgets/q?&lt;/i&gt;encoding=UTF8&amp;Format=&lt;i&gt;SL110&lt;/i&gt;&amp;ASIN=4877832726&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=totakke-22&amp;ServiceVersion=20070822&quot; &gt;&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=totakke-22&amp;l=as2&amp;o=9&amp;a=4877832726&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt;&lt;/p&gt;&lt;p&gt;しかしこれらの本はいずれもKinect開発の基本的な部分を丁寧に説明されていて、Kinectから取得したデータを使ってその先に何を作るか、という応用はあまり書かれていません。&lt;/p&gt;&lt;p&gt;そこで、Kinectに関する情報をまとめ、またその応用レベルの情報についても共有できる場として、 &lt;p align=&quot;center&quot;&gt; &lt;strong&gt;&lt;a href=&quot;http://www.kinect-wiki.info/&quot; target=&quot;_blank&quot;&gt;Kinect-wiki (http://www.kinect-wiki.info/)&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt; を制作しました。&lt;/p&gt;&lt;p&gt;まだ情報は少ないですが、これから順次増やしていきたいと思います。 また、Kinect wikiでは一緒に編集してくださる方々を募集しています。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Fri, 28 Oct 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-06-17-kinect-for-windows-sdk-beta/
</guid>
<link>
https://blog.totakke.net/posts/2011-06-17-kinect-for-windows-sdk-beta/
</link>
<title>
Kinect for Windows SDK beta: WindowsでKinectを使う
</title>
<description>
&lt;p&gt;Kinect-wikiを開設したので、最新のインストールガイドはそちらを参照してください。 → &lt;a href=&quot;/kinect/starting-kinect-wiki.html&quot;&gt;Kinect-wikiはじめました&lt;/a&gt; → &lt;a href=&quot;http://www.kinect-wiki.info/Kinect%20SDK%20for%20Windows%20beta-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB&quot; target=&quot;_blank&quot;&gt;[Kinect-wiki] Kinect for Windows SDK beta - インストール&lt;/a&gt;&lt;h2&gt;&lt;/h2&gt;&lt;/p&gt;&lt;p&gt;Microsoft公式のKinect SDK &quot;Kinect for Windows SDK beta&quot; をちょっと使ってみました． インストールなど素晴らしく簡単にできているので，正直書くことはあまりないのですが，まとめてみます． 公式サイトはこちら↓ &lt;a href=&quot;http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/default.aspx&quot; target=&quot;_blank&quot;&gt;http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/default.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;※OpenNIなどを使っている方は，avin2さんのドライバなどが使えなくなるのでご注意ください．&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;インストール&quot;&gt;&lt;/a&gt;1. インストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx&quot; target=&quot;_blank&quot;&gt;http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx&lt;/a&gt; から，環境に応じて， ・32bit: kinectsdk32.msi ver1.00.11 ・64bit: kinectsdk64.msi ver1.00.11 をダウンロードして実行． 後は指示に従ってボタンをクリックしていくだけ．超簡単．&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;サンプル&quot;&gt;&lt;/a&gt;2. サンプル&lt;/h2&gt;&lt;p&gt;開発環境なしですぐに試せるサンプルとして，&quot;Sample Skeletal Viewer&quot;と&quot;Sample Shape Game&quot;の2つが用意されています． 「スタート」→「全てのプログラム」→「Microsoft Kinect SDK for Windows BETA」 から実行できます．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Sample Skeltal Viewer&lt;/strong&gt; スケルトントラッキングができます． OpenNIと違い，ポーズを取る必要がありません．ただ，その分破綻しやすい気がします． &lt;p align=&quot;right&quot;&gt; &lt;a href=&quot;/img/SkeletalViewer.png&quot;&gt;&lt;img src=&quot;/img/SkeletalViewer.png&quot; alt=&quot;&quot; title=&quot;SkeletalViewer&quot; width=&quot;300&quot; height=&quot;133&quot; class=&quot;alignnone size-medium wp-image-348&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Sample Shape Game&lt;/strong&gt; Kinectを使ったサンプルゲーム． 落ちてくるボールを叩いたり（？）して得点を稼ぐゲームのようです． 確認していないのですが，音声認識に対応していて，「Reset!」や「Faster!」など複数の指示を音声で出せるみたいです（※ただし後述の音声認識フレームワークをインストールしておく必要あり） &lt;p align=&quot;right&quot;&gt; &lt;a href=&quot;/img/ShapeGame.png&quot;&gt;&lt;img src=&quot;/img/ShapeGame.png&quot; alt=&quot;&quot; title=&quot;ShapeGame&quot; width=&quot;300&quot; height=&quot;153&quot; class=&quot;alignnone size-medium wp-image-349&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;開発環境&quot;&gt;&lt;/a&gt;3. 開発環境&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;ハードウェア&lt;/strong&gt; ・Kinect ・CPU: Dual core, 2.66GHz以上 ・ビデオカード: DirectX 9.0cをサポートするWindows 7互換のビデオカード ・メモリ: 2GB (4GB推奨) &lt;strong&gt;ソフトウェア&lt;/strong&gt; ・OS: Windows 7 (32bit or 64bit) ・IDE: Visual Studio 2010 Express (またはその他 2010 edition) ・Microsoft .NET Framework 4.0&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;4.&amp;#95;sdkサンプル&quot;&gt;&lt;/a&gt;4. SDKサンプル&lt;/h2&gt;&lt;p&gt;Visual Studio 2010形式で入っているサンプルです． C:\Users\Public\Documents\Microsoft Research KinectSDK Samples 以下にあります．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・NUI/ShapeGame&lt;/strong&gt; Sample Shape Gameのソースコードです．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・NUI/SkeletalViewer&lt;/strong&gt; Sample Skeltal Viewerのソースコードです．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Audio/AudioCaptureRaw&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Audio/MFAudioFilter&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Audio/MicArrayEchoCancellation&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Audio/RecordAudio&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;・Audio/Speech&lt;/strong&gt; 音声認識のサンプルコードです． 「red」「blue」「green」の3単語を判別してくれます． 以下を予めインストールしておく必要があります（上2つは64bit環境の場合でも必ずx86 editionを選んでください）． 　・&lt;a href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=bb0f72cb-b86b-46d1-bf06-665895a313c7&quot; target=&quot;_blank&quot;&gt;Microsoft Speech Platform Runtime, version 10.2 (x86 edition) &lt;/a&gt; 　・&lt;a href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4&amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;Microsoft Speech Platform - Software Development Kit, version 10.2 (x86 edition)&lt;/a&gt; 　・&lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkId=220942&quot; target=&quot;_blank&quot;&gt;Kinect for Windows Runtime Language Pack, version 0.9&lt;/a&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Fri, 17 Jun 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-05-31-prima-kinect-interaction/
</guid>
<link>
https://blog.totakke.net/posts/2011-05-31-prima-kinect-interaction/
</link>
<title>
PRIMA: 複数のKinectを用いた時間型インタラクション
</title>
<description>
&lt;p&gt;中島統太郎氏との共同制作作品&lt;a href=&quot;http://totakke.net/works/prima.html&quot; target=&quot;_blank&quot;&gt;「PRIMA」のページ&lt;/a&gt;を公開しました。&lt;/p&gt;&lt;p&gt;&lt;p align=&quot;center&quot;&gt; &lt;iframe width=&quot;480&quot; height=&quot;303&quot; src=&quot;https://www.youtube.com/embed/yqsOjneMnow?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt; &lt;/p&gt;&lt;/p&gt;&lt;p&gt;PRIMAは、Parallel Reality-based Interactive Motion Areaの頭文字から付けられた名前です。 空間的距離をなくすテレイグジスタンス（Telexistence）に対して、時間的距離をなくす概念として定義した&lt;i&gt;Parallel Reality&lt;/i&gt;を実現するものとして制作しました。 複数のKinectを組み合わせて構成される、インタラクションシステムとなっています。&lt;/p&gt;&lt;p&gt;詳しくは、 &lt;a href=&quot;https://totakke.net/works/prima.html&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;「PRIMA」のページ&lt;/strong&gt;&lt;/a&gt; をご覧ください。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 31 May 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2011-04-21-openni-mac-kinect/
</guid>
<link>
https://blog.totakke.net/posts/2011-04-21-openni-mac-kinect/
</link>
<title>
OpenNI: MacでKinectを使う
</title>
<description>
&lt;p&gt;OpenNI2が公開されました。 OpenNI2のインストール方法はこちら→&lt;a href=&quot;/kinect/install-openni2-mac.html&quot;&gt;OpenNI2をMac OS Xにインストール&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Homebrew使いの方はこちらの記事もどうぞ。&lt;/p&gt;&lt;p&gt;→ &lt;a href=&quot;/kinect/install-openni-with-homebrew.html&quot;&gt;OpenNIをHomebrewでインストール&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kinect wikiを開設したので、最新のインストールガイドはそちらを参照してください。&lt;/p&gt;&lt;p&gt;→ &lt;a href=&quot;http://www.kinect-wiki.info/OpenNI-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB&quot;&gt;&amp;#91;Kinect-wiki&amp;#93; OpenNI - インストール&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;hr /&gt;&lt;/p&gt;&lt;p&gt;以前、&lt;a href=&quot;/kinect/openni-windows-kinect.html&quot;&gt;WindowsでOpenNIをインストールする方法&lt;/a&gt;について書きましたが、今回は私が普段使っているMac OSで動かす方法を説明したいと思います。&lt;/p&gt;&lt;p&gt;OpenNI with Windowsはこちら→&lt;a href=&quot;/kinect/openni-windows-kinect.html&quot;&gt;OpenNI: WindowsでKinectを使う&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kinect for Windows SDKはこちら→&lt;a href=&quot;/kinect/kinect-for-windows-sdk-beta.html&quot;&gt;Kinect for Windows SDK beta: WindowsでKinectを使う&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;libtool,&amp;#95;libusbをインストール&quot;&gt;&lt;/a&gt;1. libtool, libusbをインストール&lt;/h2&gt;&lt;p&gt;MacPortsを使って、libtool, libusb-devel +universalをインストールしておく必要があります。&lt;/p&gt;&lt;p&gt;1) MacPortsを入れていない人は、&lt;a href=&quot;http://www.macports.org/&quot; target=&quot;_blank&quot;&gt;http://www.macports.org/&lt;/a&gt;から最新のMacPortsをインストールしてください。&lt;/p&gt;&lt;p&gt;2) ターミナルを開き、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ port installed
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と打つとインストール済リストが表示されるので、libtoolとlibusb-devel +universalがあるかどうか確認してください。&lt;/p&gt;&lt;p&gt;3) libtoolがなかった場合、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo port install libtool
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;libusb-devel +universalがなかった場合、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo port install libusb-devel +universal
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;としてインストールしてください。&lt;/p&gt;&lt;p&gt;けっこう時間がかかるかと思います。&lt;/p&gt;&lt;p&gt;※libusb-develで+universalがついていないものが既にインストールされていた場合、&lt;code&gt;$ sudo port uninstall libusb-devel&lt;/code&gt;としてアンインストールした後に、上記の方法で+universal版をインストールしてください。&lt;/p&gt;&lt;p&gt;※libusb-develをインストールする際にgit failが出る場合、&lt;code&gt;$ sudo port selfupdate&lt;/code&gt;を行ってから試してみてください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;openniをインストール&quot;&gt;&lt;/a&gt;2. OpenNIをインストール&lt;/h2&gt;&lt;p&gt;OpenNIの公式ページに行き、&lt;a href=&quot;http://openni.org/Downloads/OpenNIModules.aspx&quot;&gt;Downloadページ&lt;/a&gt;からOpenNIをダウンロードします。 Select downloads optionに、&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;OpenNI Binaries&lt;/li&gt; &lt;li&gt;Unstable&lt;/li&gt; &lt;li&gt;OpenNI Unstable Build for MacOSX 10.7 Universal x86/x64 (32/64-bit) v1.5.4.40&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;と入力して、ダウンロードしてください。&lt;/p&gt;&lt;p&gt;[HOME]/Kinectというディレクトリでも作ってそこに入れると良いと思います（どこでもいいです）。&lt;/p&gt;&lt;p&gt;ダウンロードしたtar.gz2ファイルを解凍してください。&lt;/p&gt;&lt;p&gt;ターミナルから解凍した場所（[HOME]/Kinect/OpenNI-Bin-MacOSX-v1.1.0.41）に行き、&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ sudo ./install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;として、インストールしてください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;kinectのドライバをインストール&quot;&gt;&lt;/a&gt;3. Kinectのドライバをインストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/avin2/SensorKinect/tree/master&quot;&gt;https://github.com/avin2/SensorKinect/tree/master&lt;/a&gt;からダウンロードし、先ほどの[HOME]/Kinect以下に置いて解凍してください。 解凍すると、&lt;code&gt;SensorKinect-master&lt;/code&gt;というようなフォルダができるはずです。&lt;/p&gt;&lt;p&gt;&lt;code&gt;SensorKinect-master/Bin/SensorKinect-Bin-MacOSX-v5.0.1.32.tar.bz2&lt;/code&gt;を解凍し、先ほどと同様にターミナルから&lt;code&gt;$ sudo ./install.sh&lt;/code&gt;を実行します。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;4.&amp;#95;niteをインストール&quot;&gt;&lt;/a&gt;4. NITEをインストール&lt;/h2&gt;&lt;p&gt;OpenNIの公式ページに行き，OpenNIの公式ページに行き、&lt;a href=&quot;http://openni.org/Downloads/OpenNIModules.aspx&quot;&gt;Downloadページ&lt;/a&gt;からNITEをダウンロードします。 Select downloads optionに、&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;OpenNI Compliant Middleware Binaries&lt;/li&gt; &lt;li&gt;Unstable&lt;/li&gt; &lt;li&gt;PrimeSense NITE Unstable Build for MacOSX 10.7 Universal x86/x64 (32/64-bit) v1.5.2.21&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;と入力して、[HOME]/Kinect以下にダウンロードして解凍してください。&lt;/p&gt;&lt;p&gt;再びターミナルで、[HOME]/Kinect/Nite-1.3.1.5に行き、&lt;code&gt;$ sudo ./install.sh&lt;/code&gt;としてインストールしてください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;5.&amp;#95;サンプルの実行&quot;&gt;&lt;/a&gt;5. サンプルの実行&lt;/h2&gt;&lt;p&gt;サンプルは、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;#91;HOME&amp;#93;/Kinect/OpenNI-Bin-MaxOSX-v1.1.0.41/Samples
&amp;#91;HOME&amp;#93;/Kinect/Nite-1.3.1.5/Samples
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以下に入っています。&lt;/p&gt;&lt;p&gt;&lt;code&gt;Samples/Bin&lt;/code&gt;以下に実行ファイルが置いてあります。 KinectをPCに接続し、ターミナルから、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./NiViewer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようにして実行することができます。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 21 Apr 2011 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-12-09-openni-windows-kinect/
</guid>
<link>
https://blog.totakke.net/posts/2010-12-09-openni-windows-kinect/
</link>
<title>
OpenNI: WindowsでKinectを使う
</title>
<description>
&lt;p&gt;OpenNI2が公開されました。 OpenNI2のインストール方法はこちら→&lt;a href=&quot;/kinect/install-openni2-windows.html&quot;&gt;OpenNI2をWindowsにインストール&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kinect wikiを開設したので、最新のインストールガイドはそちらを参照してください。&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;&lt;a href=&quot;/kinect/starting-kinect-wiki.html&quot;&gt;Kinect wikiはじめました&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.kinect-wiki.info/OpenNI-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB&quot;&gt;OpenNI-インストール&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Macの方はこちら→&lt;a href=&quot;/kinect/openni-mac-kinect.html&quot;&gt;OpenNI: MacでKinectを使う&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kinect for Windows SDKはこちら→&lt;a href=&quot;/kinect/kinect-for-windows-sdk-beta.html&quot;&gt;Kinect for Windows SDK beta: WindowsでKinectを使う&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;hr /&gt;&lt;/p&gt;&lt;p&gt;※以前にlibfreenectからドライバをインストールしてKinectをハックしていた人は、以前のドライバを消去してください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;1.&amp;#95;openniをインストール&quot;&gt;&lt;/a&gt;1. OpenNIをインストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.openni.org/openni-sdk/openni-sdk-history-2/#.Uc_ZaD6SArg&quot;&gt;旧OpenNI SDKのDownloadページ&lt;/a&gt;からOpenNIをダウンロードします。&lt;/p&gt;&lt;p&gt;OpenNI SDK v1.5.4.0 Windows-x32をダウンロード・インストールします。&lt;/p&gt;&lt;p&gt;※64bitOSの場合も32bit版をインストールすることをおすすめします。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;2.&amp;#95;kinectのドライバをインストール&quot;&gt;&lt;/a&gt;2. Kinectのドライバをインストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/avin2/SensorKinect/tree/master&quot;&gt;https://github.com/avin2/SensorKinect/tree/master&lt;/a&gt;からダウンロードして、解凍してください。&lt;/p&gt;&lt;p&gt;GitでCloneしても構いません。&lt;/p&gt;&lt;p&gt;解凍すると&lt;code&gt;SensorKinect-master&lt;/code&gt;というようなフォルダができるはずです。&lt;/p&gt;&lt;p&gt;&lt;code&gt;SensorKinect-master/Platform/Win32/Driver&lt;/code&gt;にドライバが入っています。&lt;/p&gt;&lt;p&gt;次に、USBでKinectをPCに接続します。&lt;/p&gt;&lt;p&gt;するとドライバのインストール画面が出るので、手動で選択にし、先ほどの、&lt;code&gt;SensorKinect-master/Platform/Win32/Driver&lt;/code&gt;を入力してインストールします。&lt;/p&gt;&lt;p&gt;Kinect Motor, Kinect Camera, Kinect Audioの3種類のドライバインストールを求められますが、このうち、Kinect Motor, Kinect Cameraの2つだけで大丈夫です。（Kinect Audioは未対応）&lt;/p&gt;&lt;p&gt;その後、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;SensorKinect-master/Bin/SensorKinect-Win-OpenSource32-5.0.1.msi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行してください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;3.&amp;#95;niteをインストール&quot;&gt;&lt;/a&gt;3. NITEをインストール&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.openni.org/openni-sdk/openni-sdk-history-2/#.Uc_ZaD6SArg&quot;&gt;旧OpenNI SDKのDownloadページ&lt;/a&gt;からNITEをダウンロードします。&lt;/p&gt;&lt;p&gt;NiTE v1.5.2.21 Windows-x32をダウンロード・インストールしてください。&lt;/p&gt;&lt;p&gt;※64bitOSの場合も32bit版をインストールすることをおすすめします。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;4.&amp;#95;設定ファイルの書き変え&quot;&gt;&lt;/a&gt;4. 設定ファイルの書き変え&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SensorKinect-master/OpenNI/Data&lt;/code&gt;の中身をコピーし、&lt;code&gt;C:/Program Files/OpenNI/Data&lt;/code&gt;にペーストしてください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;5.&amp;#95;サンプルの実行&quot;&gt;&lt;/a&gt;5. サンプルの実行&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a55b6b43-e24f-4ea3-a93e-40c0ec4f68e5&amp;DisplayLang=en&quot;　target=&quot;_blank&quot;&gt;Microsoft Platform SDK&lt;/a&gt;をインストールしていない場合は、インストールします。&lt;/p&gt;&lt;p&gt;サンプルは、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;C:/Program Files/OpenNI/Samples
C:/Program Files/Prime Sense/Nite/Samples
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以下に入っています。&lt;/p&gt;&lt;p&gt;Bin/Release以下に実行ファイルが既にあるので、ダブルクリックなどして、以下の3つ、&lt;/p&gt;&lt;p&gt;&lt;ul&gt; &lt;li&gt;OpenNIのNIViewer: 基本ビューア &lt;/li&gt; &lt;li&gt;OpenNIのNIUserTracker: スケルトントラッキング &lt;/li&gt; &lt;li&gt;NITEのSample-PointViewer: ハンドトラッキング &lt;/li&gt; &lt;/ul&gt;&lt;/p&gt;&lt;p&gt;が正常に動くことを確認してください。&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;6.&amp;#95;サンプルのソースコード&quot;&gt;&lt;/a&gt;6. サンプルのソースコード&lt;/h2&gt;&lt;p&gt;Visual Studio2008/2010プロジェクト形式で入っているので、プロジェクトを開いてください。&lt;/p&gt;&lt;p&gt;・C:\Program Files (x86)\OpenNI\Samples\Build\All&amp;#95;2008.sln（またはAll&amp;#95;2010.sln）&lt;/p&gt;&lt;p&gt;・C:\Program Files (x86)\PrimeSense\NITE\Samples\Build\All&amp;#95;2008.sln（またはAll&amp;#95;2010.sln）&lt;/p&gt;&lt;p&gt;を開くと、全てのサンプルプロジェクトを開くことができます。&lt;/p&gt;&lt;p&gt;[プロジェクト]/Source Files/main.cppを開き、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#define SAMPLE&amp;#95;XML&amp;#95;PATH &amp;quot;../../../Data/Sample-User.xml&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#define SAMPLE&amp;#95;XML&amp;#95;PATH &amp;quot;../../Data/Sample-User.xml&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に書き変えてください．&lt;/p&gt;&lt;p&gt;後は、ビルドして実行すれば動くはずです。 &lt;/div&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 09 Dec 2010 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-11-16-nhk-ohayounippon-lifelog/
</guid>
<link>
https://blog.totakke.net/posts/2010-11-16-nhk-ohayounippon-lifelog/
</link>
<title>
NHK「おはよう日本」ライフログ特集
</title>
<description>
&lt;p&gt;NHK総合で朝放送されている「おはよう日本」で，10月31日（日）の回にライフログ特集が行われました． &lt;a href=&quot;http://www.nhk.or.jp/ohayou/backnumber/20101031.html&quot; target=&quot;_blank&quot;&gt;http://www.nhk.or.jp/ohayou/backnumber/20101031.html&lt;/a&gt; その中で，ボクの「レシートログと消費予報」についても放送されました．&lt;/p&gt;&lt;p&gt;それによれば…&lt;/p&gt;&lt;p&gt;&lt;blockquote&gt; 履歴を蓄積すれば，将来の行動まで予測できるのではないか． この先読みこそ，ライフログの究極の活用法です． &lt;/blockquote&gt;&lt;/p&gt;&lt;p&gt;らしいです． 「究極」かどうかは分からないですが…（笑） 何にせよ，ボクの研究を取材して頂けて，本当に嬉しい限りです．&lt;/p&gt;&lt;p&gt;また，東京大学相澤研とfoo.log株式会社による，「FoodLog」システムについても紹介されていました． こちらは，食事の写真から栄養バランスを推定してくれるという面白いシステム． 同プロジェクトにボクも関わったりしています．&lt;/p&gt;&lt;p&gt;KDDI研究所さんの「イコピタ」も紹介されていましたねー． ライフログに対する抵抗感も取り上げられてましたね．&lt;/p&gt;&lt;p&gt;全体的に上手くまとめられていて，さすがNHKさんだな，という感じ． とても真面目なので，研究を紹介して頂ける場としては良かったです．&lt;/p&gt;&lt;p&gt;&lt;hr&gt; &lt;cite&gt; 東京大学相澤研究室：&lt;a href=&quot;http://www.hal.t.u-tokyo.ac.jp/ja/index.html&quot; target=&quot;_blank&quot;&gt;http://www.hal.t.u-tokyo.ac.jp/ja/index.html&lt;/a&gt; FoodLog：&lt;a href=&quot;http://www.foodlog.jp/&quot; target=&quot;_blank&quot;&gt;http://www.foodlog.jp/&lt;/a&gt; foo.log株式会社：&lt;a href=&quot;http://www.foo-log.co.jp/&quot; target=&quot;_blank&quot;&gt;http://www.foo-log.co.jp/&lt;/a&gt; &lt;/cite&gt;&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 16 Nov 2010 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-11-16-iiiex12-info/
</guid>
<link>
https://blog.totakke.net/posts/2010-11-16-iiiex12-info/
</link>
<title>
東京大学第12回制作展、来月開催
</title>
<description>
&lt;p&gt;東京大学第12回制作展（&lt;a href=&quot;http://i3e.iii.u-tokyo.ac.jp/i3e12/&quot; target=&quot;_blank&quot;&gt;http://i3e.iii.u-tokyo.ac.jp/i3e12/&lt;/a&gt;）が来月開催されます。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://i3e.iii.u-tokyo.ac.jp/i3e12/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/WebBanner&amp;#95;final&amp;#95;2.gif&quot; alt=&quot;&quot; title=&quot;東京大学第12回制作展バナー&quot; width=&quot;192&quot; height=&quot;48&quot; class=&quot;alignnone size-full wp-image-173&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;概要&lt;/strong&gt; 2010年12月2日（木）-7日（火）11:00-19:00 会期中無休・入場無料 会場：東京大学本郷キャンパス 工学部2号館2階展示室・2階フォラム（中庭）・9階92B、情報学環・福武ホールテラス 主催：東京大学大学院 情報学環・学際情報学府 問合せ：i3e@iii.u-tokyo.ac.jp Web：&lt;a href=&quot;http://i3e.iii.u-tokyo.ac.jp/i3e12/&quot; target=&quot;_blank&quot;&gt;http://i3e.iii.u-tokyo.ac.jp/i3e12/&lt;/a&gt; Twitter：&lt;a href=&quot;http://twitter.com/iiiEx&quot; target=&quot;_blank&quot;&gt;@iiiEx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;東京大学制作展は、東京大学で行われている最新の研究を、一般の方々にも分かりやすく伝えるためのメディアアート展覧会。 今回のテーマは「BRIDGE」。 その意味は公式ページ、そして来場していただければ判ると思います。 クオリティもかなり高い（と思う）ので、是非、ご来場ください。&lt;/p&gt;&lt;p&gt;6月に開催された、東京大学制作展エクストラ2010（&lt;a href=&quot;http://i3e.iii.u-tokyo.ac.jp/i3eex2010/&quot; target=&quot;_blank&quot;&gt;http://i3e.iii.u-tokyo.ac.jp/i3eex2010/&lt;/a&gt;）にはボクも作品を出していましたが、今回は出していません。 デザインチームとして、展示会に協力しています。&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 16 Nov 2010 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-09-25-vrsj2010/
</guid>
<link>
https://blog.totakke.net/posts/2010-09-25-vrsj2010/
</link>
<title>
VRSJ2010に参加してきました
</title>
<description>
&lt;p&gt;&lt;a href=&quot;http://www.vrsj.org/ac/2010/&quot;&gt;VRSJ2010（第15回バーチャルリアリティ学会大会）&lt;/a&gt;に参加してきました．&lt;/p&gt;&lt;p&gt;場所：石川県，金沢工業大学 期間：2010年9月15〜17日&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/RIMG7614&amp;#95;web.jpg&quot;&gt;&lt;img src=&quot;/img/RIMG7614&amp;#95;web.jpg&quot; alt=&quot;&quot; title=&quot;VRSJ2010看板&quot; width=&quot;225&quot; height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-135&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1日目（2010年9月15日（水））&lt;/strong&gt; &lt;a href=&quot;/img/RIMG7621&amp;#95;web.jpg&quot;&gt;&lt;img src=&quot;/img/RIMG7621&amp;#95;web.jpg&quot; alt=&quot;&quot; title=&quot;初日1番手&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;alignnone size-medium wp-image-138&quot; /&gt;&lt;/a&gt; ボクの発表は初日の朝一番でした． 人が少なくてラッキーなのかアンラッキーなのか（多分アンラッキーでしょうね）． ちなみにセッションは，「アート・エンターテイメント1」でした． ちなみに発表テーマは，「Webサービス”Twitter”における情報の関連性の可視化」． Publicationsにも書いてあります．&lt;/p&gt;&lt;p&gt;同じ研究室から，「触わる木漏れ日：光と影の手持ち触覚ディスプレイ」も同じセッションでした． 詳しくはこちら→&lt;a href=&quot;http://www.cyber.t.u-tokyo.ac.jp/~kuni/index-j.html&quot;&gt;http://www.cyber.t.u-tokyo.ac.jp/~kuni/index-j.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/img/RIMG7642&amp;#95;web.jpg&quot;&gt;&lt;img src=&quot;/img/RIMG7642&amp;#95;web.jpg&quot; alt=&quot;&quot; title=&quot;WeFace&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;alignnone size-medium wp-image-147&quot; /&gt;&lt;/a&gt; こちらはデモ展示の一つ「WeFace」です． 各ユーザが，眉毛や目・口といった顔のパーツを描いて投稿，組み合わせて顔を描くことが出来るシステムです． 展示名としては，「絵を描くことを主体とした擬似同期型CGMサイトの構築 」となっていて，複数人で同時に一つの絵を書くような体験ができるということですね． Flashで作られていて，実際に公開されており，&lt;a href=&quot;http://weface.jp/&quot;&gt;http://weface.jp/&lt;/a&gt;から体験することができます． ボクもひげのパーツを描いてきたのですが，みなさん絵が上手い…ｗ． それにこの作品のクオリティもなかなかに高くて，とても面白かったです．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2日目（2010年9月16日（木））&lt;/strong&gt; 2日目はやはり，OS「トップコンファレンス採択論文紹介」ですね． UIST2010，CHI2010，SIGGRAPH2010に通った日本人の論文を紹介しつつ，トップコンファレンスに通る論文を書くためにどうすればいいか，ということを各発表者の観点から説明してくれました． 特に五十嵐先生の「3ヶ月前には第一稿を上げる，出来ればプロジェクト開始時に論文を書き上げる」というのは，グサッと来ましたね．．． どうすればそうできるのだろう…． また「100のアイディア、30の調査、10の実装、1つの論文」とも仰っていて， ボクにはまだまだそういうストイックさがないし，自分のアイディアをどんどん捨てていって構わないという覚悟が足りないな，と感じました．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3日目（2010年9月17日（金））&lt;/strong&gt; 3日目は，「ウェアラブル」セッションでライフログ系の発表がありましたが，片方は同研究室の発表でした． ライフログ系でもっと刺激のある発表があると良かったな，という感じです．&lt;/p&gt;&lt;p&gt;ちょっと短いですがそんな感じです． 発表自体にSIGGRAPHのときほど刺激を受けなかったのが少し残念…ではありました．&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Sat, 25 Sep 2010 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-08-24-wordpress/
</guid>
<link>
https://blog.totakke.net/posts/2010-08-24-wordpress/
</link>
<title>
WordPressで，接続情報なしで自動アップデート可能にする．
</title>
<description>
&lt;p&gt;WordPressで作っているこのページ，置いてあるサーバでは特定のユーザにしかftpを許可していないため，自動アップデートができずとても不便に思っていました． 何とか自動にしたいと考え調べてみると， &lt;a href=&quot;http://hayatomo.com/2009/04/09/77&quot;&gt;http://hayatomo.com/2009/04/09/77&lt;/a&gt; という記事が…&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;$ chown -R apache:apache &amp;#126;/public&amp;#95;html/wordpress/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のように，オーナーをapacheユーザに変更するとできるみたい． もしかしたら全てを変更する必要はないのかもしれないけど…&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Tue, 24 Aug 2010 00:00:00 +0900
</pubDate>
</item>
<item>
<guid>
https://blog.totakke.net/posts/2010-08-05-siggraph2010-3/
</guid>
<link>
https://blog.totakke.net/posts/2010-08-05-siggraph2010-3/
</link>
<title>
SIGGRAPH2010 3日目
</title>
<description>
&lt;p&gt;SIGGRAPH2010 3日目 ───2010年7月27日（火）&lt;/p&gt;&lt;p&gt;3日目は，Technical Paperのセッション &quot;Stylized Rendering &amp;amp; Illusions&quot; を聴きに行ってきました． そこで行われた発表は4つ， &lt;ul&gt; 	&lt;li&gt;Modeling and Rendering of Impossible Figures&lt;/li&gt; 	&lt;li&gt;Camouflage Images&lt;/li&gt; 	&lt;li&gt;Structure-Based ASCII Art&lt;/li&gt; 	&lt;li&gt;From Image Parsing to Painterly Rendering&lt;/li&gt; &lt;/ul&gt; 研究会で報告をしないといけないので，ついでにまとめてみます．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Modeling and Rendering of Impossible Figures&lt;/strong&gt; エッシャーなどが描く不可能図形を，CGでモデリング・レンダリングするという研究． 論文はこちら→&lt;a href=&quot;http://doi.acm.org/10.1145/1731047.1731051&quot;&gt;http://doi.acm.org/10.1145/1731047.1731051&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Camouflage Images&lt;/strong&gt; 岩肌や雪山などの風景写真に動物をカモフラージュしつつ埋め込むアートを自動で行えるようにするという研究．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Structure-Based ASCII Art&lt;/strong&gt; 画像から自動的にアスキーアートを作り出す研究．&lt;/p&gt;&lt;p&gt;&lt;strong&gt;From Image Parsing to Painterly Rendering&lt;/strong&gt; 筆で描いた（あるいは油絵みたいな）ようなレンダリングをする技術． 論文はこちら→&lt;a href=&quot;http://doi.acm.org/10.1145/1640443.1640445&quot;&gt;http://doi.acm.org/10.1145/1640443.1640445&lt;/a&gt;&lt;/p&gt;&lt;p&gt;参考： 安藤日記&lt;a href=&quot;http://www.andoh.org/2010/07/siggraph-2010-sunday.html&quot;&gt;http://www.andoh.org/2010/07/siggraph-2010-sunday.html&lt;/a&gt;さんのほうでもSIGGRAPHの簡単なレビューがなされています．&lt;/p&gt;
</description>
<enclosure>

</enclosure>
<pubDate>
Thu, 05 Aug 2010 00:00:00 +0900
</pubDate>
</item>
</channel>
</rss>
