<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>やざわラボブログ</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://yzwlab.net/blog/atom.xml" />
    <id>tag:yzwlab.net,2011-12-08:/blog//10</id>
    <updated>2013-04-21T12:25:43Z</updated>
    <subtitle>yacchinの実験場ブログ。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.14-en</generator>

<entry>
    <title>Gephiであそぶ</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2013/04/gephi.html" />
    <id>tag:yzwlab.net,2013:/blog//10.549</id>

    <published>2013-04-21T12:12:00Z</published>
    <updated>2013-04-21T12:25:43Z</updated>

    <summary>還付金が入ったためここ最近非常に強気です。この強気も予定納税とかその辺の書類がき...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[<p>還付金が入ったためここ最近非常に強気です。この強気も予定納税とかその辺の書類がきたら一気にしぼみます。</p><p><br /></p><p>今回はちょっと仕事でも触りそうなので、ネットワーク構造を可視化するのに使えそうなツール、<a href="http://oss.infoscience.co.jp/gephi/gephi.org/">Gephi</a>で遊んでみたのでそのメモ。</p><p>ここ最近のオープンなツールは本当によくできてます。うっかりするとこの手のツールを自作したくなってしまう性質なのですが、そんな気持ちを完全に打ち砕いてくれるこの出来の良さ。いい感じです。</p><p><br /></p><p>この手のツールでは当然元となるデータないと遊べないわけですが、Gephiは親切なことに<a href="https://wiki.gephi.org/index.php?title=Datasets">データをいくつか紹介してくれていて</a>、手っ取り早くそれで遊ぶということもできます。けど、せっかくなので食わせるデータも自分で作ってみようじゃないかと。だったら、ここ最近増えてきた自分のiTunesライブラリの可視化を試みてしまおうかなと。そんな出来心ではじめました。</p><p><br /></p><p>トピックとしては以下のような感じで：</p><ol><li><a href="https://github.com/jkiddo/jolivia">Jolivia</a>+<a href="http://code.google.com/p/tunesremote-plus/">TunesRemote</a>の流用コードでiTunesライブラリの情報を得る<br /></li><li><a href="https://gephi.org/toolkit/">gephi-toolkit</a>でグラフデータを組み立て、Gephiに食わせる</li><li>Gephiでグラフを可視化する<br /></li></ol><p><br /></p>





]]>
        <![CDATA[<h3 class="archive">iTunesライブラリを引っこ抜いてグラフデータにしてみる</h3>
<p>いままで買ってきたCDのうち9割程度はiTunesにインポートしてみたり、デジタルでのコレクションとはいかなるものかみたいなことを考えてきたつもりなわけですが、CDのジャケットをすべてスキャンしてアートワーク設定するみたいな労力をかけている割に、買ってから1ヶ月分くらいしか聴かないのですよ。デジタルもしかるべき管理をしないと埃をかぶるというか。</p><p>そうこうしていると、自分のコレクションの全貌がよくわからなくなってきます。そんなとき、iTunesライブラリをDAAP経由で制御できる<a href="https://github.com/jkiddo/jolivia">Jolivia</a> <span style="color: gray;">(Google Codeに自分のDAAP処理コードをなんとなく置いてたら、俺のを使えとメールが来たので使ってみている)</span> とかその辺のライブラリを使って、自分のiTunesライブラリとはどんなもんなんだというのが見れると楽しいかもなと。一方Gephiさんは<a href="https://gephi.org/toolkit/">Gephi Toolkit</a>という便利jarを提供してくれていて、Javaプログラマな人間は非常にとっつきやすい感じになっているのでああこれはよいなと。</p><p><br /></p>
<h4 class="archive">設計</h4><p>今回はとにかくグラフがデータとして保存できりゃいいや、というレベルで。</p><ol><li>CUIベースのアプリケーションとして実装する</li><li>Remoteのペアリング対象はコンソールベースで選択する</li><li>一度ペアリングされた機器はローカルファイルに記憶する</li><li>ペアリングが確立したら即ライブラリの内容を取得し、gexfファイル形式で書き出す</li><li>ライブラリの内容は、 アルバム→曲, アーティスト→曲, これとアーティスト名で文字列的に包含関係があるものを結びつけた形でグラフ化する<br /></li></ol><p>考え中に描いた絵はなんだかこんな感じ。</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/visualizer-design-1-147.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/visualizer-design-1-147.html','popup','width=1112,height=834,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/visualizer-design-1-thumb-400x300-147.jpeg" alt="visualizer-design-1.jpeg" class="mt-image-none" style="" height="300" width="400" /></a></p><p>LibraryServiceまわりは、他でもやりたいことがあるのでちょっと分離して実装しています。<br /></p><p><br /></p>
<h4 class="archive">実装</h4><p>コードは<a href="https://github.com/yacchin1205/itunes-library-visualizer">github</a>においてみました。以下のような感じの実装。</p><ul><li>先の1.～3.は、ペアリング部分はTunesRemoteを流用したコード、ライブラリ読み取り部分はJoliviaを使用している (Joliviaだけだとまだ心もとなく)</li><li>4.～5.はGephi Toolkitを使用</li></ul><p><br /></p><p>ビルドするためには、</p><ol><li><a href="https://github.com/jkiddo/jolivia">Jolivia</a>をcloneしてきてmvn installする</li><li><a href="https://gephi.org/toolkit/">Gephi Toolkit</a>のjarをダウンロードして、mvn install:install-file -DgroupId=org.gephi -DartifactId=gephi-toolkit -Dversion=0.8.7 -Dfile=gephi-toolkit.jar -Dpackaging=jar としてMavenにjarのありかを覚えこませる<br /></li></ol><p>してあげてから、itunes-library-visualizerでmvn packageするとかmvn eclipse:eclipseしてEclipseで開くなりすればOK。</p><p><br /></p><p><br /></p>
<h3 class="archive">グラフを分析してみる</h3>
<p>
ここまでで実装したプログラムを動かしてiTunesとペアリングすると、ライブラリの構造をグラフデータ化したgexfファイルが作成されます。こいつを、Gephi素人なので、<a href="https://gephi.org/users/quick-start/">このへん</a>を参考に解析します。 <br /></p><p>で、数十分格闘した結果こんなグラフデータができあがり：<a href="http://yzwlab.net/blog/songs.gephi">songs.gephi</a></p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/screenshot_220319-129.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/screenshot_220319-129.html','popup','width=1024,height=768,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/screenshot_220319-thumb-400x300-129.png" alt="screenshot_220319.png" class="mt-image-none" style="" height="300" width="400" /></a></p><p>俯瞰してもまあなんだかわかりません。なんとなく、相互につながったネットワークは中央のほうに寄っていて、小さなかたまりは端のほうに寄っているように見えます。</p><p><br /></p><h4 class="archive">小さなかたまり</h4><p>まずは細かなかたまり、端の方をにょろにょろと眺めてみることにします。端の方はアーティスト名義間の包含関係が少なく、島として独立する傾向が高いクラスタみたい。</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/screenshot_221040-132.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/screenshot_221040-132.html','popup','width=1024,height=768,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/screenshot_221040-thumb-400x300-132.png" alt="screenshot_221040.png" class="mt-image-none" style="" height="300" width="400" /></a></p><p>懐かしくてよい感じですなあ。久しぶりに聴かねば。柴咲コウとRUIがちゃんとアルバムを介して同じ島にいる感じで、ああ意図を満たしてくれているのかなと。</p><p><br /></p><h4 class="archive">大きなかたまり：小さなかたまりがゆるやかに集まったもの</h4><p>そんな風に外周の小さな島をひとしきり眺めて郷愁に浸ったあと、だんだんと円の内側に入って行きます。するとどんどんアニソン成分が増えてきます。単純に自分の趣味的に多いというのもあるのですが、アーティスト相互の関連によってひとつの大きな島になっていて、それで中央に寄っているような感じがしてきます。（単純に自分の買い方の問題の可能性もある）</p><p>具体的に見ていくと：</p><p>まず奈々様ですね。</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/nana001-135.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/nana001-135.html','popup','width=1026,height=543,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/nana001-thumb-300x158-135.png" alt="nana001.png" class="mt-image-none" style="" height="158" width="300" /></a></p><p>ここからアーティスト名の包含関係線を上にたどると・・・</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/nana002-138.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/nana002-138.html','popup','width=854,height=505,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/nana002-thumb-300x177-138.png" alt="nana002.png" class="mt-image-none" style="" height="177" width="300" /></a></p><p>風鳴翼経由でシンフォギアのキャラソンが現れます。神。ということは、</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/nana003-141.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/nana003-141.html','popup','width=1078,height=550,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/nana003-thumb-300x153-141.png" alt="nana003.png" class="mt-image-none" style="" height="153" width="300" /></a></p><p>あやひちゃんや碧ちゃんがあらわれるわけです。天使ですね。</p><p><br /></p><p>この、キャラソンのCV表記でつながるネットワークによって、声優さんのクラスタは相互に接続された非常に大きなものとなり、今回採用したレイアウトアルゴリズムでは中央に引っ張られることになったようです。ただこれは声優さんがソロ名義でリリースしている大前提がありまして（基本的にはアーティスト名文字列の包含関係のみでエッジを作っていて、括弧の解釈などは考えていない）もうちょいまじめに実装したらどうなるのか関心があるところではあります。</p><p>大学の頃とかそこそこリア充ぶってた頃はアニソンから離れていたので、物量的にはそこまでアニソンとそれ以外に偏りがないかなと思っていたのですが、そんなことはまったくなかったですね。<br /></p><p><br /></p><p>こんな感じで、声優さん名義の曲がキャラソンを通してゆるやかに結合しているようなネットワークが現れてきます。この位置情報を曲再生に反映とかしたら楽しいんじゃねとか思ったりします。</p><p><br /></p><h4 class="archive">大きなかたまり：混沌<br /></h4><p>初音ミクさん時空が大変カオスな状態になっていました。</p><p><a href="http://yzwlab.net/blog/assets_c/2013/04/miku-144.html" onclick="window.open('http://yzwlab.net/blog/assets_c/2013/04/miku-144.html','popup','width=1117,height=550,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://yzwlab.net/blog/assets_c/2013/04/miku-thumb-400x196-144.png" alt="miku.png" class="mt-image-none" style="" height="196" width="400" /></a></p><p>関連するアーティストの方々の名前がミクさんの名前で関連づくことに加えて、コンピレーションアルバムの多さでこういう込み入った形になるのかなと想像できます。</p><p>しかし、もっとレイアウトアルゴリズムを繰り返し適用したらもっとよい形になるのかもしれないですねえ・・・（デスクトップマシンで1日くらいまわした程度）<br /></p><p><br /></p><p>とまあ、こんな感じで、役に立つかはおいておいて、自分のライブラリをリストとは別の視点で眺めることはできるわけです。インポート順や、自分の意図を持って組み上げたプレイリストとはまた一味違ったおもむきの見方ということで。</p><p>さてあの曲を久しぶりに聴こう。<br /></p>]]>
    </content>
</entry>

<entry>
    <title>lucene-gosenであそぶ</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2013/03/lucene-gosen.html" />
    <id>tag:yzwlab.net,2013:/blog//10.548</id>

    <published>2013-03-04T06:52:04Z</published>
    <updated>2013-03-07T14:42:34Z</updated>

    <summary>2ヶ月ぶりに。確定申告終わりそうです。今年もなんとか。今回はちょっとした思いつき...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[<p>2ヶ月ぶりに。確定申告終わりそうです。今年もなんとか。</p><p>今回はちょっとした思いつきで日本語の形態素解析とかちょろっとやり方をおさらいしておこう、と思ったのでそのメモ。</p>
<p>仕事でも <a href="http://code.google.com/p/lucene-gosen/">lucene-gosen</a> には非常にお世話になっておりましたが、自分のお脳にはどう使ったかがまったく記憶されていなかったので、まあ趣味として改めて調べようということで。<br />その中で、ちょっとバージョンが古いけど、<a href="http://mvnrepository.com/artifact/com.google.code/lucene-gosen-ipadic/1.2.1">Maven Repository</a>にもlucene-gosenがあるということがわかったので、じゃあこれ使ってさっくり書いてみよう、となった次第です。</p><p><br /></p>

]]>
        <![CDATA[<p>
まず、適当なmavenプロジェクトを作る。いつもこのコマンドを忘れるのでこれもメモ。</p>
<pre class="prettyprint">$ mvn archetype:create -DgroupId=net.yzwlab -DartifactId=simple-lucene-gosen-sample</pre>

<p><br />
</p><p>で、simple-lucene-gosen-sample以下にpom.xmlやらができるので、このdependencies要素以下に <a href="http://mvnrepository.com/artifact/com.google.code/lucene-gosen-ipadic/1.2.1">Maven Repository</a>のdependency要素の内容を書きたす。
</p>

<pre class="prettyprint">&lt;dependency&gt;
	&lt;groupId&gt;com.google.code&lt;/groupId&gt;
	&lt;artifactId&gt;lucene-gosen-ipadic&lt;/artifactId&gt;
	&lt;version&gt;1.2.1&lt;/version&gt;
&lt;/dependency&gt;
</pre>
<p></p>

<p><br /></p><p>これでlucene-gosenを使う準備は終わり。Mavenが勝手に依存関係解決してjarを仕込んでくれるのでもう何も恐くない。あとはすでにWeb上にある素晴らしい資料群にありがたやと手をあわせつつコードを書くのみ。</p>

<pre class="prettyprint">package net.yzwlab;

import java.util.ArrayList;
import java.util.List;

import net.java.sen.SenFactory;
import net.java.sen.StringTagger;
import net.java.sen.dictionary.Token;

/**
 * lucene-gosenの単純なサンプル
 */
public class SimpleLuceneGosenApp {
	public static void main(String[] args) throws Exception {
		StringTagger tagger = SenFactory.getStringTagger(null);
		List<token> tokens = tagger.analyze("如月千早(CV. 今井麻美)",
				new ArrayList&lt;Token&gt;());

		for (Token token : tokens) {
			System.err.println(token.getSurface() + ": "
					+ token.getMorpheme().getReadings() + " - "
					+ token.getMorpheme().getPartOfSpeech());
		}
	}
}
</token></pre>
<p></p>

<p><br /></p><p>これを実行するとこんな感じで形態素解析できた。やったね。</p>

<pre class="prettyprint">如月: [キサラギ] - 名詞-固有名詞-地域-一般
千早: [チハヤ] - 名詞-固有名詞-地域-一般
(: [] - 未知語
CV: [] - 未知語
.: [] - 未知語
今井: [イマイ] - 名詞-固有名詞-人名-姓
麻美: [アサミ, マミ] - 名詞-固有名詞-人名-名
): [] - 未知語</pre>

<p></p>
<p><br /></p><p><br /></p><p>やあやあ、Mavenはほんとうに楽ですなあ。Mavenで事足りる場合は、ですが。</p><p>9割くらいの作業はすごい楽になるのでよいのですが、Maven外のライブラリを引っ張ってきたりあれやこれやしようとするなどで残り1
割が地獄になってしまう感じがありまして、なかなか仕事として本格的に使うには腰が引けている感じだったりします。たぶんこれはまだ自分がベストプラクティスを持てていないってことなのでしょうが。</p><p><br /></p><p>まあせっかくなので<a href="https://github.com/yacchin1205/simple-lucene-gosen-sample">github</a>にも放置してゆきます。</p>]]>
    </content>
</entry>

<entry>
    <title>あそぼう。  [Kosen Advent Calendar By Teachers  12/19]</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2012/12/kosen-advent-calendar-by-teachers.html" />
    <id>tag:yzwlab.net,2012:/blog//10.547</id>

    <published>2012-12-19T10:20:44Z</published>
    <updated>2012-12-19T13:27:48Z</updated>

    <summary>こんにちは、フリーランス開発者の谷沢 @yacchin1205 といいます。元産...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[<p>こんにちは、フリーランス開発者の谷沢 <a href="http://twitter.com/yacchin1205">@yacchin1205</a> といいます。元産技高専の実験担当の非常勤講師という特殊な立場ではあるのですが  Teacher  面してつらつらと<a href="http://kosen-teachers.tumblr.com/about">Kosen Advent Calendar By Teachers</a>の流れで書かせていただきたいと思います。</p><p><br /></p><p>まずはかるく自己紹介を。自分は東京高専情報工学科を出て静岡大学情報学部に編入学、電通大の情報システム学研究科で修士をとってから、博士後期課程在学中にベンチャー企業活動にハマってそのまま満期退学、という、お世話になった先生方には大変なご迷惑をおかけするようなタイプの人間です。(もし読んでおられる先生がおられましたらほんとうにすみません。)<br /></p><p>お仕事的には、学部時代に学生ベンチャーで企業システム開発の勉強をさせていただいたり、修士時代にオンラインゲーム開発会社に参加させていただいたり、それ以降は次世代DVD開発にかなりどっぷり入らせていただいたりしました。今はフリーランスとして、とある研究所でクラウドの基盤をメンテナンスしたり大学で研究開発活動に参加させていただいたりしています。フリーランスなので開発以外にも本を書くお手伝いをさせていただいたり、講師などさせていただく機会もあったりで、周りの方のお世話になりつつ興味のあることをさせていただいていたりします。</p><p><br /></p><p>まあそんな流れで本能の赴くままに生きている感じの人間ですが、おととし、去年と産技高専の実験担当の人手が足りないということで少しお手伝いさせていただく機会がありました。それなりに現在進行で仕事で技術を使っている人間が、技術を学ぶひとたちにさてどんなことを伝えられるかな？ということで色々考える機会になりました。</p><p>在学中のみなさんには伝えたいことは山ほどあるわけですが(<b>ちゃんと期限内にレポートを出してとか。</b>)、今回は、あえて<b>あそぼう</b>などというキーワードでつらつらと記事を書こうと思います。<br /></p><p><br /></p>









]]>
        <![CDATA[<p><font style="font-size: 1.5625em;"><b>あそびが勉強への入り口</b></font><br /></p><p>わりと雑多に仕事させていただいている自分ですが、信条は「働いたら負け」です。アイドルマスターシンデレラガールズ双葉杏さんで有名ですね。実践はできていないわけですけれども。</p><p>お金をいただくのに最低限の仕事をしている片手間で、こんなあそびをやっていたりします。</p><ul><li><a href="http://gwtmmd.appspot.com/">MikuMikuDance on GWT実験場</a> (Chromeでみてね)</li><li><a href="http://www.slideshare.net/yacchin/gcs2012-nadec">GCS2012 LT資料</a> (↑をネタにしたプレゼン)</li></ul><p>簡単に説明させていただくと、WebGL(ブラウザで3D関連表示を行う技術)に対応しているブラウザで開くと、今をときめく電子の歌姫初音ミクさんが表示されるという、まあそれだけのものです。</p><p><br /></p><p>ここ数年MikuMikuDanceというソフトウェアから3Dコンテンツの生態系がより身近になり、見慣れた感があるネタです。もともとHTML5あたりの界隈をうろうろしていたこと、ミクさんは俺の嫁なのに近くにいないのはおかしいのでつくったというそれだけの話なのですが、思いつきでそんなことを始めるとこんなことを勉強する(しなおす)羽目になります。</p><ul><li><p style="margin: 0px">行列に関する計算</p></li><li><p style="margin: 0px">物理的な特性に関する計算</p></li><li>3D関係のライブラリのさわり方<br /></li></ul><p>この界隈はネットを探せば色々情報が見つかって、簡単に作れるだろうと高をくくってはじめた作業ですが、いざはじめてみると情報を読み解けない。語彙や思考のモデルが自分の中にないため、いっぱい情報があってもそれが意味するところをすぐに把握できないわけです。<br /></p><p>で、結局、久しぶりに高専時代の教科書を引っ張りだしてきて、それなりにおじさんになった脳みそでいっしょうけんめい勉強しながらこういったものを作る。といったことが自分のあそびです。あれやこれや考えながら実装してはミクさんがうまく表示できたりできなかったりして一喜一憂するのはなかなかよいものだったりします。</p><p><br /></p><p>他には、Arduinoのようなマイコンで動くおもちゃを作るときには電子回路の勉強が、ネットワークから得た情報をあれやこれや料理してあそぶときには統計の勉強が使えたりします。個人差はあるかもしれませんが、自身も高専でそれなりに横断的に勉強をしたり実験をしてきたことで、こういったあそびに対してあまりハードルなくはじめられているのかもしれません。</p><p><br /></p><p><font style="font-size: 1.5625em;"><b>おもちゃはたくさんある</b></font><br /></p><p>あそびというのはおもちゃがあるとなお楽しいものです。</p><p><br /></p><p>情報であそぶ人たちにとってのおもちゃは、入力データと計算能力です。</p><p>入力データとなるのはネット上の情報あたりが面白そうです。ネット上の情報は、収集の仕方にもよりますがもろもろ情報源の規約の範囲でならば無償で入手することができます。また、身近なものとしてはセンサーなどはどんどん安価になっていますし、USB経由でアクセスできたり以前と比べると数段お手軽に扱うことができるのでよいかもしれません。</p><p>計算能力はAmazon EC2のようなクラウド上でほしい時にほしいだけ(お金を払わなければならないですが)確保することができます。社会人的には月々1000円以内くらいで計算機が確保できればまあそれなりに万々歳です。自分は一度お金まわりがよいときにAmazon EC2に仮想マシンを100台ほど確保して一日ぶん回してあそんで1万～2万くらい払った記憶がありますが、本来100台物理的なマシンを確保して面倒を見るコストを考えれば、まったく問題ありません。財布にはそれなりにダメージがありますが。</p><p><br /></p><p>ここまで説明したのは仮想世界（ネット）であそぶ場合ですが、現実世界（物理世界）であそぶ場合はまた少し違ってきます。</p><p>入力データとなるのはセンサーが楽しいです。温度センサーなどは簡単に取り扱えるようパッケージされてるものでも1000円くらいで買えます。加速度センサーやGPSであそんでみるのも楽しいかもしれません。</p><p>また、計算能力はArduinoのようなお手軽マイコンを買ってくるのがよいかもしれません。数千円で、簡単な文法のプログラミング言語でプログラムしてセンサーから値を拾ってきてシリアルで母艦PCに送って処理、みたいなことができそうです。温度センサーの値を時間軸にプロットしていくだけでも、部屋のエアコンがどのようなポリシーで温度制御をしているのかが見えて面白かったりします。</p><p>現実世界の場合は出力方法もバリエーションがあります。LEDマトリックスにドット絵を表示するおもちゃをつくったり、<a href="http://www.nicovideo.jp/watch/sm18836163">サーボモーターでスカートをめくる</a>のもよいですね。</p><p><font style="font-size: 1.5625em;"><b><br /></b></font></p><p><font style="font-size: 1.5625em;"><b>あそぼう</b></font><br /></p><p>どうしても、仕事だと、取り組む前にその物事を分析して、利益やコストを考えてどうやるかみたいなことを考えなければなりません。お金をいただくのだし、周りの人を巻き込むことになるので、それは当然のことなわけですが。仕事ははじめのほうほどいっしょうけんめいやって、あとはどんどん楽になるのがもっともよい形だと思っています。(できるかどうかは置いておいて。)</p><p>一方、あそびは何も考えずに思いつきではじめるのがよいと思っています。で、壁にぶつかったあとで思いっきり考える。とりあえず死なずに生傷程度ならばまあ自己責任で笑ってすみますし、死にそうだったらはじめから思いつきなのでやめればよいです。「嫁を表示するまでは寝ない」とかやってしんどい思いをするのもまあありです。止めません。</p><p>そうやってあそんでいると、失敗や成功のデータベースが頭の中に蓄積されていくような気がします。それが仕事に役立つかもしれません。これはほとんど自分の希望なわけですが。いや本当あそんでばっかりで関係者各位ほんとうにすみません。</p><p><br /></p><p><br /></p><p>とまあ、そんなことをつらつら思いまして、講師のときにも授業が終わったあとに少しあそびのネタを披露させていただいたりしていたわけです。少しでもあそんでくれる学生さんが増えるといいなと思いつつ。<br /></p><p>フリーランスなぞという身分でやらせていただいているわけですが、世の中をみると、自分の時代は文句なしの超大手企業だったはずの企業が軒並み大変な目に遭っています。自分もお仕事を一緒にさせていただいた会社は何社かあるのですが、彼らは決して怠けていたわけではなく、むしろ非常に勤勉にやってきたはずです。自分もリーマンショックという巨大イベントをベンチャー企業役員(なんちゃって)という形で見ておそろしい思いをしたわけですが、まだまだ色々なイベントが目白押しのような気がしてなりません。</p><p>そんな中で、あそびで多様性を保ちつつ、何がきてもそれなりに対応できちゃうよ、という生き方を目指すのもそれなりにありかもしれません。修羅の道のような気がしなくもないですが。</p><p><br /></p><p>あっ。あと、あそんだらまわりの人に見せて自慢するのもいいですね。<a href="http://makebooth.com/booth/yacchin1205">こんな感じ</a>で。<br /></p><p><br /></p>]]>
    </content>
