counterparty tokenを配るアプリ

初めまして。hidehigoと言います。
この時間の更新になってしまいました。かつ本題のネタは完了していません。汗

動くものを作ってみたいな、と思いトライしています。
題材は、counterparty のtoken です。
独自tokenを簡単に発行できる仕組みですが、
http://coinandpeace.hatenablog.com/entry/how_to_register_token_icon

こちらにも
http://gaiax-blockchain.com/indiesquare-wallet-report-1
解説があります。

独自tokenを、ブログへの寄付のお返しとして発行することが多く行われています。
また、今回作りたいと思ったアプリは、
https://satoshinakamoto.jp/faucet/?lang=ja この、Faucet(蛇口) を見たことがきっかけなのですが、
「ここに来たら色々なtokenをもらえます」という給水所なのか、クラフトビールのタップバーなのか、
という感じで楽しいですよね。

もっと単純に、自分のtokenを自分のブログ(wordpress)で配れても良いなーと思い、着手しました。
が、前述のようにまだ完成していません。
引き続き開発し、記事を更新します。

エピゲノムと生命

非常に面白い本だったので、メモ。

まとめ

  • 生活習慣も遺伝する!
  • 三毛猫は(ほとんど)メス
  • NGS(次世代シーケンサー)とコンピュターリソースの発達で、同定のスピードがガンガンあがっている。
  • DNA配列は世代を越えて変化。クロマチンに記録されるメタ情報(エピジェネティクス)は、ダイナミックに書き込み&消去が可能。これで環境への適応速度が上がる。
    • メタ情報=ネットワーク型の情報記録装置みたいに考えれる
    • これをDNAの「1つ上の階層」に実装することでDNAの配列に変更を加えることなく、柔軟かつ迅速に変更することが可能になる
    • こういうことが生体で実装されているのが驚きだが、ソフトウェアにも応用効きそう
      • 配布してしまった稼働ソフトウェアの機能を変える仕組み
  • さらに、共有のデータを持たないノード(誰とも同期しないデータ)とその相互作用のみで構成されるネットワーク(とそのソフトウェア)って実現できないかなぁ

以下はメモ。

p254
育児放棄の連鎖
マウスでも見られる
エピゲノムで説明できる

p246
環境と遺伝の相互作用
環境によって獲得された形質の一部が、エピゲノムの記憶を介して次世代に引き継がれることが明らかになってきている

p232
エピジェネティクスの視点からのがん
DNAのメチル化から説明できることが増えてきている
それと同時に、エピゲノム調節薬による治療法も

p223
ヒト。メタボな食生活を続けていると、PPARγ遺伝子のDNAメチル化(メタボなエピゲノム)が確立されてしまう=遺伝的素因に加え環境的要素が加味されて発病。
閾値というのは、このこと。

p216
一部のDNAメチル化パターンが世代を超えて維持されることがわかってきた。
つまり、(マウスの事例では)母親から黄色い毛色とメタボ体質を受け継いでいく。
さらに妊娠中にビタミン(メチル化のためのメチル基供与体)を投与すると、この体質を改善できる
ヒトの事例では葉酸。でも摂りすぎると自閉症ぜんそくに。

p202
分化多能性。イモリのように一部を再生できる能力
分化全能性。植物のように個体全体を増やすことができる
iPSは人工多能性幹細胞。哺乳類の体細胞でもかなりの程度の分化多能性を獲得できる。
分化多能性の維持に関わる4つの遺伝子を普通の細胞に導入するだけ。この4つはES(胚性幹細胞)に特異的に発現している。ESのSはstem。
内部細胞塊は分化全能性を持っている。
ヒトのES細胞を作るにはヒトの受精卵が必要なので〜

p201
細胞の初期化
一度用途が固定されたDNAの状態を初期状態に戻すことができる。(これが万能細胞?)

p200
カナライゼーション
60兆個の細胞が200種類(の運河)に分化している。
分化した特有の遺伝子が発現している。その発現パターンは、その細胞が分裂しても維持される。
この分化した状態の固定には、ポリコーム、トリソラックスが関与。だがDNAが変わって分化していくのではなく、同じDNAを持ったまま、クロマチン構造やエピゲノムが変化することによって、異なるパターンで「記憶」されていく。

p192
ゲノム刷り込みがない爬虫類や魚類では単為生殖できるものがいる
哺乳類ほゲノム刷り込みがあるので、父由来の遺伝子しか利用できない部位がある。生存に必須なものもある。
二母性マウス。2匹の母親マウスから生まれることほ可能

p190
遺伝子の欠失
複製や分裂期の分配の過程での異常により一部が失われることがある。

p188
顔の特徴を決める5つの遺伝子が同定された。顔面の特徴を数値化し特徴を解析、それとゲノム配列との相関を解析。
(思索)シーケンサーとデータとCPUがあればこのアプローチでドンドン同定が進むよね

p187
ゲノム刷り込みのおかげで、遺伝子の優性劣性を越えて子孫の表現型が多様になる

(思索)基本のシンプルなルールに複雑さを足す機構がいくつか。これが統計的にすごい広がりと、進化のしなやかさをもたらしている。
シンプル+複雑さを足す仕掛け、の構造は面白い。

p187
減数分裂
精子卵子が作られる時に一倍体に減ること。この時にランダムで(親の)父由来、母由来が分配される
減数分裂期に一部の染色体ではDNAの組換えも起こる。

p182
ラバとケッティ
この違いはゲノム刷り込み(インプリメンティング)の仕組みによる

