イノベーションを生みだすために必要なこと

リーン・スタートアップを読んだ。

リーン・スタートアップとは、スタートアップの成功確率を高める方策を集めたものである。

アイデアよりも実行すべきかどうか

「この製品を作れるか」と自問したのでは駄目。いまは、人間が思いつける製品ならまず間違いなく作れる時代だ。問うべきなのは「この製品は作るべきか」

検証できない仮説は意味ないですね。ただモチベーションを上げる手段としての仮説はアレだよなぁと。

ユーザーストーリーは検証による学びが得られてはじめて完結だと考えること

創薬プロセスももうちょっとこういったことを意識しないと駄目だろうなぁと思うが。

リーンスタートアップにおける製品開発プロセスでは「行わなければならない実験をプル信号としてそれに反応する」と考えるべきだ

ピボットのタイプに種類があることを知った。

  • ズームイン型
  • ズームアウト型
  • 顧客セグメント型

高速文字列解析の世界が素晴らしかった

丸4日かけて8章(最終章)以外を読んだ。正月休みの後半の時間をこの本を読むのに費やしたのは正解だった。新年開始早々、知的な満足感が得られた。

本書を読めば、BWT、簡潔データ構造、ウェーブレット木、FM-Indexが理解できる。

LF-mappingのところ(p.28の補題3.4)を理解するのに時間がかかったが、これを理解できればFM-Indexのアルゴリズムが理解できる。ついでにWavelet Matrixも理解できた。ひとつひとつ丁寧に読み進めていけば理解できるようになっていたので良かった。

本や論文で書いてあるなら、まず読んで知っているのが必要条件(slide 24)と著者のスライドに書いてあるように、BWT、簡潔データ構造、ウェーブレット木、FM-Indexは知らないといけない知識になるんだろうなぁと。

pubmed調べたら、bioinformatics用途でしかみつからないのでchemoinformatics方面で応用できたらいいなぁと思った。

その他

  • LZEndはちゃんと理解していない
  • Boyer-Mooreは昔やった

簡潔データ構造

4章

簡潔データ構造は、操作が高速でありながら作業領域量が小さいという2つの性質を兼ね備えたデータ構造であり、データ圧縮と索引の技術が組み合わさったものである

完備辞書(FID)

  • access: B[i]を返す
  • rank:B[0,i)中のb∈{0,1}の数を返す
  • select:B中で伝統から見てi+1番目に出現したb∈{0,1}の位置を返す

p.48の式がo(n)ビットに抑えられていると書いてあるのだが手で計算して確かめていない(ので後で計算する)。 (13.01.05 libcdsのチュートリアル読んだら理解した)

簡潔木の説明がさらりとしすぎてあまり触れられていない気もするが、本書においてあまり重要でないってことでいいのかな(全体を読んでみないとわからない)。

それから読んでいて索引が貧弱だなと思った。RRRとかselectとか引けない。

2012年に読んだ本

今年読んだ本で良かったもの。

すごいHaskellたのしく学ぼう!

これはピカイチだった。RWHで停滞感が漂いまくっていた僕のHaskell理解力がかなり上がったのは間違いない。そういえば、最近Haskellしか書いてないなぁと2012年のエントリに付けられたタグを数えたらHaskell 90, Python 70, javascript 44だった。

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovača
オーム社 / 2940円 ( 2012-05-23 )


あとはtwitterで色々教えてもらったりとか、三島Haskell無名関数の会が出来てモチベーションが上がったりとか色々タイミングが良かったということもあるが。来年も引き続きハスケりたい。

型というか、閉じている、自己同型といったイメージは数学ガールが良いかも

ProductName 数学ガール ガロア理論 (数学ガールシリーズ 5)
結城 浩
ソフトバンククリエイティブ / 1995円 ( 2012-06-01 )


チケット駆動開発

自分の仕事にアジャイルな要素を入れたいというのはここ数年ずっと考えていて、やっと来年すこし取り組めそうで嬉しい。

僕のチケット駆動に対する期待は、創薬研究への応用なので、チケット駆動開発の背景にある考え方がぎっしり詰まった本書は、色々な発見や再発見があったり、今の仕事のアナロジーを見つけたりとかなり満足度の高い本だった。

