Posts Tagged ‘開発’

Developers Summit 2010 参加メモ

2月 20th, 2010

2/18の午後だけ行ってきました。きちんと聞いてきたのは2講演です。

【18-B-3】Google 的分散コンピューティング
Gregor Horpe氏によるGoogleの分散コンピューティング技術の紹介と、その背景にある思想の話。

○Google内で使われている分散コンピューティング技術
GFS, Bigtable, MapReduce, Sawzallの紹介、Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)が詳しいです。
Sawzallの発音が”ざうざーる”と言っているようでした、これまで”さうざーる”だと思い込んでた。

○Googleの分散システムの背景にある思想
8つに分けて、事例を交えて紹介してくれました。

  1. Shading
  2. Less is More
  3. Expect Failure
  4. Autonomy
  5. Enpower the Runtime
  6. Favor Stateless
  7. Separate Stateless from Stateful
  8. Precision vs Speed

1. Shading
分割して統治する。役割を分ける、機能を分ける、抽象化する。
例として挙げていたのはユーザアカウント管理に中小レイヤをかぶせるやつだった・・・かな? メモがなくスライドもまだ見れないのでうろ覚えです。

2. Less is More
機能を絞って特徴を引き出す。
Bigtableはトランザクションを始めとしたRDBMSの機能が無いが、その分スケールするように作ることができた。

3. Expect Failure
「エラーが起きるかどうか」ではなく「エラーはいつ起きるか」を考える。ifではなくwhen。
GFSもMapReduceもベースにエラー処理がきちんと組み込まれている。
GFSなら自動でマスタが切り替わる仕組みとか、MapReduceなら失敗したタスクの再スケジューリングとか処理対象からの除外とか。

4. Autonomy
とにかく自動化、人では介さない。
例として挙げられていたのはGFSのMaster/Slave構成。
Masterに障害が発生するとSlave同士が投票しあって次のMasterを決めるようになっている。

5. Enpower the Runtime
言いたかった事がうまく受け取れなかった。「役割を明確に決めないで柔軟にやってね」ってことだと理解しました。

6. Favor Statelessと7. Separate from Stateless from Stateful
状態を持たない。なぜなら状態を持つと途端にスケールしなくなるから。
状態を持つにしても、スケールする部分をきちんと切り分けておくことが大事。

8. Precision vs Speed
ソフトウェアではfaster is better。正確性を期するよりも、高速で大体の精度の予測で動く。
Googleのクラウドで正確な負荷とか測れても意味がない。大体の傾向がつかめればOK。

【18-C-4】ドッグフーディングとアジャイル開発
アトラシアン社の営業さんによる会社の紹介と、社内で行っているアジャイル開発の紹介。
アトラシアンはエンタープライズWiki(Confluence)や障害管理システム(JIRA)を主力商品としており、国内外で多くのユーザを抱えている。日本国内では今回が初めての公演ということで会場は超満員でした。

アトラシアン社は2002年にオーストラリアで設立された。3つの方針を掲げ、OSSの世界をはじめ多くのユーザを抱えている。

  • いい製品を手ごろな価格で
  • 伝統的な営業マンを持たない(電話をかけまくったり、会社訪問しまくる営業マン無し)
  • エコシステムの構築に尽力(製品にプラグイン構成を持たせるなど)

アトラシアンの製品はショートリリースを基本としている。それはユーザからのフィードバックを得やすいからであって、サブスクリプションユーザに価値を提供するためでもある。またチームメンバの緊張感を適度に保ち、バグ修正に時間を割いて使うようにもなるメリットが有る。リリース期間が短いことから必然的にアジャイル開発の形態をとっており、社内で開発版を試す「ドッグフーディング」の文化も根付いている。会社設立時メンバが2人しか居らず、早急に事業を立ち上げるためアジャイル開発をとらざるを得なかったことも今の会社に影響しているかも知れないとのこと。

ドッグフード中のシステムは不安定で、Wikiなどはマイルストーンリリース時は1日1回ぐらい落ちるらしい。社員は不便を感じるが、それが客先で障害として発生するよりかはましという考え方をしている。バグ以外にフィードバックも社員から得られることもある。バグ情報やリクエストは社外に公開した障害管理システムで受け付けているとのこと。

