「7つの習慣」を読んだ

古典なんだろうが、読んだことがなかったので。

好きな人にとってはたまらないかもしれないが、僕には宗教色が強すぎるかなと感じた。眩しすぎてあてられちゃうひと続出だろうから★2つくらいのちょっとネガティブなコメントのほうが参考になる。つまり批判的な読み方したほうが得られるものが多いと思う。

ProductName 7つの習慣―成功には原則があった!
スティーブン・R. コヴィー
キングベアー出版 / 2039円 ( 1996-12 )


時間管理の第二領域に集中するというのは、まぁみんな理解しているけど、実践できているかというのは微妙だと思う。読後に改めて考えてみると、第三領域というのは第4の習慣(Win-Winを考える)とバッティングするからだろうな。緊急だけど(自分にとって)重要でない仕事は必ずしも相手にとって重要でないわけではないからなぁ。

という話は昔書いたし、自分は基本的にこの原則に従っていて、しょうもない仕事はあまりしなくなったけど、対人関係が全然壊れていないかというと微妙なところだな。つまらない仕事を受けてくれることが信頼関係の構築につながるって信じてる人も一定数いる(特に年功序列世代のおじさんに多い)し、結局自分がどう在りたいかにかかってくるだけだよねー。

  • 習慣は、知識とスキルとやる気という3つの要素からなっている
  • 個人的なミッションステートメントを書く
  • 原則中心の生活
  • デレゲーションの重要性

Cuisine ( Chef-like functionality for Fabric )

FabricにFile I/O,User/Group Management, Package Management, Text-processingの機能を加えたもの(slide 53)

複数台のサーバーを管理することがあったら使ってみよう。

子供の本の難易度を調整するのは楽しい

達成感というか読了感を如何に与えるかは重要だと思う。

最近娘が気に入った本。

ProductName 特急おべんとう号 (福音館創作童話シリーズ)
岡田 よしたか
福音館書店 / 1575円 ( 2009-03-01 )


子供のためのマインドマップ

娘は絵を描くのが好きなのでマインドマップは合っているみたいだ。子供向けのマインドマップ本を買ったら最初に好きなもののマインドマップを描こうって書いてたので、二人で描いてみた。

1329616847

漢字の起源象形文字を中心におくのもマインドマップしやすくて面白い。

ProductName マインドマップ(R)for kids勉強が楽しくなるノート術
トニー・ブザン
ダイヤモンド社 / 1680円 ( 2006-11-17 )


pybelで立体構造を立ち上げる

pybel(openbabel)で立体構造の立ち上げを行うのは簡単だ。

import pybel
mol = pybel.readstring("smi", "c1ccccc1C")
mol.make3D()
mol.write("mol")

コードを眺めていたら構造をたちあげるメソッドは

  • make3d
  • localopt
  • globalopt # ただし2.3.1ではコメントアウトされてた

make3dもglobaloptもlocaloptのstep数を変えて呼び出している。

localoptメソッドはデフォルトではmmff94パラメータを使って最急降下法で構造最適化をしている。

Node.jsのspawnをつかってcoffescriptでps ax | grep sshを実行させるサンプル

spawnとexecの違いがわからんのでちょっと調べた。

Difference between spawn and exec of Node.js child_process

spawnはストリームをexecはバッファーを返す

で、Node.jsのドキュメントを読んでて spawnをつかった 'ps ax | grep ssh' の例が書いてあったので、これをcoffeescriptで書いた。

ターミナルで普通に動くのでvowsでテストしたら、callbackが返ってくる前に変なオブジェクトが返ってきてなんじゃこりゃ?と。

coffeescriptをjavascriptにコンパイルして読んだら、変なとこにreturnが挿入されてたのであちこちにreturnを入れて勝手にreturnされないようにした。

psax.coffee

util = require('util')
spawn = require('child_process').spawn