二倍体
父由来と母由来を1セットずつ。その染色体それぞれの同じ位置に、父由来と母由来の遺伝子が存在している。
ゲノム刷り込みは、一部の遺伝子で、父由来母由来のどちらかだけが選択的に利用される。
雄か雌かで、利用パターンは異なる。
例えば、インスリン様成長因子は、必ず父由来が使われる。こういう遺伝子が哺乳類には200くらい存在すると言われてる。

ゲノム刷り込みは、部分的に一倍体相当の状況。生物的にはそれほど有利なことじゃない。

ゲノム刷り込みは生殖細胞で起こる。性によって異なるパターンで施される。これは伴性遺伝と似ているが、伴性遺伝は性染色体上の遺伝子に限定され、「子の性」に依存して表現型が現れる。ゲノム刷り込みは、常染色体上でも影響を受ける&「親の性」に依存する

p180
X染色体の不活性化は、まだ研究途中

p179
女性の8人に1人が持つかもしれないスーパー色覚。4色で色覚。
常染色体から青、片方のX染色体から赤と緑、もう一方から変異型の4つが発現

p174
このモザイク状の発現は、不活性化によるもので、つまり女性特有。これが女性が遺伝的に強い要因。色盲とか。オプシン遺伝子
似た配列が染色体上に存在すると、遺伝子変換(コピーアンドペースト型)により同じ配列になるように変化していく。これを重複遺伝子の共進化。先祖返り的な。
重複遺伝子が別の機能を持っている方が生存上有利な場合は、共進化から逃れて配列が異なる方向に変化していく。一定以上差異が生じると遺伝子変換が起こらなくなり配列が安定的に分離していく。
ヒトの赤オプシンと緑オプシン(X上)は、分岐してからまだそれほど経過してないので配列がよく似ている。ので先祖返りが起こる。青は常染色体上なので相関なし。

p169
不活性化される方はランダム
受精直後は、「ゲノム刷り込み」によって父親由来のX染色体が不活性化される。
一部の組織ではこれがずっと維持される。
有袋類ではずっと。有胎盤哺乳類では、これが一回リセットされ、以降はランダム。その後、細胞記憶の支配により分裂後の細胞に継承されていく。

p170
三毛猫の体毛色パターン。茶色に発色させるO遺伝子はX染色体に。この発現は不活性化の影響を受ける。O遺伝子が野生型と欠損型のヘテロOoになった雌猫が三毛猫。
(三毛猫はメスのみ!!)
三毛猫にはくっきりタイプとキジ三毛(白、茶、焦げ茶)がいる。これを決めるのが、アグーチ(変異のaだと真っ黒)がaaのホモか、Aaのヘテロか。
さらにOはAより遺伝学的に上位。Oが野生型だとAに関わらず茶色。
つまり、aaでOoだと黒と茶色。
これにWとS(ぶちを作る)の2つが関与。Wは優性なので野生型Wが1つでもあると白猫。三毛猫はww。
(つまり、くっきり三毛猫はaa,ww,Oo,SS(Ss)。
これ組み合わせ複雑で面白いわぁ)

雄の三毛猫がいる。三万匹に1匹。これはX2本とY1本持っている。

ヒトの場合Xが一本多くなると女性っぽい感じになる。クラインフェルター症候群

三毛猫のモザイクのパターンはランダムで決まる。つまりクローンを作ろうとしても模様は全く同じにならない。
三毛猫のクローンは純粋な茶色がない二毛猫だった。なぜ?体細胞クローンを、理解する必要がある?

p169
遺伝子量補正
女性は、片方のX染色体を不活性化する機構=不活性化。全長にわたってヘテロクロマチンになり、収縮してバー小体

p167
男性は出生比率が高いのに加えて寿命が短い。
この理由が、X染色体の不活性化。

性染色体(性を決定する)
Y染色体が短い
女性はXX。男性はXY。言い換えると女性は男性の2倍のX染色体を持っている
染色体の数が増えると、遺伝子の発現量も増え、その遺伝子がコードするタンパク質が多く作られることになる。
だが、一部のタンパク質だけが細胞内に多く存在すると、細胞の機能がうまく作動しなくなる。
一種類の染色体が2本から3本に増えただけで遺伝疾患になったりする。遺伝子の発現量はそのくらい厳密にコントロールされている。

p162
分化の固定。ポリコーム群とトリソラックス群
off/onに固定する。
分化した細胞が、分裂しても同じ機能を持つように。
エピジェネティックな記憶

p160
クロマチン再編成因子。クロマチンモデラー
特定の遺伝子に選択的に作用する必要がある。
転写調節因子とクロマチン再編成因子が結合してプロモーター領域に呼び込まれる、という機構

p158
ATP アデノシン三リン酸
これがニリン酸ADPになる時に大きなエネルギーを放出する。これが生命の活動のエネルギー源。食物や光合成によりエネルギー調達するとATPに変換。
ゆえにATPは生物のエネルギー通貨、と呼ばれる

p154
飢餓状態と遺伝子発現、nlcRNA
酵素の遺伝子が大量に発現。そのきっかけとしては、nlcRNAが発現し、かなり上流から転写が開始し伸長してくる。さらに転写位置が下流に移動してきてクロマチン構造が緩む。こうして酵素の遺伝子の発現が促進される

p150
がん細胞ではmTORの活性制御が正常に働かなくなり、常時増殖方向に導かれてしまうよう

