11 Jul 2014, 01:14

pecoで実行コマンドを絞り込んで実行するpeco-M-x

今朝、Archlinuxのdmenuがうまく動かなくなった。

結果的には直ったのだけれども、 dmenuでやっているようなことをpecoでやってみたい。

やりたいこと

実行可能なコマンドを対話的コマンドで検索して、実行する.

Emacsのhelm-M-xのようなことをしたい。

実現方法

  1. 環境変数PATH配下にある実行可能コマンドを表示
  2. 表示結果をpecoで絞り込む。
  3. 検索結果を実行

Implement

シェルですべてかければよかったのだけれども、シェルが苦手なので途中でRubyに逃げた。

だれか、シェルで書き直してくれないかな。(他力本願)

06 Jul 2014, 10:40

最近ナウイpecoを試してみたメモ

最近、なにかとpecoというキーワードをきくようになった。

ナウいツールのようなので、流行に乗り遅れないように、僕も試してみた!

[toc]

pecoとは

pecoとは、コマンドラインからインタラクティブに情報源を検索するためのツール。

みんな大好き、Emacs helmのようなことが、コマンドラインから可能になる。

インストール

pecoはgo言語でかかれているよう。 まだ自分のPCにgoが入っていなかったので、まずはインストールした。

$ sudo pacman -S go
<p>
  パスの設定をする。.zshrcに追記。
</p>

<div class="org-src-container">
  <pre class="src src-language"># for go lang

if [ -x “which go” ]; then export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin fi

<p>
  次に、以下のコマンドでインストール。
</p>

<div class="org-src-container">
  <pre class="src src-sh">$ go get github.com/peco/peco/cmd/peco

<p>
  簡単 🙂
</p>

pecoをつかってみる

pecoにパイプで標準入力を渡す。

$ ls | peco
<p>
  lsのフィルタができた!やたー!!
</p>

pecoの設定

設定ファイルを用意

<div class="outline-text-3" id="text-4-1">
  <p>
    設定ファイルを用意します。$HOME/.peco/config.jsonを用意。
  </p>

  <p>
    なるべく、Emacsに合わせて、キーバインドを設定。
  </p>

  <div class="org-src-container">
    <pre class="src src-json">{
"Keymap": {
    "M-v": "peco.SelectPreviousPage",
    "C-v": "peco.SelectNextPage",
    "C-g": "peco.Cancel"
}

}

alias設定

<div class="outline-text-3" id="text-4-2">
  <p>
    aliasを設定して、もっと便利に。.zshrcに追記。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #a6e22e;">alias</span> -g <span style="color: #fd971f;">P</span>=<span style="color: #e6db74;">'| peco'</span>

  <p>
    よく利用しそうな、top, ps, lsあたりにもaliasを切っておく。llあたりは置き換えてしまう。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">if</span> [ -x <span style="color: #e6db74;">"`which peco`"</span> ]; <span style="color: #f92672; font-weight: bold;">then</span>

alias ll=‘ls -la | peco’ alias tp=‘top | peco’ alias pp=‘ps aux | peco’ fi

いろいろとpecoする

コマンド履歴をpecoする

<div class="outline-text-3" id="text-5-1">
  <p>
    まずは、定番のコマンド履歴をフィルター。
  </p>

  <p>
    以下の記事を参考にして、.zshrcに関数を定義しました。Ctrl+rでフィルタがかかる。便利。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/uchiko/items/f6b1528d7362c9310da0">oh-my-zsh の環境で、peco-select-history が動かない &#8211; Qiita</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #a9a9a9;"># </span><span style="color: #a9a9a9;">history filter</span>

# http://qiita.com/uchiko/items/f6b1528d7362c9310da0 function peco-select-history() { local tac if which tac > /dev/null; then tac=“tac” else tac=“tail -r” fi BUFFER=$(\history -n 1 | </span> eval $tac | </span> peco –query ”$LBUFFER”) CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey ’^[x’ peco-select-history # M-xに割り当て

ディレクトリ履歴をpecoする

<div class="outline-text-3" id="text-5-2">
  <p>
    cdrというコマンドを利用すると、最近訪れたディレクトリの一覧を見ることができる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://keisanbutsuriya.blog.fc2.com/blog-entry-77.html">計算物理屋の研究備忘録 最近移動したディレクトリに一発で移動できるcdrを使う</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #a6e22e;">autoload</span> -Uz is-at-least

if is-at-least 4.3.11 then autoload -Uz chpwd_recent_dirs cdr add-zsh-hook add-zsh-hook chpwd chpwd_recent_dirs zstyle ‘:chpwd: recent-dirs-max 5000 zstyle ‘:chpwd:‘ recent-dirs-default yes zstyle ‘:completion:*’ recent-dirs-insert both fi

  <p>
    このコマンドを利用して、cdrをpecoでフィルターする。以下を参考にしました。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://shibayu36.hatenablog.com/entry/2014/06/27/223538">pecoを使い始めた &#8211; $shibayu36->blog;</a>
    </li>
    <li>
      <a href="http://piyopiyoducky.net/blog/2013/08/17/cdr-with-percol/">Zshのcdrとpercolで最近移動したディレクトリにAnythingライクに移動する &#8211; PiyoPiyoDucky</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">function</span> <span style="color: #00ffff;">peco-cdr</span> () {
<span style="color: #a6e22e;">local</span> <span style="color: #fd971f;">selected_dir</span>=$(cdr -l | awk <span style="color: #e6db74;">'{ print $2 }'</span> | peco)
<span style="color: #f92672; font-weight: bold;">if</span> [ -n <span style="color: #e6db74;">"$selected_dir"</span> ]; <span style="color: #f92672; font-weight: bold;">then</span>
    <span style="color: #fd971f;">BUFFER</span>=<span style="color: #e6db74;">"cd ${selected_dir}"</span>
    zle accept-line
<span style="color: #f92672; font-weight: bold;">fi</span>
zle clear-screen

} zle -N peco-cdr bindkey ’^xr’ peco-cdr

クリップボード履歴をpecoする

<div class="outline-text-3" id="text-5-3">
  <p>
    Linuxでは、 anamnesisというツールを利用するとクリップボードの履歴管理ができる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://anamnesis.sourceforge.net/">Anamnesis clipboard history manager</a>
    </li>
  </ul>

  <p>
    xclipもインストールする必要あり!
  </p>

  <p>
    以下のaliasを切る。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #a6e22e;">alias</span> <span style="color: #fd971f;">ap</span>=<span style="color: #e6db74;">'anamnesis -l 200 | peco'</span>

  <p>
    本当はフィルタ結果をcutして再度クリップボードに挿入したい。それはまた今度。
  </p>
</div>

migemoでpecoする

<div class="outline-text-3" id="text-5-4">
  <p>
    CustomMatcherというものを利用すると、検索する際にフィルタをかけられる。 最近登場した、Go/Migemoもpecoに対応しているようなので、早速ためす。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">go get github.com/koron/gomigemo/cmd/gmigemo

go get github.com/koron/gomigemo/cmd/gmigemogrep

  <p>
    以下のように、.peco/config.jsonに追記した。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/peco/peco/wiki/CustomMatcher#migemo">CustomMatcher · peco/peco Wiki · GitHub</a><a href="https://github.com/peco/peco/wiki/CustomMatcher#migemo">CustomMatcher · peco/peco Wiki · GitHub</a>
    </li>
  </ul>

  <p>
    JSONの記法を知らなかったので、CustomMatcherとKeymapの間に,をいれていなくてしばらく悩んでた。
  </p>

  <div class="org-src-container">
    <pre class="src src-json">{
"CustomMatcher": {
    "Migemo": [
        "/home/tsu-nera/go/bin/migemogrep",
        "$QUERY"
    ]
},
"Keymap": {
    "M-v": "peco.SelectPreviousPage",
    "C-v": "peco.SelectNextPage",
    "C-g": "peco.Cancel"
}

}

  <p>
    カスタムマッチャは、pecoの検索中に Ctrl + r を入力することで、トグルすることができる。 これで、Migemoを選択すると、gmigemoが利用できる。
  </p>
</div>

pecoからアプリを起動する

pecoでprocess killする

<div class="outline-text-3" id="text-6-1">
  <p>
    pecoでフィルタした内容をcut や xargsに渡すことで検索結果をさらに加工する。
  </p>

  <p>
    以下のコマンドで firefoxを killする。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">ps -ef | peco | awk '{ print $2 }' | xargs kill

  <p>
    長いので、functionに。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">function</span> <span style="color: #00ffff;">peco-kill-process</span> () {
ps -ef | peco | awk <span style="color: #e6db74;">'{ print $2 }'</span> | xargs kill
zle clear-screen

} zle -N peco-kill-process bindkey ’^xk’ peco-kill-process # C-x k

ls で 検索したファイルを emacsでひらく

<div class="outline-text-3" id="text-6-2">
  <p>
    たとえば、ブログ記事記事なんかをサクッと検索して emacsclientで開きたい。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">function</span> <span style="color: #00ffff;">peco-find-file</span> () {
ls | peco | xargs emacsclient -nw
zle clear-screen

} zle -N peco-find-file bindkey ’^x^f’ peco-find-file # C-x C-f

ls で 検索したファイルを なにかで開く

<div class="outline-text-3" id="text-6-3">
  <p>
    linuxなので、 xdg-openを利用します。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">function</span> <span style="color: #00ffff;">peco-open-app</span> () {
ls | peco | xargs xdg-open
zle clear-screen

} zle -N peco-open-app bindkey ’^xo’ peco-open-app # C-x o

agで検索して、指定行をemacsでひらく

<div class="outline-text-3" id="text-6-4">
  <p>
    以下のような記事を見つけました。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/fmy/items/b92254d14049996f6ec3">ag(The Silver Searcher)で検索しpecoで更に絞り込みvimで該当行を開く &#8211; Qiita</a>
    </li>
  </ul>

  <p>
    emacsも負けてられないので、指定行をemacsで開くfunctionを作成。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh"><span style="color: #f92672; font-weight: bold;">if</span> [ -x <span style="color: #e6db74;">"`which ag`"</span> ]; <span style="color: #f92672; font-weight: bold;">then</span>

function peco-ag () { ag $@ | peco –query ”$LBUFFER” | awk -F : ’{print “+” $2 “ ” $1}’ | xargs emacsclient -nw } fi

  <p>
    Unix哲学万歳.
  </p>
</div>

28 Jun 2014, 11:55

[Coursera]Scala作者直伝の講座!Functional Programming Principles in Scalaを受けた

Courseraを利用して、Scalaの勉強をしました。

