IDEA HACKS! 2.0

本書で一番刺さったのは明るい標準レンズのカメラを持ち歩くことを推奨していることであるが、

カメラで写真を撮るということは、新鮮な目で風景を見直すきっかけになる

いう理由からである。強制的に構図を捉え直すのはカラーバスとかでもいいのかもしれないが、見える範囲という制約の中で調和を考えるという遊びは面白いかもと思った。そういえばこれと似たようなことかもしれない。

ProductName IDEA HACKS!2.0
小山 龍介
東洋経済新報社 / 1575円 ( 2011-12-09 )


セレンディピティに必要なもの

  • action
  • awareness
  • acceptance

U理論

  • センシング
  • プレゼンシング
  • リアライジング

その他

  • コンテキストの重要性
  • 仮説を早く立てる
  • できるだけ早く失敗する
  • 議事録ドリブン会議

最後の議事録ドリブンの会議はここ数年良く使っている。

DubstepとDrumstepの違い

今日聴いてたHospital Podcast 172のNetsky – Come Aliveのところで、

これはダブステップじゃなくてドラムステップだぜ。BPMはドラムンベースの半分だしな

と言っていて、やっと違いを理解した。確かにAmitとRoxyはヤバイすね。それからDrumstepはつなげやすいのでよいですね。

なにが言いたいかというと、logisticsを買うとイイよ!と。

ProductName FEAR NOT (NHS209CD)
LOGISTICS
HOSPITAL RECORDS / 1989円 ( 2012-05-16 )


富士市の人口密度

普段は仮想の空間(ケミカルスペース)とか多変量の解析ばかりしていて、リアルな地理情報を扱うようなエリアマーケティング的なところにはタッチしたことはなかったんだが、フジブログにインスパイアされてGISにも手を出し始めた。

やっぱ身近な話題は面白いね。データは政府統計のH12年国勢調査(小地域)をつかった。

library(maptools)
library(RColorBrewer)
library(classInt)
f <- readShapePoly("h12ka22210.shp")
pop <- f$JINKO / f$AREA * 1000
colors <- brewer.pal(9, "YlOrRd")
brks<-classIntervals(pop, n=10, style="quantile")
brks<- brks$brks
plot(f, col=colors[findInterval(pop, brks,all.inside=TRUE)], axes=F)

密度はf$JINKO / f$AREA * 1000で計算しているので単位面積あたりの人口ということになりますね。フジブログでは単純に人数をカウントしてるだけですが、実際には地域の何%が流出入したかをかんがえるべきかなと思います(予算配分的には人数でカウントするのが好ましいのかもしれないが)。

fuji pop

既にデータは国が出してんだからこういうのを小学校とか中学校のカリキュラムに取り入れれば、算数、地理、歴史の教育になっていいと思うんだけどなぁ。Rもオープンソースだしね。

ビジョナリー・カンパニー2を読んだ

古典の部類

このバスでどこに行くべきかは分からない。しかし、分かっていることもある。適切な人がバスに乗り、適切な人がそれぞれふさわしい席につき、不適切な人がバスから降りれば、素晴らしい場所に行く方法を決められるはずだ

日本の難しさは、一度乗ったバスからは簡単には降ろせないということですな。

ProductName ビジョナリー・カンパニー 2 - 飛躍の法則
ジェームズ・C. コリンズ
日経BP社 / 2310円 ( 2001-12-18 )


本書は、偉大な企業になるためにはどういう資質が必要かという観点で書いてあるが、内容は偉大な組織、偉大な個人に使えそうな考え方であるので、そういう読み方をしても面白い。

rpy2+ggplot2

なぜグラフを描くのかと問われれば要約統計量を見やすい形で表現したいからであり、ヒトの目という不完全なデバイスを通してデータを認識するためにはグラフとよばれる表現手段を介したほうが効率が良いからである。

と考えるならば、分析のためにグラフを描くという行為は統計解析と切り離せないものであり、画像を描くためだけのライブラリを選択することはあまりよろしいことではないと思う。

そして望ましくは、適切に前処理されたマトリックスから望むグラフが作られるべきであり、グラフを描くためにデータを(ハッシュなんかに)加工するというのはあまりいいやり方とは言えないんじゃないかなぁと思っている。

これが、Rでグラフを描く大きな理由。データの前処理はRでやることはほとんどなくて、大体はperl,pythonを使うので、rpy2は重宝する。

import rpy2.robjects.lib.ggplot2 as ggplot2
from rpy2.robjects import r
from rpy2.robjects.packages import importr
base = importr('base')

datasets = importr('datasets')
mtcars = datasets.mtcars

