<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEYEQ30-fCp7ImA9WhRXF0U.&quot;"><id>tag:blogger.com,1999:blog-9245921</id><updated>2011-12-25T12:01:42.354+09:00</updated><category term="数寄ノート" /><category term="仕事" /><category term="映画" /><category term="ePub" /><category term="メモ" /><category term="Clojure" /><category term="Tumblr" /><category term="アクィナス・キャプチャー" /><category term="技術" /><category term="日記" /><category term="アラビア" /><category term="読書" /><category term="生活" /><category term="英語" /><category term="アイデア" /><category term="健康" /><category term="イラスト" /><category term="自転車" /><category term="Objective-C" /><category term="百式企画塾" /><category term="おもちゃ" /><category term="アート" /><category term="pixiv" /><category term="ジョジョ" /><category term="音楽" /><category term="数学" /><category term="ダイエット" /><category term="ラノベ" /><category term="マンガ" /><title>サルノオボエガキ</title><subtitle type="html">en: saru no ovoegakky.&lt;br&gt;
deltamが興味を持ったことをそのまんま綴っていきます。技術系の話題が多め。</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://deltam.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>242</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/CLIZ" /><feedburner:info uri="blogspot/cliz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0AGR3o_eyp7ImA9WhRXF0U.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-8603619354649106694</id><published>2011-12-25T11:55:00.000+09:00</published><updated>2011-12-25T11:55:26.443+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-25T11:55:26.443+09:00</app:edited><title>fill-queueでお手軽非同期処理</title><content type="html">この記事は&lt;a href="http://partake.in/events/393770ce-4637-4f07-bc14-a1f5120eab71"&gt;Clojure Advent Calendar 2011&lt;/a&gt;の25日目の記事として書いています。&lt;br /&gt;
あんまりホリデイっぽくないので、&lt;a href="http://deltam.blogspot.com/2011/12/overtone-clojure.html"&gt;Overtoneの記事&lt;/a&gt;と入替えて読むとちょうどいいですよ。&lt;br /&gt;
&lt;br /&gt;
前にClojureの&lt;a href="http://deltam.blogspot.com/2011/02/clojure.html"&gt;シーケンス操作関数の使い方一覧&lt;/a&gt;を書いたけど、最後に例示を挙げられなかったものがふたつ残りました。&lt;br /&gt;
seq-onは「何かをシーケンスとして扱いたいとき」というわり合い特殊なものなので良いとして、fill-queueはもう少し便利に使えそうなものなので何とか例示ができないかなーと思って簡単なファイルの変更監視スクリプトを書いてみました。&lt;br /&gt;
&lt;br /&gt;
まずは&lt;a href="http://richhickey.github.com/clojure-contrib/seq-api.html#clojure.contrib.seq/fill-queue"&gt;fill-queueのdoc&lt;/a&gt;を見てみましょう。&lt;br /&gt;
user=&amp;gt; (doc fill-queue)&lt;br /&gt;
-------------------------&lt;br /&gt;
clojure.contrib.seq/fill-queue&lt;br /&gt;
([filler-func &amp;amp; optseq])&lt;br /&gt;
&amp;nbsp; filler-func will be called in another thread with a single arg&lt;br /&gt;
&amp;nbsp; 'fill'. &amp;nbsp;filler-func may call fill repeatedly with one arg each&lt;br /&gt;
&amp;nbsp; time which will be pushed onto a queue, blocking if needed until&lt;br /&gt;
&amp;nbsp; this is possible. &amp;nbsp;fill-queue will return a lazy seq of the values&lt;br /&gt;
&amp;nbsp; filler-func has pushed onto the queue, blocking if needed until each&lt;br /&gt;
&amp;nbsp; next element becomes available. &amp;nbsp;filler-func's return value is ignored.&lt;br /&gt;
nil&lt;br /&gt;
&lt;br /&gt;
どうやら別スレッドで実行させる関数filler-funcを指定して、その関数でゴニョゴニョした値をqueueシーケンスとして受け取れるということらしい。filler-func内から値を返すときは引数fillに渡す。&lt;br /&gt;
非同期処理をシーケンスの流儀で取り扱えるっていうやつみたいですね。&lt;br /&gt;
&lt;br /&gt;
これだけだとイメージが沸かないので使用例をぐぐってみたらこんな記事が見つかりました。&lt;br /&gt;
&lt;a href="http://infolace.blogspot.com/2009/08/simple-webhooks-with-clojure-and-ring.html"&gt;The Infolace Story: Simple webhooks with Clojure and Ring&lt;/a&gt;&lt;br /&gt;
この海外記事を読むとRingサーバー処理になにかフックさせるときに使ってる。途中の図がわかりやすい。&lt;br /&gt;
&lt;br /&gt;
これでも使用例としてはいいんですけど、もうちょっと手元でいじれる例が欲しいのでファイルの最終更新日時を監視するスクリプトを書いて見ました。&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/804021.js?file=watch-file-status.clj"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
watching-loopがfiller-funcで実行される本体です。ループで1秒ごとにファイルの最終更新日時を監視、変わっていたらfillにプッシュ。スレッド名を出力するコードを入れてるので別スレッドで実行されてることがはっきりしますね。&lt;br /&gt;
実行するとこんな感じ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;$ echo happy &amp;gt; test.txt
$ clj watch-file-status.clj test.txt
watching... (seq-test.txt)
main thread: main
watching-loop thread: pool-2-thread-1
;; $ echo chrismas! &amp;gt;&amp;gt; test.txt
modified: seq-test.txt
datetime: 2011-12-25 11:29:28
;; Ctrl-C
$ cat test.txt 
happy
chrismas!
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
これでfill-queueの使用例を書くことができました。前々から気になってたのをアウトプットできてスッキリ。&lt;br /&gt;
もうクリスマスがどうとか言ってる時期じゃないよ！　大掃除、棚卸しが大事だよ！　リア充が爆発したら掃除が大変だよ！&lt;br /&gt;
&lt;br /&gt;
ではみなさん良い年末を。俺は年賀状を書きます。&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-8603619354649106694?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/mx4jrhSN-sQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/8603619354649106694/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=8603619354649106694" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8603619354649106694?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8603619354649106694?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/mx4jrhSN-sQ/fill-queue.html" title="fill-queueでお手軽非同期処理" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/12/fill-queue.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YARH04eCp7ImA9WhRQFUw.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-2296463402759854020</id><published>2011-12-10T18:21:00.001+09:00</published><updated>2011-12-10T18:59:05.330+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-10T18:59:05.330+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Overtone: Clojureで音楽を書こう</title><content type="html">&lt;br /&gt;
この記事は&lt;a href="http://partake.in/events/393770ce-4637-4f07-bc14-a1f5120eab71"&gt;Clojure Advent Calendar 2011&lt;/a&gt;の10日目の記事として書いています。&lt;br /&gt;
&lt;br /&gt;
12月1日からクリスマス25日まで毎日1ネタ、Clojureの記事を書くというこの企画。&lt;br /&gt;
せっかくなので前々から興味のあったOvertoneというライブラリの紹介をしてみようと思います。&lt;br /&gt;
&lt;a href="http://overtone.github.com/"&gt;Home // Overtone&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://github.com/overtone/overtone"&gt;overtone/overtone - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Overtoneは"Programmable Music"を目標とするシンセサイザーです。普通のシンセサイザーの操作とは違い、Clojureコードで音を作り音楽を書くことができます。&lt;br /&gt;
プログラマブル・シンセサイザーとしては&lt;a href="http://www.audiosynth.com/"&gt;SuperCollider&lt;/a&gt;というのが前からあるそうで、それをClojureでラップした作りのようですね。&lt;br /&gt;
この記事では導入の仕方と簡単な音の作り方、最後にとあるクリスマスソングをOvertoneで書いてみたいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Overtoneを使ってみる&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
leiningenを使うとけっこう簡単に始められます（&lt;a href="https://github.com/overtone/overtone/wiki/Installing-overtone"&gt;公式ドキュメント&lt;/a&gt;ではcakeでのやり方も書いてある）。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;$ lein new overtone-chrismas
$ cd overtone-chrismas&lt;/pre&gt;
&lt;br /&gt;
project.cljにOvertoneの設定をこんな感じに書き足します。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://gist.github.com/1454843#file_project.clj"&gt;deltam's gist: 1454843 — Gist&lt;/a&gt;
&lt;script src="https://gist.github.com/1454843.js?file=project.clj"&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;$ lein deps
$ lein repl&lt;/pre&gt;
&lt;br /&gt;
あとはこのREPL上でやっていきます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;音を作る&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
正直言ってまだよく分かってません。Overtoneは薄いラッパのようでSuperColliderのコマンドを知らないと分かりにくい。とりあえず&lt;a href="https://github.com/overtone/overtone/blob/master/README.md"&gt;README&lt;/a&gt;や&lt;a href="https://github.com/overtone/overtone/wiki/Getting-Started"&gt;Getting Started&lt;/a&gt;から使えそうなコードを持ってきて試してみました。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Internal Serverを立ち上げる&lt;/b&gt;&lt;br /&gt;
まずシンセサイザー用のサーバを立ち上げます。公式サイトによると内部サーバを起動する方法と外部サーバを使う方法があるみたいですが、ここでは内部サーバのほうを使います（外部サーバはSuperColliderのサーバに繋げる方法みたいなので別途インストールが必要。実際めんどい）。&lt;br /&gt;
こんな感じで内部サーバの準備をします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;user=&amp;gt; (use 'overtone.live)

; 内部サーバが起動するのでちょっと待つ
; いろいろメッセージが出た後にロゴが出てくる。
          _____                 __
         / __  /_  _____  _____/ /_____  ____  ___
        / / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
       / /_/ /| |/ /  __/ /  / /_/ /_/ / / / /  __/
       \____/ |___/\___/_/   \__/\____/_/ /_/\___/

                          Programmable Music.


Hello deltam, may this be the start of a beautiful music hacking session...
nil
user=&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ビープ音を鳴らす&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;注意&lt;/span&gt;：以下のプログラムは実行するときは、ヘッドホンや音量に気をつけましょう。打ち間違えてノイジーな音が耳を直撃！なことになりますよー。&lt;br /&gt;
あと内部サーバ起動のときに音声の出力先を決めてるらしく、途中からヘッドホンのコードを抜き差しすると音が聞こえなくなったりしました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/overtone/overtone/blob/master/README.md"&gt;README.md&lt;/a&gt;にあるサンプルを写経。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;user=&amp;gt; (demo 4 (pan2 (sin-osc 440)))
&lt;/pre&gt;
&lt;br /&gt;
4秒間（demo 4）、ステレオ音声で（pan2）、440ヘルツの音（sin-osc 440）を鳴らすというコードです。いろいろ数値を変えてどんな音になるのか試してみましょう！&lt;br /&gt;
&lt;br /&gt;
definstってやつを使うと楽器が定義できます。単純にビープ音を鳴らす楽器を定義しました。これだと(stop)を実行するまで止まらないので注意です。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;user=&amp;gt; (definst beep [freq 440] (sin-osc freq))
#&lt;instrument: beep=""&gt;
user=&amp;gt; (beep)
29
user=&amp;gt; (stop)
nil
user=&amp;gt; (beep 200)
29
user=&amp;gt; (stop)
nil&lt;/instrument:&gt;&lt;/pre&gt;
&lt;br /&gt;
これでだいたい音の作り方がわかりました！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;クリスマスソングを書いてみよう&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
上記の方法だと周波数を指定しないと音を鳴らせません。もっと単純にピアノのように曲を書けないかなーと思って調べてみたんですが、よく分かりません。&lt;br /&gt;
ライブコーディングの&lt;a href="http://vimeo.com/22798433"&gt;ムービー&lt;/a&gt;を見てみるとovertone.inst.pianoを使って曲を書いてるんですが、実際に使おうとすると「プラグインがないよー」と言われて使えない。たぶんSuperColliderにプラグインを追加して外部サーバに指定してOvertoneを立ち上げれば何とか成るのかな、と思うけど面倒臭いよね。&lt;br /&gt;
&lt;br /&gt;
なので今回は単純にドレミ音階の周波数をまとめて定義して、それで曲を書いてみることにしました。&lt;br /&gt;
課題曲はクリスマスの定番、「ジングルベル」（&lt;a href="http://ototama.com/music/folksong/score.php?scoreID=62"&gt;参考楽譜&lt;/a&gt;、ついでに&lt;a href="http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/jingleb.html"&gt;歌詞&lt;/a&gt;）。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://gist.github.com/1454843#file_core.clj"&gt;deltam's gist: 1454843 — Gist&lt;/a&gt;
&lt;script src="https://gist.github.com/1454843.js?file=core.clj"&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
ロードして演奏してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;user=&amp;gt; (use 'overtone-chrismas.core :reload-all)

          _____                 __
         / __  /_  _____  _____/ /_____  ____  ___
        / / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
       / /_/ /| |/ /  __/ /  / /_/ /_/ / / / /  __/
       \____/ |___/\___/_/   \__/\____/_/ /_/\___/

                          Programmable Music.


Hello deltam, may this be the start of a beautiful music hacking session...
nil
user=&amp;gt; (play-jingle-bells)
nil
&lt;/pre&gt;
&lt;br /&gt;
楽譜の読み方も分からぬまま適当に写したので、ちょっと間延びした感じだけどちゃんとジングルベルの曲になってます。&lt;br /&gt;
曲が演奏できるようになると楽しくなってきますね！&lt;br /&gt;
&lt;br /&gt;
まずは一番単純な方法で曲を書いて見ましたが、この方法だと音がぶつ切りになっていまいちです。&lt;a href="https://github.com/overtone/overtone/tree/master/examples"&gt;Examples&lt;/a&gt;を見るとちゃんと綺麗に音を鳴らす方法もあるので、興味が湧いた人は読むといいと思うよ！　&lt;a href="https://github.com/overtone/overtone/blob/master/examples/basic.clj"&gt;examples/basic.clj&lt;/a&gt;から読むと良いよ！&lt;br /&gt;
&lt;br /&gt;
ライブコーディングのムービーをみると”ドギャーン”とか”ピポポ”とかいろんな音が作れるみたい。&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="265" mozallowfullscreen="" src="http://player.vimeo.com/video/22798433?title=0&amp;amp;byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href="http://vimeo.com/22798433"&gt;Quick Intro to Live Programming with Overtone&lt;/a&gt; from &lt;a href="http://vimeo.com/user568137"&gt;Sam Aaron&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
では予定がある人は良いクリスマスを！　無い人はOvertoneで遊ぼうぜ！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-2296463402759854020?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/9gyOPdzVyuQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/2296463402759854020/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=2296463402759854020" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/2296463402759854020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/2296463402759854020?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/9gyOPdzVyuQ/overtone-clojure.html" title="Overtone: Clojureで音楽を書こう" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/12/overtone-clojure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MERHc7fyp7ImA9WhRRFUo.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-7562579262062869121</id><published>2011-11-28T22:13:00.001+09:00</published><updated>2011-11-29T21:56:45.907+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T21:56:45.907+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Clojureコードを性能測定する3つの方法</title><content type="html">&lt;br /&gt;
Clojureハッカソンである&lt;a href="http://partake.in/events/d4c5fafe-d94c-4ab0-b62c-82263012e646"&gt;Tokyo.clj#15&lt;/a&gt;に行って来ました。&lt;br /&gt;
&lt;br /&gt;
そこで前々から気になっていたClojureでの性能測定（プロファイリング）の方法について試してみたのでまとめます。&lt;br /&gt;
&lt;br /&gt;
性能測定といってもいろいろな切り口があるので、今回は「実行速度」と「メモリ使用量」に限定して調べて見ました。&lt;br /&gt;
その結果、次の3つが手軽でいいかなーと思ったので説明します。&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://richhickey.github.com/clojure/clojure.core-api.html#clojure.core/time"&gt;clojure.core/time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://richhickey.github.com/clojure-contrib/profile-api.html"&gt;clojure.contrib.profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visualvm.java.net/ja/gettingstarted.html"&gt;VisualVM&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
1,2はClojure用の性能測定ツール、3のVisualVMはJava用のJVMモニタリングツールです。それぞれ一長一短があるので、まずは使い方から説明していきます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;【clojure.core/time】&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
S式の実行速度を表示する関数です。&lt;br /&gt;
『プログラミングClojure』でもよく使われているから知っている人は多いでしょう。&lt;br /&gt;
測定用のサンプルとして&lt;a href="http://ja.wikipedia.org/wiki/%E7%AB%B9%E5%86%85%E9%96%A2%E6%95%B0"&gt;竹内関数&lt;/a&gt;を実装して計測して見ました。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;; たらい回し関数（竹内関数）
(defn tarai [x y z]
  (if (&lt;= x y)
    y
    (tarai
     (tarai (dec x) y z)
     (tarai (dec y) z x)
     (tarai (dec z) x y))))

user&gt; (time (tarai 19 16 11))
"Elapsed time: 13.304 msecs"
19&lt;/pre&gt;&lt;br /&gt;
REPL上でいちばん手軽に性能測定ができる方法ですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;【clojure.contrib.profile】&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
拡張ライブラリにあるプロファイラ用ライブラリです。&lt;br /&gt;
timeだと全体の実行時間しか分からなかったんですが、これを使うと測定したい部分をもっと細かく指定できます。&lt;br /&gt;
まずコードの中で測定したい部分をprofでキーワードとともに包んでやります。&lt;br /&gt;
そのあとtimeと同じようにprofileから呼び出してやると、指定部分ごとに実行時間の平均／最短／最大と実行回数をまとめた表を見せてくれます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;(defn prof-tarai [x y z]
  (if (&lt;= x y)
    y
    (prof-tarai
     (prof :arg-x (prof-tarai (dec x) y z))
     (prof :arg-y (prof-tarai (dec y) z x))
     (prof :arg-z (prof-tarai (dec z) x y)))))

user&gt; (profile (prof-tarai 10 5 2))
 Name      mean       min       max     count       sum
arg-x    117410         0   2127000       100  11741000
arg-y     70040         0   2960000       100   7004000
arg-z     64230         0   1668000       100   6423000
nil
&lt;/pre&gt;
&lt;br /&gt;
時間の単位はナノ秒です。&lt;br /&gt;
&lt;br /&gt;
以下のように*enable-profiling*にfalseを指定してやると、コンパイル時にプロファイル用コードを除去してくれるそうです。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;user&gt; (binding [clojure.contrib.profile/*enable-profiling* false]
      (macroexpand '(prof :abc (+ 2 3))))
(do (+ 2 3))
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
以下ちょっと不満点&lt;br /&gt;
timeと違って実行結果は返してくれません。結果表をプリントするだけで常にnilを返します。&lt;br /&gt;
さらに計測で使ってるSystem.nanoTime()はlong型を返しますが、数分かかるような重い処理だと途中で桁あふれを起こして止まる場合があります（Integerでキャストしている部分が怪しい）。&lt;br /&gt;
ナノ秒で測っていることから考えて測定精度を優先して作られているのかなーと思いました。&lt;br /&gt;
&lt;br /&gt;
Clojureメーリングリストを調べてみたら作者のStuart Sierraさんが&lt;a href="http://groups.google.com/group/clojure/browse_thread/thread/4490a1143f1c9a74/c986c7159e87cf22?lnk=raot"&gt;「half-bakedなんで本気でやるならJVMプロファイラ使ってね」&lt;/a&gt;と言ってました。&lt;br /&gt;
&lt;br /&gt;
ここらへん改良したのを作りたいなー。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;【VisualVM】&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
上2つはClojure純正ツールでしたが、こっちはJava用のツールをClojureに応用してみたというものです。&lt;br /&gt;
JVMをモニタリングしてメソッド単位で実行速度・メモリ使用量などを計測してくれます。&lt;br /&gt;
そのほかにもいろいろ機能があるみたいなので細かいことを公式サイト参照すべし（日本語ドキュメントあり）。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://visualvm.java.net/ja/gettingstarted.html"&gt;VisualVM 入門 — Java.net&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
VisualVMを起動してClojureのREPLを立ち上げると、左側のツリービューにREPLの動いているVMが表示されます。それをダブルクリックするとこんな画面が開きます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-UUHZk3YCG8g/TtOKToiNcxI/AAAAAAAAAWg/f945ybJiItg/s1600/visualvm-monitor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-UUHZk3YCG8g/TtOKToiNcxI/AAAAAAAAAWg/f945ybJiItg/s320/visualvm-monitor.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ここではCPU使用率とかヒープメモリ使用量のグラフを表示してくれます。このままでも十分有益なデータが得られますね。&lt;br /&gt;
プロファイル情報を得たいときは、［プロファイラ］のタブで画面を切り替えます。&lt;br /&gt;
［CPU］と［メモリー］のどっちかのボタンを押してから測定したいコードを実行すると、Javaのメソッド単位で処理速度やメモリ使用量を測ってくれます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-E7_XHkZ_e1s/TtOKsnJtYvI/AAAAAAAAAWw/KIqJkKnlMr4/s1600/markov-profile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://1.bp.blogspot.com/-E7_XHkZ_e1s/TtOKsnJtYvI/AAAAAAAAAWw/KIqJkKnlMr4/s320/markov-profile.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Clojureで定義した関数なんかはこんなふうにリストに出てきます。あくまでJava用ツールなのでClojure視点だと結果が読みにくいんですが、下にあるテキストボックスで絞込みが出来るので、それを上手く使うともうちょっと読みやすくなります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;【まとめ】&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
time、c.c.profileはREPL上で使うのに都合がいいです。ただし実行速度計測がメインで、メモリ使用量なんかは分かりません。チューニングが必要なときに「コード修正して計測」というループを素早く繰り返したいときには楽ですね。&lt;br /&gt;
VisualVMは高機能で網羅的ですが、開発中に何度も繰り返し使うというには重い。「ある程度完成しているアプリで何かボトルネックがある、その箇所にあたりを付ける」という場合に使うと良いと思います。&lt;br /&gt;
&lt;br /&gt;
全体的にはClojureの性能測定ツールはまだ発展途上、という感想です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;【参考リンク】&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.fatvat.co.uk/2009/05/jvisualvm-and-clojure.html"&gt;Fatvat: JVisualVM and Clojure&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://togetter.com/li/219529"&gt;Tokyo.clj#15 - Togetter&lt;/a&gt;&lt;br /&gt;
Tokyo.clj二次会ではClojure以外の言語の話題でもよく盛り上がって面白いです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-7562579262062869121?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/6h5Gc9V4VGI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/7562579262062869121/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=7562579262062869121" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7562579262062869121?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7562579262062869121?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/6h5Gc9V4VGI/clojure3-tokyoclj.html" title="Clojureコードを性能測定する3つの方法" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-UUHZk3YCG8g/TtOKToiNcxI/AAAAAAAAAWg/f945ybJiItg/s72-c/visualvm-monitor.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/11/clojure3-tokyoclj.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QERns5fip7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-3572023691403344921</id><published>2011-10-25T13:00:00.001+09:00</published><updated>2011-10-25T13:01:47.526+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-25T13:01:47.526+09:00</app:edited><title>Shibuya.lisp#7に参加してきました</title><content type="html">&lt;a href="http://shibuya.lisp-users.org/2011/10/22/tt7-3/"&gt;Shibuya.lisp » Blog Archive » 2011/10/22 Shibuya.lisp テクニカルトーク #7 開催しました!!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
最初に参加したのが#5なので、これで三回目です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TechTalkでは最初の&lt;a href="http://twitter.com/#!/m2ym"&gt;@m2ym&lt;/a&gt;さんの発表が気になりました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://shibuya.lisp-users.org/2011/10/23/tt71/"&gt;括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　タイトルだけだと「信者乙！」と言いそうになりますが、中身は実際に開発する上での問題点をバランスのとれた視点で解説していて面白かったです。&lt;br /&gt;
　私もLispに興味を持った最初のころはCommon Lispを使っていたんですが、ライブラリがどこにあってどうやって使うのかが分かりにくくて、結局フィボナッチ数列を計算させたぐらいで終わっていました。&lt;br /&gt;
　これからCommon Lispを始めようというひとは目を通しておくと良いと思います。&lt;br /&gt;
　また「マクロは万能ではない」という部分に関してはClojure-conjにあったこの発表を思い出しました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.slideshare.net/cgrand/dsl-5537797"&gt;(not= DSL macros) - Slideshare&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　そのほかの発表もLisp＋ハードウェア、Lisp＋セキュリティなど面白い組み合わせで興味深かったです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　会場に来た方たちともいろいろお話しできて面白かったです。私が話しかけた人は初参加というひとが多かったんですが、もっとがんがん話しかけちゃっていいと思いますよー。こういうイベントに集まるってことはまさにそういうコミュニケーションを求めているはずですから、話しかけられて嫌な人は居ないはずです。&lt;br /&gt;
　あと初参加の人は次は発表する側にまわってみるのもいいですね。不安な人のために私がLTしたときのを貼っときましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://shibuya.lisp-users.org/2010/11/28/sltt-lt-6/"&gt;ClojureとEPUBで「普通のやつらの上を行く」方法&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
　LTの良いところはどんなにスベっても5分で終わるところにあります（キリッ&lt;br /&gt;
　またスベったらスベったで覚えてもらいやすくなります（キリッ&lt;br /&gt;
&lt;br /&gt;
　まぁ、自分が作っているものって欠点がよく見えてしまいがちですが、他人から見ると充分面白いかったりするので思い切って発表しちゃうのもいいですねー（今回LTしなかった自分への自戒も込めて）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
毎度のことながら運営者の方々、お疲れ様です。&lt;br /&gt;
次回、渋谷の街に迷わなかったら早めに行って準備を手伝いたいと思います（田舎者には難易度高いですが）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-3572023691403344921?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/UUuLez8Lj8g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/3572023691403344921/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=3572023691403344921" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3572023691403344921?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3572023691403344921?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/UUuLez8Lj8g/shibuyalisp7.html" title="Shibuya.lisp#7に参加してきました" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/10/shibuyalisp7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYEQ309cSp7ImA9WhRXF0U.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-3427074171418215692</id><published>2011-02-07T18:41:00.070+09:00</published><updated>2011-12-25T12:01:42.369+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-25T12:01:42.369+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Clojureのシーケンス関数を使用例で説明してみる</title><content type="html">&lt;blockquote&gt;
《例示は理解の試金石》&lt;br /&gt;
&lt;div style="text-align: right;"&gt;
&lt;a href="http://www.hyuki.com/girl/"&gt;数学ガール&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
Clojureではいろんなデータを「シーケンス」として扱います（&lt;a href="http://clojure.org/sequences"&gt;Clojure - sequences&lt;/a&gt;）。だからシーケンスを操作する関数をいろいろ使うことになりますが、ちょっと複雑な操作をしようとすると基本的な関数だけでは足りなくて自分で処理を書くことになります。ところがあとで標準ライブラリをよく読んでみると「この関数使えばもっと簡単に処理を書けたんじゃん！　知らなかったばっかりに（ぐぬぬ」となることもあります。&lt;br /&gt;
&lt;br /&gt;
拡張ライブラリの&lt;a href="http://richhickey.github.com/clojure-contrib/seq-api.html"&gt;clojure.contrib.seq&lt;/a&gt;はちょっと便利なシーケンス関数をまとめたものですが、ドキュメントをちょっと読んだだけだと使いかたが分かりにくい。そこで各関数の使用例をまとめてみました。これでライブラリにある関数を再発明しないで済むはずだ！&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://gist.github.com/780422"&gt;gist: 780422 - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/780422.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
rec-seq、rec-catはイマイチ用途が分かってません。&lt;br /&gt;
最後のfill-queueだけ毛色が違いすぎます（入れる名前空間間違ってない？）。これは別に使用例を書く予定。&lt;br /&gt;
&lt;br /&gt;
c.c.seqの関数はclojure.coreに移動予定のも多いです。coreに入っちゃうと他とごっちゃになって分かりにくくなると思うので今のうちに試してみては？&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【参考リンク】&lt;br /&gt;
&lt;a href="http://clojure.org/cheatsheet"&gt;Clojure - cheatsheet&lt;/a&gt;&lt;br /&gt;
このチートシートを印刷しておくのも便利。&lt;br /&gt;
&lt;br /&gt;
追記（2011-12-25）&lt;br /&gt;
fill-queueの使用例も書きました&lt;br /&gt;
&lt;a href="http://deltam.blogspot.com/2011/12/fill-queue.html"&gt;fill-queueでお手軽非同期処理 : サルノオボエガキ&lt;/a&gt;
&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-3427074171418215692?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/ME2jB_9CaBA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/3427074171418215692/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=3427074171418215692" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3427074171418215692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3427074171418215692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/ME2jB_9CaBA/clojure.html" title="Clojureのシーケンス関数を使用例で説明してみる" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/02/clojure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cFSXk4fCp7ImA9Wx9UEEo.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-7843980543523737437</id><published>2011-01-10T00:50:00.126+09:00</published><updated>2011-02-07T18:30:18.734+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-07T18:30:18.734+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Clojureでコマンドラインアプリを作るときはwith-command-lineが便利</title><content type="html">Clojureでコマンドラインアプリを作るときに便利なマクロを見つけたので、使い方をメモっておきます。&lt;br /&gt;
&lt;br /&gt;
clojure.contrib.command-line/&lt;a href="http://richhickey.github.com/clojure-contrib/command-line-api.html"&gt;with-command-line&lt;/a&gt;を使うと、コマンドラインでオプションを受け取る処理をスッキリ書けます。&lt;br /&gt;
何はなくともまず例示、ということで整数計算するスクリプトをwith-command-lineを使って書いてみたのがこれです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://gist.github.com/770487"&gt;gist: 770487 - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/770487.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
option?のように?を付けると真偽値、?無しだと引数をその変数名で受け取ってくれます。オプションの省略記法も一緒に定義。オプション説明のあとに値を指定するとデフォルト値を設定してくれます。&lt;br /&gt;
&lt;br /&gt;
これを実行するとこんな感じになります。自動でhelpオプションを表示してくれるのも気が利いてる。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;$ clj int-calc.clj -p 3 5
8
$ clj int-calc.clj 3 5
8
$ clj int-calc.clj -p 3 5 -modulo 2
0
$ clj int-calc.clj -ml 3 5
15
$ clj int-calc.clj -ml 3 5 -modulo 2
1
$ clj int-calc.clj --help
clj int-calc.clj [-p|-mi|-ml] [-modulo n] nums..
Options
  --plus, -p        plus      [default true]
  --minus, --mi     minus                   
  --multiply, --ml  multiply                
  --modulo &lt;arg&gt;    mod n                   
&lt;/arg&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
こういう定型処理をサクっと分かりやすく書けるのは良いですね。&lt;br /&gt;
&lt;br /&gt;
これに限らず&lt;a href="http://richhickey.github.com/clojure-contrib/index.html"&gt;clojure.contribライブラリ&lt;/a&gt;には便利なものが揃ってて良いんですが、全体の量が多いしドキュメント読んだだけだと使い方がわからないことがちらほら。コーディングしてて「おー、なかなか気の利いたコードが書けたぜ！」と思ってたら、あとでライブラリにもっとエレガントな実装を見つけて凹むみたいなケースが何件かありました（text2epub-cljの&lt;a href="https://github.com/deltam/text2epub-clj/blob/master/src/text2epub/core.clj"&gt;core.clj&lt;/a&gt;もこれで書き直した）。&lt;br /&gt;
&lt;br /&gt;
日本語情報が少ないというのも良くない再発明をしちゃう原因のひとつかなーと思うので、こういう便利なのを見つけたらちょこちょこ書いていこうと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【参考】&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/1341154/building-a-clojure-app-with-a-command-line-interface"&gt;Building a Clojure app with a command-line interface? - Stack Overflow&lt;/a&gt;&lt;br /&gt;
Clojure関連質問サイト。英語情報で良ければかなり充実。&lt;br /&gt;
&lt;a href="http://rd.clojure-users.org/"&gt;逆引きClojure&lt;/a&gt;&lt;br /&gt;
日本語情報だとこちら。こっちにも書きこんでますよ。&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-7843980543523737437?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/P0NsELLDioc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/7843980543523737437/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=7843980543523737437" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7843980543523737437?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7843980543523737437?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/P0NsELLDioc/clojurewith-command-line.html" title="Clojureでコマンドラインアプリを作るときはwith-command-lineが便利" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2011/01/clojurewith-command-line.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRXk4eSp7ImA9Wx9TGUk.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-4074372482958170139</id><published>2010-11-28T20:44:00.010+09:00</published><updated>2010-11-28T20:48:14.731+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-28T20:48:14.731+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>Shibuya.lisp#6でLT発表してきました</title><content type="html">&lt;a href="http://shibuya.lisp-users.org/2010/11/27/sltt-6-tb/"&gt;Shibuya.lisp＃6&lt;/a&gt;にて「ClojureとEPUBで「普通のやつらの上を行く」方法」というタイトルでLightningTalkしてきました。&lt;br /&gt;
まずはプレゼン資料です。&lt;br /&gt;
&lt;div id="__ss_5931636" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/deltam/shibuyalisp6-lt-deltam-5931636" title="ClojureとEPUBで「普通のやつらの上を行く」方法"&gt;ClojureとEPUBで「普通のやつらの上を行く」方法&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5931636" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=shibuyalisp6ltdeltam-101127090226-phpapp02&amp;stripped_title=shibuyalisp6-lt-deltam-5931636&amp;userName=deltam" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5931636" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=shibuyalisp6ltdeltam-101127090226-phpapp02&amp;stripped_title=shibuyalisp6-lt-deltam-5931636&amp;userName=deltam" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/deltam"&gt;del tam&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ここ最近作っているEPUBツールの説明をして来ました。あとGoogle AppEngine for Javaにfeed2epubの機能を載せたのを実験中だったのでデモとして見せたかったんですが、時間切れ＆エラー… ムー、不本意なオチをつけてしまった！ （最後に発表してるひとです）&lt;br /&gt;
&lt;br /&gt;
&lt;object width="360" height="228" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;
  &lt;param name="flashvars" value="vid=11114217&amp;amp;autoplay=false&amp;amp;locale=ja_JP"/&gt;  &lt;param name="allowfullscreen" value="true"/&gt;  &lt;param name="allowscriptaccess" value="always"/&gt;  &lt;param name="src" value="http://www.ustream.tv/flash/viewer.swf"/&gt;  &lt;embed flashvars="vid=11114217&amp;amp;autoplay=false&amp;amp;locale=ja_JP" width="360" height="228" allowfullscreen="true" allowscriptaccess="always" src="http://www.ustream.tv/flash/viewer.swf" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;
&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
途中でDEMOとして見せたサイトはこれです。LTに間に合わせようと拙速に作ったので、近日中にいろいろ変えます。&lt;br /&gt;
一応、RSS2/ATOMフィードのURLを入れてボタンを押すとEPUBがダウンロードできるように作ったます（たまにエラーが出るけどね）&lt;br /&gt;
&lt;a href="http://epubninja.appspot.com/"&gt;http://epubninja.appspot.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
前半のTechTalksの先生方の話しはさすがでした。まさにShibuya.lispみたいな機会がないと知らなかったようなことを聞けてよかったです。難しくて分からないことも多かったですけど、「何が分からないのか」はそこはかとなく分かったような感じがしました。少なくともMOP（MetaObject Protocol）についてはまるっきり勘違いしてたのが自覚できて良かった。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shibuya.lispは前回#5が初参加です。それまで技術系イベントにはほとんど参加したことはありません。だから前回でこのことを初めて実感しました。&lt;br /&gt;
&lt;b&gt;「実際にコード書いている人、スゴイ人に会ってみるとパワーが湧いてくる」&lt;/b&gt;&lt;br /&gt;
それで前回参加したあとは「今度参加するときは、絶対見るだけじゃなくて何か面白いものを作って発表したい」と決心してました。なんかこういう場をせっかく用意してくれてるんだから参加しないともったいない！という気持ち。やる気はだいぶチャージされましたね〜。&lt;br /&gt;
&lt;br /&gt;
私はプログラミングや技術自体も好きだけど、何か具体的なプロダクトを作りたいタイプです。&lt;br /&gt;
「Lispを使えば難しい問題も簡単に解けるんだ」という主張を良く読むけども、ならば「簡単な問題をさらに劇的に簡単にする」ためには使えないのかな。いわゆるプログラミングが出来ない「普通の人たち」が便利だと思えるものを作りたい、そのためにLispが利用できるんではないかと思って使ってます。&lt;br /&gt;
Lispで開発効率が上がるんなら、それでできた時間をより便利な何かのアイデアを考えるのに使えないでしょーかねー。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
本番のLTでは時間切れになっちゃいましたが、その後の懇親会でリベンジ発表させてもらったのでいちおう言うべきことは言い切りました。&lt;br /&gt;
「普通の人」が使いやすいものをLispで作ろう。そんで草の根的にLispはスゴイという空気を作ってこう。仕事でLispを使いたいならお客さんにLispがスゴイって認識を持ってもらわないと無理だし、逆にお客さんがOKならばあと社内は何とかなりそうじゃない？&lt;br /&gt;
&lt;br /&gt;
まぁ、まずはコード書きましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
最後に。&lt;br /&gt;
もういい加減、自己紹介で無職というのも飽きました。仕事探しはじめます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-4074372482958170139?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/4IkpEx-KE9g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/4074372482958170139/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=4074372482958170139" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4074372482958170139?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4074372482958170139?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/4IkpEx-KE9g/shibuyalisp6lt.html" title="Shibuya.lisp#6でLT発表してきました" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/11/shibuyalisp6lt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MNQncyeSp7ImA9Wx5bGUw.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-7675713343700224314</id><published>2010-11-05T09:03:00.001+09:00</published><updated>2010-11-05T09:04:53.991+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-05T09:04:53.991+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>ePubcastローカル版の遊び方を説明します！</title><content type="html">先日、&lt;a href="http://deltam.blogspot.com/2010/10/lispepublt-arielarea.html"&gt;ありえる勉強会でLT発表&lt;/a&gt;したときに触れたePubcastのローカルサーバ版がだいたい出来たので使い方を書いておきます。&lt;br /&gt;
&lt;br /&gt;
このソフトウェアの目的は「&lt;b&gt;ePubをPodcastで配信する実験を行う&lt;/b&gt;」なので、機能はおもちゃ程度です。とりあえずePubとPodcastでなにができるか手元で遊んでみたい人向けに説明します。以下ではMacBook＋Google Chromeで説明してますが、Windows、他のブラウザでも基本的に同じです。&lt;br /&gt;
&lt;br /&gt;
まずJarファイルをダウンロードします。0.0.11のやつです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/deltam/ePubcast/downloads"&gt;Downloads for deltam's ePubcast - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これを適当なフォルダに置き、同じフォルダに"static"という名前のフォルダを作ります。このstaticフォルダにePubを置くだけでPodcast配信が出来るようになります。&lt;br /&gt;
&lt;br /&gt;
上述の準備が終わったらサーバを起動します。コンソールを立ち上げてJarを置いたフォルダに移動し、以下のように打ち込みます。2行目以降のようにログが表示されたら起動してます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;$ java -jar epubcast-0.0.11-alpha-standalone.jar 
2010-11-05 08:14:25.944::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
2010-11-05 08:14:25.960::INFO:  jetty-6.1.x
2010-11-05 08:14:26.050::INFO:  Started SocketConnector@0.0.0.0:8080&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
ブラウザで&lt;a href="http://localhost:8080/"&gt;http://localhost:8080&lt;/a&gt;をアドレスバーに打ち込みます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_skNrQwV82QQ/TNNHd_I10eI/AAAAAAAAAVY/uMDJ6yQTL_o/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://2.bp.blogspot.com/_skNrQwV82QQ/TNNHd_I10eI/AAAAAAAAAVY/uMDJ6yQTL_o/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ブラウザ上ではstaticフォルダの中身をリストにして表示させてます。&lt;br /&gt;
[add iTunes]というリンクを押すと、以下のようなメッセージが出てくるので［アプリケーションの起動］を押してください。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_skNrQwV82QQ/TNNIvThx__I/AAAAAAAAAV4/KUne2mErVS4/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://4.bp.blogspot.com/_skNrQwV82QQ/TNNIvThx__I/AAAAAAAAAV4/KUne2mErVS4/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
これでiTunesのPodcastに自動追加されます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_skNrQwV82QQ/TNNHe-nwrZI/AAAAAAAAAVg/6CYd_rgjuE0/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://1.bp.blogspot.com/_skNrQwV82QQ/TNNHe-nwrZI/AAAAAAAAAVg/6CYd_rgjuE0/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ここですべてのePubをダウンロードさせて、iTunes「ブック」のページを見てみると、ダウンロードしたePubが追加されていることが分かると思います。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_skNrQwV82QQ/TNNHfWWgzxI/AAAAAAAAAVo/gca2CCRfKd8/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://3.bp.blogspot.com/_skNrQwV82QQ/TNNHfWWgzxI/AAAAAAAAAVo/gca2CCRfKd8/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+7.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
これでiPodTouch／iPhoneを同期させて、iBooksを開くと下のようにePubが追加されます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_skNrQwV82QQ/TNNHfigfzAI/AAAAAAAAAVw/P4djsuDNeI4/s1600/IMG_0358.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_skNrQwV82QQ/TNNHfigfzAI/AAAAAAAAAVw/P4djsuDNeI4/s320/IMG_0358.PNG" width="214" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
これで読めます！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下、ちょっと補足。&lt;br /&gt;
&lt;br /&gt;
Q. 配信するePubがない&lt;br /&gt;
A. &lt;a href="http://deltam.blogspot.com/2010/08/epubfeed2epub-clj.html"&gt;feed2epub-clj&lt;/a&gt;を使ってはどうでしょう。長文記事のブログを読むときなどにePubに変換できます。（ファイル名が日本語だとePubcastでダウンロードできなかったりするので適宜変えてください）&lt;br /&gt;
&lt;br /&gt;
Q. ローカルだけじゃなくてインターネットで公開したい！&lt;br /&gt;
A. このePubcastをGoogle AppEngineに移植する作業を始めてます。しばしお待ちを！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【参考リンク】&lt;br /&gt;
&lt;a href="http://www.mycupoftea.cc/archives/2010/06/24/road_to_ebooks.html"&gt;[ポ] 電子書籍に繋がった - ...My cup of tea...&lt;/a&gt;&lt;br /&gt;
こちらの記事で始めてEPUBをPodcast配信できることを知りました。感謝。&lt;br /&gt;
&lt;a href="http://www.apple.com/jp/itunes/podcasts/specs.html"&gt;アップル - iTunes - Podcast - Podcastを作成する&lt;/a&gt;&lt;br /&gt;
アップルの技術資料。EPUBは配信可能なファイル形式に含まれてないですが、きっちりiBooksにも追加できちゃいました。&lt;br /&gt;
&lt;a href="http://github.com/deltam/ePubcast"&gt;deltam's ePubcast at master - GitHub&lt;/a&gt;&lt;br /&gt;
ソースコードも公開してます（Clojureですが）。1ファイルべた書きなのでそれなりに分かりやすいかと。&lt;br /&gt;
&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-7675713343700224314?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/sqPX2YMwHJI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/7675713343700224314/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=7675713343700224314" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7675713343700224314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7675713343700224314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/sqPX2YMwHJI/epubcast.html" title="ePubcastローカル版の遊び方を説明します！" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_skNrQwV82QQ/TNNHd_I10eI/AAAAAAAAAVY/uMDJ6yQTL_o/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+9.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/11/epubcast.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYCQ3w_fyp7ImA9Wx5bFEg.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-41468406643932185</id><published>2010-10-31T01:49:00.015+09:00</published><updated>2010-10-31T02:02:42.247+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-31T02:02:42.247+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>「Lisp脳」勉強会でEPUB関連ツールのLT発表してきました #arielarea</title><content type="html">&lt;a href="http://atnd.org/events/8956"&gt;”ありえるえりあ勉強会〜「Lisp脳」勉強会〜”&lt;/a&gt;でライトニングトーク（LT）してきました。5分ほどの発表時間内で、今までやってきたEPUB関連ツールとこれから作ろうとしているEPUB生成／配信システムの説明をしました。&lt;br /&gt;
まずはプレゼン資料です。&lt;br /&gt;
&lt;div id="__ss_5613749" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/deltam/clojureepub" title="ClojureとEPUBと俺"&gt;ClojureとEPUBと俺&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5613749" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20101029ariellt-101029222056-phpapp02&amp;stripped_title=clojureepub&amp;userName=deltam" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5613749" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20101029ariellt-101029222056-phpapp02&amp;stripped_title=clojureepub&amp;userName=deltam" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/deltam"&gt;del tam&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
前々から「そろそろ自分のEPUBに関する考えをちゃんと説明しておかないといけないな」と考えていたので、ちょうどいい機会だと思って好き勝手に話させてもらいました。&lt;b&gt;アリエルさんありがとうございました！&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
正直言いまして、初めてのLTでUstreamで中継されている、さらに資料はその日の15時ぐらいから作り始めた、という悪いフラグ立ちまくりな中で発表したのですが、どうだったんでしょ？　発表内容はこれ以上無いぐらいシンプルに作ったので、話す内容に迷いはなかったですけども。&lt;br /&gt;
&lt;br /&gt;
話した内容を思い出せる範囲で箇条書きにしておきます。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;野望『みんなが書いた長い文章を　エディタからショートカット一発で　みんなの手のひらの中に届ける』 &lt;/b&gt;&lt;/li&gt;
&lt;li&gt;「みんなプログラムを書けるってことはエディタがあって一定量のテキストを打つことが出来て、論理的思考力がある。なぜ小説を書かないのか？」&lt;/li&gt;
&lt;li&gt;「作文を書くのが嫌いな人が多かったはずなのに”ブログ”という形式ができた途端、自発的に文章を書く人が増えた」&lt;/li&gt;
&lt;li&gt;「同じように、小説もしくは長文エッセイを流通させる形式ができたら、みんな小説を書き始めるんではないか？」&lt;/li&gt;
&lt;li&gt;「そんな野望を抱きつつ、ClojureでEPUB関連ツールを作ってます」&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
われながら極論だなーと思いますけど、その後の懇親会でもいろいろ反応してくれる人がいたので「関心を持ってもらい議論を巻き起こす」という効果は少しあったのかと考えてます。これからEPUB関連ツールを作っていく上で間違いなくプラスになったと思います。&lt;br /&gt;
&lt;br /&gt;
まずは報告まで。ではコーディングを継続していきます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【参考リンク】&lt;br /&gt;
・&lt;a href="http://e-arrows.sakura.ne.jp/l5/"&gt;L5&lt;/a&gt;&lt;br /&gt;
資料作りに使ったLT用のプレゼンツールです。ClojureのS式（テキスト）でプレゼンを書くことができて、サクっと作り始められて直前まで手直しできました。ほかにもPDF出力機能など、いろいろ出来がいい。開発者の深町さんが活発に開発しているみたいなので、進化に期待してます！&lt;br /&gt;
&lt;br /&gt;
・EPUB関連ツールの記事： &lt;a href="http://deltam.blogspot.com/search/label/ePub"&gt;サルノオボエガキ: ePub&lt;/a&gt;&lt;br /&gt;
このブログのEPUBタグにまとめてあります&lt;br /&gt;
&lt;br /&gt;
・書いた小説：&lt;a href="http://deltam.blogspot.com/2009/12/blog-post.html"&gt;ラノベ小説（？）書きました : サルノオボエガキ&lt;/a&gt;&lt;br /&gt;
この小説のテキストファイル、text2epub-cljのテストデータとして同梱してます。&lt;a href="http://github.com/deltam/text2epub-clj/tree/master/samples/"&gt;samplesフォルダ&lt;/a&gt;にしれっと入れちゃったりして。&lt;br /&gt;
&lt;br /&gt;
・ &lt;a href="http://dev.ariel-networks.com/Members/inoue/lisp-generation/view"&gt;Lisp脳と世代 — ありえるえりあ&lt;/a&gt;&lt;br /&gt;
アリエルさん、最後の最後で空気読まない発表でさーせんしたっ！&lt;br /&gt;
&lt;br /&gt;
・発表したL5のソース &lt;br /&gt;
&lt;a href="http://e-arrows.sakura.ne.jp/2010/10/world-from-lisper.html"&gt;深町さんにならって&lt;/a&gt;そのまま貼りつけときます。コピペ便利。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;(ns L5.sample
  (:use L5 L5.layout)
  (:import [java.awt Color]))

(defcontext
  {:width 640 :height 480
   :font-family "Gill Sans"
   :font-size 30
   :color (Color/white)
   :background-color Color/black})

(defslides
  [(with-size 35
     (t "ClojureとEPUBと俺"))

   (with-size 15
     (lines "さいたま・無職"
            "deltam"
            "2010/10/29"
            "Powered by L5"))]

  [(title "自己紹介")
   (item "@deltam {:blog サルノオボエガキ}"
         "プログラム書くのが好き（Clojureに注力）"
         "小説書くのが好き"
         "Lisper未満、ワナビー未満")
   (with-size 20
     (item "素数腕立て伏せ愛好家"))
   (img "icon.png")]
  
  [(t "Lisp脳？")]
  
  [(t "ClojureではじめてLispを使い始めました"
      "-&amp;gt; Lisp脳にセルフ洗脳中？")]
  
  [(title "野望")
   (with-size 35
     (lines "『みんなが書いた長い文章を"
            "エディタからショートカット一発で"
            "みんなの手のひらの中に届ける』"))]
  
  [(t "どうやって？"
      "→これから説明します")]
  
  [(title "！注意書き！")
   (item "EPUBのことしか話しません！")
   (lines "\"電子書籍\"ってバズり過ぎてて"
          "話せません！")]
  
  [(title "EPUBってなに？")
   (item "XML（メタデータ）＋XHTML+αをZip圧縮。"
         "\"枯れた技術の水平思考\"")
   (img "folder_tree.png")]
  
  [(title "つくったもの")
   (item "text2epub-clj (2010-07-02..)"
         "　PlainTextをEPUBに変換するだけ"
         "feed2epub-clj (2010-08-03..)"
         "　RSS2/ATOMからEPUB作る"
         "ePubcast (2010-08-28..)"
         "　作ったEPUBを流すPodcastサーバ")]
  
  [(title "こんなふうに変換できます")
   (img "epub_convert.png")]
  
  [(title "反響")
   (with-size 25
     (item "ちょっとだけ使ってくれる人がいた")
     (item "text2epub-clj"
           "　MOONGIFTで紹介"
           "　@kotorikoに褒められる"
           "feed2epub-clj"
           "　自分のブログをEPUBにして読むなど"
           "　数人、遊んでくれた人いた模様"
           "ePubcast"
           "　とくになし（まだできないナイッス）"))]
  
  [(title "つくってみて分かった問題")
   (item "ePubを作ってもみんなの手元に届ける"
         "ルートがない！"
         "→Podcast RSSのエンクロージャに\".epub\""
         "を設定するとiBooksに自動追加される")]
  
  [
   (img "epub_system.jpg")]
  
  [(title "弱点")
   (with-size 25
     (item "無職..."
           "　時間はいっぱいあるよ！"
           "ClojureやってるのにLisp技術の勉強が追いつかない"
           "  マクロむずかしい"
           "サーバサイドの技術よく知らない"
           "　GAE/J勉強中"))]
  
  [(with-size 50
     (t "べ、べつにpull requestして"
        "くれてもいいんだからねっ！"
        "http://github.com/deltam"))]

  [(title "告知")
   (item "ほぼ毎月、Tokyo.cljやってます"
         "Clojureは友だち、こわくないよ！")]
  
  [(t "おわり")]
)&lt;/pre&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-41468406643932185?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/kChlVvVjseU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/41468406643932185/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=41468406643932185" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/41468406643932185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/41468406643932185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/kChlVvVjseU/lispepublt-arielarea.html" title="「Lisp脳」勉強会でEPUB関連ツールのLT発表してきました #arielarea" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/10/lispepublt-arielarea.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNQnY_cSp7ImA9Wx5VEkg.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-4060258740634180269</id><published>2010-10-05T14:41:00.000+09:00</published><updated>2010-10-05T14:41:33.849+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-05T14:41:33.849+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>text2epub-clj更新、行頭"!!"でePub目次設定。</title><content type="html">&lt;a href="http://github.com/deltam/text2epub-clj/downloads"&gt;Downloads for deltam's text2epub-clj - GitHub&lt;/a&gt;&lt;br /&gt;
ここの0.0.3-alphaの更新内容のご報告です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
これまでのお話し→　&lt;a href="http://deltam.blogspot.com/search/label/ePub"&gt;サルノオボエガキ: ePub&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://github.com/deltam/text2epub-clj"&gt;text2epub-clj&lt;/a&gt;を更新しました。version 0.0.3-alphaです（もはやバージョン番号の意味が分からない）。&lt;br /&gt;
&lt;br /&gt;
今回は簡易記法を導入してみました。前回までだとePubのページ分割をするのは「章ごとに複数ファイルに保存」しないとtext2epub-cljではページ分割出来ませんでした。でも書いてる最中は章ごとにファイルを分けるなんて面倒なことしたくない。だから簡単な記法をちょちょいと付けて、そのまんまtext2epub-cljに通したらページ分割できたらいいなーと思って作りました。&lt;br /&gt;
&lt;br /&gt;
まずは例を見てもらうのがいいでしょう。GitHubリポジトリの&lt;a href="http://github.com/deltam/text2epub-clj/blob/master/samples/hello.txt"&gt;samplesフォルダにあるhello.txt&lt;/a&gt;から全文引用。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;!title! hello
!author! hello

!! chapter 1
this is a pen.
hello world.

!! chap 2
hello! hello!
today is sunday

!! end
eof, eof!
&lt;/pre&gt;&lt;br /&gt;
これをtext2epub-cljに通してePubをiTunesにドラッグアンドドロップ、iPod touchに同期するとiBooksではこうなります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_skNrQwV82QQ/TKq3hlXLv3I/AAAAAAAAAU0/1tXVFRt98f0/s1600/IMG_0351.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_skNrQwV82QQ/TKq3hlXLv3I/AAAAAAAAAU0/1tXVFRt98f0/s320/IMG_0351.PNG" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3jbksDuI/AAAAAAAAAU4/8etIs9dXKCw/s1600/IMG_0352.PNG" imageanchor="1"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3jbksDuI/AAAAAAAAAU4/8etIs9dXKCw/s1600/IMG_0352.PNG" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こうなりました。&lt;br /&gt;
&lt;br /&gt;
「!title!とか!author!ってなんやねん？」。あとで書く予定のePubメタデータ簡易記法のプロトです。あんまりカッコよくないので良い案があったらコメントください。とりあえず作っときます（あとで）。&lt;br /&gt;
&lt;br /&gt;
これでしれっとSamplesフォルダにテストデータとして追加しておいた自作小説の『スウスウと砂漠の運び屋』もちゃんとePub化できたヨ。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3j_lgtbI/AAAAAAAAAU8/vZnOICbs88c/s1600/IMG_0353.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3j_lgtbI/AAAAAAAAAU8/vZnOICbs88c/s320/IMG_0353.PNG" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3kQ4d1HI/AAAAAAAAAVA/fJZOUDEIRl0/s1600/IMG_0354.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_skNrQwV82QQ/TKq3kQ4d1HI/AAAAAAAAAVA/fJZOUDEIRl0/s320/IMG_0354.PNG" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
あと&lt;a href="http://e-arrows.sakura.ne.jp/"&gt;CommonLisper深町さん&lt;/a&gt;が&lt;a href="http://github.com/fukamachi/text2epub-clj"&gt;forkして&lt;/a&gt;いろいろ直してくれたりMarkdown記法で書けるようにした分があるんですが、こっちをマージする前にとりあえず出しちまおうと思ってアップしときました。ちゃんと吸収しますよ！＞深町さん&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上、進捗報告でした。また開発に戻る！&lt;br /&gt;
&lt;br /&gt;
【リンク】&lt;br /&gt;
&lt;a href="http://e-arrows.sakura.ne.jp/2010/09/l5-110.html"&gt;L5のver1.1.0をリリースしました - 八発白中&lt;/a&gt;&lt;br /&gt;
プレゼンツール。Clojureで書かれているので参考に読んでます。&lt;br /&gt;
&lt;a href="http://e-arrows.sakura.ne.jp/2010/09/un-common-lisp.html"&gt;生まれて3日目のUn-Common Lisp - 八発白中&lt;/a&gt;&lt;br /&gt;
Lisperはあるレベルを超えると自分言語を作り出すというのは都市伝説ではなかったのだなー&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-4060258740634180269?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/t0Sy9wjxIic" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/4060258740634180269/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=4060258740634180269" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4060258740634180269?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4060258740634180269?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/t0Sy9wjxIic/text2epub-cljepub.html" title="text2epub-clj更新、行頭&quot;!!&quot;でePub目次設定。" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_skNrQwV82QQ/TKq3hlXLv3I/AAAAAAAAAU0/1tXVFRt98f0/s72-c/IMG_0351.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/10/text2epub-cljepub.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkADQ3w5eyp7ImA9Wx9bFUg.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-5447164752537992266</id><published>2010-09-05T12:26:00.004+09:00</published><updated>2011-02-24T21:32:52.223+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T21:32:52.223+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="アイデア" /><category scheme="http://www.blogger.com/atom/ns#" term="健康" /><category scheme="http://www.blogger.com/atom/ns#" term="数学" /><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>素数腕立て伏せについて</title><content type="html">&lt;blockquote&gt;「落ち着け………… 心を平静にして考えるんだ…こんな時どうするか……&lt;br /&gt;
２… ３ ５… ７… 落ち着くんだ…『素数』を数えて落ち着くんだ…&lt;br /&gt;
『素数』は１と自分の数でしか割ることのできない孤独な数字……&lt;br /&gt;
わたしに勇気を与えてくれる」&lt;br /&gt;
&lt;div style="text-align: right;"&gt;プッチ神父、&lt;a href="http://www.amazon.co.jp/gp/product/4088731034?ie=UTF8&amp;amp;tag=deltam-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4088731034"&gt;『ストーン・オーシャン』第6巻&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;
最近やっている筋トレ法。自分で思いついたけど、わりと普通の発想だからすでにやってる人も多いかも。&lt;br /&gt;
&lt;br /&gt;
もともとの疑問は「なぜ筋トレって10や5の倍数で終わらせることが多いの？」だった。5の倍数ってあんまり好きじゃないし、なんか必然性がねーよ、という感覚でした。だったら数学的に大きな意味を持つ素数の回数を単位にしたほうが自然じゃないのか、と思い至りました。&lt;br /&gt;
&lt;br /&gt;
やり方&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;普通に腕立て伏せをやる。1から順に数えながら。&lt;/li&gt;
&lt;li&gt;もう限界、腕が上がらない！　というとこまでやる。&lt;/li&gt;
&lt;li&gt;潰れたときの回数が素数だったら勝ち、合成数だったら負け。&lt;/li&gt;
&lt;li&gt;何に対して勝ち負けとか関係ない。勝ちを喜び、負けは猛省。&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
効能&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;限界までやるので常に限界越えを目指す必要があり、筋肉増強の効果が望める&lt;/li&gt;
&lt;li&gt;腕に限界が来ていても「あと数回で素数に達する！」と思うと少しだけ力が湧いてくる（私はこれを素数力と名付けている）&lt;/li&gt;
&lt;li&gt;素数間の距離は不規則に広がっていく傾向があるので、これを続けた場合でも常に達成困難な目標を持ち続けられる&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
とりあえず素数腕立て伏せということで、このアイデアを実装しましたが、素数腹筋、素数背筋、素数ダッシュなどいろいろ実装例は思い浮かびますね。ただし素数スクワットは最後にこけることになるので注意が必要です（実験済み）。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://twitter.com/#search?q=%23prime_num_pushups"&gt;Twitterでは#prime_num_pushups&lt;/a&gt;というハッシュタグで実施報告をしてますが、このタグはまったくバズる気がしない。&lt;br /&gt;
&lt;br /&gt;
誰とは言いませんが、「素数腕立て伏せって何なんじゃ」と問われたのでいちいちTwitterで説明するのも面倒くさいなーとおもってブログ記事にしてみました。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【追記2011.02.24】&lt;br /&gt;
&lt;a href="http://togetter.com/li/53549"&gt;Togetter - 「素数腕立て伏せ進行状況」&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://mojix.org/2011/02/23/sosuu-udetate"&gt;「素数腕立て伏せ」とは何か　「素数力」が腕立て回数を伸ばす - モジログ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-5447164752537992266?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/24NEQWBprdc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/5447164752537992266/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=5447164752537992266" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5447164752537992266?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5447164752537992266?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/24NEQWBprdc/blog-post.html" title="素数腕立て伏せについて" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UCSHY4cSp7ImA9Wx5RE0w.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-8867813661751049956</id><published>2010-08-17T21:27:00.005+09:00</published><updated>2010-08-20T22:34:29.839+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-20T22:34:29.839+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="読書" /><category scheme="http://www.blogger.com/atom/ns#" term="数学" /><title>第0回『ガロアの群論』読書会、第1-3章読書ノート公開</title><content type="html">&lt;a href="http://tsurumau.com/archives/52522480.html"&gt;第０回『ガロアの群論(ブルーバックス)』読書会 まとめ - ツルマウソフト&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
第0回『ガロアの群論』読書会というのに参加しました。もうひと月前の事なんですが、読書ノートをちゃんとまとめて無かったので、ざっくりまとめたPDFを公開します。&lt;br /&gt;
たぶん『ガロアの群論』を読んでないと意味不明ですが、最後の「方程式の係数」「対称式」などの相関図は読んだあとに見直すと頭の中が整理できるかなーと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://deltam.sakura.ne.jp/doc/galois_reading_memo_1-3.pdf"&gt;ガロアの群論（1−3章）読書ノート(PDFリンク)&lt;/a&gt;&lt;br /&gt;
&lt;iframe src="https://docs.google.com/document/pub?id=1Ww44M5BNx6daPpwmFAIOuISvbLVh5gIOYVlTb-QxV6U&amp;amp;embedded=true"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
あ、『&lt;a href="http://www.amazon.co.jp/gp/product/4062576848?ie=UTF8&amp;amp;tag=deltam-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4062576848"&gt;ガロアの群論&lt;/a&gt;』は講談社ブルーバックスの群論初心者向け解説書です。ふつうの数学書では省いてしまうような具体的計算を丁寧にしてくれて、私のような凡人には有難い本です。数学好きで「ガロアが五次方程式に解の公式が無いことを証明して、その過程で群論が発明されたってことは知ってるけど、いまいち詳細が分からなくてすっきりしない」って人にはおすすめです。&lt;br /&gt;
&lt;br /&gt;
明日(18日)、第1回『ガロアの群論』読書会があるので、急いでまとめてみました。気分は8月31日の小学生。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;【定期】明日18日、第1回『ガロアの群論(ブルーバックス)』読書会を開催します！場所は前回と同じエクセルシオールカフェ赤羽東口店にて、時間は13〜15時です。飛び入り参加も歓迎です。第0回のまとめ→ http://bit.ly/9GBaxu&lt;br /&gt;
&lt;a href="http://twitter.com/tsurumau/status/21392514926"&gt;Twitter&lt;/a&gt;&lt;/blockquote&gt;追記：PDF内の相関図だけキャプチャして載せときます。あくまでザックリ。&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_skNrQwV82QQ/TG6D5RfhO4I/AAAAAAAAAUk/uDECNnOGZOY/s1600/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="258" src="http://3.bp.blogspot.com/_skNrQwV82QQ/TG6D5RfhO4I/AAAAAAAAAUk/uDECNnOGZOY/s320/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;『ガロアの群論』1−3章　各概念の相関図&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe class=" ahnztecnhmzntbjkoehc ahnztecnhmzntbjkoehc" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=deltam-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;md=1X69VDGQCMF7Z30FM082&amp;amp;asins=4062576848" style="height: 240px; width: 120px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-8867813661751049956?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/3WumIiPgiow" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/8867813661751049956/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=8867813661751049956" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8867813661751049956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8867813661751049956?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/3WumIiPgiow/01-3.html" title="第0回『ガロアの群論』読書会、第1-3章読書ノート公開" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_skNrQwV82QQ/TG6D5RfhO4I/AAAAAAAAAUk/uDECNnOGZOY/s72-c/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3+1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/08/01-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcBRXcyeyp7ImA9Wx5REEU.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-3032429637440117760</id><published>2010-08-12T21:10:00.009+09:00</published><updated>2010-08-18T07:10:54.993+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-18T07:10:54.993+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>「お前のブログをePubにしてやろうかぁ！」、feed2epub-clj作りました。</title><content type="html">&lt;a href="http://github.com/deltam/feed2epub-clj"&gt;deltam's feed2epub-clj at master - GitHub&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;RSS2.0とAtomのURLを指定して、そのフィード内容をePubにするツールを作りました。&lt;br /&gt;&lt;a href="http://github.com/deltam/feed2epub-clj/downloads"&gt;上リンクのダウンロード&lt;/a&gt;から、feed2epub-clj-0.0.2-alpha-standalone.jarを持ってくればJava実行環境だけでMac、Win関係なく動かせます。もろもろ至らない点はありますが、とりあえず使えるので公開してみました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deltam.blogspot.com/2010/07/epubclojure.html"&gt;text2epub-clj&lt;/a&gt;と同じくシンプルなコマンドラインツール。&lt;br /&gt;&lt;br /&gt;これで実際に配信されているブログ記事をePubにするのを説明します。&lt;br /&gt;サンプルとして&lt;a href="http://d.hatena.ne.jp/kotorikotoriko/"&gt;コトリコ&lt;/a&gt;さんのrss2をePubにしてみました。&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;$ java -jar feed2epub-clj-0.0.2-alpha-standalone.jar "http://d.hatena.ne.jp/kotorikotoriko/rss2"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これで”コトリコ.epub”が作られるので、iTunesにドラッグアンドドロップしてください。あとはiPhone/iPod touchで同期させて、iBooksで開けるか確認。&lt;br /&gt;こんな感じで表示されます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_skNrQwV82QQ/TGPnRrnkGkI/AAAAAAAAAUM/LCvzCWd5cZk/s1600/IMG_0344.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_skNrQwV82QQ/TGPnRrnkGkI/AAAAAAAAAUM/LCvzCWd5cZk/s200/IMG_0344.PNG" alt="" id="BLOGGER_PHOTO_ID_5504497460529338946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_skNrQwV82QQ/TGPnR0HPrTI/AAAAAAAAAUU/YLRshj_gwMg/s1600/IMG_0345.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_skNrQwV82QQ/TGPnR0HPrTI/AAAAAAAAAUU/YLRshj_gwMg/s200/IMG_0345.PNG" alt="" id="BLOGGER_PHOTO_ID_5504497462809701682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_skNrQwV82QQ/TGPnSOvBk-I/AAAAAAAAAUc/U7awyNpOsu0/s1600/IMG_0346.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_skNrQwV82QQ/TGPnSOvBk-I/AAAAAAAAAUc/U7awyNpOsu0/s200/IMG_0346.PNG" alt="" id="BLOGGER_PHOTO_ID_5504497469955871714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;以下、このツールについて少し。&lt;br /&gt;&lt;br /&gt;「これって単にiBooksがRSSリーダになっただけじゃないの？」っていうのはちょっと違います。目次の画像をよく見てもらうと分かりますが、RSSリーダみたいな新→旧ではなく旧→新に並んでます。&lt;br /&gt;Blogってサイトの更新情報を配信することから始まりました。だから基本的に読み捨ての情報を書くためのメディアでした。しかしブログがこれだけ普及すると、繰り返しなんども読みたいような文章を書く人が出てきます。&lt;br /&gt;具体的にはこのid:kasawoさんのブログ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/kasawo/"&gt;傘をひらいて、空を&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;これって過去ログ含めて全部読み直したいレベルの文章群です。&lt;br /&gt;でもブラウザやRSSリーダの制約で過去記事が読みにくいのはムカつく。なにより勿体無い。&lt;br /&gt;つーことでこのツール作りました。&lt;br /&gt;&lt;br /&gt;あとAtomPubとかも調べているので最終的にブログ全記事をePubに出来るようにするする予定です。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BCAtomPub"&gt;はてなダイアリーAtomPubとは - はてなキーワード&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-3032429637440117760?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/Zcdq7pBCSek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/3032429637440117760/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=3032429637440117760" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3032429637440117760?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/3032429637440117760?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/Zcdq7pBCSek/epubfeed2epub-clj.html" title="「お前のブログをePubにしてやろうかぁ！」、feed2epub-clj作りました。" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_skNrQwV82QQ/TGPnRrnkGkI/AAAAAAAAAUM/LCvzCWd5cZk/s72-c/IMG_0344.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/08/epubfeed2epub-clj.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGRnc5cSp7ImA9Wx5WEE0.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-6143177033899533227</id><published>2010-08-04T03:40:00.008+09:00</published><updated>2010-09-21T02:00:27.929+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T02:00:27.929+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="数学" /><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><title>秀吉とMapReduce</title><content type="html">高校のとき数学の先生がよく授業の合間に雑談をしてくれた。そのなかで聞いた豊臣秀吉の話しが面白かったのでいろいろ絡めて紹介。&lt;br /&gt;
&lt;br /&gt;
あなたはいきなり鬱蒼とした森に連れてこられて、「&lt;span style="font-weight: bold;"&gt;あの山に生えている樹の本数を可能なかぎり正確に数えてこい&lt;/span&gt;」って命令されたらどうしますか？　もちろん秀吉の話しなので部下はそれなりにたくさん居るとします。&lt;br /&gt;
&lt;br /&gt;
山の表面積を計測して、ランダムに区画を選んでその中の樹を数えて、ひと山の概算をしますか？&lt;br /&gt;
それとも部下を何グループかに分けて麓から地道に樹の本数を数えながら登らせますか？&lt;br /&gt;
秀吉はどっちの方法もとらず、さらに精度が良い方法で樹の本数を部下たちに数えさせました。&lt;br /&gt;
&lt;br /&gt;
それはこんな話し。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;豊臣秀吉はあるとき、一つの山に何本の樹が生えているか調べるという任務を仰せつかった（理由は建築資材の見積もりだったかな？）。ひと山は広い。いちいち数えていたのでは何日経っても終わらないし、重複して数えるミスも出てくるだろう。&lt;br /&gt;
&lt;br /&gt;
秀吉はどうしたか。&lt;br /&gt;
&lt;br /&gt;
まずたくさんの紐を用意した。そしてその紐を部下たちに配りこう言った。&lt;br /&gt;
「&lt;span style="font-weight: bold;"&gt;あの山にある樹に紐を縛り付けてこい、ただし一本の樹に紐は一本だけしか縛ってはいけない&lt;/span&gt;」&lt;br /&gt;
たくさんの部下たちを動員してもう縛り付ける樹が見つからないほどその作業を続けた後、今度はこう言った。&lt;br /&gt;
「&lt;span style="font-weight: bold;"&gt;樹に縛り付けた紐を解いて持ってきなさい&lt;/span&gt;」&lt;br /&gt;
そして秀吉は集めた紐の数を数えてひと山の樹の本数を調べた。&lt;br /&gt;
&lt;br /&gt;
「&lt;span style="font-weight: bold;"&gt;これは数学における１対１対応の応用である。秀吉はとても数学的な思考力を持った武将であった&lt;/span&gt;」と数学の先生は最後に付け加えた。&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;これってMapReduceの考え方とも似てないだろうか？&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;MapReduce&lt;/a&gt;っていうのは、Googleが膨大なサーバ群で分散処理を実行するときに使われているプログラミングフレームワーク。&lt;br /&gt;
&lt;br /&gt;
MapReduceでは処理するデータをKey-Valueの組みとして扱い、それをプログラマが書いたMap関数とReduce関数で処理していきます。&lt;br /&gt;
ラフに説明するとMap関数では「Keyの値ごとにValueをどう処理するか」を書いて、Reduce関数では「処理結果を各Keyに対してどのように集計するのか」書く感じ。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://labs.google.com/papers/mapreduce-osdi04.pdf"&gt;&lt;br /&gt;
MapReduce論文（PDF）&lt;/a&gt;のP.3, Figure 1の処理手順を書き出して、それに上記の秀吉の数え方を対応させてみよう。処理の詳細は同論文の”3.1 ExecutionOverview”から抜粋。&lt;br /&gt;
&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;Input files&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;MapReduce（以下MP）:処理するデータを一定サイズに切り分ける&lt;/li&gt;
&lt;li&gt;秀吉: 兵たちに紐を配る&lt;/li&gt;
&lt;/ul&gt;
&lt;li style="font-weight: bold;"&gt;Map phase&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;MR : 複数のWorkerがUser Programに従って切り分けたデータを処理する&lt;/li&gt;
&lt;li&gt;秀吉: 兵たちが山に登って木に紐を縛り付ける&lt;/li&gt;
&lt;/ul&gt;
&lt;li style="font-weight: bold;"&gt;Intermediate files&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;MR: Map phaseで処理した結果を保持する&lt;/li&gt;
&lt;li&gt;秀吉: 縛り付けられた紐（でいいのかな？）&lt;/li&gt;
&lt;/ul&gt;
&lt;li style="font-weight: bold;"&gt;Reduce phase&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;MR: Keyごとに保持された結果を集計する&lt;/li&gt;
&lt;li&gt;秀吉: 兵に命じて縛り付けた紐を回収すると同時に本数を集計。&lt;/li&gt;
&lt;/ul&gt;
&lt;li style="font-weight: bold;"&gt;Output files&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;MR: 集計結果&lt;/li&gt;
&lt;li&gt;秀吉: 紐の数すなわちひと山にある樹の本数&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;
秀吉の方法が優れているのは動員する部下を増やせば増やすほど早く数えられるというところだろう。つまり&lt;span style="font-weight: bold;"&gt;作業の並列化によるスケールアウトができる&lt;/span&gt;。サーバを増やせば性能が比例して上がるWebのバックグラウンドシステムみたい。&lt;br /&gt;
１、２、３と数えて行く方法は並列化しづらいし、間違い防止やらで末端作業者の負担が大きい。&lt;br /&gt;
秀吉の方法では、末端の作業者には単純なルールを守らせるだけでミスを減らすことが出来る（一本の樹に一本の紐）。だから人員の調達も低コストで行える。&lt;br /&gt;
さすが後に天下を取る男、素晴らしく頭が切れて無駄がないですね。&lt;br /&gt;
&lt;br /&gt;
ということで、&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;「豊臣秀吉は戦国時代からMapReduceを駆使する関数型武将だったんだよ！」「な、なんだってー!!」&lt;/span&gt;&lt;br /&gt;
というエントリでした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
･･････正直言いまして、上記のリストがMapReduceの説明に本当に合っているのか自信がありません。あと秀吉の逸話もソースが不明です。そこらへん、コメントで教えてくれる方がいたら有難いです。m(__)m&lt;br /&gt;
&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div id="FLASH_MESSAGE" style="display: none;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-6143177033899533227?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/TTZ59kpzDko" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/6143177033899533227/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=6143177033899533227" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6143177033899533227?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6143177033899533227?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/TTZ59kpzDko/mapreduce.html" title="秀吉とMapReduce" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/08/mapreduce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FSHY5fip7ImA9Wx5SFEw.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-961935761128304864</id><published>2010-07-02T22:03:00.006+09:00</published><updated>2010-08-10T13:50:19.826+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-10T13:50:19.826+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="ePub" /><title>テキストファイルをePub化するツールをClojureで作りました。</title><content type="html">追記(2010-08-10)：現状、複数のファイルを束ねてファイ名を目次にしたepubを作るとこまで作成。こちらでそのことを紹介してくれてマジ感謝。&lt;br /&gt;&lt;a href="http://www.moongift.jp/2010/08/text2epub-clj/"&gt;MOONGIFT » Blog Archive » テキストファイルをePub化「Text2ePub-clj」 オープンソース・ソフトウェア/フリーウェアを毎日紹介&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://github.com/deltam/text2epub-clj"&gt;deltam's text2epub-clj at master - GitHub&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ja.wikipedia.org/wiki/EPUB"&gt;ePub&lt;/a&gt;というのはiPad、iPhone、iPodTouch（iOS4かつiBooks）などで読むことが出来る電子書籍のフォーマットです。&lt;br /&gt;ePubを作るツールはいろいろあるんですが、単純にテキストファイルをePubにするツールが見当たらなかったので作ってみました（Clojureの練習も兼ねて）。&lt;br /&gt;iBooksで読めるePubを作るところまで来たので、alpha版として紹介します。完成度：”とりあえず動く”、なので近日中にいろいろ書き換える予定。&lt;br /&gt;&lt;br /&gt;以下、そのツールtext2epub-cljでテキストファイルからePubを作りiBooksで読むまでを説明します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;まず&lt;a href="http://github.com/deltam/text2epub-clj/downloads"&gt;Downloadページ&lt;/a&gt;に行ってtext2epub-clj-standalone-0.0.1-alpha.jarをダウンロードしてきてください。Javaの実行環境があればこのJarひとつで動きます。&lt;/li&gt;&lt;li&gt;ePub化したいテキストファイルを用意してください。これはUTF-8でエンコード必須です。&lt;/li&gt;&lt;li&gt;コマンドラインで以下のように打ってください。&lt;br /&gt;&lt;pre&gt;java -jar text2epub-clj-standalone-0.0.1-alpha.jar テキストファイル名 ePub名.epub ePubのタイトル&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;これでePub名.epubというファイルが出来るはずです。そのほかcontent.opfとかファイルが出来てると思いますが、それらは削除してOKです。&lt;/li&gt;&lt;li&gt;そのePubをiTunesにドラッグ＆ドロップしてください。上手く行ってれば”ブック”の項目にコマンドラインで打ち込んだタイトルが表示されるはずです。&lt;/li&gt;&lt;li&gt;iPhone、iPodTouchを同期してePubを送ります。iBooksを開いてタイトルが表示されていればOK。それをタップしてちゃんと開ければ、あとは大丈夫。&lt;/li&gt;&lt;li&gt;読書する。&lt;/li&gt;&lt;/ul&gt;iBooks画面はこんなふうになります（&lt;a href="http://deltam.blogspot.com/2009/12/blog-post.html"&gt;このときに書いたやつ&lt;/a&gt;をサンプルに使用）。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_skNrQwV82QQ/TC3pBQpQ0AI/AAAAAAAAAUA/X0R7ZIKYWHk/s1600/IMG_0338.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://1.bp.blogspot.com/_skNrQwV82QQ/TC3pBQpQ0AI/AAAAAAAAAUA/X0R7ZIKYWHk/s200/IMG_0338.PNG" alt="" id="BLOGGER_PHOTO_ID_5489299728691679234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_skNrQwV82QQ/TC3pA7GMJpI/AAAAAAAAAT4/MGXJTVLg3u0/s1600/IMG_0340.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_skNrQwV82QQ/TC3pA7GMJpI/AAAAAAAAAT4/MGXJTVLg3u0/s200/IMG_0340.PNG" alt="" id="BLOGGER_PHOTO_ID_5489299722907428498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;現状では章ごとの目次とか表紙の画像は設定してません。著者欄もnobody。本当にシンプルな素のePubです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今後のToDoとしてはRSS・AtomフィードからePubを作る、GAE/JでWebサービス化するとかを考えてます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【参考リンク】&lt;br /&gt;&lt;a href="http://rikukoike.tumblr.com/post/745791179/tumblr-2-epub-podcast"&gt;ssig33 - Tumblr 2 ePub の PodCast 機能を強化した&lt;/a&gt;&lt;br /&gt;この人スゴイです。開発スピードが俺の10倍ぐらいある。ただ運用が大変みたいなので俺もYet Anotherなサイトを作って負荷分散に協力したい（来週中ぐらいにできたらいいな）。&lt;br /&gt;あとドネーションも受け付けているみたいです（支援）。&lt;br /&gt;&lt;a href="http://rikukoike.tumblr.com/post/754127788/tumblr-2-epub-premium-service"&gt;ssig33 - Tumblr 2 ePub の Premium Service 作った、お金ください&lt;/a&gt;&lt;br /&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-961935761128304864?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/jlBOACC4-Sg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/961935761128304864/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=961935761128304864" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/961935761128304864?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/961935761128304864?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/jlBOACC4-Sg/epubclojure.html" title="テキストファイルをePub化するツールをClojureで作りました。" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_skNrQwV82QQ/TC3pBQpQ0AI/AAAAAAAAAUA/X0R7ZIKYWHk/s72-c/IMG_0338.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/07/epubclojure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UFQXwyfSp7ImA9WxFUFEo.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-8056673259208114474</id><published>2010-06-25T23:26:00.006+09:00</published><updated>2010-06-26T00:20:10.295+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-26T00:20:10.295+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>iOS4で肩コリが軽くなるかも</title><content type="html">今年の４月ごろに買ったiPod touchをiOS4にアップデートしてみました。&lt;br /&gt;それまでの3.1.3で結構サクサク動いていたので、アップデートには消極的だったんですが、TwitterのTLを見ても文句が少ない・Bluetoothキーボードが使えるらしいということでアップデートしちゃいました。&lt;br /&gt;文句の中には「アップデートに時間がかかりすぎ」ってのがありましたけど、自分の場合は数分で終りました。&lt;br /&gt;&lt;br /&gt;で、iOS4です。思ったよりもサクサクというかヌルヌル動きますね。画面遷移のアニメーションに細かい演出が追加されてて、ヌルヌルっていう動作感です（上手く言えない…）。&lt;br /&gt;マルチタスク／アイコンのグループ化については色んなところで書かれているので省略。&lt;br /&gt;&lt;br /&gt;問題はBluetoothキーボードです！　&lt;a href="http://deltam.blogspot.com/2008/01/emone.html"&gt;EM・ONEを買った時&lt;/a&gt;にBluetoothキーボードとして&lt;a href="http://www.vshopu.com/TOSU_BluetoothKB/index.html"&gt;Stowaway Universal Bluetooth Keyboard&lt;/a&gt;というのを買ってたので、それを使ってみました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.jp/lh/photo/vutIdPjNzmGVcpbkmZeiBvzvShSxsFKb-xUQyHvorbI?feat=blogger" imageanchor="1" style="margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img style="width: 398px; height: 298px;" src="http://lh5.ggpht.com/_skNrQwV82QQ/TCS-IH0AncI/AAAAAAAAATo/Ca6yv9tbzA0/s512/DSC00035.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ペアリングはかなり簡単に終了、それ以降はキーボードの電源が入ると自動的にBluetoothを繋いでくれるみたいです。&lt;br /&gt;Touchのソフトウェアキーボードは繋いでいる間は非表示になります。以下、入力中の画面キャプチャ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.jp/lh/photo/JcPfJpp80pUrmi0r1mQ3svzvShSxsFKb-xUQyHvorbI?feat=blogger" imageanchor="1" style="margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img style="width: 392px; height: 261px;" src="http://lh4.ggpht.com/_skNrQwV82QQ/TCS-I9HEO8I/AAAAAAAAAT0/MBe4OEKD2_g/s512/IMG_0336.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;変換候補は全画面で表示してくれて見やすい。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.jp/lh/photo/LZWBFkIt-QGBlhUg8mDf__zvShSxsFKb-xUQyHvorbI?feat=blogger" imageanchor="1" style="margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img style="width: 389px; height: 258px;" src="http://lh5.ggpht.com/_skNrQwV82QQ/TCS-ImyOQAI/AAAAAAAAATw/9CjbaUHqb7w/s512/IMG_0335.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;このキーボードの場合はCmd(Win)キー＋スペースで入力切替ができました（一番下のはアラビア語です）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ちょこっと使っただけですけど、文字入力に関してはかなり早くてストレスなく使えると思います。あとはこのキーボードの変則キー配列に慣れればOKですね。&lt;br /&gt;このキーボード、薄いわりにキーの深さがそこそこあって良いんですが、真ん中から二つに折りたためるというギミックのため、キー配列が少々特殊です。&lt;br /&gt;&lt;br /&gt;こんなふうに折りたたんで持ち運べば、文字入力マシンの最小構成になりますね。これでサボリ気味だったこのブログも更新出来るかな？&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.jp/lh/photo/kKbb6b0XwZCkku6vfwpvLfzvShSxsFKb-xUQyHvorbI?feat=blogger" imageanchor="1" style="margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img style="width: 399px; height: 299px;" src="http://lh3.ggpht.com/_skNrQwV82QQ/TCS-Ib2NivI/AAAAAAAAATs/KoFpq2yAGNw/s512/DSC00036.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これで文章作成のためだけなら重たいMacBookを持ち歩かなくて良くなりました。最近、肩が重いのもこれで良くなったらいいんですけどねー。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【関連リンク】&lt;br /&gt;&lt;a href="http://deltam.blogspot.com/2008/01/emone.html"&gt;サルノオボエガキ: EM・ONEと折りたたみキーボード&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vshopu.com/TOSU_BluetoothKB/index.html"&gt;ThinkOutside Stowaway Universal Bluetooth Keyboard&lt;/a&gt;&lt;br /&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-8056673259208114474?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/eTPoJQtSeXk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/8056673259208114474/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=8056673259208114474" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8056673259208114474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8056673259208114474?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/eTPoJQtSeXk/ios4.html" title="iOS4で肩コリが軽くなるかも" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_skNrQwV82QQ/TCS-IH0AncI/AAAAAAAAATo/Ca6yv9tbzA0/s72-c/DSC00035.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/06/ios4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEENRnk5cSp7ImA9WxFTGEs.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-5348337779435242793</id><published>2010-04-05T21:31:00.001+09:00</published><updated>2010-04-10T10:24:57.729+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-10T10:24:57.729+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>「根をはる安定」から「コマの安定」へ</title><content type="html">「安定した生活」という言葉の意味が自分の中で変わりつつあるのを感じる。&lt;br /&gt;&lt;br /&gt;以前の安定とは、ひとつところに樹のように根をはって定住するようなイメージだった。自分の場所があって、そこでいかに心地良く暮らすかが問題。&lt;br /&gt;&lt;br /&gt;いまは回転するコマのような安定も良いんじゃないかと思うようになってきた。コマに動き続け、その回転力によって姿勢を安定させる。&lt;br /&gt;決まった場所は持たないけど回転力を維持するためにやることはいろいろある。&lt;br /&gt;&lt;br /&gt;まだ具体的なアクションにまで落とせないんだけど、こんなことを考えました。&lt;br /&gt;&lt;br /&gt;あれこれジタバタしてみようかなーっと。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/deltam/HVbsjF?authkey=Gv1sRgCJS0tMvWwN3UAQ#5456328104846429458"&gt;&lt;img src="http://lh3.ggpht.com/_skNrQwV82QQ/S7jFgKNaDRI/AAAAAAAAATU/FYUOCFPDnTo/s288/iphone_photo.jpg" style="margin: 5px; width: 377px; height: 220px;" border="0" /&gt;&lt;/a&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-5348337779435242793?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/Ci7aCjD5-_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/5348337779435242793/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=5348337779435242793" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5348337779435242793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5348337779435242793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/Ci7aCjD5-_M/blog-post_13.html" title="「根をはる安定」から「コマの安定」へ" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_skNrQwV82QQ/S7jFgKNaDRI/AAAAAAAAATU/FYUOCFPDnTo/s72-c/iphone_photo.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/02/blog-post_13.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ADRns5eip7ImA9WxBUE0s.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-6865440113870071930</id><published>2010-02-28T21:29:00.005+09:00</published><updated>2010-02-28T21:56:17.522+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-28T21:56:17.522+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Compojure - Clojure版Webアプリフレームワークをインストール</title><content type="html">もっと&lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;で遊びたいので&lt;a href="http://github.com/weavejester/compojure"&gt;Compojure&lt;/a&gt;というフレームワークをインストールしてみました。Clojure用のWebアプリフレームワークです。まだMacPortsとかにも入ってないみたいなので、簡単にビルドと設定の方法を書いて記憶を整理しときます。とりあえずHello Worldを実行するまで。&lt;br /&gt;以下、環境はMacBookでGitはインストール済（MacPortsにある）とします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1) GitHubリポジトリから最新版を取ってくる。&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;git clone git://github.com/weavejester/compojure.git&lt;/pre&gt;&lt;br /&gt;適当な場所にcloneしときます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2) 関連ライブラリを取得&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;cd compojure/&lt;br /&gt;ant deps&lt;/pre&gt;&lt;br /&gt;必要なライブラリは上のコマンドで自動的に取得してくれます。実行するとcompojure/deps以下にJarファイルが用意されます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3) ビルド&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;ant&lt;/pre&gt;&lt;br /&gt;これでcompojure.jarが作られます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4) Jarファイルをまとめて配置&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;mkdir ~/.compojure&lt;br /&gt;cp compojure.jar ~/.compojure&lt;br /&gt;cp deps/*.jar ~/.compojure&lt;/pre&gt;&lt;br /&gt;私の場合はホームディレクトリに.compojureを作ってそこに配置することにしました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5) 起動用シェルスクリプトを作る&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;cd ~/.compojure&lt;br /&gt;vi compojure.sh&lt;/pre&gt;&lt;br /&gt;でファイルを作成して、以下のスクリプトを書く。&lt;br /&gt;&lt;pre style="code"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;for f in ~/.compojure/*; do&lt;br /&gt;  CLASSPATH=$CLASSPATH:$f&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;java -cp $CLASSPATH clojure.main $1&lt;/pre&gt;&lt;br /&gt;CLASSPATHに必要なJarファイルを追加してClojure起動という内容。&lt;br /&gt;&lt;pre style="code"&gt;chmod +x compojure.sh&lt;br /&gt;sudo ln -s ~/.compojure/compojure.sh /opt/local/bin/compojure&lt;/pre&gt;&lt;br /&gt;このスクリプトのシンボリックリンクをパスが通ったところに作ります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6) Hello Worldスクリプトを作る。&lt;br /&gt;&lt;/span&gt;Compojureのページにある&lt;a href="http://github.com/weavejester/compojure"&gt;Sample Code&lt;/a&gt;をそのまま書きました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7) テスト&lt;br /&gt;&lt;/span&gt;&lt;pre style="code"&gt;compojure hello_compojure.clj&lt;/pre&gt;&lt;br /&gt;ブラウザで&lt;a href="http://localhost:8080"&gt;http://localhost:8080&lt;/a&gt;を見てちゃんと表示されればOK。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;【参考リンク】&lt;br /&gt;&lt;/span&gt;&lt;a href="http://en.wikibooks.org/wiki/Compojure/Getting_Started"&gt;Compojure/Getting Started - Wikibooks, collection of open-content textbooks&lt;/a&gt;&lt;br /&gt;起動スクリプトはココの情報を参考にしました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=deltam-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4274067890" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/gp/product/4274067890?ie=UTF8&amp;tag=deltam-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4274067890"&gt;プログラミングClojure&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=deltam-22&amp;l=as2&amp;o=9&amp;a=4274067890" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-6865440113870071930?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/oHNiXPYiIQ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/6865440113870071930/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=6865440113870071930" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6865440113870071930?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6865440113870071930?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/oHNiXPYiIQ0/compojure-clojureweb.html" title="Compojure - Clojure版Webアプリフレームワークをインストール" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/02/compojure-clojureweb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YARH47fSp7ImA9WxBVEkk.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-7844588593914851477</id><published>2010-02-15T22:27:00.003+09:00</published><updated>2010-02-15T22:39:05.005+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T22:39:05.005+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>手話を覚えたくなった</title><content type="html">今日の仕事の帰り、コーヒーが飲みたくなってスタバに寄った。音楽を聞きながら本を読んでいると隣の席に男女のカップルが座った。横目にずいぶん身振りがオーバーアクションな人だなーと思っていたらそれは勘違いで、二人は手話で会話していたのだ。音楽で耳がふさがっていたのでしばらく気がつかなかった。&lt;br /&gt;&lt;br /&gt;BGMが流れ、客の話し声で雑然としたなか、二人は静かに淀みない手の動きで饒舌に語り合っていた。なんというか、その滑らかな手の動きがきれいだと思ったし、それが言葉になっているということが美しく思えた。&lt;br /&gt;&lt;br /&gt;そういや、今年の正月に「毎月ひとつ、何か新しいことを始める」って決めたんだった。今月はもう半分以上過ぎてしまっているけど、手話を覚えてみたい。まずは挨拶を覚えよう。それだけなら今週中に出来そうだ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;３DCGと手話は相性が良いのかもしれない。いつか音消しで見る！&lt;br /&gt;&lt;iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm7935223" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"&gt;&lt;a href="http://www.nicovideo.jp/watch/sm7935223"&gt;【ニコニコ動画】【第3回MMD杯本選】初音ミクの消失を演じて頂きました&lt;/a&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-7844588593914851477?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/DyYFTZgXC1s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/7844588593914851477/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=7844588593914851477" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7844588593914851477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/7844588593914851477?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/DyYFTZgXC1s/blog-post.html" title="手話を覚えたくなった" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/02/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQNQX04cSp7ImA9WxBVEkk.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-8031937637174684441</id><published>2010-01-31T22:55:00.009+09:00</published><updated>2010-02-15T22:59:50.339+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T22:59:50.339+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><category scheme="http://www.blogger.com/atom/ns#" term="Clojure" /><title>Clojureコードバトンを受け取った</title><content type="html">&lt;a href="http://manjilab.com/"&gt;manjilab&lt;/a&gt;さんより&lt;a href="http://twitter.com/deltam/status/8417250802"&gt;Twitterでお誘い&lt;/a&gt;されたので光速で受けました。『&lt;a href="http://www.amazon.co.jp/gp/product/4274067890?ie=UTF8&amp;amp;tag=deltam-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4274067890"&gt;プログラミングClojure&lt;/a&gt;』を読ん出る最中なのでちょうど良かったです。&lt;br /&gt;自分が書いたのはGitHubのここのページに置いときました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gist.github.com/291106"&gt;gist: 291106 - GitHub&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて「Clojureコードバトンっていったい何？」ってことなんですが、もともとは&lt;a href="http://d.hatena.ne.jp/higepon/"&gt;id:higepon&lt;/a&gt;さんがSchemeではじめたものらしいです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/higepon/20100111/1263202895"&gt;Scheme コードバトンまとめページ - ひげぽん OSとか作っちゃうかMona-&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;コードバトンは、誰かが書いたコードをリレーして各人が好きに書き換えて面白いものに変えちゃおう！って感じの主旨のものみたいです。途中でathosさんがClojureで書き換えて、いろいろバトンが渡り現在に至ると。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/athos/20100111/p1"&gt;噂の「英単語を覚えるスクリプト」をClojureで - athosの日記&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今回のお題は「英単語を覚えるスクリプト」。前のmanjilabさんはMac OS Xで英単語をしゃべらせるという&lt;a href="http://manjilab.com/2010/01/30/clojure-code-baton/"&gt;Very Coolな機能を書いてる&lt;/a&gt;わけで、あえて自分なりに一工夫加えるとなるとけっこう考えてしまう。と思いきや、すぐにアイデア浮かびました（やっぱり12時間睡眠すると頭がすっきりするなぁ）。&lt;br /&gt;&lt;br /&gt;このスクリプトは英単語の辞書ファイルを読み込んで表示してくれるんですが、肝心の辞書ファイルを作るのが面倒くさい。じゃぁ&lt;a href="http://smart.fm/home"&gt;Smart.fm&lt;/a&gt;で学習中のアイテムを引っ張ってきて、このスクリプト用の辞書ファイルにする機能つければ便利じゃね？ということで作ってみました。&lt;br /&gt;&lt;br /&gt;まず調査！　&lt;a href="http://developer.smart.fm/"&gt;Smart.fmのデベロッパ向けページ&lt;/a&gt;を見てみると、ユーザ名を指定してその人の学習中アイテムを取得するAPIがありました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.smart.fm/docs/user_calls/items_studied"&gt;items studied&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;いろんな形式でデータが取れるみたいですが、今回はXMLを選択。Clojureでは"&lt;a href="http://clojure.org/sequences"&gt;Sequences&lt;/a&gt;"という概念でいろんなデータの連なりを統一して扱えます。XMLには"&lt;a href="http://richhickey.github.com/clojure/clojure.core-api.html#clojure.core/xml-seq"&gt;xml-seq&lt;/a&gt;"というやつが使えそう。いろいろ検索して使い方を調べてなんとかAPIのXMLを読み取れるようにしてみました。&lt;br /&gt;&lt;br /&gt;自分が手を加えたのはコマンドラインで”−s”オプションと、smartfm-dictのところですね。一通り書いた後になんとかキレイにしようと思ったんですけど、どうかしら。&lt;br /&gt;&lt;br /&gt;勢いで受け取っちゃったコードバトンですが、思いのほか面白かったです。&lt;s&gt;&lt;span style="font-weight: bold;"&gt;だれか次に受け取ってくれる人は、この記事のコメントか&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://twitter.com/deltam/status/8452528434"&gt;Twitter&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;のほうで話しかけてください！&lt;/span&gt;　ちょっとでも興味があったら勢いでYou受け取っちゃいなYO！&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;（02/15追記）&lt;br /&gt;私のバトンは&lt;a href="http://twitter.com/omasanori"&gt;@omasanori&lt;/a&gt;さんが受け取ってくれました（感謝！）。さらに&lt;a href="http://twitter.com/omasanori/status/9030851456"&gt;コメントを英訳する&lt;/a&gt;という試みもされてます（スゴイ。&lt;br /&gt;さらにその先は&lt;a href="http://twitter.com/tnoborio"&gt;@tnoborio&lt;/a&gt;さんに渡り、ついにSwingでGUI化されました（ぉぉ。今のところ受け取り先募集中みたいです。&lt;br /&gt;&lt;a href="http://tnoborio.blogspot.com/2010/02/clojure.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+TnoborioBloggerBlog+%28tnoborio+%7C+Blogger+Blog%29&amp;amp;utm_content=livedoor"&gt;tnoborio | Blogger Blog: Clojureコードバトン参加中&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=deltam-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4274067890" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/gp/product/4274067890?ie=UTF8&amp;tag=deltam-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4274067890"&gt;プログラミングClojure&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=deltam-22&amp;l=as2&amp;o=9&amp;a=4274067890" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-8031937637174684441?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/ygO7M_XBy2Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/8031937637174684441/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=8031937637174684441" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8031937637174684441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/8031937637174684441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/ygO7M_XBy2Q/clojure.html" title="Clojureコードバトンを受け取った" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/01/clojure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04NR3c-fCp7ImA9WxBRF0U.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-5307913360140612217</id><published>2010-01-06T21:59:00.003+09:00</published><updated>2010-01-06T22:53:16.954+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-06T22:53:16.954+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="技術" /><title>さくらインターネットにインストールしたMercurialをバージョンアップ</title><content type="html">しばらくぶりにさくらインターネットにインストールしていたMercurialを使おうとしたら、hg stでエラーメッセージ。調べてみたらさくらインターネットではPythonを2.5.2から2.6.2にバージョンアップしたらしい（&lt;a href="http://www.sakura.ad.jp/news/archives/20090618-001.news"&gt;お知らせ記事&lt;/a&gt;）。&lt;br /&gt;&lt;br /&gt;Mercurialもver0.9.5を&lt;a href="http://deltam.blogspot.com/2008/01/mercurial.html"&gt;インストールした時&lt;/a&gt;からアップしてなかったので、これを機に1.4に入れ替えることにした。&lt;br /&gt;こちらの記事を参考にやったら結構簡単にできました。感謝。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/handler/20091119/1258561725"&gt;さくらとPythonとMercurial。 - handlerの日記&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これでOKだー、と0.9.5のときに作ったレポジトリのCGIにアクセスしてみたらInternal Server Error。どうやらMercurialのhgweb.cgiもバージョンアップされてたらしいので入れ替えることにする。&lt;br /&gt;&lt;br /&gt;Mercurialに同梱されているhgweb.cgiというスクリプトをwww用ディレクトリにindex.cgiと改名してコピーする。実行権限を与えておくのを忘れずに。&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;cd mercurial-1.4&lt;br /&gt;cp ./hgweb.cgi ~/www/hgtest/index.cgi&lt;br /&gt;cd ~/www/hgtest/index.cgi&lt;br /&gt;chmod +x index.cgi&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;index.cgiをレポジトリに合わせて書き換えていきます。まずPython pathの設定の行のコメントを外して環境に合わせてパスを設定する。&lt;br /&gt;&lt;br /&gt;hgweb.cgi(6-7行)&lt;br /&gt;&lt;pre class="code"&gt;import sys&lt;br /&gt;sys.path.insert(0, "/home/ユーザ名/local/lib/python/site-packages/")&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;次にUTF-8の設定を有効にする。日本語を表示させたいならこれが必要。&lt;br /&gt;&lt;br /&gt;hgweb.cgi(21-22行)&lt;br /&gt;&lt;pre class="code"&gt;import os&lt;br /&gt;os.environ["HGENCODING"] = "UTF-8"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;最後にホームディレクトリに作ったMercurialレポジトリの位置を指定する。私は~/hgrepos以下にレポジトリをまとめているのでこんな感じになった。&lt;br /&gt;&lt;br /&gt;hgweb.cgi(27行)&lt;br /&gt;&lt;pre class="code"&gt;application = hgweb("/home/ユーザ名/hgrepos/レポジトリ名/", "レポジトリの説明")&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;蛇足。上記の設定をしたのに500 Internal Server Errorになっちゃう場合は以下のところのコメントを外すと詳細なエラーメッセージをブラウザに表示してくれる。私もちょっとハマりかけたのでこれが役に立った。&lt;br /&gt;&lt;br /&gt;hgweb.cgi(13-14行)&lt;br /&gt;&lt;pre class="code"&gt;import cgitb&lt;br /&gt;cgitb.enable()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上でバージョンアップは完了。hgweb.cgiも進化しているようでページデザインとかが小奇麗になっている気がする。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deltam.sakura.ne.jp/hg/iphone-note-sync/?shortlog/11"&gt;iPhone Note App File Sync: shortlog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【関連記事】&lt;br /&gt;&lt;a href="http://deltam.blogspot.com/2008/01/mercurial.html"&gt;サルノオボエガキ: Mercurialをサーバにインストールした&lt;/a&gt;&lt;br /&gt;2008年1月の記事。2年ぶりのバージョンアップでした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-5307913360140612217?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/A_ab3MPKvK8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/5307913360140612217/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=5307913360140612217" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5307913360140612217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/5307913360140612217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/A_ab3MPKvK8/mercurial.html" title="さくらインターネットにインストールしたMercurialをバージョンアップ" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/01/mercurial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEGRHo5eCp7ImA9WxBRE0g.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-9207000662697638901</id><published>2010-01-01T23:29:00.003+09:00</published><updated>2010-01-01T23:37:05.420+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T23:37:05.420+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>謹賀新年</title><content type="html">あけましておめでとうございます。今年もこのブログをよろしくお願いします。&lt;br /&gt;&lt;br /&gt;元日の今日を私はPHPを勉強しつつ過ごしてました。実験的に&lt;a href="http://twitter.com/#search?q=%231day_php_dev"&gt;Twitterで記録&lt;/a&gt;しながらやってみました。まずは1日でPHPの基礎から&lt;a href="http://www.hyuki.com/tropy/"&gt;Tropy&lt;/a&gt;クローンを作ることまで目標に実施。結果は&lt;a href="http://deltam.sakura.ne.jp/php-cgi/php_tropy/?id=40f425c6"&gt;これ&lt;/a&gt;。なんとか完成。&lt;br /&gt;&lt;br /&gt;元旦からわりと疲れましたが、まぁ1年の滑り出しとしては良いかなーと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ではみなさんが良い一年を過ごせますように！&lt;br /&gt;&lt;br /&gt;&lt;iframe style="background:transparent;" width="380" height="168" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://embed.pixiv.net/code.php?id=7938490_12a34523f6c5b0f7ef7b563610936b1a"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-9207000662697638901?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/XCrt1mjkNQU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/9207000662697638901/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=9207000662697638901" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/9207000662697638901?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/9207000662697638901?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/XCrt1mjkNQU/blog-post.html" title="謹賀新年" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2010/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRXczcSp7ImA9WxBREks.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-4316485965683359255</id><published>2009-12-31T19:05:00.008+09:00</published><updated>2009-12-31T21:58:34.989+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-31T21:58:34.989+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><title>2009年最後のエントリ</title><content type="html">&lt;a href="http://deltam.blogspot.com/2009/01/2009.html"&gt;『止まるな、踊れ！』をスローガン&lt;/a&gt;にして始まった私の2009年ですが、もう大晦日が来てしまいました。あっという間に1年が過ぎてしまった気がしますが、このスローガンに則った日々を過ごしてきたか、ちょっと振り返ってみようと思います。&lt;br /&gt;&lt;br /&gt;スローガンを「止まるな、踊れ！」にした本意は「&lt;span style="font-weight: bold;"&gt;2009年で28歳になるが、これから先の人生の選択肢は狭まるばかり。だから今からでも出来るだけ色々なアクションを取って選択の幅を広げたい&lt;/span&gt;」という気持ちでした。なんというか、このまま29、30と日々を淡々と過ごしていくことも出来る、だけどこのままだと何か計ることの出来無いものが失われていって、挽回不可能なところまで過ぎてからそれに気づくんじゃないかと。&lt;br /&gt;ちょっとブンガク的に表現しすぎましたね（汗　次、具体的にやったことをブログエントリで振り返ります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;【1月】&lt;ul&gt;&lt;li&gt;&lt;a href="http://deltam.blogspot.com/2009/01/blog-post_07.html"&gt;アラビア語とヘブライ語のアルファベットを勉強した&lt;/a&gt;&lt;/li&gt;ちょっとしたきっかけからアラビア語とヘブライ語を学び始めようと思ったのですが、ヘブライ語はギブアップ。アラビア語だけで四苦八苦しています。1年も経っているのですがアルファベットの基本形をようやく覚えたぐらいで、筆記体はまだまだ、日常会話とかはまだはるか先です。2010年もこれは継続！&lt;br /&gt;&lt;a href="http://deltam.blogspot.com/2009/02/100diy.html"&gt;アラビア書道の筆を自作した&lt;/a&gt;ので、2010年の書初めはアラビア語を書きたいですねー。&lt;br /&gt;&lt;/ul&gt;【2月】&lt;ul&gt;&lt;li&gt;&lt;a href="http://deltam.blogspot.com/2009/02/blog-post_20.html"&gt;ライトノベル新人賞に応募することになりました&lt;/a&gt;&lt;/li&gt;いろいろあって、小説を書くことにしたのでした。結局9月ごろまで掛かって&lt;a href="http://deltam.blogspot.com/2009/12/blog-post.html"&gt;書き上げました&lt;/a&gt;。書き上げた時点で「まだ応募するレベルに達していない」と判断したので応募はしませんでした。まず最初に確認したかったのは「自分は長編の小説を一作きちんと書き上げられる人間なのか？」ということ。そういう意味では目的達成です。具体的に足りない能力を見積もれたのでこれも2010年継続ですね。&lt;/ul&gt;【3-4月】&lt;ul&gt;特に活動せず。ちょっとダレていました。&lt;/ul&gt;【5-7月】&lt;ul&gt;&lt;li&gt;&lt;a href="http://deltam.blogspot.com/2009/05/macbook.html"&gt;MacBook購入&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;ここから徐々にWindowsからMacにスイッチしていきます。そしてMacBook購入代の減価償却のため、&lt;a href="http://deltam.blogspot.com/2009/05/objective-c.html"&gt;iPhoneアプリの開発を学び&lt;/a&gt;AppStoreへリリースを目指していたのですが、結局まだ果たせずにいます。小物はちょこちょこ作っているので、来年はひとつの作品としてまとめたいですね。&lt;/ul&gt;【8-10月】&lt;ul&gt;&lt;li&gt;&lt;a href="http://deltam.blogspot.com/2009/08/mathematical-monday.html"&gt;Mathematical Monday&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;なぜか数学に目覚める。現在はトポロジーの入門書を学習中。これも継続。というか終りがなさげ。&lt;/ul&gt;【11月】&lt;ul&gt;&lt;span style="font-weight:bold;"&gt;会社を辞めました。&lt;/span&gt;以上。&lt;/ul&gt;【12月】&lt;ul&gt;フリーの開発者として仕事を探す。来年6月ぐらいまでのプロジェクトを教えてもらい、参加することに。&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;なんだかまとまりの無い活動をしてますね。3-4月を除けばとりあえず「止まらず踊れた」と言えるかな？　アラビア語、小説書きなど今までの生活の延長線上にない活動を始められたのは良かったと思ってます。2010年もそれらを継続しつつ、新しい活動のタネを蒔いていきたいと思います。&lt;br /&gt;&lt;br /&gt;さらっと書きましたが11月に新卒から5年半ほど勤めた会社を辞職しました。会社は中堅SIer、私はSEとして働いていました。最初はコーディングもやるゴリゴリの開発系SEで、最近は企画系の仕事をすることが多かったです。なぜ辞めたかについてはまた別にエントリで。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;それでは皆さん、良いお年を！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-4316485965683359255?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/6yeiXf06BXo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/4316485965683359255/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=4316485965683359255" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4316485965683359255?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/4316485965683359255?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/6yeiXf06BXo/2009.html" title="2009年最後のエントリ" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2009/12/2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YDQ346fyp7ImA9WxBREUg.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-6718336021550613831</id><published>2009-12-29T20:47:00.009+09:00</published><updated>2009-12-30T16:46:12.017+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-30T16:46:12.017+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="日記" /><category scheme="http://www.blogger.com/atom/ns#" term="ラノベ" /><title>ラノベ小説（？）書きました</title><content type="html">今年のネタは今年の内にパート2&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deltam.blogspot.com/2009/02/blog-post_20.html"&gt;サルノオボエガキ: ライトノベル新人賞に応募することになりました&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上のエントリで書いた通り、ライトノベル新人賞に出すための小説を書きました。書き上げたのは9月頃なんですが、なんとなくこちらのブログで報告するのを忘れてました。それで結局新人賞へ投稿はしませんでした。あとで書きますが、一作書き上げたことで自分に足りないところがよく分かったからです。&lt;br /&gt;ちなみに海燕さん主催のブログで報告した時の記事はこちら。コメ欄でアドバイスをいろいろもらって感謝。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/count-zero/20090909/p5"&gt;冒頭さらし - ライトノベル新人賞に応募しよう！&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これまで短編は幾つか書いたことがあるのですが、長編小説を書き上げたのはこれが初めてです。正真正銘長編処女作です。題名は『&lt;span style="font-weight: bold;"&gt;スウスウと砂漠の運び屋&lt;/span&gt;（仮）』。あらすじはこんな感じです。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;砂漠を行き来して人々の荷物を受け渡す運び屋の主人公が、僻地の村で受け取った荷物は小さな女の子スウスウだった。人付き合いが苦手な主人公は活発で明るいスウスウに振り回され、オアシス街まで送る予定だったのに街のガイドまですることに。初めての街に浮かれるスウスウだったが、故郷の村ではスウスウの運命に関わる陰謀が進んでいた。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;【書いた結果分かったこと】&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;小説は書き始めたら何が何でも最後まで書いてしまうこと。そうしないと「物語りの終わらせ方」が練習できず、経験値が貯まらない。&lt;/li&gt;&lt;li&gt;自分は小説とは「まずストーリーがあってそれに合わせてキャラクターを作るもの」と思い込んでいたがこれは違う。ストーリーとキャラクターは相互補完の関係にある。&lt;/li&gt;&lt;li&gt;ラノベの場合、まず魅力的なキャラクターを作る必要があるが、自分にはこの意識が足りなかった。&lt;/li&gt;&lt;li&gt;結論：最低でも短編5本、長編2本を書いて経験値を貯めること。魅力的なキャラクター作りについてはトライ＆エラーを繰り返すしか無い。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;【ご提案】&lt;/span&gt;&lt;br /&gt;で、ですね…。このエントリを読んでいる方で年末年始に何か暇つぶしのネタは無いかなーって思っている方がいらっしゃいましたら、これを読んでみるのもイイんじゃないかなと提案させて頂きたく存じておりありハベリの心なんですが…。素人なりに読みやすさに気を付けたり笑えるところとか入れて工夫はしてるんで、まるっきり時間の無駄にはならないんじゃないかーと思います。&lt;br /&gt;&lt;br /&gt;Googleドキュメントに上げていますので、ディスプレイで長文を読むことに慣れている方はこちらでどうぞ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/View?id=dghvvqm4_14fj6jf9dp"&gt;スウスウと砂漠の運び屋（仮）&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;素のテキストファイルは以下に置いてあります。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deltam.sakura.ne.jp/txt/susu.txt"&gt;http://deltam.sakura.ne.jp/txt/susu.txt/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iPhoneアプリで&lt;a href="http://sb.aill.org/"&gt;SkyBook&lt;/a&gt;（&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=296500859&amp;amp;mt=8"&gt;AppStoreリンク&lt;/a&gt;）という素敵アプリがありまして、これを使うとテキストファイルが縦書きかつ美麗なフォントで読めます。&lt;br /&gt;以下、SkyBookを使って上のテキストファイルを読む方法を説明しますね。&lt;br /&gt;&lt;br /&gt;１．「本棚選択」で「FILES」を選ぶ。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_skNrQwV82QQ/SzsDPzkmfUI/AAAAAAAAASU/NKNTvHvk-ag/s1600-h/skybook1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_skNrQwV82QQ/SzsDPzkmfUI/AAAAAAAAASU/NKNTvHvk-ag/s200/skybook1.jpg" alt="" id="BLOGGER_PHOTO_ID_5420930146547170626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;２．右下の「作品追加」ボタンを押して次画面でテキストファイルのURLを入力する&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_skNrQwV82QQ/SzsDQIUHZoI/AAAAAAAAASc/x0oNO8ymfNA/s1600-h/skybook2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://1.bp.blogspot.com/_skNrQwV82QQ/SzsDQIUHZoI/AAAAAAAAASc/x0oNO8ymfNA/s200/skybook2.jpg" alt="" id="BLOGGER_PHOTO_ID_5420930152115168898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;３．本棚にテキストファイルが追加されるのでそれをクリック。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_skNrQwV82QQ/SzsDQxUc5bI/AAAAAAAAASk/4-jD_cKgS2o/s1600-h/skybook3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://1.bp.blogspot.com/_skNrQwV82QQ/SzsDQxUc5bI/AAAAAAAAASk/4-jD_cKgS2o/s200/skybook3.jpg" alt="" id="BLOGGER_PHOTO_ID_5420930163122431410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;４．文章がこんな風に表示されます。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_skNrQwV82QQ/SzsDQ4xuE_I/AAAAAAAAASs/zDk57C9aIEQ/s1600-h/skybook4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_skNrQwV82QQ/SzsDQ4xuE_I/AAAAAAAAASs/zDk57C9aIEQ/s200/skybook4.jpg" alt="" id="BLOGGER_PHOTO_ID_5420930165124240370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ということで、いかがでしょうか！？　みなさん！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-6718336021550613831?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/9nJVYu_czKs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/6718336021550613831/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=6718336021550613831" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6718336021550613831?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/6718336021550613831?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/9nJVYu_czKs/blog-post.html" title="ラノベ小説（？）書きました" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_skNrQwV82QQ/SzsDPzkmfUI/AAAAAAAAASU/NKNTvHvk-ag/s72-c/skybook1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2009/12/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcERXo5eSp7ImA9WxBREEU.&quot;"><id>tag:blogger.com,1999:blog-9245921.post-1509016446487900695</id><published>2009-12-22T00:03:00.004+09:00</published><updated>2009-12-29T20:26:44.421+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-29T20:26:44.421+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="映画" /><title>映画『火天の城』、信長のSEはやりたくない！</title><content type="html">&lt;a href="http://katen.jp/"&gt;映画『火天の城』公式サイト&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今年のネタは今年の内に。&lt;br /&gt;&lt;br /&gt;ちょっと前になりますが、友人の誘いで『火天の城』という映画を見てきました。モノづくりをする人は胸にぐっと来るものがあるでしょう。熱い職人たちの話でした。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;映画は&lt;a href="http://ja.wikipedia.org/wiki/%E5%AE%89%E5%9C%9F%E5%9F%8E"&gt;安土城&lt;/a&gt;を築城する宮大工たちの物語です。戦国時代を舞台にしているのにほとんど武将が出てこないってのもちょっとレアな映画ですね。&lt;br /&gt;&lt;br /&gt;宮大工の棟梁、岡部又右衛門（西田敏行）が主人公で織田信長から直々に命令を受けて設計図を書くことになります。しかしさすがの信長、普通のお城は作らせません。岡部にとんでもないムチャぶりをしてきます。それに対して岡部がどう対応したか、ここが前半の山場ですね。&lt;br /&gt;&lt;br /&gt;ここらへんはわがままなユーザに振り回されるSEのようで自分の過去の経験と一緒になってちょっと泣けてきました（泣くの早！　しかも相手はユーザっつーかお殿様ですからね、機嫌を損ねたら即首ちょんぱです。命がけのシステム提案ってやりたくねー！！！&lt;br /&gt;SEをやってる方は、要求仕様をまとめようとユーザ先に行ったら織田信長がいて「出来るのか、出来るんだろうな」と刀に手を掛けながら迫ってくるような状況を想像してください。はい、ブラック企業どころではありません。首ちょんぱでBlood企業ですね。&lt;br /&gt;&lt;br /&gt;それだけに岡部が指図争い（他社との提案書比較みたいなもの）でやったことはすごい。お客のためにモノづくりをするものとして見習いたい。どういう事になったのかは映画を見てのお楽しみということで。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;他に見所といえば、リアルに再現された宮大工の作業風景でしょうか。&lt;a href="http://www.google.co.jp/search?q=%E6%A7%8D%E9%89%8B&amp;amp"&gt;槍鉋&lt;/a&gt;ってそういう風に使うのかとか、大きな板の切り出しってそういう風にやってたのねとか、自分としてはその場面を見れただけで結構満足感がありました。&lt;br /&gt;大工さんの作業風景って好きなんですよね。子供のころにも近所で家を立ててると現場に行ってじーっと作業を見てました。大工さんと仲良くなって木っ端でおもちゃを作って貰ったり。何かが作り上げられていく現場っていうのはなにか不思議な魅力があります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;出演している俳優たちは安定感抜群。主役の西田敏行をはじめ、大竹しのぶ、寺島進、緒形直人、椎名桔平など素人アイドル俳優がひとりもいないという安心感。見ていてまったく危なげなく見ていられます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;後半は城の大黒柱にするための大木を探す主人公と、それに共感しつつも協力できない樵の棟梁など、なかなか熱い男のドラマがあります。あと何故か誰もが予想しなかったというか、別に無くてもいいんじゃね？というどんでん返しが！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;映画を見終わったあとは心地よい満足感。まさに古き良き日本の職人の映画ですね。こういう映画こそ外国に配給する価値があるんじゃないかなーっと思ったらインドの映画祭に出品したそうな。好評なようで良かった。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://katen.blog.eonet.jp/making/2009/11/post-7d1f.html"&gt;『火天の城』公式サイト｜制作日記 : ムンバイ映画祭レポート&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;職人たちが自らの意地と血と汗を流して作る安土城の築上物語、戦国時代のプロジェクトX、DVDは来年の2月21日発売らしいです。&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=deltam-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=B002WJZYZI" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9245921-1509016446487900695?l=deltam.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/CLIZ/~4/ZBe81vt0OaA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://deltam.blogspot.com/feeds/1509016446487900695/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9245921&amp;postID=1509016446487900695" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/1509016446487900695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9245921/posts/default/1509016446487900695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/CLIZ/~3/ZBe81vt0OaA/se.html" title="映画『火天の城』、信長のSEはやりたくない！" /><author><name>deltam</name><uri>http://www.blogger.com/profile/00949008221129941620</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_skNrQwV82QQ/R5ClYfBi96I/AAAAAAAAABI/q59raNmeMSI/S220/deltam_icon.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://deltam.blogspot.com/2009/12/se.html</feedburner:origLink></entry></feed>