psax = (callback) ->
  ps    = spawn('ps', ['ax'])
  grep  = spawn('grep', ['ssh'])

  d = ""

  ps.stdout.on 'data', (data) -> grep.stdin.write(data); return
  ps.stderr.on 'data', (data) -> console.log('ps stderr: ' + data); return
  ps.on 'exit', (code) ->
    console.log('ps process exited with code ' + code) if code isnt 0
    grep.stdin.end(); return

  grep.stdout.on 'data', (data) -> d += data; return
  grep.stderr.on 'data', (data) -> console.log('grep stderr: ' + data); return
  grep.on 'exit', (code) ->
    console.log('grep process exited with code ' + code) if code isnt 0
    return

  grep.stdout.on 'end', ->
    callback(null, d); return

  return

exports.psax = psax

returnを入れて最後に評価した式がかえらなくてしなくていいような記法は用意されてないんだろうか? >>なんかモナドっぽくて素敵じゃないか。

vowsのテスト。宣言(文字列)の書き方のお作法がまだよくわかってない。should beとかshoud haveはわかるんだけど、whenとかAfterとか使い分けってどうなってんの?

そういうお作法が書いてあるサイトないかなぁ。

vows = require('vows')
assert = require('assert')

sp = require('./psax')

psax = sp.psax

vows.describe('Psax').addBatch({
  'A psax': {
    topic: -> psax
    'should be a function': (px) ->
      assert.equal(typeof px, "function")
    'After psax function called': {
      topic: (psax) -> psax(this.callback)
      'callback should return a result': (err,result) ->
        assert.isString(result)
    }
  }
}).export(module)

ProductName テスト駆動JavaScript
Christian Johansen
アスキー・メディアワークス / 3780円 ( 2011-11-25 )


Node.jsでYahoo!日本語形態素解析APIを使う

紆余曲折の末Yahoo! APIに落ち着いた。

http = require('http')
querystring = require('querystring')

qst = querystring.stringify({
    appid: '################',
    sentence: 'もももすももももものうち',
    results: 'ma'
})

options = {
  host: 'jlp.yahooapis.jp',
  port: 80,
  path: '/MAService/V1/parse?' + qst
};

http.get(options,
  (res) ->
    body = ""
    res.on('data', (data) -> body += data)
    res.on('end', -> console.log(body))
  ).on('error',
  (e) -> console.log("Got error: " + e.message)
)

追記12.02.22

結果がXMLで返ってくるのでパースしないといけないが、node.js で libxml を使うにはどのライブラリをつかうべきかというエントリを参考にしてlibxml-to-jsを選択。

http = require('http')
querystring = require('querystring')
parser = require('libxml-to-js')

qst = querystring.stringify({
    appid: '######',
    sentence: 'あたしはプログラムの女の子です',
    results: 'ma'
})

options = {
  host: 'jlp.yahooapis.jp',
  port: 80,
  path: '/MAService/V1/parse?' + qst
};

http.get(options,
  (res) ->
    body = ""
    res.on('data', (data) -> body += data)
    res.on('end', -> parser(body, (err, result) -> console.log(result.ma_result.word_list)))
  ).on('error',
  (e) -> console.log("Got error: " + e.message)
)

結果

{ word: 
   [ { surface: 'あたし', reading: 'あたし', pos: '名詞' },
     { surface: 'は', reading: 'は', pos: '助詞' },
     { surface: 'プログラム', reading: 'ぷろぐらむ', pos: '名詞' },
     { surface: 'の', reading: 'の', pos: '助詞' },
     { surface: '女の子', reading: 'おんなのこ', pos: '名詞' },
     { surface: 'です', reading: 'です', pos: '助動詞' } ] }

Node.jsで外部プロセスを実行する

とりあえず先に進みたかったので、mecabコマンドを叩くことにした。

var exec = require('child_process').exec;

exec('echo "もももすももももものうち" | mecab', 
     function(err, stdout){ console.log(stdout); }
    );

というわけで7章をやっている。

ProductName 恋するプログラム―Rubyでつくる人工無脳
秋山 智俊
毎日コミュニケーションズ / ?円 ( 2005-04 )


追記 12.02.21

子プロセスなのでコレじゃうまくいかない。コレで解決するか、Yahooの形態素解析APIを使うか。

アイデア創出技術のバイブル