最近ショートリリースのタイミングをさらに狭めたらしく、98日でイテレーションを回しているとのこと。98日のスケジュール詳細はDevelopers Summit 2010 Preso – Sean Osawa – アトラシアン ウィキから詳しく見ることができます。Googleの20%ルールに近い制度がアトラシアンにもあるらしく、開発者はイテレーション中の時間がある期間(Week 12 〜 Week 14あたりだったかな?)に直接の業務と関係が無いことも取り組んでいるらしい。

社内ではレビューを多用している。レビューには早期修正できるコスト削減効果や、開発者の教育効果がある。駄目なレビューでは単なるプレゼンになっていたり、熟練による支配が起きてしまう。

アトラシアン社員のレビューTIPSとして以下が挙げられてました。

  1. レビュー前にコードに関する課題、タスクに目を通す
  2. 変更構成を読む
  3. 機能が動いているかを確認する(確かに年に何回か動かない機能のコミットがある)
  4. 自分が変更するならどういう方針を取るかを考えてみる
  5. レビュー終了後に提案リストを優先順位をつけてまとめて送る

レビューのタイミングとしては頻繁に行うこと。朝でも昼でも、帰る前でも、まとめて行い、開発に割く時間をうまく確保するのもコツ。
見てもらうのは同僚が一番、同僚がだめならTech Lead(技術面の開発リーダかな?)がいいとのこと。ごもっとも。

その他心に残った話 – JaSST’10 Tokyo

1月 31st, 2010

◯コードの共同所有のやり方
共同所有をすると品質向上、リスクの低減、チームの自己組織化、メンバの安心度につながるが、どうすれば実現出来るのか。

最初は物理的な共有、svnやgitなどのツールの活用がこれに当たります。
次は知識の共有、ペアプロやレビュー、TDDなどの取り組みがこれに当たります。
最後が責任の共有、リファクタリングの実施やCIがこれに当たります。

単にコードを共有しましょうというよりも段階を見せて、効果を説得しないと駄目ですね。社内で使わせていただきます。

◯オフショアで成功するコツ
工程ではなく、機能で委託する。機能単位で責任を持ってもらうことが出来る。
例えばテスト工程だけオフショアに出すと、高い確率でレベルが低い人材が割り当てられる。

アメリカではオフショアをかなりやめているらしい。5割から6割を国内に戻したらしい。結論としては「オフショアはうまく行かない。」という認識が広まっている。(ハーバードビジネスレビューで見たとか?)
オフショアするのは企業が重要視してないところ、テストをオフショアする企業は結局「テストを軽視している」ということ。

あとは人が辞めてしまうので、仕組みにノウハウがたまるようにしないとだめだとNEC誉田さんからコメント。
品質の期待値をきちんと伝えるのも効果があるらしい。

◯オフショア開発におけるテスト改善
事例発表でTISの鈴木三紀夫さんが「890個のテスト観点リストと745個の不具合推測リスト」を作成したと話していた。こんなにたくさんのリストを見きれるのかという疑問がすぐ頭をよぎるが、全部読むことが重要ではなく「作業者に頭を使わせることが大事」とのこと。数が膨大だと作業者がコピペで済ませることができなくなり、担当者なりに頭を使う必要が必ず生じる。

・・・

基調講演と招待講演は大変タメになりましが、その他のセッションは役に立ちそうなものと、役に立たなそうなものと結構はっきり分かれました。
参加費は2日間で8000円ぐらいでしたが、値段的にはこんなものでしょう。学会の延長線上と思えば。
でも来月同じ雅叙園で開かれるデブサミを考えるとデブサミのほうがおすすめかも知れません。

来年は誰か他の人に行ってもらおうかな。

品質という王道を行こう – JaSST’10 Tokyo 招待講演

1月 31st, 2010

NECの誉田直美さんが、自信が考える品質のあり方について語った90分のメモです。

・・・

誉田さんが考える「王道を行く」とは本質を理解した上で、決意を持ち達成に向けて行動すること。
手段ではなく目的、手抜きではなく効率化、新たな気持も大事だけど先人の知恵に学ぶ。
品質のみを追求している訳ではないが、品質を追求すればコストも納期も改善出来ると誉田さんは考えている。