p147
mTOR エムトル。タンパク質。細胞の栄養状態や、酸化還元状態、成長因子などの細胞環境を判断して、細胞を成長させるかどうかを決定する。 ラパマイシン。免疫抑制剤が標的にする。
タクロリムス。アトピーの治療とか。
(思索)生物由来で単離された天然物質。それがヒトにも作用する(ことが同定される)ってすごいことだけど、いわゆる「薬」にすでにこういう遺伝子に作用するものが普通に紛れているのねぇ、、薬って化学物質とその効能なのだと思ってた。とはいえ、治療が免疫を高めるとかタンパク質の生成を促進するってことなのだとするとそもそも線引きできないものなのか、、、

p144
ストレス適応
増殖刺激や飢餓刺激で活性化される。こうそが活性化し、遺伝子発現が活性化される。

(メモ)そうだ。酵素はタンパク質。酵母は生物。紛らわしい。。

p142
ヒストンやDNAのメチル化にはメチル基を提供する物質としてSAMが必要。SAMやその合成経路にはサプリメントとか、栄養が関わっている。アセチル化も。
エピゲノム修飾因子の活性に、栄養や代謝の中間代謝物が関わっている。
理由は分かってないが、そもそも外部からの刺激、ストレスである栄養の変化に適応するためではないか?

p134
DNAメチル化酵素
維持型〜。複製されたDNAはメチル化されてない。(複製によって、メチル化されているという情報が失われてしまうので)複製後にすでにメチル化されている場所を目印にして(!)メチル化する酵素
新生〜。新規にメチル基を入れる

DNA脱メチル化もある

分子生物学。分子レベルで生命現象を考える。(化学のアプローチかな?)

p130
DNA自体もメチル化される。これも後天的な遺伝子調節。
ヒトはゲノムに存在するCG配列のうち70%がメチル化を受けている
Cがメチル化され転写が抑制。
メチル化したシトシンはチミンに変化しやすい!ウラシルを経てチミンに置き換わる。修復作用もある。でも直接チミンに化けることもある
こうしてCG配列がTG配列に置換されていく。これをCG抑制。

p127
エピジェネティクスのメタ情報的側面
DNA配列も変化するが、速度はかなりゆっくり。
クロマチンに記録されるメタ情報は、ダイナミックに書き込み、消去が可能。これで環境適応。
ネットワーク型の情報記録装置をDNAの「1つ上の階層」に実装することでDNAの配列に変更を加えることなく、遺伝情報を動かすプログラムを柔軟かつ迅速に変更することが可能になる
(思索)これをソフトウェアで実装できない?そしたら配布してしまった稼働ソフトウェアの機能を変えることができる。そう、bitcoinのBIPのアイデアの改良。

p122-126
ヒストン・コード仮説
ヒストンが化学修飾され、異なる結果を引き出すことでDNA塩基配列の外側に新たな情報が書き込まれることになる。
DNAの情報を利用するかしないかという「暗号」を階層的に染色体に記録できる=メタ情報

これをパケットのメタ情報に例える。パケット内の情報をどう取り扱うかを記述しているプロトコルと付加情報。

クロマチン構造やエピゲノム修飾を介した細胞内の情報通信も、インターネットのような分散型で双方向の通信、になっている?
お互いに影響しあいながらも、絶えず更新可能。一部のノードが破壊されてもそれに耐えて情報が保持される=ロバスト
(おぉ、ブロックチェーン、、、)

(思索)ちなみに、一意性ってどのくらい重要?情報が分散保持されてて全てが破壊されなければ協調的に復元(または機能維持すること)が可能だとしたら、長いブロックが正しいとして正しくないもの(一意性を担保できる仕組み)を捨てる必要なくなる。そういう類の情報って多いんじゃない?
例えばオンラインゲームclashofclan。ユーザー間が取り合いこしているのに必要な情報は相互の値のみ。全体のランキングのために一意性が必要だけど、ランキングって本質として必要?それさえ不要なら自己の情報の保存と相互の情報のやり取りだけで完結できるんじゃないの?
自己の情報の保存と相互のやり取り。情報の本体はローカル。紛失したらバイバイ。でも直近のデータの交換記録(または隣の人のコピー?)からだいたい復元可能。ネットワークに流すのは(ある時点のステータスと)差分のみ。中央にストレージは非必須。

p118
HDAC(ヒストン脱アセチル化酵素)阻害剤は、医療品
てんかん薬や精神安定剤
パルブロ酸。抗がん作用?

ヒストン脱メチル化酵素活性剤もある

p102
クロマチンの潮目
細胞毎に発現が変わる。確率的に境界が変動する=位置効果

サプレッサー(抑制)変異。位置効果を打ち消す遺伝子異常

ヒストン・メチル化
ヒストン・アセチル化
可逆。それぞれの脱酵素がある

このへん詳細すぎるので色々省略。

p89
マクリントック
遺伝子の、活性化や不活性化は、遺伝子がクロマチン物質によって覆われているがゆえに生じる。遺伝子の活性化は覆われていた遺伝子が露出したときのみ起こるだろう。

p83
交叉と遺伝子組換え

p81
ヒストン修飾。エピジェネティクスの根幹。
トランスポゾン。動く遺伝子。エピジェネティクスの概念の理解に大変重要。

p76
lncRNA。理化学研究所の林崎良英博士。2005年「RNA新大陸の発見」
miRNA。20数塩基対の短いRNA。標的遺伝子の発現を特異的に抑制している。
RNAi(RNA干渉) 狙った遺伝子を好きなように変えることが困難な高等生物でも任意の遺伝子の機能を抑制できる。がん遺伝子を不活性化したり。

