レビュー:「結果を出す人」はノートに何を書いているのか【紙】

「結果を出す人」はノートに何を書いているのか (Nanaブックス)


ビジネスマンのノートの活用方法(仕事術、時間管理術、自己投資)と
アナログとデジタルの文具ツールの併用方法がまとめられた本でした。
そして、視点を変えて紙の本質とは何かのヒントもありました。
ワクワクする本でした。

●ノートの活用方法
私は、プライベートはほぼ日手帳に、
ビジネスは適当なノートとPCのメモ帳に記録をしていました。
まだまだ、データの量が少ないため将来これらの蓄積を活用ができるかどうか不安でした。
しかし、本書を読んで記録の取り方を下記のようにアップデートすることができました。

■ノート
スケジュール管理:ほぼ日手帳(マンスリー)+ほぼ日付箋
プライベートの気づき:ほぼ日手帳(デイリー)
ビジネスの気づき、思考:普通のB5ノート[母艦ノート]
日常のあらゆる気づき、発見:EDGE TITLE メ-J363B[メモノート]

■アクセサリ
メモノート用カバー:SYSTEMICメ-687B-D //あまりにもカッコイイ
メモノート用シャーペン:couleur HCL-50R-MB //カッコイイ
母艦への帰艦用スタンプのり:ドットライナー スタンプ //とても便利
締切り用付箋:半透明のPost-it

ほぼ日手帳以外はすべてLOFTで揃えました。
この装備になって3日程度ですが、非常に充実しています。
頭で何か思ったことをすぐにメモできるというのはとても心強いし楽しいです。




さて、本書ではノートと仕事の仕方についていろいろなことが書かれていました
特に興味深かった方法論としては次の3つでした。

・三冊(母艦、メモ、スケジュール)ノート術
→母艦ノートにすべての情報を集め、ちょっとしたことはメモノートにどんどん蓄積させ、
 予定はスケジュールノートで一覧できるようにしておくことで「結果を出す」

・移動しながらアイデアを出す技術
→メモノートの利用法の一種。歩いているときが楽しくなるでしょう。

・A(ction)書評
→本を読んだら、具体的に何をする(Action)かを書くことで、
 読書の効果を得ようというものです。

これらをアレンジして、実践しています。


●紙について
著者は紙について下記のようなことを述べています。

・企画のアイデアを練るときや、まだ考えがまとまっていないときに、
 手書きのアナログ感によって、より良質なアイデアが生まれるという効果もあります。
→良質なアイデアが生まれる理由としているアナログ感とは何か?

・色ペンで書いたり、糊で貼ったり、見返したいときに
 パラパラとノートをめくってみるだけです。
→この行動は人間の何をどのように刺激しているのか

・重要なメールやWebサイトを出力した用紙
 (著者は膨大な量のデジタルデータを印刷している)
→紙に印刷すると何が見えるのか

・一冊のノートに~中略~時系列でどんどん書いていきます。
 そうすることで、バラバラの情報同士もリンクして、新しい発見が生まれます。
 いいアイデアというのは、意外と本来関係ない情報から生まれることが多いのです。
→無関係と思われる情報をリンクさせるという効果はアナログ特有の価値ではないか

・リアルなモノを見ることで、記憶が想起されます。

・経験を引き出すための鍵としては、「実物」がもっとも効果が高いです。

・今のところ、どんなツールも紙のスケジュール帳より
 早く情報にアクセスできませんから、紙のスケジュール帳をお勧めするのです。

・大切なのはスピーディーにストレスなく、スケジュールを記入できることです。

・紙で出力したスケジュールが有効なのは、全体を俯瞰しやすいのと、
 追記ができるからです。

・人間はある程度、過去の記憶を時系列で検索することができます。

・デジタルツールの最大の活用方法は、「検索」です。

・デジタルとアナログが決定的に違うことは二点あります。
 それは、「情報処理のスピード」と「携帯性」です。

・オフィスのコピー複合機にスキャナーが付いていれば、
 一枚数秒で取り込むことができます。