</entry>

<entry>
    <title>12/6 Eucalyptusを見つめるMuninプラグインをJavaで書いてみた</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2012/12/126-eucalyptusmunin.html" />
    <id>tag:yzwlab.net,2012:/blog//10.546</id>

    <published>2012-12-06T07:07:48Z</published>
    <updated>2012-12-06T13:39:43Z</updated>

    <summary>去年くらいから@jxta先生や@mnagakuさんとEucalyptusのお世話...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    <category term="cloudapi" label="Cloud API" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eucalyptus" label="Eucalyptus" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[<p>去年くらいから<a href="http://twitter.com/jxta">@jxta先生</a>や<a href="http://twitter.com/mnagaku">@mnagakuさん</a>とEucalyptusのお世話をさせていただいているなんでも屋です。</p><p><a href="http://atnd.org/events/34311">Eucalyptus Advent Calendar 2012 JP</a>に参戦させていただきます。<br /></p><p><br /></p><p>俗にいうプライベートクラウドという奴なのですが、やってみると意外とお世話が大変。ということでその中で試行錯誤してみていることをネタに書いてみます。</p><p><br /></p><p><font style="font-size: 1.5625em;"><b>何やってるの？</b></font></p><p>色々なところで論文とか出しているから名前出してしまってもいいかなー、くらいに思ったわけですが、一応固有名詞は伏せつつ。<br /></p><ul><li>Eucalyptusのバージョンは1.6.2で、これが17セットある。内訳は約100コア×10, 約50コア×5, 約160コア×1, 約240コア×1。<br /></li><li>用途はWindows仮想マシンでリモートデスクトップを使ったり、Linuxで研究目的の計算クラスタを構築したりとかさまざま。</li><li>性能測定などを行うことがあるため、オーバーコミットはしない。</li></ul><p>みたいな感じになっています。少なくともお世話している人間の数に比べると多い気がします。わけがわからないよ。</p><p>で、さらに、</p><ul><li>仮想マシンではなく物理マシン貸しタイプのクラウドもあり、上のEucalyptusの一部はこの上に載っている</li><li>この物理マシン貸しクラウドはネットワークをOpenFlowで制御している</li></ul><p>みたいな仮想化基盤のミルフィーユのような状態なわけです。とてもイヌカレー空間な感じがしますね。</p><p><br /></p>]]>
        <![CDATA[<p><font style="font-size: 1.5625em;"><b>何が大変なの？</b></font><br /></p><p>まあそんな感じの仮想化基盤を組織内の方々にお貸しするわけですが、色々と大変です。</p><ul><li><b>トラブルの原因特定が大変</b></li><ul><li>トラブルが起きた時にミルフィーユ状態のどの層の何が悪さしてるのかなかなかわかりません。それぞれが相互に影響しあっているのでなんだかよくわからない。
情報が足りないとたいてい各担当者はお互いに「お前が何か悪いことしてんじゃないの？」的なことしか言えなくなるので非常にソウルジェムが濁ります。</li></ul><li><b>リソースの分配が大変</b></li><ul><li>Amazon
みたいな超覇王な感じのパブリッククラウドはちゃんとリソース単位で金も取ってるし相応にスケールしていくのでリソース使いたい放題のわがままな利用者に対しても対応できますが、プライベートクラウドは予算の割り当て方式などの制約上あらかじめ計画した量の計算リソースしか提供できません。一方、もともと
EucalyptusはAmazonのAPIをなぞっているので基本的に中身は見えない。隠蔽は仮想化の重要なポイントではあるのですが、クラウド全体が
どんなにカッツカツな状態で動いているかも隠蔽してしまうので、「ようわからんがリソースが確保できなくて動かないぞゴルァ」みたいなことを利用者の方から言われてまた俺のソウルジェムが濁ります。</li></ul><li><b>新参者の扱いが大変</b></li><ul><li>みなさんご存知のとおりEucalyptusのようなクラウド基盤はいくつか現れてきていて、「Eucalyptusの1.6.2なんて古いのでなくOpenStack使おうぜ」みたいな展開になったりします。(dodai-deployとかやってる組織だし。) そうなると　「どうやって今あるEucalyptusと整合性をとりつつ管理するんですかそれ」みたいな感じになって、もはやアルティメットまどか神に俺の存在を生まれる前に消し去ってもらう展開しか見えません。<br /></li></ul></ul><p>と、
結構な大変な任務になってくるわけですが、一方で俺にはTwitter上で #precure やら #garupan 
やらハッシュタグをつけつつ草を生やすという重大な業務があるわけで、いかに人間の手間を減らしつつ状況を把握してうまいこと立ちまわるかみたいなことを日々考えることになるわけです。</p><p><br /></p><p>で、可視化という方向に走っているわけですが(研究会発表くらいはさせていただいていて、<a href="http://www.slideshare.net/yacchin/">slideshare</a>にアップしてあります)、今回はEucalyptus Advent Calendarっぽい感じのネタということで思いついた、<b>MuninのプラグインをJavaでDasein Cloud <span class="caps">APIなるものを使って</span>書いてみたぜ！</b>的なことを書きます。</p><p>Munin
はサードパーティのプラグインが充実しているので、できあいのプラグインを持ってくることもできるわけですが、少なくとも自分が置かれている状況は時に
よって見たいパラメータの組み合わせがあれやこれや変わってしまうので、(できるだけ少ないコード量に抑えつつ)コードを書く、ということをやったほうが
全体的にはスムーズに対応できるんじゃないか？みたいな感じもありこんなことをやってみています。</p><p><br /></p><p><font style="font-size: 1.5625em;"><b>材料</b></font><br /></p><ul><li><b>Munin</b>&nbsp; <a href="http://munin-monitoring.org/">http://munin-monitoring.org/</a><br /></li><ul><li>サーバの監視ソフトウェア。Munin masterがとりまとめ役になって複数のMunin nodeからやってくる情報をグラフにしてくれたり一定値を越えたりすると教えてくれたりする。<br /></li><li>プラグインを作るのが簡単。Munin nodeに一定のルールを満たしたテキストを標準出力に吐くような実行可能ファイルを置いてあげると、Munin masterの設定など変えることなく監視内容を増やすことができる。</li><li>ここではMuninはインストール・設定されているという前提で考えることにする。<br /></li></ul><li><b>Dasein Cloud</b> <b><span class="caps">API</span></b>&nbsp; <a href="http://dasein-cloud.sourceforge.net/">http://dasein-cloud.sourceforge.net/</a><br /></li><ul><li>Amazon <span class="caps">EC2</span>やEucalyptusやOpenStackといったクラウド基盤に対するアクセス用のAPIの差異を吸収する抽象APIとその実装。昨日「なんか書かなきゃ」と思ってググって見つけたレベル。<br /></li><li>Javaでわりと簡単にかける。</li></ul></ul><p>こいつらを組み合わせて、とりあえず今回はネタとして、</p><ul><li>ユーザごとのインスタンス数</li><li>ユーザごとのイメージ数</li><li>イメージごとのインスタンス数</li></ul><p>をグラフ化するようなプラグインを作ってみることにします。</p><p><br /></p><p><font style="font-size: 1.5625em;"><b>構成</b></font></p>こんな感じです。こうしておけばOpenStackにしようぜって言われてもコード使いまわせるよね。よね。という話です。<br /><a href="http://yzwlab.net/blog/assets_c/2012/12/%EF%BC%88%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%EF%BC%891-126.html"><img src="http://yzwlab.net/blog/assets_c/2012/12/%EF%BC%88%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%EF%BC%891-thumb-400x300-126.jpeg" alt="（タイトル）1.jpeg" class="mt-image-none" style="" height="300" width="400" /></a><br /><br />

<p><font style="font-size: 1.5625em;"><b><br /></b></font></p><p><font style="font-size: 1.5625em;"><b>バイナリのダウンロード</b></font></p><p><a href="http://sourceforge.net/projects/dasein-cloud/files/">SourceForge</a>から<b>dasein-cloud-2012.04.zip</b>をダウンロードします。最新版はgithubに移ったようですが、どうもeuca版の実装がなく(aws版を使えという話っぽい)、ウチのEucalyptusは1.6.2と古いので地雷の香りがしたので華麗にスルー。</p><p><b><br /></b></p>

<p><font style="font-size: 1.5625em;"><b>とりあえずクラウドの情報にアクセスしてみる</b></font></p>パッケージを展開すると、コンパイル済みのjar一式が取り出せます。主に利用するのは以下のディレクトリに格納されているjar。<br /><br /><ul><li>lib/shared</li><li>lib/providers/eucalyptus<br /></li></ul><p>で、これらをclasspathに追加してあげると、以下のような流れでDasein Cloud <span class="caps">API</span>を使っての情報取得ができるようになります。</p><ol><li>org.dasein.cloud.ProviderContextインスタンスにクラウドへのアクセスに必要な設定情報を詰める。</li><li>アクセス対象に応じたorg.dasein.cloud.CloudProviderの実装クラスを生成する。</li><li>CloudProvider.connect(ProviderContext)する。</li><li>CloudProviderから各種情報アクセス用のサービスインスタンスを取得していじくり回す。</li></ol><p><br /></p><p>実際のコードとしてはだいたいこんな感じ。<br /></p>


<pre class="prettyprint">import org.dasein.cloud.CloudProvider;
import org.dasein.cloud.compute.ComputeServices;
import org.dasein.cloud.compute.MachineImage;
import org.dasein.cloud.compute.MachineImageSupport;
import org.dasein.cloud.euca.Eucalyptus;

...
ProviderContext ctx = new ProviderContext();

ctx.setAccountNumber(getProperty("EC2_USER_ID"));
ctx.setAccessPublic(getPropertyBytes("EC2_ACCESS_KEY"));
ctx.setAccessPrivate(getPropertyBytes("EC2_SECRET_KEY"));
String url = getProperty("EC2_URL");
if (url != null) {
	final String SERVICE_NAME = "/Eucalyptus";
	if (url.endsWith(SERVICE_NAME)) {
		url = url.substring(0, url.length() - SERVICE_NAME.length());
	}
}
ctx.setEndpoint(url);
ctx.setRegionId("Eucalyptus");
ctx.setX509Cert(getPropertyBytesFromFile("EC2_CERT"));
ctx.setX509Key(getPropertyBytesFromFile("EC2_PRIVATE_KEY"));

CloudProvider provider = new Eucalyptus();

provider.connect(ctx);
ComputeServices services = provider.getComputeServices();
MachineImageSupport imageService = services.getImageSupport();
Iterable&lt;MachineImage&gt; images = imageService.listMachineImages();
for (MachineImage image : images) {
	// イメージごとの処理
}
</pre>


<p>見ての通り、Eucalyptusに対応するにはnew Eucalyptus()のところを別のクラウド向けの実装クラスに差し替えてあげればよいという寸法(ProviderContext設定の手順は調整しなければならないけど)。やったね。</p><p><b>地雷</b><br /></p><p>と思ったものの、動作確認すると何かがおかしい。</p><p>ど
うやらdasein-cloud-eucaのVirtualMachine.getProviderOwnerId()の実装が、describe 
instancesの結果からではなく、アクセスしている本人(ProviderContext.setAccountNumber された値) 
を返すようになっていた模様。Amazonではそれでいいと思うわけですが、EucalyptusってマルチユーザだからReservationから
ownerIdとらないとダメだよね？多分。</p><p>ということでdasein-cloud-eucaだけsourceforgeからsvn checkoutしてアレコレします。Mavenベースのプロジェクトだから比較的楽。</p>
<p>org.dasein.cloud.euca.compute.Instance.toVirtualMachine(org.w3c.dom.Node
 instance)の		
server.setProviderOwnerId(provider.getContext().getAccountNumber());
なる行の下に以下のコードを書き足してあげる。(適当)</p>


<pre class="prettyprint">NodeList siblings = instance.getParentNode().getParentNode().getChildNodes();<br />for(int i = 0; i &lt; siblings.getLength(); i ++) {<br />	Node sibling = siblings.item(i);<br />	if(sibling.getNodeName().equals("ownerId")) {<br />		String value = sibling.getFirstChild().getNodeValue().trim();<br />		server.setProviderOwnerId(value);<br />	}<br />}
</pre>


<p>で、あとはmvn compile jar:jar みたいにしてあげると所望の情報が得られるようなjarファイルを得ることができます。これを先のlib/providers/eucalyptusのものと置き換えてあげればひと安心。<br /></p><p><br /></p>
<p><font style="font-size: 1.5625em;"><b>Muninの流儀にしたがってみる</b></font></p>
<p>
Muninは /etc/munin/plugins 
ディレクトリに実行ファイルを置いてあげると勝手にそれをプラグインとして認識してくれます。この実行ファイルが最低限以下のように振る舞うようにしておくとあとはMunin masterさんとMunin nodeさんが協力してデータ収集、グラフ描画などしてくれます。<br />
</p>
<p>
<b>引数にconfigが指定された場合、</b>グラフの描き方を標準出力に吐き出してあげるようにします。詳しくは <a href="http://munin-monitoring.org/wiki/protocol-config">protocol-config</a> 参照。<br />
</p>


<pre class="prettyprint">graph_title Images on Eucalyptus
graph_category eucalyptus
graph_args --lower-limit 0
admin.label admin
admin.draw AREASTACK
TESTUSER1.label test1
TESTUSER1.draw AREASTACK
TESTUSER2.label test2
TESTUSER2.draw AREASTACK
</pre>


<p>
<b>引数に何も指定されなかった場合、</b>グラフの値を標準出力に吐き出してあげるようにします。<br />
</p>


<pre class="prettyprint">admin.value 9
TESTUSER1.value 3
TESTUSER2.value 8
</pre>


<p><br /></p><p>こんな振る舞いをするJavaプログラムを作成し、/etc/munin/plugins/以下にこのJavaプログラムを
キックするようなスクリプトを書いてあげます。で、/etc/init.d/munin-node 
restartして少し待つとこんな感じのグラフが作成されはじめます。</p><p><a href="http://yzwlab.net/blog/assets_c/2012/12/graphexample_imageowners-117.html"><img src="http://yzwlab.net/blog/assets_c/2012/12/graphexample_imageowners-thumb-300x189-117.png" alt="graphexample_imageowners.PNG" class="mt-image-none" style="" height="189" width="300" /></a></p>

<p>テスト環境とは言え少しキーワードが入っていたのでマスクしてありますが、上のTESTUSER1だとかTESTUSER2だとかがグラフ中に項目として現れるようになります。</p><p><br /></p><p>上は「誰が何個イメージを持っているの？」のグラフで、こんな感じで「今誰がインスタンスを使っているの？」とか「今どんなイメージがインスタンスに使われているの？」みたいなことがわかるグラフも作ってみました。画像はちょっとした負荷テストの最中の様子。</p><p><a href="http://yzwlab.net/blog/assets_c/2012/12/graphexample_vmowners-120.html"><img src="http://yzwlab.net/blog/assets_c/2012/12/graphexample_vmowners-thumb-300x182-120.png" alt="graphexample_vmowners.PNG" class="mt-image-none" style="" height="182" width="300" /></a><br /></p><p><a href="http://yzwlab.net/blog/assets_c/2012/12/graphexample_images-123.html"><img src="http://yzwlab.net/blog/assets_c/2012/12/graphexample_images-thumb-300x204-123.png" alt="graphexample_images.PNG" class="mt-image-none" style="" height="204" width="300" /></a></p>
<div><p>とまあこんな感じで、調査～実装だいたい正味4～5時間くらいでまあなんかそれっぽいものができるわけです。</p><p><br /></p><p>つ
くづく感じるのは、Eucalyptusみたいな複数の要素の合わせ技みたいなものを健康的に動かし続けるためには結構いろいろと目を配ってあげないといけないですねえ、というところです。面白いからこそ、気をつけてあげないと希望から絶望への相転移でうんたらかんたらしてしまうわけです。</p></div>]]>
    </content>