pp = ggplot2.ggplot(mtcars) + \
     ggplot2.aes_string(x='wt', y='mpg', col='factor(cyl)') + \
     ggplot2.geom_point() + \
     ggplot2.geom_smooth(ggplot2.aes_string(group='cyl'), method='lm')

#pp.plot()
r['ggsave'](file="mypng.png", plot=pp)
#r['dev.off']()

これで、重量(x)と燃費(y)のプロットに対して、気筒毎に回帰直線と信頼区間を描くことができる。

ggplot2

分析手法をテンプレート化して自動的にレポートを出力したい時にはプログラミングできる手段があるといいのでrpy2は良いライブラリだと思う。

ProductName グラフィックスのためのRプログラミング
H. ウィッカム
丸善出版 / 4200円 ( 2012-02-29 )


Emacsの画面分割を快適にする

キーバインドにもデザインのセンスが必要だなぁとしみじみ

僕はCtrl+Tabにあてました(Ctrl-tはdmacroにあててるので)。

(global-set-key (kbd "<C-tab>") 'other-window-or-split)

「ビジョナリー・カンパニー」を読んだ

金メダルのチームを銀、銅メダルのチームと比較して抜きん出た特徴を明らかにする。既に古典に近いが色褪せないのが古典のいいところですね。

ビジョナリー・カンパニーをつくるための概念を要約するとこんな感じ

  1. 時を告げる予言者になるな。時計をつくる設計者になれ
  2. 「ANDの才能」を重視しよう
  3. 基本理念を維持し、進歩を促す
  4. 一貫性を追求しよう

ProductName ビジョナリー・カンパニー ― 時代を超える生存の原則
ジェームズ・C. コリンズ
日経BP社 / 2039円 ( 1995-09 )


  • 会社を究極の作品と見るのは、きわめて大きな発想の転換である
  • Big Hairy Audacious Goals (BHAG)
  • いいアイデアであれば採用したい。そうでない場合でもそれが現実的でないと証明できれば一種の保険になり

ggplot2で綺麗なグラフを描く

ggplot2のためにRを覚えてもいいと思う。一度覚えてしまえば使い回しの効く技術だと思うんだけどなぁ。

ProductName グラフィックスのためのRプログラミング
H. ウィッカム
丸善出版 / 4200円 ( 2012-02-29 )


グラフィックス描画のための文法をRで実装したのがggplot2らしい。

ProductName The Grammar of Graphics (Statistics and Computing)
Leland Wilkinson
Springer / 8616円 ( 2005-08-30 )


PyJade(jade)の更新を検知してコンパイルするスクリプトを書いた

jQuery Mobile用のHTMLをPyJadeで書いているんだけど、いちいちファイルを修正するたびに手でコマンド打つのもめんどくさくなったので、ファイルの更新を検知して自動的にコンパイルするようにしてみた。

import jinja2
import time
import sys
import watchdog.events
import watchdog.observers
env = jinja2.Environment(extensions=['pyjade.ext.jinja.PyJadeExtension'])
env.loader = jinja2.FileSystemLoader('.')

class JadeHandler(watchdog.events.FileSystemEventHandler):
    def __init__(self, file):
        self.file = file
        html = file
        self.html = html.replace('.jade', '') + '.html'

    def on_modified(self, event):
        if event.src_path.endswith(self.file):
            template = env.get_template(self.file)
            with open(self.html, 'w') as f:
                f.write(template.render().encode('utf-8'))
            print "file modified (re-compiled)"

def main():
    file = sys.argv[1]
    event_handler = JadeHandler(file)
    observer = watchdog.observers.Observer()
    observer.schedule(event_handler, path=".")

    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

if __name__ == "__main__":
    main()

これでなかなか快適にはなったんだけど、jadeで書いてみて思うのはdata-属性多すぎで見栄えが悪い。いっそdata-は@に置換してしまったらどうだろうかと。

  div(@theme='a', @role='footer', @position="fixed")
    div(@role="navbar")
      ul
        li: a(href="#", @icon="home") Home
        li: a(href="#", @icon="search") Search
        li: a(href="#info",  @icon="info") Info

これでいけそうなカンジがするので、Jinjaにテンプレートを読ませる前に@をdata-に置換する処理をかましておけば、jqm用のHTMLを快適に書けそうだ。

ポケモンタイピングDSを買った

ポケモンタイピングDSのBluetoothキーボードがさらにお安く!なっていたので買ってしまった。

早速娘がハマっている。

もともと、職場でスマホにつなげるキーボードがほしくてBSKBB01WHを狙っていたのだけど。

子どもがポケモンタイピングに飽きたら職場に持っていって使おうっと。