[//www.youtube.com/embed/tSCNZvv7ti4]

講座の感想

Scala言語作者の、Martion Odersky直々の講義であるところがまずスゴい。

Scalaを通じて、関数型の考え方を学ぶという内容。

  • Week One: Programming paradigms; overview of functional programming and the Scala programming language.
  • Week Two: Defining and using functions, recursion and non-termination, working with functions as values, reasoning by reduction.
  • Week Three: Defining and using immutable objects, review of inheritance and dynamic binding.
  • Week Four: Types and Pattern Matching
  • Week Five: Working with Lists
  • Week Six: Collections and Combinatorial Search
  • Week Seven: Lazy Evaluation

ついこの前に受けた以下の講座とかぶる部分もたくさんあった。

Lectureの内容も適度な量で、Assignmentの量もそれほど多くはない印象。 すごく時間がかかるというわけではなかった。 ただし、Assignmentの締切りに毎回間に合わなくてすべて遅れて提出・・・これが無念。

また、考え方がなれていないので、概念の理解はすこし時間がかかった。 いわゆるコップ本と呼ばれている以下の参考書を片手にガンバッタ。

Scalaの感想

講義の内容をそのまま引用してしまうが、 以下のような関数型の概念は、OOPの世界にいる自分にとってはとっても新鮮だった。

Functional programming provides a coherent set of notations and

  • methods based on higher-order functions,(高階関数)
  • case classes and pattern matching,(パターンマッチング)
  • immutable collections, absence of mutable state(イミュータブル)
  • flexible evaluation strategies:strict/lazy/by name(遅延評価)

A useful toolkit for every programmer. A different way of thinking about programs.

仕事ではRubyをつかっているが、 講座を受ける中でRubyが関数型言語の特性をたくさんもっていることに気がついたりした。

関数型の考え方を身につければ、Rubyも饒舌になれる。

関数型の考え方をはやく身につけて、 プログラミングの表現の幅をもっともっと広げたいと思った。

Scalaは美しい

<div class="outline-text-3" id="text-2-1">
  <p>
    Scalaに触れて一番驚いたのは、表現の簡潔さだ。
  </p>

  <p>
    Scalaではワンラインで表現できてしまう場面がたくさんある。 あまりに一行に詰め込みすぎるのも読みづらいので、 適度にインデントすると5行くらいになる。
  </p>

  <p>
    たった、5行である!一般的にScalaのコード量はJavaの半分になると言われているらしい!
  </p>

  <p>
    はじめにこれを聞いたときは、懐疑的だったけれども、今となっては納得である。
  </p>
</div>

これからどうするか

Scalaはとても気に入った。

講座が終わってしまったが、Scalaはこれからも折に触れて触っていきたい。 正直なところ、2ヶ月の講座だけではまだScalaを身につけたといえる自信がない。 力を伸ばすためにも、いろいろな場面でScalaを書いていこうと思う。

スクリプト言語としてのScala

<div class="outline-text-3" id="text-3-1">
  <p>
    Scalaはスクリプトとしても実行できる。 まずは、簡単なスクリプトを書くときにScalaを選択しようと思う。
  </p>

  <p>
    Scalaをスクリプトとして利用する最大の問題点は、起動にかかる時間だ。 ScalaはJVM上で動作するので、JVMの起動に時間がかかる。
  </p>

  <p>
    しかし、今はそれを我慢してでもScala力をみにつけたい。
  </p>
</div>

ほかの関数型言語も

<div class="outline-text-3" id="text-3-2">
  <p>
    自分が次に挑戦しようと考えてことは、Emacs Lispを身につけること。
  </p>

  <p>
    どういうわけか、最近とてもEmacsが気に入っている。 自分でもEmacs Lispがかけたらいいなと思う。
  </p>

  <p>
    Lispということで、同じ関数型でもScalaとは毛色がまた違うのだが、 それも新しい価値観に触れるということで、いいことだ。
  </p>
</div>

25 Jun 2014, 22:41

デュアルディスプレイヤーのためのEmacs Tips

会社でトリプルディスプレイにした結果、 生産性が効率が下がったように感じる今日この頃。

生産性をあげるために、 マルチディスプレイ環境におけるEmacsの使い方について調べてみた。

フレーム間操作

マルチディスプレイでは、別フレームを利用するのがよさそう。

# 別フレームを生成
C-x 5 2 

# ファイルを探して別フレームで開く
C-x 5 f

# バッファを別フレームで開く
C-x 5 b
<p>
  別フレームへは以下のコマンドで移動。
</p>

<div class="org-src-container">
  <pre class="src src-language">other-frame or C-x 5 o

next-multiframe-window

ace-jump-mode

もっとベターなのがこの方法。ace-jump-modeを利用する。

これを利用すると、フレームを越えて移動したい場所に3ステップでジャンプできる。

このLispのスゴさは、Emacs Rocksの動画を見るのがよい。

赤い文字でターゲットを絞って、ジャンプできる。すげぇ!

Emacs is Awesome.

21 Jun 2014, 06:13

[Edx] ライフハックでは人間は変われない!Unlocking the Immunity to Changeで早寝早起きに挑戦した

Edxで Unlocking the Immunity to Changeという講座を受講した記録です。

[//www.youtube.com/embed/lPiWUjbtQvk]

[toc]

感想について

課題を通じて自己変革

<div class="outline-text-3" id="text-1-1">
  <p>
    この講座は、目標達成のための理論が紹介される。
  </p>

  <p>
    受講者は、はじめに自分の達成したい目標を決める。 そして、毎週課題に取り組むことで自分自身の変革を目指す。
  </p>

  <p>
    毎週課題に取り組むというスタイルがよかった。 自己啓発本を読んではその都度挫折してきたこんな自分でも、 継続して自己変革に取り込むことができた。
  </p>

  <p>
    成果も着実にでているので、この講座は大変に満足している。
  </p>
</div>

もっと評価されるべき Immunity to Change

<div class="outline-text-3" id="text-1-2">
  <p>
    いわゆる自己啓発のひとつ。以下の本の内容が講義になっている。
  </p>

  <div class='amazlink-box' style='text-align:left;padding-bottom:20px;font-size:small;/zoom: 1;overflow: hidden;'>
    <div class='amazlink-list' style='clear: both;'>
      <div class='amazlink-image' style='float:left;margin:0px 12px 1px 0px;'>
        <a href='http://www.amazon.co.jp/%E3%81%AA%E3%81%9C%E4%BA%BA%E3%81%A8%E7%B5%84%E7%B9%94%E3%81%AF%E5%A4%89%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%E2%80%95%E2%80%95%E3%83%8F%E3%83%BC%E3%83%90%E3%83%BC%E3%83%89%E6%B5%81-%E8%87%AA%E5%B7%B1%E5%A4%89%E9%9D%A9%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%B7%B5-%E3%83%AD%E3%83%90%E3%83%BC%E3%83%88%E3%83%BB%E3%82%AD%E3%83%BC%E3%82%AC%E3%83%B3/dp/4862761542%3FSubscriptionId%3DAKIAJDINZW45GEGLXQQQ%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4862761542' target='_blank' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41H8nvJbCML._SL160_.jpg' style='border: none;' /></a>
      </div>

      <div class='amazlink-info' style='height:160; margin-bottom: 10px'>
        <div class='amazlink-name' style='margin-bottom:10px;line-height:120%'>
          <a href='http://www.amazon.co.jp/%E3%81%AA%E3%81%9C%E4%BA%BA%E3%81%A8%E7%B5%84%E7%B9%94%E3%81%AF%E5%A4%89%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%E2%80%95%E2%80%95%E3%83%8F%E3%83%BC%E3%83%90%E3%83%BC%E3%83%89%E6%B5%81-%E8%87%AA%E5%B7%B1%E5%A4%89%E9%9D%A9%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%B7%B5-%E3%83%AD%E3%83%90%E3%83%BC%E3%83%88%E3%83%BB%E3%82%AD%E3%83%BC%E3%82%AC%E3%83%B3/dp/4862761542%3FSubscriptionId%3DAKIAJDINZW45GEGLXQQQ%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4862761542' rel='nofollow' target='_blank'>なぜ人と組織は変われないのか――ハーバード流 自己変革の理論と実践</a>
        </div>

        <div class='amazlink-powered' style='font-size:80%;margin-top:5px;line-height:120%'>
          posted with <a href='http://amazlink.keizoku.com/' title='アマゾンアフィリエイトリンク作成ツール' target='_blank'>amazlink</a> at 14.06.21
        </div>

        <div class='amazlink-detail'>
          ロバート・キーガン
        </div>

        <div class='amazlink-sub-info' style='float: left;'>
          <div class='amazlink-link' style='margin-top: 5px'>
            <img src='http://amazlink.fuyu.gs/icon_amazon.png' width='18' /><a href='http://www.amazon.co.jp/%E3%81%AA%E3%81%9C%E4%BA%BA%E3%81%A8%E7%B5%84%E7%B9%94%E3%81%AF%E5%A4%89%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%E2%80%95%E2%80%95%E3%83%8F%E3%83%BC%E3%83%90%E3%83%BC%E3%83%89%E6%B5%81-%E8%87%AA%E5%B7%B1%E5%A4%89%E9%9D%A9%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%B7%B5-%E3%83%AD%E3%83%90%E3%83%BC%E3%83%88%E3%83%BB%E3%82%AD%E3%83%BC%E3%82%AC%E3%83%B3/dp/4862761542%3FSubscriptionId%3DAKIAJDINZW45GEGLXQQQ%26tag%3Dsleephacker-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4862761542' rel='nofollow' target='_blank'>Amazon</a> <img src='http://amazlink.fuyu.gs/icon_rakuten.gif' width='18' /><a href='http://hb.afl.rakuten.co.jp/hgc/g00q0724.n763w947.g00q0724.n763x2b4/archives/c=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12523496%2F&#038;m=http%3A%2F%2Fm.rakuten.co.jp%2Frms%2Fmsv%2FItem%3Fn%3D12523496%26surl%3Dbook' rel='nofollow' target='_blank'>楽天</a>
          </div>
        </div>
      </div>
    </div>
  </div>

  <p>
    書店にいくと自己啓発本はたくさん売っている。 そんな数ある本のなかでもこの本で紹介されている手法は、 際立って理路整然としてまた独創的な印象を受けた。
  </p>

  <p>
    課題は本に載っている内容とほぼ同じ。 ちなみに、課題にはすべて日本語で取り組んだ。
  </p>

  <p>
    この本はもっと評価されるべき!以下、講義の内容についてのメモ。
  </p>
</div>

Immunity to Changeの理論について

この本は、キーガン先生とレイヒー先生の、 25年に渡る研究者人生のすべてを費やして書かれた本。 こういうことを書かれると、それだけで理論に凄みが増す。

以下の大前提をもとに、この本はかかれている。

~ 大人になっても人間は成長できる ~

死ぬのをわかっていても変われない

<div class="outline-text-3" id="text-2-1">
  <p>
    はじめの書き出しがとても印象的だ。
  </p>

  <blockquote>
    <p>
      最近の研究によると、食生活を改めたり、もっと運動したり、<br /> 喫煙をやめたりしなければ心臓病で死にますよと専門医から警告されたときに、<br /> 実際に自分をそのように変えることができる人は七人に一人にすぎないという。
    </p>

    <p>
      たった七人に一人だ!
    </p>

    <p>
      人は、自分の命に関わる問題でさえ、自分自身が心から望んでいる変革を実行できない。
    </p>

    <p>
      自分が本心からやりたいと望んでいることと<br /> 実際に実行できることの間には大きな溝がある。
    </p>
  </blockquote>
</div>

技術的課題と適応的課題

<div class="outline-text-3" id="text-2-2">
  <p>
    課題には2種類ある。適応的課題に技術的なアプローチをしても失敗する。
  </p>

  <p>
    たとえば、ダイエットの達成のために高いマシンや情報教材を購入して 一時的に目標を達成しても、時間がたつとリバウンドする。
  </p>

  <p>
    これは、心が変わらないから。恒常性を維持する自然な免疫力で適応を阻まれたから。
  </p>
</div>

免疫マップ

<div class="outline-text-3" id="text-2-3">
  <p>
    人が変われない原因は、心の免疫システムにある。
  </p>

  <p>
    その免疫システムを4つのステップで解明していき、 各ステップの関わりを見える化したものが、免疫マップ。
  </p>
</div>

<div id="outline-container-sec-2-3-1" class="outline-4">
  <h4 id="sec-2-3-1">
    1.改善目標
  </h4>

  <div class="outline-text-4" id="text-2-3-1">
    <p>
      改善したい目標。一般的な意味と違いはない。 しかし、この1から展開される2から4が独創的なのだ。
    </p>
  </div>
</div>

<div id="outline-container-sec-2-3-2" class="outline-4">
  <h4 id="sec-2-3-2">
    2.阻害行動
  </h4>

  <div class="outline-text-4" id="text-2-3-2">
    <p>
      1の目標を達成しようとしたときに、それを妨げる自分の行動をリストアップする。 心の免疫システムによって、変化しようとしたときに生じる行動を明文化する。
    </p>
  </div>
</div>

<div id="outline-container-sec-2-3-3" class="outline-4">
  <h4 id="sec-2-3-3">
    3.裏の目標
  </h4>

  <div class="outline-text-4" id="text-2-3-3">
    <p>
      2の阻害行動をやめようとしたときに、生じる感情を不安ボックスに記入する。 ここで記入するものは、感情につよく関連しているものである必要がある。
    </p>

    <p>
      くそっ!ちくしょう!Shit!, Fuck! 汚い言葉であれば汚いほど推奨される。
    </p>

    <p>
      そして、その不安ボックスの中から1の改善目標に対立する考えをあぶり出す! 変革に重要なことは、この考えを取り除くこと。これこそが裏の目標。
    </p>
  </div>
</div>

<div id="outline-container-sec-2-3-4" class="outline-4">
  <h4 id="sec-2-3-4">
    4.強力な固定概念
  </h4>

  <div class="outline-text-4" id="text-2-3-4">
    <p>
      強力な固定概念とは、3の裏の目標をもつような人が抱いている思い込み。
    </p>

    <p>
      変革阻害システムの根底にある思い込みを言語化することで、表舞台に引きずり出す。 そのことによって、免疫観念を克服しやすくなる。
    </p>
  </div>
</div>

継続的発展(Continuum of Progress)

<div class="outline-text-3" id="text-2-4">
  <p>
    3つの視点から、 目標の達成と強力な固定観念の除去が達成されたときの状態を分析する。
  </p>

  <ul class="org-ul">
    <li>
      Behaviors(振る舞い)
    </li>
    <li>
      Thoughts(理性的な思考)
    </li>
    <li>
      Feeling(感情、心情)
    </li>
  </ul>

  <p>
    3つタイムスパンから、 目標の達成と強力な固定観念の除去が達成されたときの状態を分析する。
  </p>

  <ul class="org-ul">
    <li>
      initial steps forward
    </li>
    <li>
      Significant Progress
    </li>
    <li>
      Full success
    </li>
  </ul>
</div>

SMART

<div class="outline-text-3" id="text-2-5">
  <p>
    よい実験の条件。
  </p>
</div>

<div id="outline-container-sec-2-5-1" class="outline-4">
  <h4 id="sec-2-5-1">
    SAFE
  </h4>

  <div class="outline-text-4" id="text-2-5-1">
    <p>
      Safe means that if the worst-case outcome were to occur, you could live with it!
    </p>
  </div>
</div>

<div id="outline-container-sec-2-5-2" class="outline-4">
  <h4 id="sec-2-5-2">
    MODEST
  </h4>

  <div class="outline-text-4" id="text-2-5-2">
    <p>
      Modest means that the test is relatively easy to carry out (ideally, it doesn&#8217;t require you to go out of your way at all, but rather is an opportunity to do something different in your normal day). It can also mean you make a small change in what you do.
    </p>
  </div>
</div>

<div id="outline-container-sec-2-5-3" class="outline-4">
  <h4 id="sec-2-5-3">
    ACTIONABLE
  </h4>

  <div class="outline-text-4" id="text-2-5-3">
    <p>
      a good test will be actionable in the near-term. This means that you are able to carry it out within the next week or so. You can easily imagine a setting or upcoming situation in which to run your test.
    </p>
  </div>
</div>

<div id="outline-container-sec-2-5-4" class="outline-4">
  <h4 id="sec-2-5-4">
    RESERCH
  </h4>

  <div class="outline-text-4" id="text-2-5-4">
    <p>
      &#8220;how accurate is my Big Assumption?&#8221; and, like any good research, it requires collecting data (including data that would qualify your assumption or call it into doubt). In addition to how people react to you, your feelings can be a very rich data source.
    </p>
  </div>
</div>

<div id="outline-container-sec-2-5-5" class="outline-4">
  <h4 id="sec-2-5-5">
    TEST
  </h4>

  <div class="outline-text-4" id="text-2-5-5">
    <p>
      The test, in fact, tests your Big Assumption. A &#8220;test&#8221; should not be some clever way to prove that your Big Assumption is true! Your test should be designed so that it can generate disconfirming data (data that proves that your Big Assumption is not always true),if it exists.
    </p>
  </div>
</div>

Running Your First Test

<div class="outline-text-3" id="text-2-6">
  <ul class="org-ul">
    <li>
      強力な固定観念からスタートする。
    </li>
  </ul>

  <p>
    What experiment would give you information about how accurate it is (or isn&#8217;t)?
  </p>

  <ul class="org-ul">
    <li>
      振る舞いからスタートする。
    </li>
  </ul>

  <p>
    What behavior could you change that would get you useful information about your Big Assumption?
  </p>
</div>

<div id="outline-container-sec-2-6-1" class="outline-4">
  <h4 id="sec-2-6-1">
    どのようなデータを集めるか
  </h4>

  <div class="outline-text-4" id="text-2-6-1">
    <p>
      ビデオテープに収めることができるデータまたは、 自分の心情の経験的データをあつめる。
    </p>

    <p>
      自分の行動に依存しないような、行間を読むような、 たとえば他人の心情を推し量るようなデータはダメ。
    </p>

    <ul class="org-ul">
      <li>
        Directly observable data
      </li>
    </ul>

    <p>
      the actual things people say or do, the words or action that would be captured on videotape if the event were recorded. This includes what you do and say, as well as what any other people in the test situation do and say.
    </p>

    <ul class="org-ul">
      <li>
        Experiential data on your own inner states
      </li>
    </ul>

    <p>
      how you feel or make sense of what happens during your test. Depending on your Big Assumption and your test design, this type of data may be the only type you can collect.
    </p>
  </div>
</div>

DICE

<div class="outline-text-3" id="text-2-7">
</div>

<div id="outline-container-sec-2-7-1" class="outline-4">
  <h4 id="sec-2-7-1">
    Did, do data
  </h4>

  <div class="outline-text-4" id="text-2-7-1">
    <p>
      What you actually did and the data you collected
    </p>
  </div>
</div>

<div id="outline-container-sec-2-7-2" class="outline-4">
  <h4 id="sec-2-7-2">
    Interpretation
  </h4>

  <div class="outline-text-4" id="text-2-7-2">
    <p>
      How you interpret that data (or the multiple interpretations you make)
    </p>
  </div>
</div>

<div id="outline-container-sec-2-7-3" class="outline-4">
  <h4 id="sec-2-7-3">
    Connection to Big Assumption
  </h4>

  <div class="outline-text-4" id="text-2-7-3">
    <p>
      What the data tells you about your BA
    </p>
  </div>
</div>

<div id="outline-container-sec-2-7-4" class="outline-4">
  <h4 id="sec-2-7-4">
    Encore
  </h4>

  <div class="outline-text-4" id="text-2-7-4">
    <p>
      What the data tells you about your BA What text can you run next
    </p>
  </div>
</div>

継続的発展(Continuum of Progress)

<div class="outline-text-3" id="text-2-8">
  <p>
    3つの視点から、目標の達成と強力な固定観念の除去が達成されたときの状態を分析する。
  </p>

  <ul class="org-ul">
    <li>
      Behaviors(振る舞い)
    </li>
    <li>
      Thoughts(理性的な思考)
    </li>
    <li>
      Feeling(感情、心情)
    </li>
  </ul>
</div>

Hooks and Releases

<div class="outline-text-3" id="text-2-9">
  <p>
    変化には4段階ある。
  </p>

  <p>
    Hooks(落とし穴)とRelease(脱出ルート)を意識することが必要。
  </p>

  <ul class="org-ul">
    <li>
      どのような状況でBAは正しいか
    </li>
    <li>
      どのような状況でBAは猛威をふるうか
    </li>
    <li>
      BAに支配されそうになったときに、 その状態から抜け出すための手軽な方法やセルフトークを確立できているか
    </li>
  </ul>
</div>

<div id="outline-container-sec-2-9-1" class="outline-4">
  <h4 id="sec-2-9-1">
    UNCONSCIOUSLY &#8220;IMMUNE&#8221;(無意識的に影響下)
  </h4>

  <div class="outline-text-4" id="text-2-9-1">
    <p>
      はじめの段階。
    </p>

    <p>
      This is where we all are when we first begin the process you have learned in this program.
    </p>
  </div>
</div>

<div id="outline-container-sec-2-9-2" class="outline-4">
  <h4 id="sec-2-9-2">
    CONSCIOUSLY &#8220;IMMUNE&#8221;(意識的に影響下)
  </h4>

  <div class="outline-text-4" id="text-2-9-2">
    <p>
      意識的に変化しようとしている状態。
    </p>

    <p>
      This is a stage in the process that may not seem like to you like big progress, since so many of us judge success only on behavioral change,
    </p>
  </div>
</div>

<div id="outline-container-sec-2-9-3" class="outline-4">
  <h4 id="sec-2-9-3">
    CONSCIOUSLY &#8220;RELEASED&#8221;(意識的に自由)
  </h4>

  <div class="outline-text-4" id="text-2-9-3">
    <p>
      Big Assumptionsから距離をおいて考えるようになった状態。 Big Assumptionsを意識的にコントロールできる状態。
    </p>

    <p>
      どういうときにBAの影響がつよくなり、 その時にどのようなself-talkをすればBAの影響を防ぐことができるかを 自覚している状態。
    </p>

    <p>
      Being Consciously Released from your Big Assumptions means that you have begun to win some distance from their control.
    </p>
  </div>
</div>

<div id="outline-container-sec-2-9-4" class="outline-4">
  <h4 id="sec-2-9-4">
    UNCONSCIOUSLY &#8220;RELEASED&#8221;(無意識的に自由)
  </h4>

  <div class="outline-text-4" id="text-2-9-4">
    <p>
      新しい信条によって自然に行動できる状態。 自然とBAに反する行動ができる状態。
    </p>

    <p>
      At this point, you automatically act and think in ways that run counter to your previously held Big Assumption in those situations where it is not valid.
    </p>
  </div>
</div>

自分の挑戦

自分の挑戦体験記を後悔。間違えた、公開。

免疫マップ

<div class="outline-text-3" id="text-3-1">
</div>

<div id="outline-container-sec-3-1-1" class="outline-4">
  <h4 id="sec-3-1-1">
    1.改善目標
  </h4>

  <div class="outline-text-4" id="text-3-1-1">
    <p>
      早寝早起きをして規則正しい生活をする。
    </p>

    <p>
      早寝早起き、自分にとってはもっとも改善が必要な課題。
    </p>

    <ul class="org-ul">
      <li>
        社会人なのに、朝起きられず、遅刻ばかりしてしまう。
      </li>
      <li>
        朝起きられないため、精神科に通って毎日坑不安剤を飲んでいる。
      </li>
    </ul>

    <p>
      しかし、かつては早起きができていた。 改善しようという努力によって短い間だけれども、早起きが定着してた。
    </p>

    <p>
      今の状況は、リバウンドだと思っている。 より、早起きできなくなった。これは適応的課題。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-1-2" class="outline-4">
  <h4 id="sec-3-1-2">
    2.阻害行動
  </h4>

  <div class="outline-text-4" id="text-3-1-2">
    <ul class="org-ul">
      <li>
        家に帰ってから寝るまでの間に計画していないことをする。
      </li>
      <li>
        その日にしなくてもいいことを、その日のうちにしてしまう。
      </li>
      <li>
        寝る前にネットサーフィンしてしまう、ドラクエしてしまう。
      </li>
      <li>
        就寝儀式にしたがって行動していない。
      </li>
      <li>
        翌日の予定を立てて寝ない。
      </li>
      <li>
        寝る時間が不安定。
      </li>
      <li>
        目覚ましをかけて寝ない。
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-1-3" class="outline-4">
  <h4 id="sec-3-1-3">
    3.裏の目標
  </h4>

  <div class="outline-text-4" id="text-3-1-3">
  </div>

  <ul class="org-ul">
    <li>
      不安ボックス<br /> <div class="outline-text-5" id="text-3-1-3-1">
        <ul class="org-ul">
          <li>
            ちくしょう!ただでさえ自分の時間がないのに、早く寝るのなんてまっぴらだ!
          </li>
          <li>
            明日もきっと自分の好きなことができない。
          </li>
          <li>
            くそ、今日中にするべきことが終わらない。絶対にこれは今日しなければいけないのに。
          </li>
          <li>
            また起きれなかったという虚無感を味わうくらいなら、 取り返しがつかないほどに夜更かししてしまえ。
          </li>
          <li>
            今更寝たってどうせ起きられないよ。またダメだという気持を味わいたくない。
          </li>
        </ul>
      </div>
    </li>

    <li>
      裏の目標<br /> <div class="outline-text-5" id="text-3-1-3-2">
        <ul class="org-ul">
          <li>
            朝ゆっくり休みすぎたことよって、満員電車で疲れるようなことはしたくない。
          </li>
          <li>
            今の幸せや快楽に溺れた挙句、長期的な大きな喜びを手放したくない。
          </li>
          <li>
            寝坊してしまい、またダメだった、また変われなかったという屈辱感を味わいたくない。
          </li>
          <li>
            どうにでもなれという投げやりで計画性のない人間にはなりたくない。
          </li>
          <li>
            よい習慣がいつになってもみにつかず、時間が経っていつも後悔したくない。
          </li>
          <li>
            その場の感情で投げやりになって計画性がない人になりたくない。
          </li>
          <li>
            どうせダメだろうという諦めの気持だけで、挑戦をしないような人間になりたくない。
          </li>
        </ul>
      </div>
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-1-4" class="outline-4">
  <h4 id="sec-3-1-4">
    4.強力な固定概念
  </h4>

  <div class="outline-text-4" id="text-3-1-4">
    <ul class="org-ul">
      <li>
        寝坊すると怠惰な人間に思われる。
      </li>
      <li>
        寝坊すると計画性のない人間に思われる。
      </li>
      <li>
        寝坊するとなんの目標も達成できない。
      </li>
      <li>
        寝坊するとダメな人間になる。
      </li>
      <li>
        その場の快楽や感情に流されているとダメな人間になる。
      </li>
      <li>
        早く寝たって、明日もどうせ早く起きることができない。
      </li>
      <li>
        いつも時間がない。
      </li>
      <li>
        明日もきっと自分の好きなことをする時間がない。
      </li>
      <li>
        よい習慣を身につけようとしてもどうせ続かない。
      </li>
      <li>
        寝坊するとひどい罪悪感と虚無感を味わうことになる。
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-1-5" class="outline-4">
  <h4 id="sec-3-1-5">
    完成した免疫マップのレビュー
  </h4>

  <div class="outline-text-4" id="text-3-1-5">
    <p>
      ここまでの分析をして、自分には&#8221;いつも時間がない&#8221;という固定観念があるように思えた。
    </p>

    <p>
      朝起きることができない理由は、時間管理にあるのでは?本当に時間がないのか? 時間がない、という思い込みこそが固定観念で、事実とは違うのでは?
    </p>

    <p>
      また、なんどもなんども朝起きようとしては挫折してきた結果、 &#8220;頑張ってもどうせおきられない&#8221;という固定観念があるように思えた。
    </p>

    <ul class="org-ul">
      <li>
        どうせ、早く寝ても朝起きられない。
      </li>
      <li>
        睡眠時間を記録しても、どうせ途中で止めてしまう。
      </li>
      <li>
        どうせ、またギリギリまでふとんのなかでぬくぬくしている。
      </li>
    </ul>

    <p>
      まとめると、以下の2つが固定観念として浮かび上がってきた。
    </p>

    <ul class="org-ul">
      <li>
        いつも時間がない。
      </li>
      <li>
        どうせ早く起きられない。
      </li>
    </ul>

    <p>
      この2つの固定観念に関する検証をすることにした。
    </p>
  </div>
</div>

目標分析

<div class="outline-text-3" id="text-3-2">
</div>

<div id="outline-container-sec-3-2-1" class="outline-4">
  <h4 id="sec-3-2-1">
    前に進むためのはじめのステップ(Initial Steps Forward)
  </h4>

  <div class="outline-text-4" id="text-3-2-1">
    <ul class="org-ul">
      <li>
        Behaviors(振る舞い~する。) <ul class="org-ul">
          <li>
            家にかえったら、決めたこと以外はやらないで、まっすぐにふとんに入る。
          </li>
          <li>
            夜、やりたいことが発生したら、メモして後日にまわせるようになる。
          </li>
          <li>
            今飲んでいる抗うつ剤、抗不安剤の量を減らす。
          </li>
          <li>
            ジムに通う習慣を取り戻す。(時間がないといいわけしない)
          </li>
        </ul>
      </li>

      <li>
        Thoughts(理性的な思考~知る、考える) <ul class="org-ul">
          <li>
            遅くまで起きようとしたときの感情を距離を置いて観察できるようになる。
          </li>
          <li>
            自分がどのようなときに遅くまで起きているか、早く寝るかを観察できる。
          </li>
        </ul>
      </li>

      <li>
        Feeling(感情、心情~感じる) <ul class="org-ul">
          <li>
            明日もきっと早く起きれると、信じてふとんに入ることができる。
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-2-2" class="outline-4">
  <h4 id="sec-3-2-2">
    スゴい発展(Significant Progress)
  </h4>

  <div class="outline-text-4" id="text-3-2-2">
    <ul class="org-ul">
      <li>
        Behaviors(振る舞い~する。) <ul class="org-ul">
          <li>
            朝5時に起きる習慣が身につく。
          </li>
          <li>
            見積りと実績の作業時間を記録し分析する習慣が身につく。
          </li>
        </ul>
      </li>

      <li>
        Thoughts(理性的な思考~知る、考える) <ul class="org-ul">
          <li>
            やりたいことが発生したときに、その感情を抑制することができる。
          </li>
        </ul>
      </li>

      <li>
        Feeling(感情、心情~感じる) <ul class="org-ul">
          <li>
            &#8220;時間がない&#8221;という無意識的に心の中で唱えつづける声が聞こえなくなる。
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-2-3" class="outline-4">
  <h4 id="sec-3-2-3">
    満ち足りた成功(Full Success)
  </h4>

  <div class="outline-text-4" id="text-3-2-3">
    <ul class="org-ul">
      <li>
        Behaviors(振る舞い) <ul class="org-ul">
          <li>
            目覚ましをつかわないでも、早寝早起きができている。
          </li>
          <li>
            早寝早起きが当たり前のこととして、継続できている。
          </li>
          <li>
            規則正しく、安定した睡眠時間が継続できている。
          </li>
          <li>
            満員電車をさけて出社できている。
          </li>
          <li>
            澄み切った心で集中して勉強に取り組み、数々の成果を出す。
          </li>
        </ul>
      </li>

      <li>
        Thoughts(理性的な思考) <ul class="org-ul">
          <li>
            その場の欲望に流されず、感情をコントロールすることができる。
          </li>
          <li>
            やりたいことが発生しても、優先順位を見極めて感情を抑制することができる。
          </li>
        </ul>
      </li>

      <li>
        Feeling(感情、心情) <ul class="org-ul">
          <li>
            寝坊しても、罪悪感を感じなくなる。
          </li>
          <li>
            時間に余裕を感じる。時間に対する不安感や焦り、動悸を感じなくなる。
          </li>
          <li>
            寝るときと起きたときは、澄み切った感覚を得ることが出来る。
          </li>
          <li>
            時間の不安感から開放され、意欲が沸いてくる。
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

実験計画1 目覚ましをかけずに21時に寝る

<div class="outline-text-3" id="text-3-3">
</div>

<div id="outline-container-sec-3-3-1" class="outline-4">
  <h4 id="sec-3-3-1">
    実験計画
  </h4>

  <div class="outline-text-4" id="text-3-3-1">
    <p>
      目覚ましをかけないで、21時に寝る。
    </p>

    <p>
      目覚ましがないと起きられないのか?今までのように寝坊するのか?
    </p>
  </div>

  <ul class="org-ul">
    <li>
      どのようなデータを集めるか<br /> <div class="outline-text-5" id="text-3-3-1-1">
        <p>
          起床時間。
        </p>
      </div>
    </li>

    <li>
      どういう結果が得られたときに固定観念が反証されたとみなすか<br /> <div class="outline-text-5" id="text-3-3-1-2">
        <p>
          目覚ましをつかわなくても5時に起きれた日が3日あったら。
        </p>
      </div>
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-3-2" class="outline-4">
  <h4 id="sec-3-3-2">
    実験結果
  </h4>

  <div class="outline-text-4" id="text-3-3-2">
  </div>

  <ul class="org-ul">
    <li>
      はやく寝ようとしたときに生じた感情記録<br /> <div class="outline-text-5" id="text-3-3-2-1">
        <p>
          まっすぐにふとんに入ると、そわそわする。 しかし、それははじめだけで、次第に早く寝たいと思うようになる。
        </p>
      </div>
    </li>

    <li>
      実験データ<br /> <div class="outline-text-5" id="text-3-3-2-2">
        <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
          <colgroup> <col class="left" /> <col class="right" /> <col class="right" /> <col class="right" /> </colgroup> <tr>
            <th scope="col" class="left">
              Date
            </th>

            <th scope="col" class="right">
              Bed
            </th>

            <th scope="col" class="right">
              Wake
            </th>

            <th scope="col" class="right">
              &#xa0;
            </th>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-14 月></span></span>
            </td>

            <td class="right">
              21.0
            </td>

            <td class="right">
              4.5
            </td>

            <td class="right">
              7.5
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-15 火></span></span>
            </td>

            <td class="right">
              23.5
            </td>

            <td class="right">
              7.0
            </td>

            <td class="right">
              7.5
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-16 水></span></span>
            </td>

            <td class="right">
              21.5
            </td>

            <td class="right">
              5.0
            </td>

            <td class="right">
              7.5
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-17 木></span></span>
            </td>

            <td class="right">
              22.0
            </td>

            <td class="right">
              7.0
            </td>

            <td class="right">
              9.
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-18 金></span></span>
            </td>

            <td class="right">
              23.5
            </td>

            <td class="right">
              7.5
            </td>

            <td class="right">
              8.
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-19 土></span></span>
            </td>

            <td class="right">
              22.0
            </td>

            <td class="right">
              4.5
            </td>

            <td class="right">
              6.5
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-20 日></span></span>
            </td>

            <td class="right">
              21.5
            </td>

            <td class="right">
              4.5
            </td>

            <td class="right">
              7.
            </td>
          </tr>

          <tr>
            <td class="left">
              Average
            </td>

            <td class="right">
              22.142857
            </td>

            <td class="right">
              5.7142857
            </td>

            <td class="right">
              7.6428567
            </td>
          </tr>
        </table>
      </div>
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-3-3" class="outline-4">
  <h4 id="sec-3-3-3">
    結果の解釈
  </h4>

  <div class="outline-text-4" id="text-3-3-3">
    <ul class="org-ul">
      <li>
        目覚ましをかけなくても自然と目が覚める。
      </li>
      <li>
        だいたい7.5時間で目が覚める。
      </li>
      <li>
        残業して遅く寝た日ははやく起きられない。
      </li>
      <li>
        夢をよくみる。
      </li>
    </ul>

    <p>
      早くふとんにはいって寝た日は目覚ましをつかわず、目が覚めた。
    </p>

    <p>
      よって、固定観念は反証された。
    </p>
  </div>
</div>

実験計画2 計画外の時間と感情の記録

<div class="outline-text-3" id="text-3-4">
  <p>
    夜更かしをしてしまう日は、心に余裕がないときが多い気がする。
  </p>

  <p>
    心の不安は、計画どおりにタスクがこなせなかった日が多い気がする。
  </p>

  <p>
    予定外の仕事をした日と、心の不安感には相関関係があるか? 時間がないという思い込みは、予定どおり計画が進まない不安感からくるか?
  </p>

  <p>
    実験する前からそんな気がするが、 この仮説を裏付けるデータを採取して検証してみる。
  </p>
</div>

<div id="outline-container-sec-3-4-1" class="outline-4">
  <h4 id="sec-3-4-1">
    どのようなデータを集めるか
  </h4>

  <div class="outline-text-4" id="text-3-4-1">
    <p>
      タスクを予定・予定外でわけて、予定外の作業に費やした時間を収集する。
    </p>

    <p>
      一日の終わりに、&#8221;時間がない&#8221;と感じたか、を5段階で評価する。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-4-2" class="outline-4">
  <h4 id="sec-3-4-2">
    どういう結果が得られたときに固定観念が反証されたとみなすか
  </h4>

  <div class="outline-text-4" id="text-3-4-2">
    <p>
      予定外の作業時間と不安感に相関関係があったとき。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-4-3" class="outline-4">
  <h4 id="sec-3-4-3">
    実験結果
  </h4>

  <div class="outline-text-4" id="text-3-4-3">
  </div>

  <ul class="org-ul">
    <li>
      実験データ<br /> <div class="outline-text-5" id="text-3-4-3-1">
        <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
          <colgroup> <col class="left" /> <col class="right" /> <col class="right" /> <col class="right" /> </colgroup> <tr>
            <td class="left">
              date
            </td>

            <td class="right">
              next
            </td>

            <td class="right">
              unplan
            </td>

            <td class="right">
              feeling
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-29 火></span></span>
            </td>

            <td class="right">
              5.6
            </td>

            <td class="right">
              4.4
            </td>

            <td class="right">
              &#xa0;
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-04-30 水></span></span>
            </td>

            <td class="right">
            </td>

            <td class="right">
              1.0
            </td>

            <td class="right">
              2
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-02 金></span></span>
            </td>

            <td class="right">
              6.9
            </td>

            <td class="right">
              3.4
            </td>

            <td class="right">
              2
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-03 金></span></span>
            </td>

            <td class="right">
              5.35
            </td>

            <td class="right">
              4
            </td>

            <td class="right">
              2
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-05 月></span></span>
            </td>

            <td class="right">
              11.25
            </td>

            <td class="right">
              1.8
            </td>

            <td class="right">
              2
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-06 火></span></span>
            </td>

            <td class="right">
              12.5
            </td>

            <td class="right">
            </td>

            <td class="right">
              3
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-10 土></span></span>
            </td>

            <td class="right">
            </td>

            <td class="right">
            </td>

            <td class="right">
              4
            </td>
          </tr>

          <tr>
            <td class="left">
              <span class="timestamp-wrapper"><span class="timestamp"><2014-05-11 土></span></span>
            </td>

            <td class="right">
              12.5
            </td>

            <td class="right">
            </td>

            <td class="right">
              2
            </td>
          </tr>
        </table>
      </div>
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-4-4" class="outline-4">
  <h4 id="sec-3-4-4">
    結果の解釈
  </h4>

  <div class="outline-text-4" id="text-3-4-4">
    <ul class="org-ul">
      <li>
        やや相関関係があるが、つよくはない。
      </li>
      <li>
        予定外のことをした以外にも、以下の要因がある。 <ul class="org-ul">
          <li>
            見積もった時間を大幅にオーバーしてしまったとき。
          </li>
          <li>
            寝坊して、一週間のうちにやろうと思っていたことが遅れているとき。 日の単位ではなくでもっと長いスパンで遅れを感じると不安になる。
          </li>
        </ul>
      </li>
    </ul>

    <p>
      この実験では、あまりよい成果が得られなかった。
    </p>

    <p>
      時間がないということは、
    </p>

    <ol class="org-ol">
      <li>
        物理的に時間がない
      </li>
      <li>
        不安感から時間がないと感じる
      </li>
    </ol>

    <p>
      の2つしかない。2の場合は、克服できるはず。
    </p>

    <p>
      また、不安感は2つからくることを知った。
    </p>

    <ul class="org-ul">
      <li>
        予定どおりに進まない、見積りを誤る
      </li>
      <li>
        予定外のことをする
      </li>
    </ul>
  </div>
</div>

実験計画3 走る

<div class="outline-text-3" id="text-3-5">
  <p>
    以下のbig assumptionを検証
  </p>

  <p>
    いつも時間ない。
  </p>
</div>

<div id="outline-container-sec-3-5-1" class="outline-4">
  <h4 id="sec-3-5-1">
    どのようなデータを集めるか
  </h4>

  <div class="outline-text-4" id="text-3-5-1">
    <p>
      走る前と走り終わったあとの心情をノートに記録する。
    </p>

    <p>
      よい習慣は、毎日小さく(5分から)はじめることで継続できることを検証する。 時間がないという思い込みは、心理的な不安からくることを認識する。
    </p>

    <p>
      走り終わったあとに、走る前と同じように時間がないと感じていたか。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-5-2" class="outline-4">
  <h4 id="sec-3-5-2">
    どういう結果が得られたときに固定観念が反証されたとみなすか
  </h4>

  <div class="outline-text-4" id="text-3-5-2">
    <p>
      走り終わったあとに、時間がないという感情が減ったとき。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-5-3" class="outline-4">
  <h4 id="sec-3-5-3">
    実験結果
  </h4>

  <div class="outline-text-4" id="text-3-5-3">
    <p>
      別のノートに記録。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-5-4" class="outline-4">
  <h4 id="sec-3-5-4">
    結果の解釈
  </h4>

  <div class="outline-text-4" id="text-3-5-4">
    <ul class="org-ul">
      <li>
        走り終わるとそこまで時間がないようには感じない。 時間がないと感じるのはストレスが生み出す心理的な問題。
      </li>
      <li>
        むしろ、時間がないはずの夜に5分走ったほうが、 その後の就寝と起床の効率があがる。
      </li>
      <li>
        事実として時間がないのではなくて、時間がないと感じている。 疲労とストレス解消によって時間がないという気持ちが薄れる。
      </li>
      <li>
        時間がない感じたときは、あせるのではなくて、 ストレスがたまっているからどうやってストレスを減らすかを 考えるのがよい。 <p>
          この実験はやや予定調和的ではあるものの、期待どおりの結果が得られた。
        </p>

        <p>
          いつも時間がない、という思い込みは反証され、心の声は弱くなった。
        </p>
      </li>
    </ul>
  </div>
</div>

実験計画4 認知療法

<div class="outline-text-3" id="text-3-6">
  <p>
    以下のbig assumptionを検証。
  </p>

  <p>
    明日もきっと虚しい一日になるに違いない。
  </p>

  <p>
    寝る時間が多いときは、ストレスが高いとき。 睡眠は現実逃避の手段になっているから。
  </p>

  <p>
    以下のfull sccessに近づくための実験を計画してみる。
  </p>

  <ul class="org-ul">
    <li>
      寝るときと起きたときは、澄み切った感覚を得ることが出来る。
    </li>
  </ul>
</div>

<div id="outline-container-sec-3-6-1" class="outline-4">
  <h4 id="sec-3-6-1">
    どのようなデータを集めるか
  </h4>

  <div class="outline-text-4" id="text-3-6-1">
    <p>
      一日の終わりに、つまらない、虚しい、つらいと感じた出来事を取り出す。 以下の2つをデータとして残す。
    </p>

    <ul class="org-ul">
      <li>
        認知療法のフレームワークにしたがって、出来事を解釈。 <ul class="org-ul">
          <li>
            状況
          </li>
          <li>
            気分
          </li>
          <li>
            自動思考
          </li>
          <li>
            合理的な考え
          </li>
        </ul>
      </li>

      <li>
        解釈のあと、その結果をどう感じたかを記録
      </li>
    </ul>
  </div>
</div>

<div id="outline-container-sec-3-6-2" class="outline-4">
  <h4 id="sec-3-6-2">
    どのような結果を期待するか
  </h4>

  <div class="outline-text-4" id="text-3-6-2">
    <p>
      出来事の解釈によって、虚しさが減少すること。 その結果、きっと虚しくなるという思い込みが弱まること。 積極的に別の解釈をしようと心がける習慣ができること。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-6-3" class="outline-4">
  <h4 id="sec-3-6-3">
    どういう結果が得られたときに固定観念が反証されたとみなすか
  </h4>

  <div class="outline-text-4" id="text-3-6-3">
    <p>
      出来事の解釈によって、幸福度が変化したとき。
    </p>
  </div>
</div>

<div id="outline-container-sec-3-6-4" class="outline-4">
  <h4 id="sec-3-6-4">
    実験結果
  </h4>

  <div class="outline-text-4" id="text-3-6-4">
    <p>
      省略
    </p>
  </div>
</div>

<div id="outline-container-sec-3-6-5" class="outline-4">
  <h4 id="sec-3-6-5">
    結果の解釈
  </h4>

  <div class="outline-text-4" id="text-3-6-5">
    <p>
      解釈のあと、その場ではあまり気持ちは変化しない。 数日おいて改めて見直してみると、 自分の感じていたことはとても些細なことだったり、 そこまで考え込まなくてもいいことだったりすることに気づいた。
    </p>

    <p>
      時間をおいて出来事を解釈するとそれは気分を深く落ち込ませない。 結果によって、仮定が実証された。
    </p>

    <p>
      テクニックとして、より早くそのような距離を置いた思考に至るようになりたい。
    </p>
  </div>
</div>

まとめ

早寝早起きをするためには、以下の3つの強力な固定観念を克服する必要がある。

  • どうせ明日も早くおきることができない。
  • いつも時間がない。
  • 明日もきっと虚しい一日になるに違いない。

まだ、克服できたとはいえないが、着実に成果はでている。

免疫マップが完成したとき、以上の固定観念が浮き彫りになったことに驚いた。

世の中には睡眠についてはたくさんのライフハックや睡眠グッズがあふれている。 自分も、早起きのためにそのような情報をあつめ、睡眠グッズを買ってきた。 しかし、それらでは睡眠を克服することができなかった。 睡眠を克服するということは、技術的課題ではなくて、適応的課題なのだ。

技術的なライフハックでは変われない。 強力な固定観念の克服によってのみ、変わることができる。

15 Jun 2014, 01:55

Futurismo Wiki 立ち上げ(Dokuwiki)

はじめに

以前, 高らかに Futurismo Wiki の立ち上げを宣言しました.

宣言しただけで, ちっともカスタマイズしていなかったので, カスタマイズ してみました.本記事は, その作業メモ.

とくに, SEO に関する情報についてまとめてみました.

SEO 対策

SEO Tips

SEO につよい設定方法は以下にある.これはすごい.

簡単なメモ.

Google にインデックスの許可

管理者メニュー > サイト設定から

Google ウェブマスターツール

default では, サイトマップが作成されないので設定する.

管理者メニュー > サイト設定から

これで, サイトマップが作成されるようになった. doku.php?do=sitemap に アクセスすると, サイトマップが取得できる.

Google ウェブマスターツールにサイトを登録して, サイトマップの URL で doku.php?do=sitemap を指定して, 登録完了.

Google Analytics for DokuWiki

Google Analytics でアクセス解析.

まずは, Google Analytics でトラッキング ID 取得.

DokuWiki の設定

Google Adsense

アドセンスもテーマに挿入出きるみたい.ただ, Wiki のデザインを大切にし たいので, この Wiki には広告はいれないことにした.

おわりに

なにもしないと, Google 検索にまったくひっかからないんだということを 今更ながら知りました orz.

08 Jun 2014, 14:26

Windows環境でJenkinsからRSpecを実行するメモ

やりたいこと

Windows環境で、RSpecを夜中に連続実行したい。

cronを利用してもいいけど、Better cronな Jenkinsを使う方法を調べた。

なぜcronでなくてJenkins?

<div class="outline-text-3" id="text-1-1">
  <p>
    Jenkinsを利用する利点は、
  </p>

  <ul class="org-ul">
    <li>
      cron書式で設定Ok <ul class="org-ul">
        <li>
          <a href="http://futurismo.biz/archives/1490">cronとwatchrを使ってJenkinsからオレオレリポジトリ監視してみる | Futurismo</a>
        </li>
      </ul>
    </li>

    <li>
      グラフィカルな結果レポート
    </li>
    <li>
      ログが残せる
    </li>
  </ul>

  <p>
    ところかな。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://hazi.jp/2012-12/2203/">邪道Jenkins(スライド) | Hazi.log</a>
    </li>
    <li>
      <a href="http://image.slidesharecdn.com/jenkins-130706091448-phpapp02/95/slide-1-638.jpg?cb=1373120272">すごい cron ? &#8211; Jenkins 試した</a>
    </li>
  </ul>
</div></p>

むかしも挑戦したけど

<div class="outline-text-3" id="text-1-2">
  <p>
    今回はRCではなくて、WebDriver.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/292">Selenium RCで自分のPCからテストケースを実行する | Futurismo</a>
    </li>
  </ul>
</div></p>

Environment

<div class="outline-text-3" id="text-1-3">
  <ul class="org-ul">
    <li>
      Windows 7 64bit
    </li>
    <li>
      Jenkins
    </li>
    <li>
      Ruby 2.0 p353
    </li>
    <li>
      RSpec 3.0
    </li>
  </ul>
</div></p>

Jenkins

Jenkins インストール

<div class="outline-text-3" id="text-2-1">
  <p>
    公式サイトからwarファイルをダウンロード。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://jenkins-ci.org/">http://jenkins-ci.org/</a> <ul class="org-ul">
        <li>
          jenkins.war
        </li>
      </ul>
    </li>
  </ul>
</div></p>

Jenkins起動

<div class="outline-text-3" id="text-2-2">
  <p>
    ワンラインで終わり。jenkins ワー!
  </p>

  <div class="org-src-container">
    <pre class="src src-language">C:\Jenkins&gt;java -jar jenkins.war

  <p>
    localhost の port 8080がデフォルトなのでアクセスする。おじさんがいれば成功。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://localhost:8080/">http://localhost:8080/</a>
    </li>
  </ul>

  <p>
    ほかにも、windowsインストーラからインストールする方法もある。むかし挑戦した。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/299">JenkinsをWindowsPCにインストールする | Futurismo</a>
    </li>
  </ul>

  <p>
    ハマった思い出があるので、今回は挑戦しない。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/331">WindowsバッチファイルをJenkinsで起動したらネットにアクセスできない | Futurismo</a>
    </li>
  </ul>
</div></p>

RSpecを連続実行

cron実行

<div class="outline-text-3" id="text-3-1">
  <p>
    新規ジョブを作成 > フリースタイル・プロジェクトのビルド > ビルド・トリガ > 定期的に実行を選択。
  </p>

  <p>
    5分に1度実行。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">*/5 * * * *

  <p>
    ビルド > Windowsバッチコマンドの実行を選択。入力欄にrspecの実行を記入。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">rspec "C:\cygwin\home\TSUNEMICHI\repo\selenium\selenium_spec.rb"

  <p>
    手動でビルドを実行してみて、起動が成功すればOK.
  </p>

  <div class="org-src-container">
    <pre class="src src-language">C:\Users\TSUNEMICHI\.jenkins\jobs\selenium-rspec\workspace&gt;rspec "C:\cygwin\home\TSUNEMICHI\repo\selenium\selenium_spec.rb" 

.

Finished in 18.02 seconds (files took 1.68 seconds to load) 1 example, 0 failures Finished: SUCCESS

テスト出力

<div class="outline-text-3" id="text-3-2">
  <p>
    せっかくなので、テスト結果の視覚化を。 ci_reporterというgemをつかうことで、RSpecの実行結果をJUnit形式のxmlに変換できる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/nicksieger/ci_reporter/">nicksieger/ci_reporter</a>
    </li>
  </ul>

  <p>
    とのことだったが、rspec3は古いフォーマッタに対応していないとのことなので、今回は保留で。
  </p>

  <p>
    ほかにも、実行時間の視覚化もできるようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://sue445.hatenablog.com/entry/2013/03/17/015836">Jenkinsにスローテストのグラフを表示する &#8211; くりにっき</a>
    </li>
  </ul>
</div></p>

Special Thanks

RSpec

<div class="outline-text-3" id="text-4-1">
  <p>
    selenium-webdriverで、なぞのエラーがでて苦しむ。手動パッチをあてた。
  </p>

  <p>
    invalid byte sequence in UTF-8 (ArgumentError)
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://gosyujin.github.io/2013/03/18/selenium-firefox-loaderror/">Selenium WebDriverでFirefoxがロードできなくなった &#8211; kk_Atakaの日記@GitHub Pages</a>
    </li>
    <li>
      <a href="http://seesaawiki.jp/w/kou1okada/d/Cygwin%20-%20Ruby-1.9.3p327%20-%20win32/registry">Cygwin &#8211; Ruby-1.9.3p327 &#8211; win32/registry &#8211; PIB</a>
    </li>
  </ul>
</div></p>

Jenkins

<div class="outline-text-3" id="text-4-2">
  <ul class="org-ul">
    <li>
      <a href="http://codezine.jp/article/detail/7505">「Selenium2」テスト徹底活用! Jenkinsによる自動実行とSelenium Grid2による複数環境でのテスト (1/6):CodeZine</a>
    </li>
    <li>
      <a href="http://ozzy2010.blogspot.jp/2012/05/5web-jenkins-x-selenium.html">ソフトウェアテスト: 5分でできるWebテスト自動化 &#8211; Jenkins x Selenium</a>
    </li>
  </ul>
</div></p>

08 Jun 2014, 10:31

実行可能なドキュメント生成!AnsibleとOrg-modeで実現するRun Book Automation(RBA)

はじめに

org-babel-tangleをEmacsの外のコマンドラインから実行する方法を調べました。

そして、生成したyamlファイルをansibleにわたして実行することで、 実行可能なドキュメントを生成してみました。

関連する過去記事は以下。

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      ArchLinux
    </li>
    <li>
      Emacs 24.3
    </li>
  </ul>
</div>

Emacs の関数をコマンドラインから実行する

org-modeでかかれたドキュメントを コマンドラインから変換するためのスクリプトを調べた。

以下のサイトから直接スクリプトを引用する。

#!/bin/sh
# -*- mode: shell-script -*-
#
# tangle files with org-mode
#
DIR=`pwd`
FILES=""

# wrap each argument in the code required to call tangle on it
for i in $@; do
    FILES="$FILES \"$i\""
done

emacs -Q --batch \
    --eval "(progn
     (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
     (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
     (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
     (mapc (lambda (file)
            (find-file (expand-file-name file \"$DIR\"))
            (org-babel-tangle)
            (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
<p>
  このスクリプトを実行すると、コマンドラインからorg-babel-tangleが実行できる。
</p>

org-banel-tangleとansible-playbookを同時実行

枯れた自分のシェルスクリプトの知識を呼び覚まして、シェルスクリプトを書いた。

Indentをたもつために、以下のおまじないも加えた。

(setq org-src-preserve-indentation t)
<ul class="org-ul">
  <li>
    <a href="http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-makefile.html">Makefile Source Code Blocks in Org Mode</a>
  </li>
</ul>

<p>
  </div> </div> 

  <div id="outline-container-sec-4" class="outline-2">
    <h2 id="sec-4">
      virtualboxのインストールスクリプト
    </h2>

    <div class="outline-text-2" id="text-4">
      <p>
        以下のようなorgファイルを用意した。
      </p>

      <blockquote>
        <p>
          * VirtualBox
        </p>

        <p>
          &#8211; [[https://wiki.archlinux.org/index.php/VirtualBox_(%E6%97%A5%E6%9C%AC%E8%AA%9E)][VirtualBox (日本語) &#8211; ArchWiki]]
        </p>

        <p>
          以下のモジュールが必要。
        </p>

        <p>
          &#8211; virtualbox<br /> &#8211; virtualbox-host-modules<br /> &#8211; qt4
        </p>

        <p>
          #+begin_src yaml :tangle yes<br /> &#8212;<br /> &#8211; hosts: localhost<br /> sudo: yes<br /> tasks:<br /> &#8211; name: Install VirtualBox<br /> pacman: name=virtualbox,virtualbox-host-modules,qt4<br /> #+end_src
        </p>

        <p>
          ArchLinuxでゲストOSを動かすためにはKernelモジュールをロードする必要がある。
        </p>

        <p>
          #+begin_src yaml :tangle yes<br /> &#8211; name: Load Kernel Module<br /> command: modprobe vboxdrv<br /> #+end_src
        </p>
      </blockquote>

      <p>
        コマンドラインから実行して、virtualboxをインストール成功!カッコいい。
      </p>

      <div class="org-src-container">
        <pre class="src src-sh">[tsu-nera]% ./ansible-org-tangled.sh archlinux/virtualbox.org

PLAY [localhost] **************************************************************

GATHERING FACTS *************************************************************** ok: [localhost]

TASK: [Install VirtualBox] **************************************************** ok: [localhost]

TASK: [Load Kernel Module] **************************************************** changed: [localhost]

PLAY RECAP ******************************************************************** localhost : ok=3 changed=1 unreachable=0 failed=0

      <p>
        もちろん、org-modeなので、HTMLへの出力とかもできる。
      </p>

      <p>
        githubにアップするだげで、orgファイルはいい感じに表示されるところがよい。
      </p>

      <ul class="org-ul">
        <li>
          <a href="https://gist.github.com/tsu-nera/83084289c9c6660812de">https://gist.github.com/tsu-nera/83084289c9c6660812de</a>
        </li>
      </ul>
    </div>
  </div>

08 Jun 2014, 06:34

自分のデスクトップ環境の歴史を記録する!ansibleで設定ファイルをクラウド管理する方法

はじめに

いままで、このブログには自分がPCで実施した設定を技術メモとして書いてきた。

自宅でためした内容を会社でも実施することがかなりある。 どうせならば、ブログとして残すとともに、実行可能なスクリプトとして残したい。

ということで、構成管理ツールである、Ansibleを試すことにした。

今回は、ローカルマシン(ArchLinux)の設定を目的にして試してみます。

ちなみに、関連記事は以下。

Environment

<div class="outline-text-3" id="text-1-1">
  <ul class="org-ul">
    <li>
      Arch Linux
    </li>
    <li>
      Python 3.5
    </li>
  </ul>
</div>

Ansibleのインストール

Ansibleとは、いわゆる構成管理ツール。サーバの設定を自動化することができる。

sudo pacman -S ansible
<p>
  ちなみに、以下の方法ではbuildでエラーした。なんでかな?
</p>

<div class="org-src-container">
  <pre class="src src-language"># pip

sudo pacman -S python-pip sudo pip install ansible

easy_install

sudo pacman -S python-setuptools sudo easy_install ansible

Ansibleをつかってみる

ping

<div class="outline-text-3" id="text-3-1">
  <p>
    pingコマンドというのがあり、これでインストール後の疎通確認ができる。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">mkdir ansible

cd ansible echo ‘localhost’ > host ansible localhost -m ping -i hosts

  <p>
    hostsというのはインベントリファイルという。 インベントリファイルに登録されたホストにのみansibleは実行可能。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/yteraoka/ansible-tutorial/wiki/Inventory-File">Inventory File · yteraoka/ansible-tutorial Wiki</a>
    </li>
  </ul>
</div>

localで利用する

<div class="outline-text-3" id="text-3-2">
  <p>
    公式Docによると2つの方法がある。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># コマンドラインから --connection=localを設定

ansible-playbook playbook.yml –connection=local

playbookに以下を記述


gitを入れてみる

<div class="outline-text-3" id="text-3-3">
  <p>
    以下の記事を参考に、gitをインストールしてみる。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/itiut@github/items/e8b95ac9b9ea2a6ea701">AnsibleをUbuntuのローカルで使う &#8211; Qiita</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">---

コマンドラインから実行。-K オブションでパスワードを聞かれる。

ansible-playbook site.yml -i hosts -K

-i hostsは環境変数を設定することで省略可能。

export ANSIBLE_HOSTS=~/.ansible/hosts

/etc/sudoersで以下の一行を追加することで、-Kも書略できる。

# visudo
username ALL=(ALL) NOPASSWD:ALL

NTPの設定をしてみる

実施手順

<div class="outline-text-3" id="text-4-1">
  <div class="org-src-container">
    <pre class="src src-language"># ntpのインストール

pacman -S ntp

ntpサーバへの接続設定

cp ntp.conf /etc/ntp.conf

  <p>
    /etc/ntp.confの内容は以下。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># With the default settings below, ntpd will only synchronize your clock.

#

For details, see:

- the ntp.conf man page

- http://support.ntp.org/bin/view/Support/GettingStarted

- https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon

Associate to public NTP pool servers; see http://www.pool.ntp.org/

server -4 ntp.nict.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp server -4 ntp3.jst.mfeed.ad.jp

Only allow read-only access from localhost

restrict default nomodify nopeer noquery restrict 127.0.0.1 restrict ::1

driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp.log

  <p>
    こうなった。以下を参考にしたけれども、途中でわからなくなった。 すみませんが、リンク先参照ということで。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://gist.github.com/phillipuniverse/7721288">Set up NTP with Ansible, dedicating one as a timelord</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">---

ArchLinuxの設定を書いてみる

<div class="outline-text-3" id="text-4-2">
  <p>
    ArchLinuxで利用するツールをyamlファイルで管理。
  </p>

  <div class="org-src-container">
    <pre class="src src-yaml"><span style="color: #a9a9a9;">---</span>

まとめ

デスクトップをプレーンテキストでバージョン管理したい。

dotfilesで設定を管理することを、一歩おしすすめて、OS自体を管理したい。

調べながらなので、今回の設定は時間がかかり、またpacmanくらいしかつかいこなせていない。 けれども、これからこのdotansiblesも成長させていく。 ansibleはとてもシンプルな仕様なので、覚えるのも時間がかからないはずだ。

調べてみると、dotfilesを管理するようにansibleでdesktopを管理するも流行ってる?

dotfilesと同じように、少しずつ自分の成長過程をプレーンテキストで管理して記録していく。

BookMarks

公式Doc

<div class="outline-text-3" id="text-6-1">
  <ul class="org-ul">
    <li>
      <a href="http://docs.ansible.com/index.html">Ansible Documentation — Ansible Documentation</a>
    </li>
  </ul>

  <p>
    日本語訳
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/shkumagai/ansible-doc-ja">shkumagai/ansible-doc-ja</a>vv
    </li>
  </ul>
</div>

チュートリアル

<div class="outline-text-3" id="text-6-2">
  <ul class="org-ul">
    <li>
      <a href="http://yteraoka.github.io/ansible-tutorial/">Ansible チュートリアル | Ansible Tutorial in Japanese</a>
    </li>
    <li>
      <a href="http://apatheia.info/blog/2013/04/06/about-ansible/">構成管理ツール Ansible について &#8211; apatheia.info</a>
    </li>
    <li>
      <a href="http://qiita.com/seizans/items/54da2077ac8e2dcf5d6f">vagrant &#8211; Ansible コトハジメ &#8211; Qiita</a>
    </li>
    <li>
      <a href="http://demand-side-science.jp/blog/2014/ansible-in-wonderland-01/">不思議の国のAnsible – 第1話 – DSS Tech Blog</a>
    </li>
    <li>
      <a href="http://tdoc.info/blog/2013/04/20/ansible.html">ansibleを使ってみる — そこはかとなく書くよん。</a>
    </li>
    <li>
      <a href="http://docs.ansible.com/pacman_module.html">pacman &#8211; Manage packages with pacman — Ansible Documentation</a>
    </li>
    <li>
      <a href="http://d.hatena.ne.jp/akishin999/20130815/1376520672">Ansible の Playbook を使ってみる &#8211; akishin999の日記</a>
    </li>
    <li>
      <a href="http://www.infiniteloop.co.jp/blog/2013/08/ansible/">はじめてAnsibleを使う人が知っておきたい7つのモジュール</a>
    </li>
  </ul>

  <p>
    ローカルで利用する。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://cloverrose.hateblo.jp/entry/2013/09/07/112153">Ansibleをローカルで使ってみた &#8211; cloverrose&#8217;s blog</a>
    </li>
    <li>
      <a href="http://qiita.com/itiut@github/items/e8b95ac9b9ea2a6ea701">AnsibleをUbuntuのローカルで使う &#8211; Qiita</a>
    </li>
  </ul>

  <p>
    Ansibleの哲学・アーキ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://tdoc.info/blog/2014/01/20/ansible_beyond_configuration.html">Ansibleのアーキテクチャー: 構成管理を超えて — そこはかとなく書くよん。</a>
    </li>
  </ul>

  <p>
    ansible bestpractice.
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://docs.ansible.com/playbooks_best_practices.html#always-name-tasks">Best Practices — Ansible Documentation</a>
    </li>
  </ul>
</div>

その他

<div class="outline-text-3" id="text-6-3">
  <ul class="org-ul">
    <li>
      <a href="http://qiita.com/advent-calendar/2013/ansible">Ansible Advent Calendar 2013 &#8211; Qiita</a>
    </li>
  </ul>
</div>

08 Jun 2014, 05:45

ArchLinux インストール後の設定メモ

はじめに

前回ArchLinuxをインストールしたので、今回はインストール後の設定についてまとめます。

[toc]

wifiの設定

まずは、wifiを有効化。

iw dev
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase "ssid" "psk")
dhcpcd wlp2s0
<p>
  起動時に自動でwifi接続するように設定。
</p>

<div class="org-src-container">
  <pre class="src src-language">pacman -S wpa_actiond

systemctl enable netctl-auto@wlp2s0.service reboot

<p>
  再起動してネットに接続できればOK.
</p>

ユーザ設定

ユーザの作成。

useradd -m -g users -G wheel -s /usr/bin/zsh tsu-nera
passwd tsu-nera
<p>
  sudoをパスワードなしで利用するために、visudoを設定。rootになって、
</p>

<div class="org-src-container">
  <pre class="src src-language"># これで emacsで visudoが起動できる。

VISUAL=emacs visudo

末尾に以下の行を追加。

tsu-nera ALL=(ALL) ALL

ツールの設定

pacman

<div class="outline-text-3" id="text-4-1">
  <p>
    ArchLinuxのパッケージ管理ツール、pacmanをまずはべんきょ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Pacman_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">pacman (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    よく利用するツールをインストール。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S emacs git zsh tmux openssh

  <p>
    すべてをアップデート。
  </p>

  <p>
    n#+begin_src language pacman -Syu #+end_src
  </p>
</div>

yaourt

<div class="outline-text-3" id="text-4-2">
  <p>
    pacmanのラッパー。 特徴は、Arch User Repositoryにあるツールをインストールすることができること。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Yaourt_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Yaourt (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>
</div>

gitの設定

<div class="outline-text-3" id="text-4-3">
  <div class="org-src-container">
    <pre class="src src-language">ssh-keygen -t rsa

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1280">githubに新しいリポジトリを作成してローカルのリポジトリをアップロードする | Futurismo</a>
    </li>
  </ul>
</div>

my dotfiles

<div class="outline-text-3" id="text-4-4">
  <p>
    github上で管理しているdotfilesをインストールする。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">git clone https://github.com/tsu-nera/toolkit.git

git submodule update –init

  <p>
    つづけて、emacsも立ち上げる。 el-getでパッケージ管理しているので自動でtoolはおとしてくる。
  </p>
</div>

日本語環境の設定

文字コードの設定

<div class="outline-text-3" id="text-5-1">
  <p>
    ja_JP.UTF-8をつかう。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># locale.genを編集

emacs /etc/locale.gen

以下をコメントアウト

en_US.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8

locale.gen生成

locale.gen

  <p>
    コンソール環境では文字化けする。X Window System環境をを整えてから以下を設定。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">echo LANG=ja_JP.UTF-8 &gt; /etc/locale.conf

export LANG=ja_JP.UTF-8

IM/IME

<div class="outline-text-3" id="text-5-2">
  <p>
    親指シフトが利用できる、ibus-anthyを利用する。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># インストール

sudo pacman -S ibus-anthy

設定

ibus-setup

  <p>
    日本語入力はなかなか苦労した。 なぜなら、ibus-daemonを起動しても日本語入力できなかったから。
  </p>

  <p>
    結論としては、/etc/clipboardに設定をした。.zshenvや.xinitrc, .profileはすべて失敗した。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># ibus

export XIM=ibus export XIM_PROGRAM=/usr/bin/ibus-daemon export XIM_ARGS=“–xim” export GTK_IM_MODULE=“ibus” export XMODIFIERS=“@im=ibus” export QT_IM_MODULE=“ibus” ibus-daemon -d -x

Font

<div class="outline-text-3" id="text-5-3">
  <p>
    Ricty を使う。驚いたのは、archlinuxだと、以下のコマンド一つでインストールできてしまうこと。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">yaourt -S ttf-ricty

  <p>
    いままで散々苦労してきたが、あまりに導入が簡単過ぎて感動した。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1313">いつ変えるの?今でしょ!Windowsプログラマーのための『Ricty』</a>
    </li>
    <li>
      <a href="http://futurismo.biz/archives/2072">美は生産性に宿る!プログラマーのためのフォントRictyをLinux Mintに導入した</a>
    </li>
  </ul>
</div>

GUI環境の設定

X Window System

<div class="outline-text-3" id="text-6-1">
  <div class="org-src-container">
    <pre class="src src-language"># x window systemのインストール

pacman -S xorg-server xorg-server-utils xorg-xinit pacman -S mesa

ドライバを調べる。

$ lspci | grep VGA Intel Corporation Haswell-ULT Integrated Graphics Controller(rev 09)

  <p>
    ここから適切なドライバを探す。自分のPCは intelなので、 xf86-video-intelのようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Xorg_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#.E3.83.89.E3.83.A9.E3.82.A4.E3.83.90.E3.83.BC.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">Xorg (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xf86-video-intel

  <p>
    タッチパッドの制御のために以下もインストール。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xf86-input-synaptics

  <p>
    ただし、TouchPadは普段は邪魔なので、無効化しておく。エイリアスを切って、off/onをする。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">alias touchpad_disable='xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0'

alias touchpad_enable=‘xinput –set-prop “SynPS/2 Synaptics TouchPad” “Device Enabled” 1’

slim

<div class="outline-text-3" id="text-6-2">
  <p>
    軽量なログインマネージャー。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S slim archlinux-themes-slim slim-themes

  <p>
    /etc/slim.confを設定する。テーマは/usr/share/slim/themsにある。
  </p>

  <div class="org-src-container">
    <pre class="src src-language"># defaultユーザの設定

default_user tsu-nera

テーマの設定

current_theme archlinux-darch-grey

  <p>
    最後に設定を反映する。
  </p>

  <div class="org-src-container">
    <pre class="src src-language">systemctl enable slim.service

reboot

xmonad/urxvt

<div class="outline-text-3" id="text-6-3">
  <p>
    タイル型ウィンドウマネージャのxmonad, ターミナルにurxvtをつかう。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Xmonad_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Xmonad (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <p>
    これは以前から利用しているからだ。なので、詳細は省略。(過去記事参照)
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/2165">タイル型ウィンドウマネージャという新たな世界観に衝撃を受けた!</a>
    </li>
    <li>
      <a href="http://futurismo.biz/archives/2163">省エネ時代の軽快ターミナル!rxvt-unicode(urxvt)でサクサクターミナル生活 </a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S xmonad xmonad-contrib dmenu xmobar, rxvt-unicode

サウンド設定

ALSA

<div class="outline-text-3" id="text-7-1">
  <p>
    サウンドカードのデバイスドライバ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Advanced Linux Sound Architecture (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S alsa-utils

  <p>
    alsamixerをコマンドラインから起動する。 (自分の環境では) F6 の サウンドカード選択でHDA Intel PCHを選択。
  </p>

  <p>
    自分の場合は、これで音がでなかったので、以下の作業をした。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#HDMI_output_does_not_work">Advanced Linux Sound Architecture &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language"># 音がでるデバイスを調べる。

$ aplay -l *** ハードウェアデバイス PLAYBACK のリスト **** カード 0: HDMI [HDA Intel HDMI], デバイス 3: HDMI 0 [HDMI 0] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 0: HDMI [HDA Intel HDMI], デバイス 7: HDMI 1 [HDMI 1] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 0: HDMI [HDA Intel HDMI], デバイス 8: HDMI 2 [HDMI 2] サブデバイス: 11 サブデバイス #0: subdevice #0 カード 1: PCH [HDA Intel PCH], デバイス 0: ALC269VC Analog [ALC269VC Analog] サブデバイス: 11 サブデバイス #0: subdevice #0

音がでるかテスト

$ apply -D plughw:1,0 /usr/share/sounds/alsa/Front_Center.wav

youtube

<div class="outline-text-3" id="text-7-2">
  <p>
    youtubeを見るためには、Adobe Flash Playerが必要。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://wiki.archlinux.org/index.php/Browser_Plugins_(%E6%97%A5%E6%9C%AC%E8%AA%9E)">Browser Plugins (日本語) &#8211; ArchWiki</a>
    </li>
  </ul>

  <div class="org-src-container">
    <pre class="src src-language">pacman -S flashplugin

その他

時刻設定

<div class="outline-text-3" id="text-8-1">
  <p>
    時刻が狂っているので時刻合わせをする。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://futurismo.biz/archives/1487">CentOSで日本標準時の時刻をntpで取得するためのメモ | Futurismo</a> <div class="org-src-container">
        <pre class="src src-language">systemctl enable ntpd

まとめ

前回の記事のArchLinuxの導入までで、30時間はかかった気がする。。疲れた。 ArchLinuxの導入の大変さを身をもって実感。 自分の手で設定をつくりあげる、これは大変だけれども非常に達成感があった。

ArchLinuxは壊れやすいときくので、なるべく詳細にインストールメモを残してみた。 なんとなく、再設定をしそうな気がするので。ArchWikiの異常な丁寧さと詳細さに感嘆した。 困っても、大抵のことはここに書いてあったので、迷うことはなかった。

なぜ、Linux MintからArchLinuxに移行しようとしたのだろう?

ローリングストーンモデルに惹かれた点が大きい。 Linux Mintはアップデートにフルインストールが必要だけれども、ArchLinuxはコマンド一つだ。

しかし、それは表の理由だ。真の理由は、ブランドバリューに引かれたから。 ArchLinuxには、かたよったステレオタイプがある。

『私、ArchLinuxをつかってます』というと、なんだかマニアっぽい。 『私、vuittonのバッグを持っているの』というのと同じ。

芸術家をアーチストという、そしてまた、ArchLinuxをつかうひとも、アーチストという。

そんな自己満足感と達成感に浸っている。

Bookmarks