</entry>

<entry>
    <title>ブログも</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2012/12/post-132.html" />
    <id>tag:yzwlab.net,2012:/blog//10.545</id>

    <published>2012-12-02T13:07:46Z</published>
    <updated>2012-12-02T13:10:38Z</updated>

    <summary>Twitterばっかりを思いつきでやっている日々だったわけですが、色々興味があっ...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[Twitterばっかりを思いつきでやっている日々だったわけですが、色々興味があったりお誘いいただいたりでAdvent Calendarなるものをやってみようと思うのですよ。<br /><br />ふと原稿書きなどをご指名いただくこともあったりなんだりなので、文章体力的な何かをつけておこうということで。<br />]]>
        
    </content>
</entry>

<entry>
    <title>JenkinsでFEST-Swing</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2012/07/jenkinsfest-swing.html" />
    <id>tag:yzwlab.net,2012:/blog//10.544</id>

    <published>2012-07-17T14:19:39Z</published>
    <updated>2012-07-18T01:15:50Z</updated>

    <summary> はい。ひさびさとかそういうレベルではない。仕事ばっかりしている。さてさて、ここ...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>はい。ひさびさとかそういうレベルではない。仕事ばっかりしている。</div><div><br /></div><div>さてさて、ここ最近何かの反動でテスティングにハマっております。なんか定期的に波が来ますね。テストの。</div><div>SeleniumとかFEST-Swingとか、UI的な部分をテストすることによって精神の平穏を得るということをやっているわけですが、やっぱりJenkinsでもこの手のテストを定期的に走らせて、「Jud. Jud.」とか満足気な顔をしたいわけです。精神の平穏を得るために。</div><div><br /></div><div><br /></div><div><b>Xvfbを試してみる</b></div><div><br /></div><div>で、FESTの記事で<a href="http://docs.codehaus.org/display/FEST/Running+FEST+under+Xvfb">Running FEST under Xvfb</a>みたいな割とそのまんまの記事があったので試してみたわけです。</div><div>そうすると、こんな感じの例外が。</div><div><br /></div><div><pre style="color: rgb(0, 0, 0); ">org.fest.swing.exception.ActionFailedException: Focus change to javax.swing.うんぬんかんぬん</pre><pre style="color: rgb(0, 0, 0); "><br /></pre>どうも、コンポーネントにフォーカスを設定しようとしているのだけど、hasFocus()がなかなかtrueになってくれなくて怒る。ということらしい。</div><div><br /></div><div>ググるとWindow Managerに変更を加えることによってうまく行っている人がいる。自分も色々試行錯誤して、x11vncでXvfbで作ったdisplayにアクセスしてあげると、その間にJenkins上で走ったテストは上の例外が発生しないということまではわかった。糸口としては掴めた気がするのだけどなんか時間を食いそうな気がする(勉強しなくてはならなさそうだけど、ここではそこまで時間を使いたくない)ということで別の簡単な方向がないか探ることに。</div><div><br /></div><div><br /><b>Xvnc Pluginでがんばる</b><br /><br /></div><div>いろいろと探ってみると<a href="https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin">Xvnc Plugin</a>なるものが。なんだよー居たなら居るってはじめから言えよー。ハハッ。</div><div>試してみたらうまくいったので、以下インストールメモ。自分用。</div><div><br /></div><div>以下Debianで作業している。まず、vncserverとwindow managerを適当にインストール(もっとコンパクトにできるかも？)</div><div><br /></div><div># apt-get install vnc4server</div><div><div># apt-get install gnome-session</div><div><br /></div><div>apt-get installするときに設定を聞かれる。とりあえずdefaultを指示しておく。</div><div>次に、一度vncserverを起動しておいてあげる。Jenkinsの実行ユーザで行なっておくこと。(homeに.vncなるディレクトリができる。)</div><div>vncserverは初回起動時にパスワードを聞いてくるのだけど、Jenkinsから呼ばれるタイミングでこのパスワードの問い合わせが起きるとエラー終了してしまうということらしい。</div><div><br /></div><div># su - jenkins</div><div>$ vncserver :1&nbsp;</div><div>　　適当なパスワードを入力(なんでもよい)</div><div>$ vncserver -kill :1</div><div><br /></div><div>これでvncserverの準備はOK。次、JenkinsのWebインタフェースを開いて、Xvncプラグインをインストールしてあげる。</div><div><br /></div><div>(1)[Jenkinsの管理] - [プラグインの管理]をクリック</div><div>(2)[利用可能]タブをクリック</div><div>(3)Xvnc Pluginにチェック</div><div>(4)[再起動せずにインストール]を選択</div><div><br /></div><div>これでXvnc Pluginがインストールされる。Jenkinsのプラグイン機構は簡単ですなあ。</div><div>最後にXvnc Pluginにvncserverのコマンドの呼び方を教えてあげる。こんな感じ：</div><div><br /></div><div>(5)[Jenkinsの管理] - [システムの設定]をクリック</div><div>(6)Xvncの項目を探し、[Command line]に、</div><div>vncserver :$DISPLAY_NUMBER -geometry 800x600</div><div>などと書く。($DISPLAY_NUMBERが、実行時に適当なディスプレイ番号に置き換えられるという仕掛けらしい)</div><div><br /></div><div><a href="http://yzwlab.net/blog/jenkins-xvnc-001.PNG"><img alt="jenkins-xvnc-001.PNG" src="http://yzwlab.net/blog/assets_c/2012/07/jenkins-xvnc-001-thumb-800x132-110.png" width="800" height="132" class="mt-image-none" /></a></div><div><br /></div><div>(7)[保存]ボタンを押す</div><div><br /></div><div>これで、Jenkinsに、Xvncを使うということと、vncserverの呼び方を教えてあげたことになる。Jenkins全体の設定はこれで終了。</div><div><br /></div><div>あとは、各プロジェクトの設定に[Run Xvnc during build]なる項目が現れるので、FEST-Swingなどを使うプロジェクトの場合はこれをチェックしてあげる。</div></div><div><br /></div><div><a href="http://yzwlab.net/blog/jenkins-xvnc-002.PNG"><img alt="jenkins-xvnc-002.PNG" src="http://yzwlab.net/blog/assets_c/2012/07/jenkins-xvnc-002-thumb-800x140-112.png" width="800" height="140" class="mt-image-none" /></a></div><div><br /></div><div><br /></div><div><br /></div><div>これで、GUIを使うようなテストもきちんと走ってくれます。またひとつ平穏な生活に近づきましたね。（誤認）</div>]]>
        
    </content>
