; oi

2016年11月15日火曜日

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(2)

どのような「対話ボット」を作るか?

「いわゆるAI」がみたすべき重要な要件としては、知性や人格を感じることにある。画像認識の分野における一般物体認識の圧倒的な技術革新は、とても役に立つ高性能な機械という印象を脱しえない。今回は、「何の役にも立たなくても良いが、人格を感じるにはどうするか?」にフォーカスしてみようと思う。

そのように考えていった時に、現時点で最も簡単にコンピュータが自然に人格を表現する方法は文字列によるコミュニケーションであろう。対話の仕方はいくつかあるが、対話時の表情や発された言葉の音声などの複合的な情報を用いた対話の方がより人間らしさを感じることは言うまでもないが、人工知能で再現することはそのメディアの分だけコストがかかる。

よって今回は、最もシンプルに内容だけで人格を感じさせられる可能性がある対話ボットであるテキストによる対話ボットを考える。つまるところ、これは以下のチューリングテストで想定している「機械」そのものである。

人間の判定者が、一人の(別の)人間と一機の機械に対して通常の言語での会話を行う。このとき人間も機械も人間らしく見えるように対応するのである。これらの参加者はそれぞれ隔離されている。判定者は、機械の言葉を音声に変換する能力に左右されることなく、その知性を判定するために、会話はたとえばキーボードとディスプレイのみといった、文字のみでの交信に制限しておく。判定者が、機械と人間との確実な区別ができなかった場合、この機械はテストに合格したことになる。