これらは紙(またはアナログ)の本質をつかむためのヒントだと私は考えています。

紙について、一人でいろいろ考えているのですが、自信がなかったり、
的外れかもしれなかったりと、曖昧な感じなのですが、
本書は上記のように紙に関する意見が多い本だったので、
今後の思考のヒントになりそうです、そういう視点でも良い本でした。

「結果を出す人」はノートに何を書いているのか (Nanaブックス)

「結果を出す人」はノートに何を書いているのか (Nanaブックス)

  • 作者: 美崎栄一郎
  • 出版社/メーカー: ナナ・コーポレート・コミュニケーション
  • 発売日: 2009/09/11
  • メディア: 単行本(ソフトカバー)
  • 購入: 33人 クリック: 860回
  • この商品を含むブログ (121件) を見る

レビュー:アラン 幸福論【哲学】

幸福論 (岩波文庫)

幸福論 (岩波文庫)

意識しないと人間は悲観的になってしまい、無駄に不幸となってしまう。

幸福になろうという意志をもって生きなければ幸福になれないというのが、アランの幸福論全体を通しての主張だと解釈しました。

本書は「三大幸福論」の一つで、ラッセルの幸福論を読んだ後に読みました。

本書はラッセルの論理的な展開とは異なり、93の「プロポ(哲学断章)」という3~5Pの文章の集合から成り、その中に様々な気づきを与えてくれる文が散らばっています。

ただ、本書もラッセルのものと同じく、前半は不幸になってしまう原因について多く語り、後半は幸福になるための姿勢について多く語っていたように感じます。

本書の特徴として、たくさんのプロポのどれか一つを度々読み返すことで、いつもいろんな気づきがあるのではないかと思います。それぐらい本書にはいろんな思いが詰まっているように感じました。不安な気持ちが大きくなったときに読み返すと良いかもしれません。

以下、まとめです。

1:名馬ブケファラス

  • こうして、アリストテレスの教え子はすでに、ほんとうの原因を知らないかぎり、情念を癒すことができないのを知っていた。
  • ピンをさがしたまえ。

7:恐れは病気だ

  • 心が健康にふさわしい動作をすること、それが健康のしるしである、という一種の定理による。

9:想像上の苦痛

  • 死をうけとめることができるのは生きている人だけである。悲運の重圧をうけとめることができるのは幸福な人だけである。つまり、言ってしまえば、人間は自分の苦悩よりも他人の苦悩に対して敏感になっている。それは欺瞞でもなんでもないのだ。そこから人生についてまちがった判断を下してしまう。よく注意しないと、一生を台なしにしかねない。全力をもって、真の叡智をはたらかせて、実際の現実を考えねばならない。悲劇を演じようとしないで

42:行動すること

  • 人間は自分からやりたいのだ、外からの力でされるのは欲しない。

44:ディオゲネス

  • 人間が幸福であるといえるのは、何かを欲する時と、つくり出す時だけである。