</entry>

<entry>
    <title>ははっ</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2010/03/post-131.html" />
    <id>tag:yzwlab.net,2010:/blog//10.543</id>

    <published>2010-03-14T15:17:19Z</published>
    <updated>2010-03-14T15:19:21Z</updated>

    <summary> ははっワロス。ちゃんと生きてますよ的記事。頻繁に更新するのはこっち。やざわラボ...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>ははっワロス。</div><div><br /></div><div>ちゃんと生きてますよ的記事。</div><div><br /></div><div>頻繁に更新するのはこっち。</div><div><br /></div><div><a href="http://ameblo.jp/yacchin1205">やざわラボブログ</a></div><div><br /></div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="P1000106.JPG" src="http://yzwlab.net/blog/2010/03/15/P1000106.JPG" width="300" height="400" class="mt-image-none" style="" /></span></div><div><br /></div><div>MTは好きなんだけどなんとなくアメブロになってしまうなー。</div><div>なんでだろ。</div>]]>
        
    </content>
</entry>

<entry>
    <title>生存確認</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/10/post-130.html" />
    <id>tag:yzwlab.net,2009:/blog//10.542</id>

    <published>2009-10-18T07:41:38Z</published>
    <updated>2009-10-18T07:42:49Z</updated>

    <summary> 生きてます。なんかこっちばっかりに書いてしまっていますorzameblo - ...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>生きてます。</div><div><br /></div><div>なんかこっちばっかりに書いてしまっていますorz</div><div><br /></div><div><br /></div><div><a href="http://ameblo.jp/yacchin1205/">ameblo - yacchinのブログ</a></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>お勉強</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/post-129.html" />
    <id>tag:yzwlab.net,2009:/blog//10.541</id>

    <published>2009-09-30T13:51:21Z</published>
    <updated>2009-09-30T13:56:01Z</updated>

    <summary><![CDATA[ 勉強せんとね、勉強。ってことで本買った。 &nbsp; パターン認識の本は仕事...]]></summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[<div><br /></div> 勉強せんとね、勉強。ってことで本買った。
<br />

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><br /></span><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="RIMG0037.JPG" src="http://yzwlab.net/blog/2009/09/30/RIMG0037.JPG" width="461" height="346" class="mt-image-none" style="" /></span>&nbsp;
<div><br /></div><div>パターン認識の本は仕事向け、Google App Engineの本は趣味で。&nbsp;</div><div>久しぶりに微分積分・フーリエ変換とかと格闘した。</div><div>ただ概念はしっかり覚えていたので、
まぁまぁなんとか理解できた。</div><div>たまにこういう勉強をすると頭がすっきりする。</div><div><br /></div><div><br /></div><div>明日はちょいと渋谷のGoogleオフィスに突撃してくる予定。（イベント参加のためだけど。）</div><div>一度行ってみたかったんだよなココ。</div><div><br /></div><div><a href="http://groups.google.co.jp/group/html5-developers-jp/browse_thread/thread/398856a044c2174d?pli=1">お祭り告知:HTML5 3Days Tech Talk &amp; Hackathon開催決定！</a></div><div><br /></div><div><br /></div><div><a href="http://groups.google.co.jp/group/html5-developers-jp/browse_thread/thread/398856a044c2174d?pli=1"></a>翻訳原稿、あと7段落でとりあえず（直訳レベルでは）完了！</div><div>あと手直しだー。
締め切りまでに終わるのやら・・・終わらせるけど。</div></div>]]>
        
    </content>