p74
非コードRNAは、盛んな研究領域。これを支える次世代シーケンサー
これによりRNA seqというRNA解析の技術革新。逆転写酵素を使ってセントラルドグマを逆行する。(すげー。非可逆じゃなくなった!)
細胞からRNAを単離、精製して、目印を付け、逆転写酵素でcDNA(相補的DNA)を合成してシーケンサーで解読。これと非コードDNAを照らし合せたり。

p73
DNA→前駆体RNA(イントロン含む)→mRNA(メッセンジャーRNA)→成熟
選択的スプライシング。エキソンが色々な組み合わせで連結される。つまり、1つの遺伝子配列で、いくつもの(兄弟のような)タンパク質を生み出せる。
この使い回しが複雑な生物を産んでいる?これが仮説の1つ。
もう1つの仮説がエピジェネティクス。DNAの情報をどう使うか、の情報が書き込まれている(ことになる)。これが高度な遺伝子発現を可能にする。 第3の仮説は、非コード領域から生み出されるRNAが積極的に関与している

p69
encyclopedia of DNA element: ENCODEコンソーシアム
2012年ネイチャー。80%が何らかの機能を果たしている
エンハンサー様配列は30万、プロモーター様は7万
疾患に結びつくと推定される単塩基置換多型の大半は非コードDNA領域に存在する
(思索)この部分が遺伝子検査の差異表示なんだろうな

p68
ヒト。ゲノム配列のうち、タンパク質や機能RNAに翻訳される部分は1.5%。イントロンが20%、残りの80%はジャンク?
最近は、このジャンクが重要な働きをしているのではないか。今は非コードDNA領域と呼ばれるように。テロメアもこの中。

p65
開始コドンの上流側(遺伝子の外)にTATAボックス。この周辺の配列をプロモーター。RNA合成を促進。
離れた位置に、プロモーターを活性化するエンハンサー、抑制するサイレンサー。抑制領域を仕切るインスレーター

p64
エピジェネティクスは、遺伝子発現パターンを研究する学問領域
(思索)発現パターンを知る。発現の起因、法則性、関与物質、条件。そして、それを制御する。
(思索)遺伝子、というのは、ゲノム配列上の開始コドンから終止コドンまでの情報の塊のこと。ゲノム配列には遺伝子じゃない部分もたくさんある。これがバッファ?あるいは不要になったゴミ情報?のようなもの、という理解
(思索)遺伝子のひと続きの並びの中にも、エキソン(タンパク質をコードする部分)とイントロン(余分な部分)がある。つまり1つの遺伝子は複数のタンパク質を生成できる。p60の図。
(思索)タンパク質は300個ほどのアミノ酸(平均的な大きさ)。アミノ酸は20種類。それがコドン1つに対応。コドンは3つの塩基で記述(43の64通り)。これが「情報」の意味。
(思索)不要部分には何があるか?不活性の遺伝子を発現させれたら?
(思索)DNA(塩基配列)が作れれば任意のタンパク質を合成できる。あるいはDNAいじって(切ったりつないだり)さらにそれを分裂させられるなら(人工細胞)未知のタンパク質を作ってみれる
(思索)これって要はバイナリプログラミングに近い感覚。bitcoinのscriptとか。

p62
贅沢遺伝子は、発現が制御されている。
ホルモンの作用で発現したり、特定の器官における細胞同士のやり取りの中で=外部環境に応じて
エピジェネティクスの制御の対象の多くが贅沢遺伝子

p61
ヒトで、タンパク質をコードする遺伝子は、20,687個
全てが利用されるわけではない。特定の細胞で必要とされる遺伝子のセットが活性化される。遺伝子発現
一般の細胞で必要な家事遺伝子
分化した特殊な細胞で必要な贅沢遺伝子
この発現パターンが乱れると病気や老化

p60
セントラルドグマ

p33
DNA 60兆個の細胞の1つ1つに全く同じDNA
ヒトの染色体は46本

p32
メンデル 遺伝物質の粒子性

p30
東京大学複雑系生命システム研究センター
人口細胞:DNAと、複製に必要な酵素を入れると、細胞分裂とDNA複製を始める

p24
感覚的に理解するにはこのへん読むとよい

YAPC2015に参加しました

お祭りからもう1週間を過ぎてしまいました。 後回しにしてしまっていましたが、書かないと終わらないのでw、備忘録程度、書こうと思います。

スポンサーしていました

最後のYAPCということで奮発してw Tシャツスポンサーをさせてもらいました。参加者さんにランダムに聞いてみたところ、結構好評いただいていて、とても嬉しかったです。

gaiax.hatenablog.com

参加セッションの感想いくつか

Web由来の組み込みエンジニアの半年間のすべて 〜WebとiOSとBLEとハードウェアデバイスのこと〜

kazuph.hateblo.jp

ガイアックスOBのkazuphのセッション。 凄まじい勉強量と、素晴らしいスピード感の冒険譚。 これからも応援しています。

若手エンジニア達の生存戦略

ガイアックスからもパネラーとして参加。 感想を一言で言うと、気負うな。遠慮するな。君らの時代。

Discover the Microsoft Azure

myfinderさんのセッション。 機械学習、BIツール周りを強みとして磨いていくAzureさん。試してみます。

コンテナ単位でH/Wのマネジメントをする、これが一番の驚きでした。自前でH/Wにまつわる苦労をしている場合じゃない。

クラウドの利用というと、これまでロックインを心配していましたが、各社拮抗してくる状況の中、スイッチングコストを減らすサービス設計しないとそもそも選んでもらえない、減らしてシェアを奪う、なども活性化するだろうということで、かなり心配が減りました。