47:アリストテレス

  • 真の音楽家とは音楽を楽しむ者のことであり、真の政治家とは政治を楽しむ者のことである。(アリストテレス

63:雨の中で

  • どうして君は、自分自身に対してもかけがえのない友となってやらないのか。

64:興奮

  • 幸福は平和がもたらす結果ではない。幸福とは平和そのものであるから。

73:上機嫌

  • 死者たちのことを、できるかぎり友情とよろこびをもって語ることである。親切とはよろこびにほかならない。愛(アムール)とはよころびにほかならない。

77:友情

  • 友情のなかにはすばらしいよろこびがある。

87:克服

  • 期待を抱くこと、それはつまり幸福であるということなのだ。仕事を規則正しくすること、そして困難を、さらなる困難を乗り越えること、これがおそらく幸福に至る正道である。

88:詩人たち

  • 相違は美しいものだ

89:幸福は徳である

  • 人に幸福を与えるためには自分自身のうちに幸福をもっていなければならない。

91:幸福になる方法

  • 自分の不幸は、現在のものも過去のものも、絶対他人に言わないことである

93:誓わねばならない

  • 悲観主義は気分によるものであり、楽観主義(オプティミスム)は意志によるものである。

8 Queens Problem

再帰処理を利用してエイトクイーン問題を解きます。

エイトクイーン問題とは

 チェスの盤上に、8個のクイーンを配置する。
 このとき、どの駒も他の駒に取られるような位置においてはいけない。
 クイーンの動きは、上下左右斜めの8方向に、
 遮る物がない限り進める。将棋の飛車と角行を合わせた動きである。

というものです。
8queens.rb

$SIZE = 7
$pos = [] 
$flag_a = []
$flag_b = []
$flag_c = []

def print_pos
    board = Array.new($SIZE+1).map{Array.new($SIZE+1," ")}
    $pos.each_with_index {|q,column|
        board[q][column] = "q"
    }
    board.each{ |elem|
        p elem
    }       
    puts "\n"
end

def set(i)
    (0..$SIZE).each { |x|
       if($flag_a[x]==0 && $flag_b[i+x]==0 && $flag_c[i-x+7]==0) then
           $pos[i] = x
           if i == $SIZE  then
               print_pos()
           else
               $flag_a[x] = $flag_b[i+x] =  $flag_c[i-x+$SIZE] = 1
               set(i+1)
               $flag_a[x] = $flag_b[i+x] = $flag_c[i-x+$SIZE] = 0 
           end
       end
    }
end

$pos.fill(0,0..$SIZE)
$flag_a.fill(0,0..$SIZE)
$flag_b.fill(0,0..$SIZE*2)
$flag_c.fill(0,0..$SIZE*2)
set(0)

実行結果のうち二つ(全92通り)

[" ", " ", "q", " ", " ", " ", " ", " "]
[" ", " ", " ", " ", "q", " ", " ", " "]
[" ", "q", " ", " ", " ", " ", " ", " "]
[" ", " ", " ", " ", " ", " ", " ", "q"]
[" ", " ", " ", " ", " ", "q", " ", " "]
[" ", " ", " ", "q", " ", " ", " ", " "]
[" ", " ", " ", " ", " ", " ", "q", " "]
["q", " ", " ", " ", " ", " ", " ", " "]

[" ", " ", "q", " ", " ", " ", " ", " "]
[" ", " ", " ", " ", " ", "q", " ", " "]
[" ", " ", " ", "q", " ", " ", " ", " "]
[" ", "q", " ", " ", " ", " ", " ", " "]
[" ", " ", " ", " ", " ", " ", " ", "q"]
[" ", " ", " ", " ", "q", " ", " ", " "]
[" ", " ", " ", " ", " ", " ", "q", " "]
["q", " ", " ", " ", " ", " ", " ", " "]

rubyをもっと知っていれば、もっとかっこよく書けそうなのですが、
私にはこれが限界です。これもこちらを参考にさせてもらっています。
さて、エイトクイーン問題は初めて実装したのですが、
考え方は結構単純です。
すべての場合を列挙し、そこから条件を絞っていくという流れです。
下記の部分で条件判定をしています。

       if($flag_a[x]==0 && $flag_b[i+x]==0 && $flag_c[i-x+$SIZE]==0) then

書籍で紹介されていて自分もすぐにこういう法則を
発見できるように精進していきたいです。


新・明解C言語によるアルゴリズムとデータ構造

新・明解C言語によるアルゴリズムとデータ構造

組み合わせの列挙~再帰~

再帰処理を利用して組み合わせ(3桁の3進数の取りうる値)の列挙をします。

$SIZE = 3 
$pos = [] 

def print_pos
     print "#{$pos}\n"
end

def set(i)
    (0..$SIZE).each { |x|
       $pos[i] = x
       if i == $SIZE -1 then
            print_pos()
       else
            set(i+1)
       end
    }
end

set(0)

実行結果です

[0, 0, 0]
[0, 0, 1]
[0, 0, 2]
~中略~
[3, 3, 2]
[3, 3, 3]

繰り返し文で実現することもできますが、再帰で実装しました。
私は、再帰処理はなんとなく頭で理解していても
細かい動きまでイメージできない場合があります。
なので機会があったので実装しました。
再帰は重いから嫌われますが、コードとして美しいなと改めて感じました。

ダイクストラ法~線形探索~

Rubyダイクストラ法の実装を行います。
探索済みとなる要素は線形探索しています。
こちらのコードをrubyコードに変換することで実装させてもらいました。)