</entry>

<entry>
    <title>うへえ</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/post-128.html" />
    <id>tag:yzwlab.net,2009:/blog//10.540</id>

    <published>2009-09-26T02:44:37Z</published>
    <updated>2009-09-26T02:45:42Z</updated>

    <summary> やっぱりこっちにはぜんぜん書いてないという罠。アメブロにばかり書いてました。ラ...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>やっぱりこっちにはぜんぜん書いてないという罠。アメブロにばかり書いてました。</div><div><br /></div><div>ランキングとか出されるとムキになっていかんねー。</div><div>こっちはぼちぼちやります。ぼちぼち。</div>]]>
        
    </content>
</entry>

<entry>
    <title>Ameba研究</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/ameba.html" />
    <id>tag:yzwlab.net,2009:/blog//10.539</id>

    <published>2009-09-17T13:45:13Z</published>
    <updated>2009-09-17T13:47:56Z</updated>

    <summary> いろいろAmebaでどんなことができるのか知りたかったのでこっちでもブログ開設...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>いろいろAmebaでどんなことができるのか知りたかったのでこっちでもブログ開設。</div><div><br /></div><div><a href="http://ameblo.jp/yacchin1205/">yacchinのブログ(Ameba)</a></div><div><br /></div><div>一応両方に書いていきますんで。2日おきくらいに。</div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>おわた</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/post-127.html" />
    <id>tag:yzwlab.net,2009:/blog//10.538</id>

    <published>2009-09-12T16:53:17Z</published>
    <updated>2009-09-12T16:54:40Z</updated>

    <summary> おわった・・・やっぱり描きあがると気にくわない。あ、全身描く時間なんかないぜ！...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>おわった・・・やっぱり描きあがると気にくわない。</div><div>あ、全身描く時間なんかないぜ！マジ仕事おわらなくなる（泣）</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="RIMG0015.JPG" src="http://yzwlab.net/blog/2009/09/13/RIMG0015.JPG" width="461" height="346" class="mt-image-none" style="" /></span></div><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>ねよ・・・</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/post-126.html" />
    <id>tag:yzwlab.net,2009:/blog//10.537</id>

    <published>2009-09-11T17:16:34Z</published>
    <updated>2009-09-11T17:22:20Z</updated>

    <summary> 陰影決定・塗り分けまでオワタ。（塗り色は仮）ねよ。あとは明日以降。明日には描き...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>陰影決定・塗り分けまでオワタ。（塗り色は仮）</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="RIMG0013.JPG" src="http://yzwlab.net/blog/2009/09/12/RIMG0013.JPG" width="461" height="346" class="mt-image-none" style="" /></span></div><div><br /></div><div>ねよ。あとは明日以降。明日には描きあがるかな。</div><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>ペン入れ!!</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/post-125.html" />
    <id>tag:yzwlab.net,2009:/blog//10.536</id>

    <published>2009-09-11T15:21:31Z</published>
    <updated>2009-09-11T15:23:04Z</updated>

    <summary> 案外いいペースでペン入れ完了。コンビニで物資補給して塗り塗りへ。...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>案外いいペースでペン入れ完了。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="RIMG0012.JPG" src="http://yzwlab.net/blog/2009/09/12/RIMG0012.JPG" width="461" height="346" class="mt-image-none" style="" /></span></div><div><br /></div><div>コンビニで物資補給して塗り塗りへ。</div><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>NEEDLESS!!</title>
    <link rel="alternate" type="text/html" href="http://yzwlab.net/blog/2009/09/needless.html" />
    <id>tag:yzwlab.net,2009:/blog//10.535</id>

    <published>2009-09-11T12:56:40Z</published>
    <updated>2009-09-11T12:58:32Z</updated>

    <summary> あっはっはアコニー描きあがらないままNEEDLESSのディスクたんに浮気だよ浮...</summary>
    <author>
        <name>yacchin</name>
        <uri>http://yzwlab.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://yzwlab.net/blog/">
        <![CDATA[ <div><br /></div><div>あっはっはアコニー描きあがらないままNEEDLESSのディスクたんに浮気だよ浮気。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="RIMG0010.JPG" src="http://yzwlab.net/blog/2009/09/11/RIMG0010.JPG" width="461" height="346" class="mt-image-none" style="" /></span></div><div><br /></div><div>わりと一発目にしてはいいんじゃね？そのままペン入れしようか考えちう。</div><div><br /></div><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

</feed>