Lightning Talks Day 1&2

  • Perl同人活動報告2015
    • 面白い方ですね。ツカミばっちりでした。
  • MySQL 5.7の罠があなたを狙っている
    • すっごいライトニング(稲妻)トーク。でもハマりどころたくさんで資料、後で読み返します。
  • botになる技術
    • 力みも思わず抜けるくだらない発言を増やしていきますw
  • モダンなクライアントサイド JavaScript に追い付くためのための小さな(しかし大変な)一歩の話
  • CONBUの道具箱
    • 素晴らしいチームワーク。今回もありがとうございました!

総じて、いやぁ、みなさん、プレゼン上手ですね。LTという5分という制約のある時間で伝えたいことを伝えきる。テンポもよく、

そうだ。忘れ物芸。合間合間で、忘れ物の呼び出しがあります。そういう登場の仕方もあるかもw

YAPCに思うこと

「有志」、いい言葉ですね。YAPCは、スタッフさんはもちろんのこと、個人スポンサー、企業スポンサー、参加者、みんなの志があって成立していたと思います。

YAPCはいったん区切りとなりますが、このような場がなくなることにとても寂しさを感じています。

(批判ではなく)これまでYAPCは少数の強力なリーダーの元、推進されていたと思います。これはとてもパワフルで素晴らしいことです。

別の仕組みとして、委員会制など、受け継がれる仕組み、続く仕組みを考えてみたい、と思っています。

社内レクチャーやってみた:プロジェクトマネジメントの2つのパラダイム〜予測型と経験型〜

自身の前回のエントリが話題になりまして、本当にビックリ&興味を持ってもらえるんだと励みになりまして、調子に乗ってw 社内向けにレクチャーを実施しましたので、そのお話。

引き続き、エンジニア以外のメンバーに聞いてもらいたい気持ちが強く、 もう少しひとつひとつの概念を噛み砕いて説明することと、 パラダイムとして2つ(予測型と経験型)があるよというのを肌で感じてもらるための小さいワークを入れること、を重視して設計しました。

speakerdeck.com

社内にお知らせして、完全に自主参加の形で実施しました。当日は、7名が参加してくれました。エンジニア、営業、事業リーダー、開発チームリーダーと社内の様々な役割のメンバーです。自分としては、トライアル目的であり、濃い時間とフィードバックが欲しかったので、ちょうどよかったかと思っています。

時間としては、ワークや質問を交えながら1時間強。 ワークにて思ってもみなかったアイデアが出てきたり(スライドの最後にメモ有)、質疑では事業リーダーや開発リーダーから実際のプロジェクトでの苦労や対処方法などの話もふくらみとても有意義な時間になったと考えています。

アンケート(n=6)

  • 満足度はいかがでしたか?(10点満点)
    • 平均9.5
  • この内容を再度実施する場合、同僚や友人に参加を勧めますか。(10:強く勧める)
    • 平均8.3
  • 具体的に、どういう人にこの内容を聞いてほしいと思いましたか。
    • 新卒メンバー
    • 非開発メンバー
    • 営業チームでもScrumでプロジェクト進めてみたい
    • 経験型or予測型のどちらかに慣れ過ぎている人
    • 労働集約的役割の人もとても刺激になるんじゃないかな(効率と創造のバランスがチームビルドに重要)

nは少ないですが、これら以外にもうれしい言葉をたくさんいただき(社内なので底上げアリですがw)さらに励みになりました。特に、聞いてほしい対象としてエンジニア以外のメンバーもたくさん挙がったことが、目論見どおりでうれしいですね。

また、営業チームでのscrumとかとても興味がありますね。私は開発プロジェクトはもちろん、新規事業/事業推進といったシチュエーションでも経験型のアプローチは有効だと仮説を持っているので、ぜひ一緒にトライしたいと思いました。(そういう社内でのアドバイザもやっていきたいところです)

会社全体として、技術centeredといいますか、事業の進め方から中身まで変えていかなきゃという意欲を持っていまして、それを発端としてのこの取り組みなのですが、今後、同じ内容を繰り返し実施しながら社内に広げていくのと、続編のコンテンツも開発していきたいと思っています。

今知ってほしいプロジェクトマネジメントのもう一つの世界観 ~予測型と経験型~

主張

ソフトウェア開発prjがなかなかアジャイルにならないのはなぜかなぁと考えてみた。 昨今、エンジニアにおいては、知識としての共有の機会も増えているし、実際に経験済み、習慣化済みになってきているように思う。要は「しっくり」くることが多いのだと思う。 しかしながら、現実のprjが経験型のアプローチ(アジャイル)を取ることはまだまだ少ない。この要因として、エンジニアと協業する他のメンバー、あるいはprjの利害関係者(組織の上層部を含む)が予測型の進め方を望むからではないか、と感じている。

というわけで、エンジニアと仕事をするエンジニア以外の人に伝えたいと思い、書いてみる。そのためにはおそらく、アジャイル開発、スクラムのプラクティスがどうこう、というよりは、プロジェクトマネジメントの世界観として語る方がよいかというのが本稿。エンジニアとして、抽象的な「しっくり」の言語化にもなればよいと思う。最初に主張のサマリ。

  • 以下の分野において
    • 無形のモノ。ソフトウェア、サービスの分野
    • 比較的少人数(〜10人程度)で1つのモノ、事業を作ることができる分野
    • 外界の変化も激しく、予測が難しい分野
  • 以下の状況
    • 意思決定者が近くにいて、利害の一致度合いが高い状況
    • メンバーができるだけ、「専任」で取り組める状況
  • である場合に有効。限定的なように聞こえるが、昨今こういうprj環境は多いと思う。また、モノ作り以外のprj(事業開発や社内改善など)でも応用できると考える。

