8月9日(金) 、いよいよこの日がAgile2013の最終日です。1つのセッションの後に行われるキーノートが閉会式になります。
生産性を上げる働き方とは
9:00~10:15のセッションは、申請で落選したものの、参加者からの投票によって選ばれ復活したセッションです。私の発表に来ていただいたリンダ・ライジング(Linda Rising)さんの「Problem-Solving and Decision-Making in Software Development」に参加することに決めました。
話の始まりは、ご自身の経歴についてのお話です。
彼女はもう71才ですが、コンピュータサイエンスの博士号をもっています。もちろん、50年前の大学にはコンピュータサイエンスという学科はありませんでした。実は大学生のときは数学を専攻していました。しかし数学を専攻されたご主人から、数学では仕事がないと言われて断念しました。それから年月が過ぎましたが、再び大学に戻ることを決めて、50歳でコンピュータサイエンスの博士号を取ることができました。やる気があれば歳とは関係なく博士号を取得することができるのです。
次にDan Ariely氏の本『Predictably Irrational』を取り出しました。どうやら本をいただいたが、すでに持っているので差し上げたいと言ったようです。本を足元に置いたときに、私にはすぐに意味がわかりませんでしたが、他の参加者が素早く本を取りに行きました。
ご存じかもしれませんが、Dan Ariely氏とは、ダニエル・ピンク(Daniel H. Pink)氏のモチベーションに関する講演で出てくる結果の研究を行った人です。かなりおもしろい研究結果が出ています。私は幸い帰国時のシカゴ空港内の本屋さんで3 for 2セール(2冊買ったら3冊目は無料)で買うことができました。
講演に戻ります。次に、人の生産性についての話をされました。会場の人に、トイレに行くのも含めて机から離れずに一番長く座っている時間を尋ねました。他の講演では13時間も座り続けた、と言った女性がいたそうです。長く座っている人の多くは言い訳をするそうです。脳は変化を感知するようにできているので、1つのことに長く集中すると生産性が下がるとのことです。
そして、座っているよりも立って仕事をした方が生産性が上がるという話をされました。ただ立っているだけではなく、トレッドミル(ウォーキングマシン)を使って歩きながらパソコンを使える机を販売している会社があります。実際に歩きながらパソコンを操作しているビデオを見せられました。ただ「これを実際に採用する会社は少ないでしょう」とも言っていました。
次に睡眠時間のことに話が移りました。アインシュタインは毎日10時間の睡眠を取っていたそうです。研究の結果、毎日7時間眠ることが推奨されています。残念なことに、参加者の中で睡眠時間が一番短いのは私でした。前夜もパーティの後にこの記事の原稿を書くために朝3時まで起き、翌朝も習慣で4時に起きてしまい、体力維持のためにフィットネスセンターで5マイル走りました。この講演の参加前にもコーヒー3杯とコーラ3本を飲んでいます。リンダさんに「可哀想。慰めてあげるから来なさい」と言われてしまいました。
昼寝も良い効果があります。写真のように頭から被る枕があると回りを気にせず眠ることができお勧めだそうです(自分は持っていません) 。また、学んだ後に10分間散歩をすると記憶に残りやすいとのことです。
また、決断を下すまでに気を散らした方が良い決断ができるという話もありました。決断はエネルギーを使うので、疲れていたりお腹が空いていると早く決断を下そうとしてしまい、最善の決断がなされない場合があるからです。同様に、食事をしながら交渉した方が良い結果が得られるそうです。さらに、これはジョハンナ ロスマン氏の講演にもありましたが、マルチタスク(複数の作業を同時に行う)をすると作業効率が下がります。
このほかのTipsとして、次のような指摘がありました。
問題の種類に問わず、手で書いて問題を解いた方が解けやすくなる
紙を使って勉強した人の方が、パソコンを使って勉強した人よりも多くのことを覚える
紙の本の方が電子書籍を読むよりも内容を覚えられる
男性のチームに女性が入ると生産性が良くなる
犬や動物を職場に連れてくるとチームの協調性が良くなる
最後に皆で立ち上がって、Amy Cuddy教授が推奨するパワーポーズをしました。紹介されたTEDのビデオ は自分に自信をもたせるための話です。はじめからできないと思うのではなく、実際にできるようになるまで「自分はできる」と信じることです。私も自分の発表を行う前にこのビデオを見ていたら良かったと思いました。
閉会キーノート─DevOpsが開く開発と運用の新たな関係
10:45~12:00は閉会式を兼ねてのキーノートです。閉会式に先立ち、Agile2013の会長を務めたKent McDonald氏からの挨拶がありました。来年のAgile2014はフロリダ州オーランドのGaylord Palms Resortで開催され、再来年はワシントンD.C.で開催される予定です。
今年のキーノートはTripwireの開発者でTripwire社の共同設立者であるGene Kim氏が講演を行いました。講演のタイトルは「Why Everyone Needs DevOps Now: A Fourteen Year Study Of High Performing IT Organizations」です。
Kim氏は今はTripwire社を退職して、新しい会社を設立する準備をしているそうです。その前に『The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win』という本を出しました。この本はJurgen Appelo氏による「Top 100 Agile Books (Edition 2013) 」で1位になっています。IT版の『The Goal』を目指して書かれたそうです。内容も説得力が高いストーリー形式にしたと言っていました。
最初の170ページは無料でダウンロードできるとのことなのですが、ネットを探しても見つかりませんでした(Twitterで指定されたいるリンクを開くとエラーになりました) 。ただAmazonでKindle版が881円で販売されているので、無料を探さず買っても良いと思います。
Gene Kim氏の話を聞くとすぐわかるのですが、彼はかなりの早口です。これまでITの生産性について調べており、生産性が高い人の共通点や、生産性が普通の人と低い人との違いについて語りました。一般的に生産性がよいのは①軍、②化学エンジニア、③会計検査官とのことです。
いまや全ての企業はIT企業と言えます。予算化されたプロジェクトのうち95%はITに関係している部分があり、予算の50%はITに関係しています。
ここで、5月のAmazonのデプロイ統計(本番環境への機能追加/変更)を例にとって解説しました。
Amazonの5月における月間デプロイ集計
平日の平均デプロイ間隔 11.6秒
1時間での最大デプロイ数 1,079デプロイ
同時にデプロイされる平均ホスト数 10,000台
同時にデプロイされる最大ホスト数 30,000台
こうした状況から、以前はDevOpsなどは不要だと思われていましたが、今ではすべての人がDevOpsが必要だと思うようになった、と語ります。
生産性が高いDevOpsチームは、よりアジャイルでもあります。通常のチームより30倍もデプロイし、サイクルは8,000倍も速いです。品質も2倍良くて、MTTRも12倍速く行います。
運用は壊れやすいものを扱う仕事です。開発プロジェクトが終わるごとにシステムはより複雑になり、壊れやすくなります。VelocityカンファレンスでFlickrのJohn Allspan氏とYahooのPaul Hammond氏が1日に10デプロイしたと発表しました。これがDevOpsの始まりとも言えます。開発者のように考えられるシステム運用者、システム運用者のように考えられる開発者の誕生です。
開発チームと運用チームの関係には次の3種類があります。
1.フロー
開発チームが開発した後に運用へ引き渡します。生産性を上げるためには開発チームから運用チームへのスループットを最大にします。不良品を運用に引き渡さないようにします。
開発環境を本番環境と同じにします。本番環境での信頼性を上がるために、先ず新しい機能を無効な状態で本番環境にデプロイします。様子を見て問題がなければ機能を有効にします。
2.フィードバック
開発した後に運用へ引き渡しますが、問題がある場合は開発へ連絡します。Struts2を共同開発したPatrick Lightbody氏(現BrowserMob社のCEO)によると、朝2時に開発者を起こしてバッグを修正させることで、バグ修正を早めることができたとのことです。
3.継続的試作と学習
機能別に分けて、継続的に機能の追加/更新を行います。毎日、試作を行うようにするで、学ぶことを習慣化させます。運動を1週間に1回、長時間行うよりも、毎日少しずつ運動した方がよいのと同じです。システムの信頼性を上げるために、問題が起きる前に自分らで定期的にプロセスを停止して回復作業も行います。
最後に─Agile2013に参加して
Agile2013の多くのセッションは初心者でも理解できる内容です。反対に物足りないと感じることもあります。最新技術の交流というよりも、楽しい環境で基礎の勉強をするような感じでした。初めて参加された人と話しても同じような感想でした。
しかし、世界から集まった多くの人と話すことができるので、その意味ではいろいろと勉強になります。たとえばカナダからの参加者が多かったのですが、これは米国から開発の仕事をかなり受けているからのようです。
DevOpsのことはわかっていると思っていましたが、海外での実例を聞くと、理解できていないことに気がつきました。オープンソースプロジェクトの中に、これまでのソース提供のみからAPI提供へ移るというプロジェクトが多くありました。その理由がわかった気がします。現状のオープンソースは開発チームが主ですが、DevOpsにより実際に運用してサービスを提供するための時間/コストが下がってきています。また、バグフィクスも数分~数秒単位で行えるようになってきています。3ヵ月や6ヵ月ごとに新リリースを行うようなオープンソースプロジェクトはもう時代遅れなりつつあるのかもしれません。
ユーザはプロダクト/サービスを必要としています。プロジェクトを成功させることではありません。ソフトウェアの価値はユーザが使えるようになった時点から始まります。コードを書き終わったり、テストが終わった時点ではりません。どのようにしたら短時間でユーザに使ってもらえるかが課題です。このことは複数のセッションで言われました。
継続的に数秒で機能追加/更新がなされ、かつ品質も従来よりも高いシステムを開発/運用するのがDevOps/アジャイルです。そのためにはツールだけではなく、モチベーションが高いチームが必要だと感じました。「 ソフトウェア工場」という概念はもうまったく無くなっているように思えました。
ナッシュビル散策
最終日は午前で終わったので、午後からナッシュビルを歩きました。まずホットチキンの販売を始めたプリンスホットチキンシャックへバスで行きました。ホットチキンはナッシュビルでもっとも有名な食べ物です。ここに来て食べずに帰らずにはいられません。
ダウンタウンから少し離れているので都市バスに乗りました。バスの運転手に「このお店に行きたいので降りるバス停に来たら教えてください」とお願いしました。20分くらいバスに乗っていたら何だか雰囲気がヤバイ感じになって来ます。そうしたら、運転手さんが「ここだよ!」と大声で叫びました。この店だよという店は汚れています。前には体格のよい黒人ばかりです。しかしここまで来たので買うしかありません。
店に入ってもお世辞にも綺麗とは言えない雰囲気です。しかし店の人は親切に対応してくれました。帰りもバスなので暗くなる前に帰りたいと焦りながら待っていたら、40分ぐらい経ってやっと自分の番号が呼ばれました(このあたりはタクシーは走っていません) 。バスも30分に1本しかなく、日本のバスのように時間通りに走っていないので、店内で食べるよりもバス停で食べることにしました。マイルドにしたのにかなり辛いです。
ダウンタウンに戻ってから夜の街を歩きまわりました。昼間は静かでしたが、夜になると街中から音楽が流れて賑やかになります。音楽は飲食店からが主ですが、道の信号機制御機器からも音楽が流れています。
次の日は再びバスに乗ってナッシュビル国際空港へ行きました。シカゴまでは小型の飛行機です。離陸して窓から下を眺めていたら今回、宿泊したゲイロード・オープリーランド・リゾート・アンド・コンベンション・センターが見えました。さらば、Agile2013!