Agileってなんだろうな?

0 コメント

今日は現場の人間の送別会でフグを食べに行ってきました。
まさかの5000円ポッキリで刺・鍋・唐のフルコース。
あ。あとヒレ酒もね。

まぁそれはそれで大満足だったのですが、
飲みの席でまさかのアジャイルトークになり、
ちょこっと色々疑問に思ったのでエントリ

本題に入る前にアジャイルとは?
オレの認識だとアジャイル宣言ってのがあって、
基本はその宣言に則りつつ、上手くソフトウェアを作っていこうよ
というものだと思ってます。

アジャイル宣言

  • プロセスやツールよりも個人や相互作用
  • 分かりやすいドキュメントよりも動くソフトウェア
  • 契約上の駆け引きよりも顧客とのコラボレーション
  • 計画を硬直的に守るよりも変化に対応する

以上は、このページからの引用です。


で、今回の飲みで話題になったのは、
成果物作成後のドキュメントに関して。
実際にアジャイルを用いてシステムを作成した後に、
そのシステムの品質をチェックする立場の人から聞いた話です。
その人曰く、

"確かに、アジャイルはすぐに仕様を変更したり、
業務の現場の変化に対応出来るかもしれないけれども、システム作成後の
保守をするにあたって、ドキュメントがグダグダだから、
これならウォーターフォールのがいいんじゃね?”

とのことでした。
自分はまだまだアジャイルをちゃんと勉強した訳ではない、
かつ、実際にそのシステムの開発・品質チェックどちらにも
携わっていなかったので、ちゃんとアジャイル手法が適用されていたのかどうか
わかりませんが、この疑問に対して上手く解答することはできませんでした。

というわけで、疑問に思ったのは、

開発→本社情シス・外部のソフトウェアハウス
保守→本社保守チーム

と開発を行うチームと保守を行うチームが別々になっていたときに、
仕様の引継ぎ(ドキュメント)などの問題はどのようにクリアしていくのか?

ということです。

アジャイルはこういったケースに対して解答を持っているのでしょうか?
それともそもそもそういった開発体制ではアジャイルは適用できないのでしょうか?

オレもこれから本を読んでみるつもりですが、
もしわかりやすい解答を持っている人がいたら教えてください。

Google的思考書評

0 コメント

iPadからDuetを使って更新の巻
ネタがあれば寝ながら更新できないこともないけど…
レイアウトの最終確認とか推敲がしにくいから
ちょっとキツイかなー。
まぁ使えないことはないってレベル
大分レイアウトがアレっぽいので、
後で修正しよう。
今日のネタは以前読んだGoogle的思考の読書メモです。
断片的だけど結構上手くキーワード拾えてるんじゃないかなーとか思う。
ちょっと長すぎるけど…
では、はじまりはじまりー

Google的思考

まえがきから
・主導権を握っているのは消費者のほうである。
・マスマーケットはもはや存在しない。今あるのは、多数のニッチである。
・流通ルート、人員、製品、さらには知的財産の所有は、
もはや成功の鍵ではない。肝心なのはオープンであることだ。


プラットフォームの重要性
プラットフォームを築くこと?
オープンにすることで好循環を築き上げる

コミュニティ
コミュニティは企業が作るモノではない。
コミュニティは企業の外にすでに存在している。
企業はそのコミュニティの場を提供してやればよい。
コミュニティは企業のモノではない。
コミュニティはコミュニティのモノである。

エレガントな秩序を築き上げること

・モノはお荷物
Amazonはモノを扱っているのではない。
*モノを売買することによって顧客の嗜好情報を蓄積している。
Amazonはモノの会社ではなく知識の会社
Amazonはモノを扱うことと引き換えに知識を蓄えている

・仲介業の危機
インターネットは非効率を排除していく

・無料のビジネスモデル

Zillow.com創設者リッチ・バートンの言葉
「インターネットは無料サービスのための一大競技場だ。
無料で提供できる商品に価格をつけたりすれば、
自らの首を絞めることになるだろう。」

グーグルが行っているのは組織化と知識のビジネスモデル
グーグルの主力ビジネスは検索サービスをはじめとする、
各種Webサービスだがそこからは一切収入を得ていない。
*グーグルの(現在の)収入源はサービスを
使用するユーザーに対しての的確な広告である。

・自分のビジネスがなんであるかを明確にする。
グーグルは自身がコンテンツビジネスモデルではないことを理解していた。
ヤフー、AOLは自身のビジネスモデルを見誤った
自問してみよう。
あなたの企業の核は知識か?データか?
コミュニティか?プラットフォームか?ネットワーク?
あなたの価値はどこにあるだろう?利益はどこから入ってくるだろう?
金銭は必ずしもいつも同じ形でもたらされるわけではないことを覚えておこう。

Chapter7 新しい心構え
・統制と信頼の関係
「消費者に主導権を与え、使わせる」

デビッド・ワインバーガーの言葉
「統制と信頼は反比例の関係にある」
自分が主導権を握れば握るほど相手からの信頼は薄れ、
相手に主導権を与えれば与えるほど信頼は深まるということ。
「自分をさらけ出し、主導権を渡せば失った信頼を取り戻せるだろう」