また、

  • 予測型プロセス(後述)を否定するものではない。予測型プロセスが適する状況も多い
    • 完了状態と完了までに必要なタスクが明確な状況
    • 数週〜数ヶ月で完了する見込みがあり、その間の外界の変化にあまり左右されない状況
    • または、何がなんでもやりきるしかない状況
  • 前述の分野、状況が当てはまらない環境(特に大規模開発)については今回はスコープ外。
    • 後述するが、役割分担の効用が大きい大規模prjにおいて、それをトレードオフすることによって得るものがバランスするかについて私に知見がない。

という点を最初にことわっておく。

プロジェクトマネジメントの王道=予測型プロセス

ウォーターフォールといったプロセスや、ガントチャートといったツールに代表されるプロジェクトマネジメント手法。

f:id:hidehigo:20150620224340p:plain

特徴としては、プロジェクト開始時点で、しっかり予測し、計画すること。

タスク(ここでは仕様や要求や要件や設計も含んだ総称)と言われるものを予め確定し、 タスクの前後関係や、タスクの消化に必要な時間を予測し、プロジェクトを計画する。 タスクの管理表を作成し、完遂状況を元にプロジェクトの進捗を把握し、管理する。 または、プロジェクトの前半(要件定義フェーズ、上流工程などと呼ばれる)で、タスクの量と期日までの完了を天秤にかけながら、タスクの量を調整する。

こうやって、プロジェクトの未来を予測し、計画と実績との差異を追いかけることで管理するのが、予測型プロセスの特徴。

力学①:なぜプロジェクトはそんなに時間がかかるのか

突然だけど、よくある話。

  • 「ご要望の要件ですと、このプロジェクトには10ヶ月必要です」「えー、そんなにかかるの?!」
  • (プロジェクトが開始して数ヶ月後に)「O月O日にリリースしたいのでしたら、どれかの要件を削る必要があります」「えー、話が違う!?」

なぜprjはそんなに時間がかかるのだろうか。それを理解するためには、prjが抱える不確実性を理解する必要がある。

知識:不確実性コーン

f:id:hidehigo:20150620234107j:plain by Scrumと組織

これは、不確実性のコーンと言われる図。世の中想定どおりいかないことだらけ。

  • prj初期では、0.25x(4分の1)から4x(4倍)という誤差
  • 工程が進むと誤差は小さくなる
  • 詳細に設計しても0.9xから1.1xの誤差
    • 6ヶ月のprjなら、詳細に設計が完了するのは2ヶ月くらい経った時点だろうか。この時点でも、2週間以上の誤差が発生しうる。

初期に見積もる(完了を予測する)ためには、不確実性を吸収できる充分なバッファを確保する必要がある。 とはいえ、4xもの期間を提示することは現実的に無理(失注かprjの白紙撤回になってしまう)なので、許容されうる最大の見積もりを提示することが多い。 または、先にprjに着手することを説得する。

  • 概算見積もりと詳細見積もりに分ける
  • 設計フェーズのみの着手を取り付ける
  • など

まさに、PMの度量と交渉力の見せ場!(この是非はここでは触れない)

知識:不確実性

何度も出てくる「不確実性」これは一体何なのか。一言でいうと、確率論的な性質。 あるタスクに対して、それが完了するまでに必要な時間を計る。そのタスクを100回、1000回実施すると、完了までに要した時間は正規分布になる(はず)。習熟を考慮に入れず考えるには、100人、1000人が1回ずつ同じタスクに取り組んだと考える方がイメージしやすいかも。 現実では、1人が1回タスクを担当することしかないので、こんな状況は発生しえないのだが、思考実験として考えてほしいし、突き詰めるとそういう性質がある、くらいで考えることができれば充分。 そして、この完了までに要した時間のバラつきは、タスクの中身に依存するし(似たことを取り組んだことがあるなら誤差は小さく)、タスクの大きさにも依存する。

f:id:hidehigo:20150620224355p:plain

あるタスクに取り組む時に、「予想以上にかかった」、「意外にすんなり終わった」ということは経験あるはず。 なぜなら、たいていのタスクは「すでにやったこと」ではなく、つまり不確実性を含むから。 不確実性のコーンの話も相似的に当てはまるが、本質は同じ確率論的な性質。

この完了までに要した時間のバラつきを積み上げると、「ある時点でタスクを終えることができる確率」と考えることができる。

f:id:hidehigo:20150620224406p:plain

さて、もう一つ、よくある話。

  • あなたはPMからあるタスクに必要な時間の見積もりを質問された。
  • あなたは答える「どこかでつまづくかもしれないので答えられません」あるいは「この部分まで進めばあとはやるだけなんで先に調査に着手させてもらえませんか」
  • PMは言う「いや、今の時点での見積もりでいいから」「今見積もらないと計画できないんだよ」
  • あなたは、時には不承不承ながらも「この時間があれば、ほぼほぼ確実に終えることができる」工数を答えないだろうか。

知識:90%見積もり

「この時間があればほぼほぼ確実に終えることができる」工数見積もり=90%見積もり、と呼ぶ。 ということは、裏返すと、たいていのケースでは見積もり以内で終わるということ。余った時間は「確率論的なバッファ」の位置付けとなる。 この90%見積もりで、計画を立てていくとどうなるか。 意図して「予備の時間」を取るわけではないのだが、そこには確率論的なバッファが発生する。そしてこのバッファを各工程に含んだ計画が作成される。これは、prjの計画をかなり長くする方向に働く。