$MAX_V = 6
$INF = 100000

def dijkstra(s)
  cost = [
  [$INF, 2,    5,    $INF,  $INF,  $INF,  $INF],
  [2,   $INF,  4,    6,    10,   $INF,  $INF],
  [5,   4,    $INF,  2,    $INF,  $INF,  $INF],
  [$INF, 6,    2,    $INF,  $INF,  1,    $INF],
  [$INF, 10,   $INF,  $INF,  $INF,  3,    5],
  [$INF, $INF,  $INF,  1,    3,    $INF,  9],
  [$INF, $INF,  $INF,  $INF,  5,    9,   $INF]]

  d = []
  used = []
  d.fill($INF,0..$MAX_V)
  used.fill(false,0..$MAX_V)
  d[s] = 0
  
  while(1)
      v = -1
      for u in 0..$MAX_V do
          if !used[u] && (v == -1 || d[u] < d[v]) then
              v = u
          end
      end
      
      if v == -1 then
          break
      end
      
      used[v] = true
    
      for u in 0..$MAX_V do
          d[u] = d[u] < (d[v] + cost[v][u]) ? d[u] : (d[v] + cost[v][u])
      end
  end
  
  return d
end

print dijkstra(0)

実行結果です。途中のノード番号などを出力はしていません。

[0, 2, 5, 7, 11, 8, 16]
Complete(0)

線形探索部分が下記の部分です。
条件文は(ノードが確定しているかのフラグ && 未訪問 || 現在値よりも小さい)
と読めます。

      for u in 0..$MAX_V do
          if !used[u] && (v == -1 || d[u] < d[v]) then
              v = u
          end
      end

経路更新は下記の部分です。
対象すると経路(d[u])に対して、新規経路(d[v] + cost[v][u])の方が短いかどうか
を判定し、その結果を代入しています。
途中のノード番号を保持するならばここに追加コードが必要です。

      for u in 0..$MAX_V do
          d[u] = d[u] < (d[v] + cost[v][u]) ? d[u] : (d[v] + cost[v][u])
      end

今回は線形探索で実装しましたが、次はプライオリティキューを用いて実装したいです。

配列におけるマイナスの添え字

Rubyで配列においてマイナスの添え字を与えた場合の結果です。

サンプルコード

array = [1,2,3,4,5]

puts array[4]
puts array[3]
puts array[2]
puts array[1]
puts array[0]
puts array[-1]
puts array[-2]
puts array[-3]
puts array[-4]
puts array[-5]

実行結果

5
4
3
2
1
5
4
3
2
1
Complete(0)

今まで知らなかったので気づいて面白かったです。
nilなどが返ってくるのではなく、格納されている値が返ってくるので場合によっては注意が必要だと思います。
また、範囲外を指定するとnilが返ってきます。

要素数を数える3つの手段(size, length, count)

Rubyで配列などの要素数を数えるメソッドであるsize, length, countの違いです。
サンプルコード

array= [0,1,2,3,4,5,6,7,8,9]

print "size   = #{array.size}\n"
print "length = #{array.length}\n"
print "count  = #{array.count}\n"
print "count(2)  = #{array.count(2)}\n"
print "count(%2) = #{array.count{|x| x%2 == 0}}\n"

実行結果

size   = 10
length = 10
count  = 10
count(2)  = 1
count(%2) = 5

となります。
まとめると

size, length:同様の動作を行う。
count:size, lengthと同様の動作をさせることが可能。
   条件やブロックを与えることで任意の要素数を数えることも可能。

と言えます。

こちらのサイトの情報と同じですが、自分でまとめておきたかったので書きました。