ProductName チケット駆動開発
小川 明彦
翔泳社 / 3444円 ( 2012-08-24 )


今年システムを少し運用してみて、意識の高低のバラツキを吸収する仕組みとしてゲーミフィケーション的なものも考えて行かないといけないし、受動的な情報伝達手段も考えて行かないといけないなぁと感じた。

(そもそも潜在的に)意識の高いマネジメント層は、能動的に情報アクセスしない研究者層(というより労働者層)が存在することを理解できないので、「そんなのホームに登録しておけばいいだけなんんじゃないか?」なんて言うんだけど、それすら能動的な情報アクセスなんだよなぁ。

デジタルサイネージのようなものにも手を出してみたい。

ProductName 幸せな未来は「ゲーム」が創る
ジェイン・マクゴニガル
早川書房 / 2940円 ( 2011-10-07 )


JavascriptとTitanium Mobile

今年はクライアントサイドのMVCも熱かった。去年Javascriptを勉強してた時には、まさかiPhoneアプリの方に進んでいくとは思わなかったが。

ステートフルJavaScriptはjavascript MVCフレームワークの本でSpine.jsの解説に近い。そしてこの知識はTitanium MobileでJavascriptを使ったiPhoneアプリ開発で役立つ!

AlloyはTitaniumのためのMVCフレームワークでBackbone.jsを使ってつくられている。これを使うとjavascriptを利用してiPhoneアプリとかAndroidアプリが作れちゃうわけだ(下のエントリ参照)。

バージョンあげたら実機転送がうまくいかなくなって、最近は停滞気味ですが、来年はもうちょっと力を入れて取り組みたいと思っている(なんかアプリをリリースしたい)。

それから僕はCoffeeScriptが好きなので使っていますが、他にもNode.jsのテンプレートエンジン(Jade,eco,ejs)なんかも使えるので好みの開発スタイルを探求するためにCoffeeScriptやNode.jsの入門書もあわせて読んでおくとよいかも。

ProductName サーバサイドJavaScript Node.js入門
清水俊博
アスキー・メディアワークス / 3990円 ( 2012-10-26 )


過去に読んだ本

創薬プロジェクト版Git(Chemit)を思いついたので実装してみるかな

redmineはGitのようなVCSをセットにして使うのが当たり前なので、創薬系でもそのようなバージョン管理システムがあればいいなぁと思っている。

現状の化合物管理データベースは履歴管理をしないし、コミットログに対応するものも記録できないので、単なる構造データ管理としてしか機能しないが、化合物管理データベースのフロントにwikiかそれをモディファイしてコミットログとか履歴管理に対応する機能をもたせたものを用意すればやりたいことができそうだ。さらにAPIを用意してcliのラッパーとかpython,rubyバインディングを用意すればredmineと連携させやすいだろう。

logでログとかコミットツリーが出て

$ chemit log
commit C0000123
Author: ChemistA <XXXXX>
Date:   Sun Aug 19 10:05:53 2012 +0900

    improve solubility

commit C0000122
Author: ChemistB <YYYYY>
Date:   Sun Aug 19 10:04:58 2012 +0900

    reduce clogp  fixes #24

commit C0000121
Author: ChemistA <XXXXX>
Date:   Sat Feb 4 09:02:58 2012 +0900

代謝安定性を改善 fixes #23

それから

$ chemit diff C0000121 C000123

と打つと構造の差分とMCSが表示されようなものを作ってredmineと連携できれば素敵じゃないかなと思ったので、実証用のコードを書いてみようかな。

ProductName Redmineによるタスクマネジメント実践技法
小川 明彦
翔泳社 / 3444円 ( 2010-10-13 )


明日の資料の元ネタあたりをまとめてみた

創薬のためのメトリクスとかアジャイル開発手法の応用みたいな内容を話しますが、資料の中ではコンテクストや背景や動機なんかを端折ってるために、全体像がつかめないかもしれないので、参考になりそうなエントリをまとめておきます。

アジャイル開発とか継続的インテグレーション(CI)

アジャイルとはなんなのか?

モチベーションマネジメント、ゲーミフィケーション

成果主義を例に出すまでもなく、組織を活性化するためには賃金による報奨は必ずしもいいとは限らない。承認欲求に訴えるためにはどうしたらいいか?