<事例1>
自社が関連する単体テスト実施状況を調査したところ、単体テストをきちんと実施しているプロジェクト(限界値とか、テストの組み合わせを考慮して普通にやる)は単体テストで手抜きをしている or 単体テストをしていないプロジェクトと比較して出荷後のバグが38%少なかった。きちんとテストを実施すれば62%も取り除けたのに(きちんと単体テストをしても38%も残るのかという見方もできるけど・・・これは私の主観)

<事例2>
オフショアの品質を改善するために、海外子会社をかなりの労力をかけて教育した。具体的には数値目標を立て、プロセス・基礎開発技術・マネジメント・日本語語学力に国内同等レベルを求めた。結果として現地管理職の認識も代わり、改善が進むようになった。(最も、事例としてあげた中国の工場は管理者が転職してしまったらしいんだけど・・・)

<事例3>
開発案件や組織力が似ている組織Aと組織Bからいろいろなデータを取ってみた。Aを100%としたとき、Bの全工数は106%程度、ただしレビューやテストは50%前後だった。1000行あたりのバグ件数はBはAの80%。全バグ数に対する上流工程までのバグ摘出率はAとBはほぼ同じ。Bのテスト項目数はAの約半分だった。

組織Bは「プロセスを改善すれば工数やバグ数は減るはず」と解釈し、そのように取り組んでいた。だからテスト工数がAより少なくなり、そのような統計結果も出た。でも市場で出たバグを見るとBの方が品質が悪かった(数は変わらなくても、Bの方が長期間にわたってバグが出続けた!)。結果としてBのほうがAより2倍以上品質が悪いという調査結果が出た。

データを分析すると組織の取り組み方の違いが現れた。Bの組織は目標の達成が主眼となってしまい、数値目標を達成したらテストを終えてしまっていた。本当はプロジェクトごとに差が出るものなのにそれがなかった。基準値順守が「形骸化」してしまった。社内のベストプラクティスを組織Aと組織Bに適用しても組織Bでは効果が得られなかった。結局組織Bはルールだから実施していた、テスト時に担当者が頭を使っていなかった。

誉田さんがまとめのスライドに載せていたのは「何のためのプロセスかを常に考える土壌作り」が必要とのこと。形だけを真似ても成果は得られない。

・・・

目から鱗でしたね。ソフトウェアの状態をツールやメトリクスを使って見える化し、データをノウハウとして蓄え、組織として横展開できれば品質は今より良くなるはずだと思っていましたから。まさに組織Bの人間です。
プロジェクトごとに性格や条件が違うことに気づき、もっと頭を使わないと駄目ですね。自社の品質改善を考えていくに当たり、大きな宿題をもらった講演でした。

Successful Software Management: 17 Lessons Learned – JaSST’10 Tokyo 基調講演

1月 30th, 2010

1/28と1/29に目黒雅叙園で開催されていたJaSST’10に行ってきました。色々学んだことはあったのですが、まずは基調講演の振り返りから。基調講演はJohannna Rothmanさん、Manage It! 現場開発者のための達人式プロジェクトマネジメントの作者さんですね。

開発者が行う改善は55%だが、マネージャーは65%の改善に貢献出来る。目的を持って人をまとめるのがマネージャーの仕事、開発に集中出来る椅子とかを揃える以外にに良い人間関係を築くことが大事。

効率的なマネージメントのやり方を17の法則としてまとめた。以下原文ママ。

  1. Know What They Pay You Do
  2. Plan the Work: Portfolio Management
  3. Accept Only One #1 Priority at at Tme
  4. Commit to Projects After Asking Your Staff
  5. Hire the Best People for the Job
  6. Preserve Good Teams
  7. Avoid Micromanaging or Inflicting Help
  8. Treat People Individually and With Respect
  9. Meet Weekly with Each Person
  10. Plan Training Time in the Workweek (Plan Training Time Each Week for Yourself)
  11. Give Credit Freely
  12. Fire People Who Can’t Do the Work
  13. Emphasize Results, Not Time
  14. Admit Your Mistakes
  15. Recognize and Reward Good Work
  16. Take a Vacation
  17. Manage Yourself