つまり「prjは時間がかかる」のだ。 無理な見積もりを要求するPMが悪いんじゃない。みんな苦しいながらも”予測”しようとしているのだ。

力学②:なぜプロジェクトは遅れるのか

もうひとつ不思議なことがある。「prjは遅れる」。必ずではないが、早く終わることよりも遅れることが圧倒的に多い。その力学について触れる。

知識:90%見積もりと学生症候群

前述のように、prjは、各タスクが90%見積もりによって見積もられ、計画される。 えてして、タスクは早く終わることもある。(むしろ確率的には大半が見積もりよりも早く終わる。)

この時、タスクの担当者は残りの時間をブラッシュアップに充てる。

  • 不具合がないことを確認する
  • パフォーマンスを考えてチューニング
  • メンテナンス性を下げないようにリファクタリング

それにより、残りの時間(元々は確率論的なバッファー)は消化される。これを学生症候群という。 元来は、もう少しサボりの意図も含んでいる(締め切りギリまで着手しない的な)表現なのだけど、「ブラッシュアップしたい」、が本質だと私は考える。

早く終わった場合のバッファは消化されがちなのでprjは早まらない、一方で90%見積もりの時間でも確率論的に完了しないことは発生しえて、その場合prjのスケジュールは遅れる。

つまり、prjが遅れる方向に力が働きがちだ。

対策:TOC-CCPM

ソフトウェアの世界はせいぜい30年ほどの歴史しかないが、先人たちもこの状況を黙って見ているわけはない。 ここまで説明してきたことがらは、「ザ・ゴール」の制約理論(Theory of Constraint)をプロジェクトマネジメントに応用したTOCCCPM(critical chain project management)という考え方で説明されていることを再解説しただけ。ではあるのだけど、非常に本質を捉えやすくしてくれるパワフルな考え方だと考えている。

このprjの力学を変えるための方法論は非常に有用で、予測型プロセスでprjに取り組む場合には、ぜひ参考にしてみるとよい。この話はまた別途触れたい。

考察:確定することの大変さ

ここまでは、prjに働く力学を主に不確実性の面から見てきた。 もう一つ、予測型プロセスが本質的に抱える困難として、「確定することの大変さ」をあげたい。

なぜ「使われない機能」が実装されるのか

ここには2つの理由がある。 1つは確定することの難しさ。「確定された」仕様の中には、仮説も多く含まれている。「この機能が求められているはず」。仮説の一部に期待というものもある。「ユーザーにこう使ってほしい」。どちらも仮説でしかない。使われるかどうかは提供してみないと分からない。つまり、「使われなかった」が一定確率で発生する。

もう1つは「どうせ〜ついでに」。prjは長い。今考えている仕様が実装されてくるのは数ヶ月後、半年後。実際に動くモノを手にするまでの時間、これをリードタイムと呼ぶが、この長いリードタイムの中ではとりあえず要望しておかないと(=仕様に織り込んでおかないと)いつまで経っても手にできない。よって「どうせ手がけるならついでにこれも」となる。

この2つの要素が絡み合って使われない機能が実装されていく。

何が課題なのか

  • 不確実性を含むものを予測し、管理しようとすることの難しさ
  • 確定しきることの難しさ

prjが抱えるこの2つの困難に正面から向き合ってコントロールしてきたのが予測型プロセス。しかし、そこにはトレードオフになるオーバーヘッドとロスが存在する。それでも、予測型プロセスが多く用いられる理由はなんだろうか。

  • 計画を立て、その進捗を刻みながら進むことの安心感。グリップ感。
    • prjを管理する人にとって、この安心感はなにものにも変え難い。また次の項目のコミットメントと相乗効果がある。
  • 利害関係とコミットメント
    • お願いする人と作る人の間に会社の境目(受発注の関係性)が発生することは非常に多い。それだけで利害関係が発生するとは言わないが、会社の境目(会社間の契約関係)があることで、コミットメントを明確にせざるを得ない。
    • この時のコミットメントは「完遂」になるのが一般的。発注するからには、その期間&その金額で完遂してくれなくては困るし、完遂しなくてはならない。
    • 会社間の境目でなかったとしても、そういう関係性になることは多い。部門間などでも発生しうる。
  • 大人数のprjと役割分担
    • これもまた一因。prjが大きくなると、役割分担が進む。

いろいろな困難はあるけれども、この確立されたプロジェクトマネジメントの世界観はやっぱり偉大。 さて、どういうパラダイム転換で臨むのか。

提案:経験型のプロジェクトマネジメント

パラダイム転換

経験型のプロジェクトマネジメントを考えるにあたって、これまで正面から向き合ってきたことのいくつかを受け容れ、その代わりに新たな何かを得ることが必要。

  • 全体を予測して管理することをやめる
    • 受け容れること
      • 全体に対する現在位置・進捗が分からないこと。その不安感
    • 代わりに得ること
      • 見通しは分かる
      • その時その時のベストに向かって進むこと
  • 期日までの完了をコミットする/してもらうのをやめる
    • 受け容れること
      • 最初に予定したとおりの完成物ではないこと
      • チームのベストエフォートをコミットする/してもらう
    • 代わりに得ること
      • 小さく反応を見ながら軌道修正できる
      • 使われない機能を減らせる(かもしれない)
  • 役割分担による効率の追求をやめる
    • 受け容れること
      • 非効率かもしれない
    • 代わりに得ること
      • 単能工から多能工(リーン生産方式)という考え方がある
        • 創造の喜び(why,whatへのアクセス)
      • 全員が部分でなく全体にコミット
        • 細分化されたゴールではなく全体のゴールを全員が意識する
        • 自己組織化、集合知としてのよりよいアイデア