・民衆を信頼する
「潤沢さが商品の質を高める」

信頼を核にしたビジネス

彼は自分が信頼している仲間たちが編集したインターネットの中を巡っている。
同じ視点を持った者たちの間に、信頼のウェブが構築されているのだ。

多くの企業は、消費者への信頼ではなく、規則や禁止事項を基盤に機能している。
やってはいけないことを客に提示し、それを破った者には罰則を科す。
しかしグーグルは、我々への信頼を基盤に帝国を築き上げたのだ。

・耳を傾ける


Chapter8 新しい倫理
・うまく失敗する
失敗は本人次第で貴重な体験となり得る。
最悪の過ちは、失敗などしなかったように振る舞うことだ。
そんなことをしたら、周囲の期待が無駄に高まり、
次に失敗したときには取り返しがつかなくなるのだ。

しかし今日、インターネット上では過程が商品になる。

・人生は開発途上
重要なのは失敗をしたことではなく、それにどう対応するかなのだ。

・正直な態度
正直さと率直さを基盤にした新たなメディア世代は、身も蓋もない真実を求めている。
グーグルがある今、情報を統制したり、
昨日の発言や今日の失敗をもみ消したりするのは不可能になってきている。
真実はあっという間に広がるのだ。

・透明性
グーグルも秘密が多いから批判もしょうがないよね。

・協力体制

・邪悪なことはしない
グーグルに対する疑問と著者の姿勢。
とりあえず今んとこ大丈夫じゃね?という見解

ハークの法則
「相互作用が拡大すれば、邪悪な行為の代償は恩恵を上回る」

Chapter9 新しいスピード
・即座に出てくる答え

・人生はライブ
グーグルは記事の完成度が高いほうが検索結果の上位に来るため速報性に欠ける。
速報性は新たなビジネスチャンスとなるかもしれない。
→最近はtwitterの検索結果が表示される。

・モブ(群集)

Chapter10 新しい義務
・ドル箱商品に注意
成功は時に人の目を曇らせ、失敗の可能性を見過ごさせる。
また、失敗に対する恐怖心は、人を成功から遠ざける。

人はお金が入ってくるうちは、変化や厳しい決断や改革の必要性が目に入らない。

・革新の促進と保護
グーグルの教訓は明確だ。革新をビジネスにするのだ。

・シンプルに徹する
デザインは、単なる美観の問題ではない。デザインは美学なのだ。

・邪魔をしない

■グーグルが世界を支配したら
物事を違う見方で見て、グーグル時代における根本的な変化を理解し、
難問について考え、新しいチャンスをつかみ、
考え直し、想像し直し、作り直すということだ。
それが、グーグルに倣うということだ。

onConnectの挙動超概略

0 コメント

最近全然ネタをメモってないっす・・・
とりあえず昔(と言っても半年位前)に書いたネタで
イケそうな奴をちょこちょこっと公開します。
今回はChromeExtensionsネタですが、
Google先生は変化のスピードが尋常じゃないので、
もしかしたら今はもう通用しないかもしれません。
ネタメモをほぼそのままコピペなので始まりが唐突です。
書いた当時はChromeExtensionsを触っていて、
contents.jsとbackground.html間のやりとりを
追いかけた時のメモです。

onConnectの挙動超概略


まずはコンテントスクリプトから

var port = chrome.extension.connect({name:"test"});

でバックグラウンドページに対してラブコールを送る
(ちなみにここで引数として渡してるname:"test"で
portの名前が決まる。今回のコードでは"test"になる。)

バックグラウンドページは

chrome.extension.onConnect.addListener(function(port) {});

この関数がコンテントスクリプトからのラブコールを受け取る受け口を用意する。
ラブコールを受け取る受け口の中でさらに

port.onMessage.addListener(function(msg){});

を宣言しておく。これが実際にラブコールの応酬をやり取りする関数になる。

全体の流れとしては

コンテントスクリプトでonConnectしてバックグラウンドページに対しての道を開ける。

道が開いたらコンテントスクリプトからport.postMessge({key:"value"});
で値を送信する。コンテントスクリプトから値が送信されたら、
バックグラウンドページは
onConnect.addListenerの中で宣言している
port.onMessageでコンテントスクリプトのpostMessageを受け取る。
んでバックグラウンドでやりたい処理(まぁ基本的にはXHR的な処理だと思うけど)
ゴニョゴニョやったらその結果をport.postMessage({key:"value"});
でコンテントスクリプトに返してあげる。
んでコンテントスクリプト側での
port.onMessage.addListener
で送信されたデータを受け取る。
もらったデータを受け取ってコンテントスクリプト内で
やりたいことをゴニョゴニョやるって寸法ですね。


最初はconsole.logの追い方がわからなかったのもあるんですが、
個人的にはコンテントスクリプト側もバックグラウンド側も
送受信に使う関数名が一緒なのがちょっと理解に時間を要した原因かも。
だからといって変えられる訳でもないんですけど。


とりあえず冒頭で紹介した、動きの追い方を把握すれば難なく理解できると思います。
console.logの嵐でね!