加えて暗黙知を形式知になりやすくするようなカルチャーをつくるにはどうしたら良いか?といったこともシステム設計として考えていく必要がある。

リーンとかトヨタ生産方式とか

生産のアナロジーが使えそうな仕事または労働時間と生産性が比例するような仕事。参考書籍は沢山出ているので乱読すればよいでしょう。

リポジトリとしての化合物データベース

ELNは単に紙の実験ノートを電子化すればいいってもんじゃなくて、もっとリポジトリへのアクセス端末としての設計を考えなきゃいけないんじゃないの?とか思う。 認証だとかPart11対応だとかはバックエンドのデータベースの問題であってそんなのイノベーションとは関係無いだろ?と思っているのでELN界とは距離を置いてる。

リーンソフトウェア開発を読んだ

アジャイルとは結局のところ何なんだろう?という疑問が再浮上してしまった。

アジャイル・ソフトウエア開発を、トヨタの生産方式とし知られる「リーン思考」の視点から解説したユニークなアジャイル解説本です。「ムダをなくす」という意味のリーン思考と「俊敏さ」を主眼とするアジャイル開発とは、根本的なところで実は同じ考え方であり、方法論としても共通するところが多くあります。

ソフトウェア開発は製造と大きく異なるが、創薬もソフトウェア開発と大きく異なると思う。

開発はレシピの作成であり、製造はレシピにしたがって料理をつくることであると考えていい。

という文脈にならうのであれば、創薬とはレシピの発見である。つまり見つかるかもしれないし、見つからないかもしれないという不確定さが常につきまとう。

ProductName リーンソフトウエア開発~アジャイル開発を実践する22の方法~
メアリー・ポッペンディーク
日経BP社 / ?円 ( 2004-07-23 )


7つのリーン原則

  1. ムダの排除
  2. 学習効果を高める
  3. 決定の遅延
  4. できるだけ早く提供
  5. チームに権限を与える
  6. 統一性
  7. 全体をみる

ムダの排除に関して

だれも読まないペーパーワークは価値を付加しない

バリューストリームマップも重要

学習効果を高める

ある程度の新しい情報を得るためには、ある程度の失敗率がなくてはならない

決定の遅延

イテレーションをくり返すなかで、自然と設計が浮き彫りになってくるようなシステムの作り方をすると、開発中に発生する変更に対応しやすいロバストな設計ができあがる

問題解決に関しては

深さ優先の手法は、照準を合わせる領域を正しく選択した場合にのみ、うまくいく

できるだけ早く提供

プルシステムの特徴は「見える化」つまり目で見るマネジメント

全体をみる

「ヒトは生産性の測定対象となる計測結果を最適化しようとする」ので測定対象は慎重に選ばないといけない。

  • 標準化
  • 仕様化
  • 分解

オースチンの指摘

個人の成果計測値を個人に帰するのではなく集合化することが重要だ

「残業なし」で「好成績」のチームは理想論(個人だったらあるけど)

理想は追いかけるものだけどね。

ProductName なぜ、あの部門は「残業なし」で「好成績」なのか? 6時に帰る チーム術
小室 淑恵
日本能率協会マネジメントセンター / 1575円 ( 2008-12-24 )


ワーク・ライフ・バランスの重要性を説くのだけど。

ワークライフバランスは、「ワークとライフを両方充実させることで、結果として、どちらもうまく回るようになる」という考え方です

個人的にワーク・ライフ・バランスってのはワークとライフの融合を説くものなので、サラリーマンのような時間を売る職業にそれを強いるのはなんだかなぁーと思うところではある。広義の賃金圧縮だろうと。サラリーマンも自営化してきて、成果で賃金が大きく変動するんだったら分かるんだけど。

とはいえ、働き方としてはそうだよなぁと思うのも事実。僕も「より面白いところ、やりがいのあるところ」があれば速攻移るべきだ(流動性に貢献するべき)と思うしね。

チケット駆動開発を読んだ

付箋の数と良書度は比例する(脳内調べ)。

アジャイルとウォーターフォールという二元論的な考え方は、その概念が普及する段階では役に立ちましたが、もうその次代は終わりつつあると思います。様々な開発法があるなかで、どのようなプロセスで開発するか、具体的な実践技術が求められているでしょう。