最後にこのパラダイムを、重視するコンセプトの視点で並べ直す。 そして、これらのコンセプトが経験型のプロジェクトマネジメントのキモになっていると考えている。 それぞれの詳細は、また別稿で。

対案①:頻繁な軌道修正

確定することが難しいなら、確定する量を減らし、リリースのサイクルを早め、フィードバックを元に、頻繁に軌道修正をすることで対処しよう。 これにチームのリズム、ペースメイクを加味したものがイテレーション

対案②:遠い未来の予測は避け、経験から推測する

未来のことになればなるほど不確実性がもたらす影響は大きくなる。であれば遠い未来は大まかにしか見積もらないことで対処しよう。 近い未来(今日、来週)の計画だけ精緻であれば今プロジェクトを進めるには充分。

一方で、経験=過去(昨日、先週)にprjをどれだけ進められたか、は確実な情報。 過去のデータが貯まるほど、それに基づく見通しは精度が上がっていく。

対案③:それぞれが考える

確定する量=一回の作業量が小さくなると、必然的に関わる1人1人の守備範囲は広がる。そもそも、役割分担は、規模の経済の産物。小規模で役割分担をするのは不経済。つまり、役割分担をしないことで対処しよう。

対案④:計画<振り返り

対案①、②を支える習慣として、振り返りによる自己フィードバックを重視しよう。

合格点からのフィードバック

最近、教習所に通ってます。いまさら&AT限定!

  • え?MTってレガシーじゃね?もう10年もしたら運転自体も不要になるかもしれないのに、今から身につける必要ある?

そんな中で感じた話。
実技(第一段階)にて、初日から隣に座った教官に
教官:「ほらーハンドルそのタイミングだとハミでちゃうでしょ〜」
わたし:「(いや、、、習ってもないし、、、初めてだし、、、)」

でも、これって、「合格点からのフィードバック」なんですね。
こちらが初心者だから、と「step by stepのフィードバック」ではなく、あらゆる方面からの「合格点からのフィードバック」をくれている。

  • 「step by stepのフィードバック」
    • まずはこれを理解して、次にこれ。
    • 「今は言わなくてもよいか」または、言いたいけど我慢する
  • 「合格点からのフィードバック」
    • 万遍なくあらゆる方面から、合格点のレベルを要求するフィードバック
      • 今はできてなくてもよい。でも言う
    • 物事って、いくらか続けていると、急に点と点がつながり理解が進む、レベルアップする、という側面ってありますよね。
      • 特に技術の学習については、共通点を感じます。

そんなことを考えていました。
案の定、数回乗っていると、ふと色々つながって感じ掴めてくるんですよね〜。
やっぱ、教え方うまいな、教わる側がどうやって身に着けていくかも分かってるんだな、と思いました。
そりゃ、ひたすら同じことを教えていますもんね。

  • フィードバックを受ける側としては、
    • 一つ一つを重く受け止めるのではなく、
    • 「オレだめだ〜 or 向いてない」と落ち込むでもなく、
    • 「今はできなくてもよい、けど、まずやる。じょじょにうまくなる」

と思ってやるのがよいのかな。やっぱりまず手を動かす、は重要。最初からキレイにやろうとしない。

そんな感じ。

  • このセンパイは、今どちらのタイプのフィードバックをくれているのだろう
  • このコには、どちらのタイプのフィードバックが適切だろう

とお互い意識できるとよいですね。

そして、そんな高いレベルのフィードバックと、プレッシャーがある、そんな環境を作りたいと思います。

備えるということ

備えるにはいくつかある
・トラブらないように備える
・質を高く過ごせるために備える

前者は、仕事で多いシチュエーション。プロジェクト管理などをやっているとまさに。
その一方で、後者の備えに時間をかけられるようになってきたなとふと感じた。

友達との食事のお店。さすがに予約はするけど、探すの自体が前日とか。
お目当てが空いてなくて何件かかけて決める。
海外旅行にホテルを予約せずに行ったこともある。その日の宿を朝決める。
10年、15年前は、なんかそれでもよかった。
直前までの事情を鑑みて、臨機応変にやれている感は自己満足度高かった。その時その時に1番優先度の高いと思うことに時間を使う。
加えて、偶発性に期待していたり。セレンディピティ的なw

しかし今思うに、当時は認識できてなかったけど、そういった(質を高く過ごすために備える)ことの優先度を上げられなかったんだろうな、と。
先のことに時間を使うよりも、今のことに時間を使いたかった。
今読みたい本、熱中している仕事、後回しにする理由がたくさんあった。

今は、
少し早く備えることによって、選択のオプションが増える、
実行している時に、余裕がある、楽しめる、
そして何より備えている時間自体が楽しい。
そんな風に思えるし、時間を使えるようになってきた。

余裕ができたからなのか、
ギアダウンしてしまっているのか、
時間の感じ方が遅くなっているからなのか、、、

などと考えはするものの、あまりネガティブには感じていない。
年齢に関係なくきっちり備えに時間を使える方を改めて尊敬するのと同時に。
当時はそれでよかったと思うし、今はこれでよい。
ま、しかし、もうちょい考えておこうw