(出典:Wikipedia https://ja.m.wikipedia.org/wiki/チューリング・テスト )

また、対象とする対話は、人格を感じさせられることを狙っているため、複数人の大量の対話履歴データを用いて学習させるよりも、ある特定の個人の対話履歴を用いて学習させることが望ましい、と考えた。

そこで、最も頻繁に利用しているコミュニケーションツールであるLINEの履歴データの活用を考えた。私のLINEトーク履歴データを用いて「対話ボット」を学習させ、LINE上で行なわれているコミュニケーションを再現できれば、私という人格をある程度再現できたことに相当する。

今回のやるべきことを整理すると「LINEのトーク履歴データを学習し、ある個人の人格を感じさせられるテキストベースの『対話ボット』を開発すること」である。

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(1)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(3)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(4)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(5)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(1)

「人工知能といえば」



最近のAIの隆盛はすさまじい。アカデミアにおける研究活動は勿論のこと、政府、企業におけるAI関連組織の編成や、AI関連予算のニュースも数多く取り沙汰されている。

一応、機械学習をかじったことがある身としては、AIと持て囃されている技術の大部分が、データから何かを統計的に学習するという点で従来の機械学習となんら変わりはなく見えてしまい、真新しさはほとんど感じない。

唯一の大きな違いとしては、計算機パワーの増大や、多種多様な学習データの増加によって、ディープラーニングという技術が、画像認識などの特定領域において従来技術に圧勝し、脚光を浴びたことであり、これこそがブームの正体だと思っていた。

しかしながら、先日友人と何気なく人工知能の会話になった際に「AIといったら、SiriやWatsonみたいなやつでは?」と言われてしまった。

文理を問わず、機械学習や最適化について、これまで学んだことの無い多くの人からしてみれば、AIの指し示す領域は、やはり「知性や人格をそこに感じる存在」なのである。SF映画の影響を色濃く受けていると考えられるが、人間の代替であり、延いては感情を兼ね備えて友人や敵になりうる存在としても想起されるようだ。そのAIの中で利用されている要素技術が、単なる統計だろうと、機械学習だろうと、ディープラーニングだろうと全く関係ないのである。

このような世間が考える「いわゆるAI」と「技術領域としてのAI」に乖離を感じたため、今回は「いわゆるAI」に主眼をおいて機械学習を活用してみようと思うに至った。

そこで、題材として選んだのが「対話ボット」である。

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(2)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(3)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(4)

話題のTensorFlow・LINEトーク履歴を用いて対話ボットを作ってみた(5)


2016年11月14日月曜日

ソースコードをキレイに表示させる方法(Blogger)

highlight.jsを用いてソースコードを表示させる方法を備忘録代わりに記す。

STEP1. ソースコードを表示させるStyleの選択

highlight.js demoの左下部分からブログのスタイルを選ぶ。本ページのソースコードを表示し、以下のようにHTMLからcss名を確認する。
<link rel="alternate stylesheet" title="Github" href="styles/github.css">

STEP2. Bloggerテンプレートの更新


以下をテンプレートHTMLの<head></head>部分の中に埋め込む。
<link href="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.2/styles/default.min.css" rel="stylesheet"/>
<script src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.2/highlight.min.js"></script>;
<script>hljs.initHighlightingOnLoad();</script>

STEP3. ソースコードの表示サイズの変更

BloggerテンプレートのカスタマイズからBloggerテンプレートデザイナーを開き、上級者向けから、cssの追加を選択する。
pre {
    font-size : 12px
}

STEP4. ソースコードの埋め込み

最後に、投稿編集画面において、HTMLとしてソースコードを以下のタグで挟んで追加するだけである。
<pre><code>〜</pre></code>
また、言語の指定は以下のようにクラスを指定するだけで良い。
<pre><code class = "python">〜</pre></code>

例.pythonコードの場合
if __name__ == '__main__':
    ratio = 0.9
    train_in = []
    train_out = []
    dev_in = []
    dev_out = []
    with open('../data/line_talk.in', mode = 'r') as fr:
        for i,line in enumerate(fr):
            if i &lt num_lines*ratio:
                train_in.append(line)
            elif i &lt num_lines:
                dev_in.append(line)

とても簡単であった。

参考:
http://blog.ayihis.info/2014/12/highlightjsblogger.html
https://highlightjs.org/static/demo/
https://39life.net/highlightjs/
https://github.com/isagalaev/highlight.js/tree/master/src/styles
http://takachan.hatenablog.com/entry/2014/08/15/232154
http://www.blogger-customize.com/2013/11/css-customize.html
http://highlightjs.readthedocs.io/en/latest/index.html

バケットハットの型紙に必要な情報

入力(作りたい帽子の大きさ)

トップクラウンの円周 $a$(cm)
サイドクラウンの下円の円周 $b$(cm)
サイドクラウンの下円の幅 $l_1$(cm)
ブリムの外側(下側)の円周 $c$(cm)
ブリムの幅 $l_2$(cm)
Center Line(cm)
Scale(cm)

出力(型紙作成に必要な情報)

$r_a$ 0 (cm)
$r_b$ 0 (cm)
$L_a$ 0 (cm)
$L_b$ 0 (cm)
$\phi_1$ 0 (°)
$r_c$ 0 (cm)
$L_b'$ 0 (cm)
$L_c$ 0 (cm)
$\phi_2$ 0 (°)

2016年10月11日火曜日

代表的な共役事前分布について

本稿では、代表的な共役事前分布の一覧を示す。

まずはじめに事後分布、尤度、事前分布の関係は以下の通りである。

事後分布 $\propto$ 尤度 $\times$ 事前分布

共役事前分布とは、事後分布の関数形と事前分布の関数形が同じになるような、尤度に対する事前分布のことである。

<参照>ベイズ推定における共役事前分布の重要性について

以下に、代表的な共役事前分布を示す。

ベータ分布

尤度関数が二項分布、ベルヌーイ分布の場合、ベータ分布が共役事前分布となる。

尤度関数:ベルヌーイ分布、二項分布


ベルヌーイ分布

$P(x\mid \lambda) = \lambda^x(1-\lambda)^{(1-x)}$ for $ x \in \{0,1\} $
Takes a single parameter $\lambda \in [0,1] $

二項分布

$P(x\mid \lambda, n) = {}_n \mathrm{ C }_x \lambda^x(1-\lambda)^{(n-x)}$
${}_n \mathrm{ C }_x = \frac{ n! }{ x! ( n - x )! }$
Takes parameters $\lambda \in [0,1]$ and $n \geq 0, n \in \mathbb{ Z }$

共役事前分布:ベータ分布

$$Beta(\lambda|a,b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}\lambda^{a-1}(1-\lambda)^{b-1} $$

ディリクレ分布


尤度関数がカテゴリカル分布あるいは多項分布の場合、ディリクレ分布が共役事前分布となる。

尤度関数:カテゴリカル分布、多項分布


カテゴリカル分布

$P(x\mid \boldsymbol{\lambda}) = \displaystyle \prod_{ i = 0 }^K \lambda_i^{x_i} $
Takes $K$parameters $\lambda_i \in [0,1] $ where $\displaystyle \sum_{ i = 1 }^{ K } \lambda_i = 1$

多項分布

$$
P(x\mid \boldsymbol{\lambda}, n) =
\begin{cases}
\frac{ n! }{ x_1! x_2! \cdots x_k! } \displaystyle \prod_{ i = 1 }^K \lambda_i^{x_i} & (when \sum_{ i = 1 }^{ K } x_i = n ) \\
0 & ( otherwise )
\end{cases}
$$
Takes $K+1$ parameters $n$ where  $n \gt 0$, and $\lambda_1,...,\lambda_K$ where $\lambda_i \in [0,1] $ and $\displaystyle \sum_{ i = 1 }^{ K } \lambda_i = 1$

共役事前分布:ディリクレ分布

$$Dir(\boldsymbol{\lambda}|\boldsymbol{a})=\frac{\Gamma(\sum_{ i = 1 }^{ K } a_i)}{\prod_{ i = 1 }^{ K }\Gamma(a_i)}\prod_{ i = 1 }^{ K } \lambda_i^{a_i-1}$$
Takes $K$parameters $a_1,...,a_K$ where $a_i gt 0$
Takes $K$supports $\lambda_1,...,\lambda_K$ where $\lambda_i \in [0,1] $ and $\displaystyle \sum_{ i = 1 }^{ K } \lambda_i = 1$

その他

その他、有名な尤度関数と共役事前分布の関係としては以下のようなものがある。

【事後分布】正規分布, 【尤度関数】正規分布 ,【共役事前分布】正規分布
【事後分布】ガンマ分布, 【尤度関数】ポアソン分布 ,【共役事前分布】ガンマ分布
【事後分布】ガンマ分布, 【尤度関数】正規分布 ,【共役事前分布】ガンマ分布


2016年10月10日月曜日

今更聞けない「GRIT:やり抜く力」の重要性と身につけ方


概要

多くの有名企業が採用基準に加えるなど、最近注目を浴びている「GRIT:やり抜く力」について、豊富な事例・科学的な根拠に基づいたまとめられた一冊である。

学力の経済学などでも教育について統計的な根拠を用いて緻密な説明がなされていたが、本書でも多くの統計情報を基に論じられるため、科学的にGRITに関して理解が深まると同時に、それを裏付ける多くの偉人の具体的なエピソードはとても読み応えがある。


構成とおすすめの読み方

大きく分けて3つのパートから構成されている。

PART1は、GRITとは何か、GRITの重要性について、
PART2は、自分自身がGRITを伸ばすための方法について、
PART3は、自分以外のGRITを伸ばすための方法について、
それぞれ記されている。

そのため、自身がGRITを身につけたい、向上させたいと考える方は、PART1,2を中心に読むと良い。
また、子供や部下のGRITを伸ばしたいと考える親、教育者、上司のような方はPART1,3を中心に読むことをおすすめする。

どのようにGRITを伸ばすかなどの詳細については、実際に本書を手にとって読んで頂きたいが、今回は備忘録代わりにGRITの重要性についてまとめ、まずはじめに多くの人が悩むであろう「取り組むべきこと」の発見方法についてのみ深掘りする。

GRITとは?

本書において、GRITの定義をビシッと一言で記載されておらず、明確な定義はないのであるが、一言でまとめると以下になるであろう。

GRIT(やり抜く力)とは(長期的な目標に向けた)「情熱」と「粘り強さ」である

情熱とは、ある重要な目標を達成するために興味を持ち続け、練習し続けることである。熱心さ、夢中や熱中とは若干ニュアンスが異なり、一つのことにじっくりと長い間取り組む姿勢のことである。
また、粘り強さとは、困難や挫折があっても諦めずに、目的達成のために希望を持って努力をし続けることである。

本書の中で引用されていた300名の偉人を対象にして実施された調査によると、これらを持ち合わせた人が必ず偉業を達成できるとは限らないが、偉業を達成できた人の中でも特に大きな功績を挙げた人はGRITが優れていたとのことである。

なぜGRITが重要なのか?

それでは、なぜGRITが重要なのであろうか。

本書では、しばしば才能とGRITを対比させる形で論じられるが、才能とGRITがどのように偉業と関連しているかは、以下の式にて示される。

達成の方程式
スキル=才能×努力
達成=スキル×努力

$$ accomplishment= gift*grit^2 $$

つまるところ、偉業の達成は、才能に比例し、努力の二乗に比例するのである。2倍努力し続ける人は、4倍の業績をあげるということである。
よって、才能が突出していなくても、GRITを鍛え上げることで抜群の業績を出すことが可能となる。

しかしながら、なんでもかんでも必死にやり続ければよいというものではなく、ブレない目標、動機の持続性が必要であり、着実にスキルを向上させるためのカイゼンも必要であると本書では述べられている。

何に取り組むべきか?情熱はどのように抱くのか?


自分が何を取り組むべきか、自分が本当にやりたいことは何かをわかっている人は少ないのではないだろうか。重要な目標、目的を決めきれないまま、なんとなく学業や仕事をしている人に対して、道しるべとなる情報が記されていたので、整理しようと思う。

本書によると、深い情熱は「興味」と「目的」によって支えられるという。

興味を掘り下げる


興味の段階として、発見と発展の2つの段階があると述べている。

1つ目は、自分自身が何に興味を覚えるかを知る「発見」の段階であり、
2つ目は、その興味を持ち続け、興味をさらに掘り下げていく「発展」の段階だという。

発見の段階では、まずは自身の好き嫌いに着目し、とりあえず好きなことをスタートさせて見ることが重要であり、何をしている時間が最も楽しいかを知る必要がある。一朝一夕では自分の興味を発見できないのが普通であり、時間をかけてまずは方向性を探るところから始めてみようとのことだ。

私個人としては、この発見の段階において「本当に楽しい、心から興味がある」という確信は、「どのような条件、どのようなタイミングで得られるのか?」にとても関心があったが、残念ながらその辺にはあまり触れられていない。おそらく興味関心は、遺伝というよりは、個々人の原体験によって、決まるものではないかと思うのだが。

次に発展の段階であるが、興味のあることをさらに掘り下げていくフェーズである。誰でも新しいことに興味を抱くということに変わりはないが、GRITが弱い人は、全く違う新しさを持つことに目移りしてしまい長続きしないと言われれている。対して、GRITの強い人は、興味のあることの微妙な差異に新しさを覚えるらしい。興味のあることに常に疑問をもち、その答えを探し続けることで興味を掘り下げ、新しさを見出すのである。そして、その微妙な差異にさらに興味を覚え、情熱をドライブし続ける。

自分の身近にいるエキスパートも微妙な差異に気づく。他の人がしっかりとレビューしても気付かない、設計上の考慮漏れや検証方法の穴に瞬時に気づき、的確な質問をするケースを何度も見てきた。エキスパート自身が興味を掘り下げていく上で、そのような細部にも目を配って、考慮し続けてきたことであるから、いわゆる直観が働くのであろう。

目的を見出す


興味のあることに対して真剣に取り組むことで、自分の取り組んできたことに大きな目的や意義を見出すという。ポイントとしては、目的起点で興味のあることを見つけるのではなく、まず興味のあることを色々と模索し、興味に基づいて真剣に取り組み、それを改めて振り帰って目的を見出すことが一般的ということである。

社会的意義や、他者を助けたいという目的を思ってから物事に取り組むことも決して悪いことではない。しかしながら、ある研究成果によると、目的に加えて、その仕事自体への興味がある場合の方が、目的だけの場合に比べて、継続的に努めるのだという。

私個人としても、何か特別な経験がないといきなり目的を決めることは困難に思う。やはり興味のある分野をやってみて「目的を見出す」ことが自然な気がする。孔子も論語の中で、同様の段階を経ており、ひたすら学問を続けてみて、50歳にしてやっと真の目的(天命)を見出せたのだと思う。「とりあえず続けてみて」といった軽い思いで始めたわけではなかったかもしれないが、真剣に取り組んだ後だからこそ、見出せたのだろう。

子曰く、
吾れ十有五にして学に志ざす。
三十にして立つ。
四十にして惑わず。
五十にして天命を知る。
六十にして耳従う。
七十にして心の欲する所に従って、矩を踰えず。

さいごに

兼ねてから、自分自身のパフォーマンスは明らかにモチベーションに依存すると感じていたため、どうすればモチベーションが上がるのか、情熱が抱けるのだろうか、と思っていた。本書は、情熱を「興味」と「目的」にブレイクダウンし、科学的な根拠に基づいて、それぞれの向上の方法について論じられた良書であった。

何をすべきか悩んでいる方、成果が出ずに悩んでいる方などは是非ご一読いただきたい。

2016年6月12日日曜日

今更聞けない「モデリング」の重要性:モデリングをはじめて勉強する人におすすめの入門書4点

モデルを基にした思考方法は、社会人に必須のスキルの一つである。プレゼンテーションにおける表現や、多様なバックグラウンドを持つ他者とのコミュニケーションにも、モデリングの考え方の一つである、抽象化・単純化の思考は必須である。

今回は、近年ますます注目を浴びているモデリングの方法やモデルベースの思考法を習得し、実ビジネスに応用するための入門書を紹介する。

モデリングの方法

スーパープログラマーに学ぶ 最強シンプル思考術




本書は、モデルリングの入門書として最適な書籍といえよう。本書で取り扱うモデルは、様々なモデルの中でも最もシンプルな「四角」と「線」だけで構成されるモデルを扱っている。このモデルの書き方はシンプルであるが故に非常に汎用性の高いモデリングの方法となる。本書でモデリングの基礎を押さえておけば、その他の様々なモデリング手法、記法(UML、SysML、BPMN、OWLなど)を習得するための準備になることは想像に難くない。また、非常に多くの卑近なモデル例、それらのモデルの良い点、悪い点、さらには悪いモデルの改善プロセス、モデルの現実的な活用例までが丁寧に説明されている。

特筆すべきモデリングの基本は、同じ対象であっても、目的や視座によって、出来上がるモデルが変わることである。これはモデルの良し悪しとは別の次元の話である。どの側面にから対象を観察するかで、見方は変化するが、それはどれも間違っていない。射影する方向が異なるだけである。

もの・こと分析で成功するシンプルな仕事の構想法

対象をモデル化・シンプル化するための一つの方法として、モノとコトに分けて考える手法がある。そちらも参照して欲しい。

「モノとコトから考える仕事の本質とは」

モデルの活用


基本的なモデリングに慣れた後は、モデルの活用に向けて以下の書籍を読むことをお勧めする。

アナロジー思考




抽象化し、アナロジー(類推)思考を行うことは、誰でも多かれ少なかれ経験があるだろう。本書にはそのアナロジー思考に焦点を当て、最大限有効活用することで、新しいアイデアを生むための方法論が書かれている。対象物を、ある側面から見て本質的な部分に絞り、抽象的に構造化することで、類似の構造を持つケースからアイデアを借りてくることが可能になる。自分が理解している別の領域におけるノウハウを、類似の構造を持つ領域に適用することで容易に解決策が思いついたり、新しい商品のアイデアが思いついたりできるようになるのである。
アナロジー思考の根底にあるのは、やはりモデリングによるシンプル化の技術である。アナロジーを用いるためには、対象の特徴を捉え、余計な部分を除外し、シンプルにモデリングする必要がある。本質的な部分のみを適切なレベル感でモデリングできれば、他の領域からアイデアを持ち込んで適用する場合も効果的に適用できる。

学習する組織




言わずと知れたベストセラー経営書である。本書の前半は、システム思考について書かれている。システム思考の肝は、経営における重要な事象をモデリングし、中長期的変化、挙動パターンを予測することにある。人間は認知的限界から、線形の因果関係のみを短絡的に捉えがちであるが、その背後には、その状況を支配する非線形な因果関係を持つシステムが存在し、ダイナミックに複雑なパターンを生成しているのである。
システム思考においては、複雑な非線形の因果関係のうち、特に重要なフィードバックループにフォーカスし、モデルをよりリッチに表現する。フィードバックループとは、ある要素aが、別の要素bを引き起こすという、a->bという一方向の因果関係だけではなく、b−>aという逆向きの因果関係を考えるものである。それら二つの因果関係がある場合、人間が予測する結果よりはるかにバリエーションに富んだ挙動を示す。自己強化型のループの場合は、指数関数的に増加、減少したり、バランス型のループの場合には振動しながら減衰することもある。

一例を紹介する。Stock and flow diagram of New product adoption model(Wikipediaより引用)の場合、新製品の潜在的なユーザーが、実際に利用するまでの関係性を以下のようなフィードバックループを用いて、記述する。


上記モデルについて、シミュレーションを行うことで、以下のような、ユーザー増加に関する動的特性を観察できる。



現状見えている事象や出来事から、その背後に存在するシステムを見出すには、状況を引き起こしている要素を発見、選択し、フィードバックの関係性を含め、システムの構造を必要十分にモデリングするスキルが肝要となる。「スーパープログラマーに学ぶ 最強シンプル思考術」なども参考にしながら、モデリング自体に慣れ、必要がある。
フィードバックループを含むシステミックなモデルが描けるようになれば、上記のような動的な特性の把握が容易になり、挙動パターンの理解、システム自体の構造的な改革を行えるようになるだろう。

まとめ

今回は、あつかう対象が複雑化し、情報が氾濫する現代に必須のスキルである、モデリングの方法、モデルを基にした思考法に関する書籍を紹介した。今回紹介したようなシンプルに考える方法に興味を持って頂けたら幸いである。



2016年6月5日日曜日

最大限に不確実性を抑え込む仕事の進め方〜「なぜ、あなたの仕事は終わらないのか」を読んで〜






本書には、米国Microsoft本社にてWindows 95, Windows98の基本設計を行い「右クリック」「ダブルクリック」「ドラッグ&ドロップ」の概念を現在の形に仕立て上げた、中島聡さんの仕事論が記されている。中島さんの学生時代から現在の仕事に至るまでの様々な実体験をベースにして論じられるため、想像しやすく納得性がある。多くの為になるTipsが書かれていたが、本記事では要点を絞り、紹介する。

本書で推奨する仕事の進め方:最初の2割で仕事の8割を終わらせる


本書では以下の仕事の進め方を推奨している。

時間がある時にこそ、全力疾走で仕事し、締め切りが近づいたら流す

最初の2割で仕事の8割を終わらせる

これによるメリットは、いくつも記されているが、主要なものは以下の2つであろう。

仕事に余裕が生まれる

最初の2割で8割分の仕事を行うため、残りの8割の時間を使って、残り2割の仕事をすれば良い。これだけ余裕があると仕事を確実に完成させることができる。すべての仕事が締め切りにおわれている状況と比較するだけでも、仕事の品質が上がることが容易に想像できるであろう。

早い段階で延期リスクを上申できる

2割の時点で8割の仕事が終わっていなかった場合、仕事が延期する可能性が非常に高い旨を「2割の時期」に伝えられることである。これが8割の段階になって伝えられても、マネジメント側としてはどうしようもない場合が多いが、早い段階であれば再調整が可能な場合が多いのである。

いかに仕事の不確実性を抑え込むか?

この考え方を整理すると「早い段階で以下に仕事の不確実性を抑え込むか?」に集約されるであろう。本書は暗黙的に、不確実性を多分に含むクリエエイティブな知的活動を「仕事」として捉えている。コンビニのバイトや工場の生産ラインのようなルーティンワークは、ほとんど不確実性を含まないため、2割の期間で8割の仕事などできるはずがない(完全な体力勝負になるだけであろう)。

確かに、不確実性を多く含む活動の作業規模・作業時間の正確な見積をするには、とにかく早い段階で着手し、8割の仕事を進めてみることが最も効果的なのは間違いない。すでに見積の段階で着手し、8割の仕事を終えているのだから。

不確実性さえなくなってしまえば、あとはひたすら完成度を高める作業を余裕を持って行えばよく、精神的にも余裕があり、プロダクトの品質は安定的に向上する。

時間術の先には?


上述のような有益な時間術論を展開後、「いかにしてやりたいことに取り組むか?」といった熱い仕事論が待ち構える。時間術はやりたくないことを行う時間を最小化する手段でもあると述べ、時間術によって生まれた時間をやりたい仕事、やりたいことに費そう、という内容となる。そして最後に以下のメッセージで全体をまとめている。

「一度しかない人生、思い切り楽しもうぜ」

現実的な仕事の進め方から熱い仕事論まで非常に濃い内容の一冊であった。