1347269572

僕のチケット駆動に対する期待は、創薬研究への応用なので、チケット駆動開発の背景にある考え方がぎっしり詰まった本書は、色々な発見や再発見があったり、今の仕事のアナロジーを見つけたりとかなり満足度の高い本だった。ただ、redmineをある程度使っているとか、アジャイルサムライ読んだとかそういいう基礎知識は必須なので、いきなり本書を読むよりは前作を読んだりしておいたほうがいいかなと思う。

ProductName Redmineによるタスクマネジメント実践技法
小川 明彦
翔泳社 / 3444円 ( 2010-10-13 )


ProductName アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson
オーム社 / 2730円 ( 2011-07-16 )


本書は、ソフトウェアの使い方が載っているわけではない(mantisくらいかな)ので、そこは注意。

ProductName チケット駆動開発
小川 明彦
翔泳社 / 3444円 ( 2012-08-24 )


処理手順

障害管理ツールの処理手順(p.24)を創薬探索系に重ねると、

  • 障害発見者: アッセイ担当
  • BTS: BTS
  • 担当者: 合成担当

という感じになるかな。そうすると障害とは何か?という話になるが、創薬系だと予想外の結果ということになるだろう。

予想外というのは仮説駆動開発の文脈だったら、なんのために合成するのか?という最初の目的が達成されたかどうかで判断するところだろうが、明確な目的を持って合成されることは少ないので、MMPに照らし合わせてcliffかどうかで判断してもいいかもしれない。結局cliffは予測外の事象だからね。

リポジトリマイニング

創薬系だとリポジトリにあたるものは既に存在するので、そこから今後の予測を行う技術は非常に興味がある。本書では詳しく解説されてないので、他の文献をあたろうと思った。

バージョン

本書を読んでredmineのバージョンの使い方を理解した。だが、創薬系だと多次元で並行的に進めていくので、ソフトウェア開発だと2系と3系を同時に開発するみたいな感じかなあ。ちょっと難しい。

バージョンの概念は、単なるタグだけでなく、合意というマネジメント要素も含んでいるのです。

p.295のバージョンの概念が欠落する理由も参考になった。

2012.09.18追記

著者の方からレスポンスを頂いた。ありがとうございます。

Q.創薬系のプロジェクトのバージョンとは何か? A.プロジェクトのマイルストーンに相当します。  学会で報告する、創薬研究の開発が完了する、などのチェックポイントが大きなマイルストーンになりますが、たぶん1ヶ月単位で意味ある成果物を出せるように、マイルストーンの目的を明確にすればいいでしょう。

大きいマイルストーンはあるのだけど、一ヶ月単位で測れるようなマイルストーンというのはあまり見ない気がする。というわけで、今必要なのはそういうブレークダウンした形のマイルストーンをどう定義するかだな。そういう意味ではメトリクスも足りてないだろう。

もう一つは、創薬開発手法は生産ではなく開発だという点において、トヨタ生産方式みたいな工場の生産系よりはソフト開発手法にすごく似ているのだけど、大きく異る点が1つある。 それは探索の割合が非常に大きいということだ(ライフサイエンス全般に言えることだけど)。これは工学と明らかに違って、コントロール出来ない要因を多分に含んでいて、それを考慮したような仮説ドリブンなマイルストンが必要なんだろうなぁと。

もう少し丁寧に考える必要があるが、理解が前進したので嬉しい。

国際学会English―挨拶・口演・発表・質問・座長進行

読み流しておこうと思ったのだけど、結局時間がとれなかったというか、黒龍のひやおろしを呑み始めてしまったので、集中力が霧散して緩みまくっている。

ProductName 国際学会English―挨拶・口演・発表・質問・座長進行
C.S.ラングハム
医歯薬出版 / 2625円 ( 2007-04 )


明日の新幹線のなかで流し読みしておこう。

というより、LBDDとかいいつつ120%量子化学に傾倒しているので、明日の内容はアウェーすぎるんじゃないかと不安がないわけではないが。まぁ、自分の中ではLBDDの行き着く先は量子化学計算だと思っているので空気を読まずに発表する。

そして、明日のセミナーが終わったら、次の日から二日間PyConJPなので楽しみだ。