考具の著者の監修だということもあって読んでみたが、名前の通りアイデア出しのためのテクニックバイブルだった。

自分の発想力を運用する

ためのリソースブックですね。

序部はアイデアパーソンになるための11の習慣付けの方法が書いてあり参考になるが、

  • アイデアを収集するためのブレインバンクを作る
  • 素早くメモをとる

っていうのはEvernoteでいいかなと。今はgoogle tasksにひとつメモ用のリストを用意してるんだけど収集には向かない。

ProductName アイデア・バイブル
マイケル・マハルコ
ダイヤモンド社 / 2940円 ( 2012-02-17 )


主に以下のセクションに分けてテクニックをまとめてあるので、自分の能力バランスを考えるときに参考になる。 僕は特に直感的思考を高めるためのテクニックのセクションを、えーナニコレ気持ち悪いと思いながら読んでいたが、読後に改めて自分のバランスを考えると論理的な思考をすることに結構縛られているので、もうちょっと直感を養う訓練をしてもいいのかなと。

  • 左脳(論理的思考)
  • 右脳(直感的思考)
  • 協調(共同作業)

論理的思考を養う

大体ビジネス本に出てるけど、まとまっているのでパラパラめぐって眺めても楽しい。

一つの視点はあらゆる可能性の一つにすぎない

ので代替案を効率的に探索する手法が必要ですね。

  • SCAMPER(オズボーンのチェックリスト)
  • 逆転
  • アイデアボックス
  • マンダラチャート
  • フェニックスチェックリスト
  • ブルートシンク

チェックリスト系のものは本の最終ページにツール集としてまとまっているので便利。

ただし、

言語的な発想法を使いすぎると、自分の発想力が電子レンジで温め直しすぎたコーヒーのようになってしまうことがある。そんなときは、発想法を変えて、想像力を”入れたてのコーヒー”にしておくべきだ。

だそうだ。

直感的思考を養う

部の最初に直感力で問題を解く5つの要素を上げている。

  1. よく知らない問題に、どう取り組むべきかわかる能力
  2. ある分野の問題を、それとは無関係な分野と関連付ける能力
  3. 問題の核心部分を認識する能力
  4. 問題の最終解決をあらかじめ見通す能力
  5. 感覚で解決策がわかる能力

先にも上げたが、このセクションを読んでいて、「あーそうだよね」と「えーこれはどうなの?」というテクニックがあったので、分類してみた。

しっくりくる

  • 青い薔薇
  • ユーリカ!(インキュベーション)
  • 類推する(アナロジー発想法)
  • 論理を超える(パラドックス発想法)
  • 象形文字

しっくりこない

  • もしも話(フィクションストーリー発想法)
  • 夢日記発想法
  • 潜在意識からのメッセージ(ダ・ヴィンチ・スケッチ発想法)
  • 入眠時幻視
  • 幻視の旅(シナリオジャーニー発想法)
  • メンターズトーク発想法

分けてみると、潜在意識に語りかける系のテクニックをあまり重視していないのかもしれない。論理的に物事をすすめていくやり方に縛られすぎてるのかな。これに関してはもう少しゆっくり考えてみる。

協調作業

協調作業は、協調作業をするための人をどう集めるのか?というところに一番高いハードルがあるし、特に職場での仕事の場合チーム構成は与件でありコントロールできない要因なので、基本的に期待はしない。つまり、個人的にはコラボレーションは非常に重要視するけど、依存はしないというスタンス

セクションの中ではアイスブレイクとブレインストーミングの手法に関して説明している。

ProductName 考具 ―考えるための道具、持っていますか?
加藤 昌治
阪急コミュニケーションズ / 1575円 ( 2003-04-04 )


「わかる」とはどういうことか

脳のメカニズムに立脚した「わかる」とはどういうことかの説明

  • 事実とは自分の心がなくても生起し、存在し続ける客観的現象です。
  • 分かるの基礎は区別(分かつと書くように)
  • 「わかった」という体験は経験の一つの形式であって、事実とか真理を知るということとは必ずしもおなじではない
  • 自己の立場からあれこれ思案して、ものごとの真実を明らかにしようとするのが迷い