以下Rothmanさんの発言メモ、一部意訳があるかも。

1. 業務上の肩書きと実際の職務内容、使命があっているか確認すること。
3. 優先度1のタスクは常に1つしか無いはず。複数あるのは何かがおかしい予兆。
4. タスクはチームで決めよう。
5. 雇うべきはgreatな人材、それは必ずしもチームに今いる人材とは違う。タイプ(性格/個性)の異なる人を集め、アイデアを生む。
6. 良いチームは残そう、解散するとチームが備えていた力が失われる。
9. 信頼できる関係を築くなら1対1がいい。直接のフィードバックもし易い。
13. 作業時間に比例して作業内容も増える。1週間40時間で仕事を終えられるよう作業を組むのもマネージャーの仕事。

Pragmatic Programmerシリーズの1冊を書いているだけあって実用的で、口先だけの話をしている人ではないのだなと聞いていて感じました。

Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック

3月 22nd, 2009
Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック
Jared Richardson William Gwaltney Jr. でびあんぐる
オーム社
売り上げランキング: 52053
おすすめ度の平均: 3.5

3 実践的です。実用で鍛えられただけあります。
4 行動を起こすための実用書

1月の下旬から2月に読んだ本なんですが、感想を書き忘れていました。

達人プログラマシリーズの1冊ですが、前に読んだ”アジャイルプラクティス”の方が個人的にはお気に入りです。自分にとって既知の内容が多かったからかもしれません。

次は”Manage It!”か”Release It!”を読みたいと思っています。

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

7月 15th, 2008
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣
Venkat Subramaniam Andy Hunt
オーム社
売り上げランキング: 4408

Googleを支える技術は一度読めば足りる本ですが、こちらは職場の机に並べてプロジェクトがきな臭くなってきたらすかさず読み直したい本です。プロジェクトに異変が起きなくても”偉大な習慣を身につけたプログラマ”になるべく何度も読み直さなくてはと思う本です。各章は短くまとまっており、あとからリファレンス的に使うこともできます。アジャイル開発に興味がある人、ソフトウェ開発に携わる人、すべての人に有用な書籍だと思います。

Subversion Links

3月 22nd, 2008

subversion: Subversion Links

Subversionの公式ページに山のような参考情報へのリンクが書いてあることを今日知りました。例えば・・・

  • メーリングリストのアーカイブ
  • 書籍(ただし英語のみ)
  • クライアントソフトやIDEのプラグインリスト(すごく充実してる♪)
  • 各プログラミングバインディングへのリンク
  • Subversionへのリポジトリ移行ツールへのリンク
  • Subversionをサポートしているホスティングサービスへのリンク
  • TracやsvkなどのSubversionを扱うことができるツールのリスト

があります。

暇なときとかに眺めていると新たな発見があるかも。Mercurialにいつ移行しようか悩んでるんだけどこういうツールの存在はでかいなぁ。やっぱり今の主流はSubversionなんだなと改めて感じます。

Review Board

3月 21st, 2008

http://www.review-board.org/#kwout_scb6t94x" height="282" width="388" />

Review Board via kwout

Pythonで作られたソースコードのレビュー支援を行ってくれるソフト。VMWareの開発にも使われているとか。

自分が書いたソースを見てもらったり、人のソースを見てコメントしたりってのは割りとよくある要求だと思うんだけどオープンソースでこういうツールがあるのはすごく助かるかも。会社のサーバに今度設定してみよう。

Working Effectively With Legacy Code

2月 28th, 2008
Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall (2004/09/16)
売り上げランキング: 4488

会社での仕事にすごく役立ちそうだ・・・時間があれば原著でもチャレンジしたいところなんだけど今は無理そうだ・・・読める頃には邦訳が出版されてそうw

Peopleware Homepage

9月 20th, 2007



ピープルウエア 第2版 - ヤル気こそプロジェクト成功の鍵の紹介サイトです。最近開発室でピープルウェアを(今更ながら)購入したので近々また読み直すかもしれません。

ピープルウエア 第2版 - ヤル気こそプロジェクト成功の鍵
トム・デマルコ ティモシー・リスター 松原 友夫 山浦 恒央
日経BP社 (2001/11/26)
売り上げランキング: 19246