ようこそ Go!Go! ASP.NET へ ログイン | 登録 | ヘルプ
  • 初めてのアジャイル~スプリント1、2を振り返って~

    GWを迎える直前の最終日、スプリント2のスプリントレビューが終了しました。
    見事にPO判断でリリースNGですwww
    少々(?)残念ではありますが、お互い様的な理由がある程度明確なので心置きなくGWを迎えようと思います。

    -------- と書いていたのが4/27の深夜・・・
    その後、ウイルス性感染症なるものに発症して悪夢のようなGWを迎えることになろうとは・・・。


    さて、4/13のTFSUGにてアジャイルを始めるまでの経緯を短い時間で話してみましたが、
    その後スプリント1、スプリント2を終えて今の感想をまとめてみたいと思います。

    我々のスプリントはまぁ右も左もよくわからないままに半ば強行突入的に始まりました。
    外部要因を排除することができず、他チームのための共通部品を早急に作らなければいけないというおまけつきで。


    ・前置き
    以前からの続きとなっております。
    この辺「TFS de アジャイル」とか
    この辺「第5回TFSUG TFS de アジャイルを書いたわけ~WFからアジャイルへの変革~」とか
    とかの続きの内容です。


    ・序章
    初めてのスプリント計画ミーティングを迎える前にバックロググルーミングらしきものを行いました。
    まぁとりあえずバックログがないと何も始まらないらしいということで。
    フォーマットとしては「誰がなんのために何をするか」ということなのでまぁその辺を中心に洗い出しました。
    (今思えば)FeatureというよりはFunctionというレベルかな?というぐらい細かい感じでしたが、
    そのときはそんなことにはあまり気づかず。まぁできたねという感じでした。


    ・スプリント1
    やらなければいけないことは冒頭にでてきた他チームのための共通部品の作成と作成したバックログのうち優先順位の高いものをいくつか。
    というのがぼんやりと見えている感じで初めてのスプリント計画ミーティング第一部に突入です。
    第一部では
    ・バックログの詳細を確認して、
    ・受け入れ基準が増えるようなら追加する、
    ・プランニングポーカーなどをして相対見積もりを行い、
    ・チームがこなせるバックログについてPOと合意する
    という感じでしょうか。

    PO自身もアジャイル/スクラムは初経験なので当然バックログの受け入れ基準は決まっていません。
    上から順番に確認していくと、まぁ細かい仕様の話に落ちる落ちる。
    ただ、ここで難しいと感じたのはバックログの受け入れ基準はPOが決定するということ。
    POが言うことが全てだというのは正しくもあり危なくもあり。
    開発チームの質問そのものであったり、POの意識であったリが要求ではなくシステムの振る舞い(=仕様)にいってしまうと
    ただ言われたとおりに作るだけになってしまう。
    かといって、POの言っていることを無視すれば本来作るべきものとはかけ離れたものになってしまう。
    というあたりでのバランスのむずかしさみたいなものを痛感しました。
    理想的にはPOは、抱えている問題や実現したいことを示し、開発チームはそれはこうすれば実現できるという提案を行う
    というバランスになるのかな~という感じですが、これを実践するのは相当に難しいという印象です。

    もうひとつは合意する量について。
    もちろん初めてなので自分たちがどれくらいこなせるかというのはよくわかっていません。
    こういうとき、往々にして頭の中には必殺技の”逆線表”と言われるものが引かれます。
    いつまでにこんだけ終わらせないといけないから今回はここまで終わらせてないとまずい、みたいなあれです。
    とある人はものすごい量のバックログにアサインしなければいけないといい、
    ある人は2~3個やったらキャパオーバーするはずだといい、なかなかに堂々巡りしました(ちなみにこの時点でポーカーはまだしていませんw)
    結局、いろんな思いが中途半端なままに受け入れ基準を確認できたいくつかを数個対象にしてみることにしました。
    (ここは打ち合わせのタイムボックスによって強制的に終了時間になったので終わるか終らないかは知らないけどエイヤでいってみた感じです)

    そんなこんなでとりあえず第一部終了。

    次はスプリント計画ミーティング第二部
    第二部では
    ・POと合意したバックログをタスクに分解する
    ・タスクの作業時間を見積もる
    ・合計量がチームのキャパシティに収まっているか確認する
    ・収まっていなければ優先順位の低いほうから外す(少なかったら次のバックログを入れ込むのかな?)
    という感じでしょうか。

    よくわからないので、とにかくやらなきゃいけなさそうなことをバックログ単位で洗い出していきます。
    幸いにもプログラムを作っていくというところに関してはそれなりに慣れているので、
    感だとしてもそれなりにそれっぽい感じでタスクが洗い出されていきました。
    この点はちゃんとプログラムを各部分に携わっているメンバーであればあまり心配はいらないのかなという感じです。
    実質、タスクの洗い出しそのもので意見が割れるということはあまりなかった感じです。

    我々のチームはタスクの見積もりを2点見積りで行うことにしました。
    外的要因がすべてクリアされていて全力で走れた場合、自分のスキルや仕様の不明瞭その他外的要因などにより時間がかかる場合の2つを想定し
    見積もり時間を洗い出していきました。
    が、実質は全力で走り切れた場合の時間とその2倍の時間というなんとも定型的な状態にはなってしまいました。
    この点は、チームとして経験を積んでいくことで2地点間の距離が短くなっていくのだろうと信じてはいます。

    見積もり完了時点で理想的な時間だと1週間くらい、遅い時間だと2週間くらいで終わりそうな量があるということが判明し、
    いったんこれで行ってみようということになりました。

    問題はここまで来るのに相当な時間を要し(一部スタートから4時間とか5時間とか)
    タスクの洗い出しと見積もりに関しても予定していた量の半分~4分の3くらいしかできなかったということ。
    何をするにも初めは時間がかかるとは思うものの、一個一個について細かくやりすぎているのか、
    そうしなければいけないほどに準備が不足しているのかといった問題を抱えているということをよく認識しました。

    また、当初は相当量のバックログをやらなければいけないといっていたものが、第一部で数個しか話せなかったのでそれを対象とすることにし、
    さらにタスク見積もりではそのすべてをこなせなかったにも関わらず、タスクの残存時間はすでにキャパシティーに迫っているっぽいという事実。
    やらずに議論するということが大事な局面も多々あると信じて疑いませんが、それが空中戦となるようであれば
    実際にちょっとやってみたほうがいいらしいぞということを改めて痛感する1日となりました。


    で、これ結論から行くと2週間やっても終わりませんでしたw
    要因は数え上げればきりがないですが、事実として当初言ってた量と実際できた量との驚くべきかい離に唖然とするばかりでした。


    スプリント中はこれまたいろいろと楽しいことが起こります。
    TFSUGセミナーでも紹介したとおりのことも含みますが、まずメンバーのスキル差というものが如実に表れてきます。
    テクニカルな部分では、考えてもちんぷんかんぷんで結局頼りっきりになってしまう最底辺からどんどん進めていく人まで。
    ヒューマンな部分では、とっとと聞きにいけばいいものを、あーでもないこーでもないと悩んでしまってフリーズする最底辺から
    いろんな関係者にがつがつ突っ込んで行ってどんどん解決していく人まで。
    ペアプロだったりペアプロもどきだったりをしてカバーしていく体制をとりましたが、自分たちとしてはあまり効率はよくなかった感じです。
    実作業を集中的にこなす人とその人数よりも少ない人数で構成された集中して作業してもらうためのありとあらゆる問題を解決していく人
    という体制(これは我々チームの普段の体制)のほうが、慣れていることもあり共有と効率を効果的に発揮していた感じがします。
    体制的にはこれでいいんですが、そもそもこういう風にとらえる(見える?)根本の原因として
    「チームで考え、チームで解決していく。もっと落とし込んで自分自身で考え、自分自身で解決していく」
    という部分が「組織構造上のリーダーに頼らない」という解釈になってしまっている部分もあり、
    リーダー側はCommand and Control型になることを恐れて積極的な決定や指示を行なわない、
    一方、今まで指示を受ける側だったほうはいざ自分でやろうとしてもまったくうまくいかないことに苦悩する
    というところで結局チームが止まってしまうという雰囲気を醸し出していたような気がします。

    ユニットテストを行うことにこだわりすぎたという問題もありました。
    教科書的に行くとユニットテストやらCIやらは必須事項となっている印象を受けていて、とにかく可能な限りユニットテストを書くべし
    というあたりで、可能な限りの部分にかなり高い次元を求めすぎてしまったように思います。
    多少慣れない作業であったり、ASP.NETに依存する部分でのテストをどう行うかであったりといった基礎的部分にはまってしまい、
    多くの時間を使ってしまいました。
    これについてはスプリント中にメンバー内から自発的に(?)切り替え案があがり、テストエビデンスを手動でとっていく方法に切り替えました。
    本来やるべきことは動作するソフトウェアを作成し、その動作が正しいことを確認することであり、ユニットテストを書くことではありません。
    ユニットテストでテストを行えればメリットは大きいですが、それそのものに時間がかかってしまうなら、本来やるべきことを優先しよう
    という判断のもとでの決断です。技術的負債を抱えることにはなりますが、これはある意味勇気ある決断だったと思っています。

    バーンダウンがバーンアップになったという問題もありました。
    我々のチームは、TFSを使ってすべての物事を行っていますが、アナログツールも数多く導入しています。
    紙に書くバーンダウンチャートもその1つで、自分たちで線を書き入れることで進捗を身を持って実感しようという趣旨でやっています。
    実績管理はTFSで行っているので毎朝、朝会前にTFSに登録されている残存時間を確認して朝会で報告し書き入れるという感じです。
    で、本題ですが、いろいろな角度から見ると、タスクが当初比30%くらい増えてしまっていたり、
    見積もりに対して実績時間がやたらとかかってしまったり、そもそもTFSのデータをExcelで集計していた都合でそのミスで読み間違えたり
    といった様々な理由によりバーンダウンがダウンしないという事象を2回くらい経験しました。
    まぁそれでも最適な傾向線から著しくかい離しているということはよくわかるのであまり気にも止めてなかったんですが。。。

    問題を問題と認識する(できる)水準にも大きな隔たりがあるということもありました。
    初めての2週間を半ば強引に迎えていたこともあって、ソリューションやプロジェクトの構成の不備、
    CI環境や必要な3rd party製ライセンスの不足、開発中のTFSのダウン(不可抗力ですが)、
    書いたユニットテストが通っていないのに放置してしまうなど問題は山積みでした。
    が、スプリントに入って自分がタスクを抱えてしまうと途端にそれに拘束されてしまい、
    噴出する問題は誰かがやってくれるだろうといういつものスタンスに逆戻り。
    挙句の果てには問題が起きていることすら聞かれるまで言わなくなってしまったり。
    行動を起こさない割には勝手に片付けようとするとそれはやめてくださいと言われたりとなんだかよくわからないうっぷんが相当たまりましたw
    ここについては、どんどん勝手に片付けていってしまうタイプの人にはちょっとつらい状況かもしれません。
    この点、正直、性格によるところや通常の組織体での役割によるところの影響が非常に大きいと思うので一概には言えませんが
    上司からは”我慢も大事”と諭されている感じですw


    そんなこんなで連日それなりに長い時間の残業までしたにも関わらず、開発チームとしてもリリース可能と判断できるものが何一つないままに
    スプリントレビュー&ふりかえりの日を迎えてしまうことになりました。
    スプリントレビューでは
    ・開発チームがスプリント中に作成したものをPOに報告する(デモやテスト結果の提示などにより受け入れ基準を満たしていることを証明する)
    ・POから成果に対するフィードバックを得る
    ・POがリリース判断を行う
    といった感じでしょうか。

    ところが、開発チームとしてもリリース可能と胸張って言えるものが1つもない状態なのでそもそも1つ目から破たんします。
    しょうがないのでそれぞれの途中経過を進捗報告するという形でレビュー会を終えることになってしまいました。

    続いて振り返りです。
    ふりかえりはスプリント中に起こった問題についてあーでもないこーでもないというざっくばらんな話し合い+KPTの2本立てで行いました。
    前述のスプリント中に起こった問題は半分くらいはふりかえりで起案された内容だったりもします。

    ふりかえりででた話題として他に特に印象に残っている点として2点。
    ひとつ目は残存時間を管理しているバーンダウンチャートでは実績作業時間が分からないという点。
    そもそもバーンダウンチャートは後どれだけ作業しなければいけない時間が残っているかということなので、
    これそのものが悪いわけではありませんが、終わってない遅れているという事実がでてきたときに、
    見積もりが甘くて作業をやってもやっても終わらない状態になっているのか、そもそも作業してなくて終わっていないのかがわからない
    という点に本質的問題がありました。
    TFSのScurmテンプレートをカスタマイズして実績時間を入れられるようにしているにも関わらず、
    自分を含め誰一人としてそのデータをスプリントレビューやふりかえりに持ってこないというのも問題なわけですが、
    デイリースクラムにおいても実績時間を気にして話をしているということもなく日々の活動にも問題を抱えているということが如実に表れました。

    ふたつ目はバックログがバックログじゃないらしいぞ!?という点。
    2週間やってみてやはり、自分たちが作成していたバックログは要求というより仕様だろう、FeatureよりFunctionだろうという印象が明確に。
    端的な言葉で表せばもっと粒度を大きくしたほうがいいということなんだけど、
    単純におおざっぱにすればいいというのではなく、分割統治的な粒度というよりはよき言葉でいえば要求駆動開発になるような
    ちゃんと要求事項をトップにおいたトップダウンアプローチになるような視点で粒度を大きくするというか。
    ここは自分でうまく説明できなかったりまだ実感がなかったりするので理想論になってしまうけど、
    Visual Studio開発チーム(DevDiv)がやったシナリオ、エピック、テーマ、Featureという階層構造みたいな考え方をしなければいけないということのような。

    【メモ】
    ここまで、バックログの作成そのものをスクラムチーム全員でやっている?的な記述をしていますが実はそのとおりです。
    PO役はもちろんプロダクトに求められるものが何であるか?を把握している人ではありますが、
    スクラム的なやり方をするのは初めてだということもあって、
    この初期の段階では開発チームと支援コーチの全員で集まってバックログの作成そのものをすったもんだとやっていました。
    バックログがReadyになっていないのでみんなで集まってReadyにしようとしている。と書くと言葉上はすっきり収まる感じですがそんな感じです。


    ・スプリント2
    スプリント1は問題だらけでした。
    レビュー&ふりかえりを行うまでもなく、行ってみてもそのことはいろいろとわかりました。

    打ち合わせ時間の日程調整の都合もあって、そこから連続してスプリント2の計画ミーティングに突入してしまったので
    悪いことに対策を立てる間もなく、良いことに今の反省を忘れる暇もなく
    スプリント2のスプリント計画ミーティング第一部開始でした。

    とはいえ、バックログ???な感じなのでいったん第一部は棚上げ。
    再度、バックロググルーミングをみんなでやるというところからのスタートです。
    2週間やってみてかつさきほどの反省を踏まえて、プロダクトとして実現したいこと、なぜそれを実現したいのか
    実現したとしたらどんなときに使えてどんないいことが起こるのか?というあたりを重点的に話し合うことになり、
    改めて実現したいこと(先のDevDivの例に当てはめるとたぶんシナリオかEpic的なあたりの)が出来上がりました。

    これをもってスプリント計画ミーティング第一部に突入ということになりますが
    前回の反省を踏まえて、コーチ陣からの提案もあり、スプリント期間を変更するという思い切った手段にでることになりました。
    チームが成熟していないこともあり、2週間ですら長すぎるという判断です。
    まずは本当にミニマムにアーキテクチャスパイクをするくらいのつもりでお試し1週間みたいな状態をやったほうがよいとの助言により
    変則的ですが、スプリント2は1週間でやることにしました。

    という前提のもとで、先ほどできたバックログを見積もりつつスプリントに収まるようにストーリーに分解して~
    といく予定でしたが、この日はこの辺で半ば時間切れ。
    とにかくミニマムなものを作るということを目的として終了です。

    第二部では、とにかくミニマムなものを作るということが目的となっていたのでバックログ的に優先順位の高いものの中に含まれる
    非常にシンプルな部分を抽出してそれをタスク分解、見積もってチームのキャパシティーに照らし合わせてやっていくということで
    この辺に関してはスプリント1とほとんど変わらない方法がとられました。

    ---------- 以降自分が別件で退席してしまったため、想像と感想を含みます ----------

    やり方は変わらないのですが、スプリント1のときにスプリント中にやたらとタスクが増えていくということを経験したため、
    1週間先までのことをシステム的にもスケジュール的にもきちんと設計してタスクの洗い出しを行ってくれたようです。
    画面レイアウトや挙動についてもこの場で議論して写真に残す等のことを行っていたようです。

    ---------- ここまで ----------

    その他、スプリント2を開始するに当たり、POからの要求としてやはり実績の作業時間もみたいよーということだったのでそれについては準備を行うことに。
    Visual Studio Scrum 1.0についているバーンダウンレポートは実績値がでないので、余計によくわからないという事態もあり、
    ここは急きょMSF for AgileについているバーンダウンとバーンレートレポートをScrum 1.0用にカスタマイズして利用することにしました。
    正直、Visual Studio Scrum 1.0よか、MSF for Agile使ったほうがレポート的には充実してていいような・・・。
    でも、Scrum 1.0にあるベロシティとリリースバーンダウンレポートは捨てがたい。
    もし、TFSでScrumを考えている場合でSSRSのレポートのカスタマイズに自信がない場合には初めにMSF for AgileとScrumの両プロセステンプレートが
    出力してくれるレポートの内容を確認したうえでどちらを使うか考えるというのもありかと思います。


    スプリント2の期間中はWindows Developer Days(私は参加していませんが)などもあり、人数的にも時間的にもあまりないということで
    対象量もかなり絞られ、作業予定時間もかなり絞られていたのでタスク数としてもスプリント1の3分の1くらいの量になっていました。
    このことにも助けられ、スプリント1のときのようにタスクが後から莫大に増えていくという事態は避けることができていたように思います。

    ただし、自分たちを簡単に正当化しないために敢えてだめだった点を挙げておくと
    意識的にタスク(付箋)を増やさないような意思決定をしてしまうという事態が発生しました。
    スプリント1では大量に増えすぎてしまって収集がつかなくなりましたが、
    スプリント2では逆に如何に最初に挙げたタスクの中に含まれていることにしてしまうか、といったことが起きました。
    見た目としてバーンダウンレポートがバーンアップになるということはありませんでしたが、まぁこの辺はバランスの難しいところです。

    とはいえ、それなりにスプリント1の反省を活かしながら作業をすることができたということもあり、
    タスクが全部終わらないままにスプリントレビューを迎えるという最悪の事態は防ぐことができ、
    一応(この部分が後で問題にw)対象としたバックログについては受け入れ条件を満たす部分まで作成することができてのスプリントレビューを迎えることとなりました。


    スプリントレビューでは
    ・ものはなんであれ、動く画面をPOに見せることができたこと
    ・それに対してPOからフィードバックを得ることができたこと
    というのが、純粋に目的を果たすことができたという意味で前回にはなかった合格ポイントです。

    実はスプリント2を始める際に期間を1週間にしてとくにかく超ミニマムな動く画面(端的にはサンプルに近い)を作成せよとなったときに
    それにどれだけ意味があるのか?ということでメンバー内で猛烈な議論になりました。
    そんなことをしている時間があったらどんどん作らなきゃ!というまぁ至極もっともな話だったわけですが、
    最終的にスプリント2を1週間にして超ミニマムな動く画面を作るという決定を行う際にはこの辺の話は半ば強引にねじ伏せる格好で決定しました。
    異を唱えるというと少し語弊がありますが、この話の振り手にはいささか過酷な決定を下したと思います。

    が、その話の振り手も上記2つのスプリント2のレビューでできたことというある種の成功体験を通して、”やって良かった”と発言するまでに至りました。
    それほどに、得たものが大きかったということだと思います。
    たかがサンプル、されどサンプル、今に始まったことでもアジャイルだからというわけでもありませんが、
    実際に動くものを見ながら話をすることで得られるもののいかに大きいことかということを身をもって体験してくれたものと思います。

    というわけで、良いも悪いも多種多様にPOからのフィードバックを得ることができ、
    最終的に受け入れ判断となるわけですが、開発チームの期待を見事に裏切って(笑)受け入れNG。
    ただし、NG理由がもととなったプロダクトバックログの受け入れ条件には書かれていないというおまけつきで。

    これはいささか大問題です。
    問題へのアプローチとしては本当にわかりやすく2点あって、POが受け入れ条件を明確に示していない、開発チームが詳細まで聞けてない。
    まぁこの2つに尽きるんだろうと思いながらこの時間帯を過ごしていました。
    我々のPOはまだPO単独でのバックログの整理に時間をかけるということができていない反面、
    開発チームは今はまだ一緒にバックログの整理を行っているにも関わらず受け入れ条件を明確にしておけていない、
    もっと言えばスプリント計画ミーティング第一部という枠の中でも明確にすることができていない
    という部分もあるのだろうなーと思っています。

    なにはともあれ事実として受け入れ条件に書いてないんだからなくて当たり前といういい方もあるかもしれませんが、
    初めのうちはそんなにシビアにならず、まぁ少しずつ前に進めていきましょうという考え方でもいいのかなという気もします。

    ----- 後日談 -----
    スプリント3のスプリント計画ミーティング第一部で前回フィードバックを新しいバックログとするというやりかたをとったので
    結果としてスプリント2の内容は”受け入れられた”という判断でも問題ない気がしましたw
    ----- ここまで -----



    ・ここまでやってみて
    いろいろなところに問題を抱えてはいますが、しいて何が一番問題か?と聞かれると現時点では
    ”バックログの運営”
    と答えます。
    次のスプリントまでにきちんとバックログをメンテナンスしたり受け入れ条件を明確に示したりというのは
    単純に要求定義書書いてはいお終いというのとは比べ物にならないほど大変だと感じています。
    自分の立ち位置は開発チームの1メンバーなのでここに大きく関与する必要もないのかもしれませんが、
    POの負担軽減はそのまま開発チームの負担軽減にも直結しそうなくらいインパクトの大きい問題だと思って敢えてこれが一番と答えます。

    また、少し視点が変わりますが、実際にミニマムなものを作成するアーキテクチャスパイク的なものを実体験したことで
    いまならようやくRUP(Rational Unified Process)で定義されている4つのフェーズのフェーズごとの変化についても
    その意味を身をもって理解できそうな感想を持ちました。
    RUPのフェーズでは最初の数回は要件や設計に重きを置きコーディングは軽めにというファーストフェーズから始まり、
    2フェーズ目、3フェーズ目と行くにつれてコーディングやテストの比重が高まり、最後のフェーズではテストやリリースの部分が最も比重が高まる感じだったはずです。
    我々のスプリント1はいきなりRUPでいうところの2フェーズ目や3フェーズ目に行こうとしていたのだなとふりかえると
    まぁそりゃ無理だよねというのも納得です。

    未だ、デプロイという意味でのリリースにたどり着いていないので
    その周辺にはまだまだ未知なる問題が山のように山積しているような気もしますが、
    まずは一歩一歩ということでひとまずここまで。

    投稿日時 11-05-2012 12:20 投稿者 libaty | コメント数:0
    タグ , ,
  • 第5回TFSUG TFS de アジャイルを書いたわけ~WFからアジャイルへの変革~

    2012年4月13日(金)19:00~21:00にて、第5回TFSUGが開催されました。

    その場にて、性懲りもなく私も登壇させていただきました。
    今回のお題は「TFS de アジャイルを書いたわけ ~WFからアジャイルへの変革~」と題して、
    今まさにアジャイル型の開発を始めようとしている自分自身の苦悩と葛藤をせきららに紹介しようとしたものです。

    資料はこちらから

    話題に上がったエントリーはなにかのときにノリで書いた内容だったんですが、
    なにやらいろいろな人の目に留まったようで、特に@kaorun55さんから熱い要望で
    今回登壇させていただくことになりました。

    自分の勝手な偏見や今までに参加したことのあるセミナーだと
    ・ウォーターフォールがいいか悪いかではなく、世の中的にはアジャイルでやるべき事案が増えている
    ・取り組んでみて失敗したこともあったけどこう改善して今よくなっている
    というような話しか聞いたことがありませんでした。
    つまり、常に結果的にいまどうなっているのか?という部分にフォーカスしているような。

    自分にとってこの手の話は自分の目指すべき姿や悩んだ時の道しるべとして非常に重要で
    今回の後半戦を話してくれた@SHIBAO800さんの話もまさに今の自分からしたら理想となる姿を示してくれる内容でした。
    早くそうなりたい!!!!

    一方で私は、今は解決策がまったくわからないんだけどとにかく苦しんでいる
    そこにもっていくまでも大変だったけど、持ってった今はもっと大変!というようなことを話させていただきました。
    それこそ、早く@SHIBAO800さんの話に合ったような世界に行きたいんだけど行けなくて苦しんでるという内容です。
    解決策が一切ないので何かのやくに立つのかはよくわからないままに当日を迎えましたが、
    共感を得られた部分や気づきになった部分が1個くらいはあったようです。

    もし、これからウォーターフォールからアジャイルにむかおうとしている方がいて、
    資料を見たことによって何かの参考になるのであれば幸いです。

    投稿日時 15-04-2012 02:26 投稿者 libaty | コメント数:1
  • りばてぃさんのちょっとずる賢いなんちゃって組織運営術

    先日、第5回TFSUGで「WFからAgileへの変革」というようなことを話してきました。
    そのときのことはまた別途書くとして、その話のあと、組織運営に関わる考え方に参考になる部分があった
    的なお話をいただいたので普段思っていることをなんとなくつらつら書いてみることにします。

    ・前提として
    りばてぃさんは普段こんな感じの人ですってあたりを、前提条件としてインプットしておいてください。
    ・新しいことをしたり新しいものが大好きです。ただし、コンビニの新発売ドリンクには飛びつきませんw
    ・コンビニの新発売ドリンクはなんでこんなまずいもの出しちゃったの?と疑いたくなるものが多数あると思っています。
    ・継続することが苦手です。
    ・新しいものに取り組んだり、試したりすることは好きですが、それを継続することが大の苦手です。
    Visual Studioを例に挙げるとCTPやBetaは大好きですが、RTMすると興味がなくなりますw
    ・基本的にわがままです。
    ・自分のやりたいことをやりたいようにやるという一面があります。
    ・好き嫌いが激しいです。
    ・人の好き嫌いも激しいです。食べ物の好き嫌いも激しいです。割とさっぱりばっさりという感じです。
    ・上記に関わりそうですがエゴグラムをやるとほとんどの場合、CPとFCが突出します。
    参考までに
    CP(Controlling Parent):厳格的な父親。「理想主義」の自我状態
    CPの方は、高い理想・向上心、使命感・責任感を強く持ち完全主義的な傾向を判定。
    CPの得点が高い人は、誠実で、倫理観を持っています。
    高い目標意識と責任感をもっており、規律を重んじるなどのよい面もありますが、マイナス作用としては、独尊的な態度になったり、頑固になってしまう傾向があります。
    逆にCPが低すぎる人は、いい加減、中途半場、無責任、ルーズ、目標がない、または低いなど傾向があります。

    FC(Free Child):自由な子供。「純粋な子供」の自我状態
    FCは、明朗性・活動性・積極性、好奇心など傾向を判定。
    FCの得点が高い人は、どんな時も楽しい感情を大切にする傾向があり、周りの人を楽しませるユーモアセンスがあります。
    自分の感情を開放的に表現し、好奇心をもち、新しいことにもチャレンジしていけます。
    人見知りもせず、他の人と上手に交流も持つことが出来ます。
    マイナス面は、度を越すと、TPO(時と場所をわきまえる)ことをせず、周りをわきまえず自己中心的に行動してしまいがちです。
    思ったことをそのまま言ってしまうなど、調子にのりやすい。
    人間関係のトラブルで、頭を抱える事になる場合もあります。
    逆にFCが低すぎる人は、無気力で表情の変化にも乏しく、セックスや人生をうまく楽しめない、などの傾向があります。


    さて、本題です。
    自分が普段どんな感じで行動を起こしているか。


    上司の思いはむげにはしません
    私の上司は新しい取り組みを考えること、それを実現してみることをわりと好むタイプの人です。
    この場合、自分の行動パターンとしては決してそれを頭ごなしに否定しません。
    まずはその思いや実現したいことを聞いてみることにしています。
    ですが、私の上司はテクニカルなことにも詳しい人ですが少し未来を見すぎるタイプの人なので、往々にして目の前の現実がおざなりになります。
    そんなときは、もっとこうしたらいい、今直面している問題がこうだからこうしましょうというような話をしています。

    私の同僚には、上司の思いを頭ごなしに否定してしまって毎度大ひんしゅくを買っている人も少なくありません。
    そんな同僚も後で聞くと「コンセプトには同意できる」と普通に言っています。
    コンセプトに同意できるならなぜ頭ごなしに否定するのか?という疑問もありますが、
    諸事情あって(というか自分の先輩なので)そこにはあまり触れずに「そうですか~」で流してしまっています。

    ここからは余談ですが、上記の同僚はそんなこんなでよく上司に怒られます。
    私はあまり怒られたことがありません。
    きっと、普段のこういう態度の差が重箱の隅をつつかれるようなことを言われるか言われないかの差になっていると思っています。
    端的にいうと「神経逆なでする」ってことなんだと思います。
    無駄です、馬鹿です、もったいないです。


    期待はしません。信頼します。
    期待するとは、一方的に相手が自分の望むことを実現してくれることだと思っています。
    なので、期待するから裏切られると思っています。
    一方で、信頼はただただ信じることだと思っています。
    言葉尻がちょっと難しいんですが、一方的にやってくれるはずだ!と思うことはしないというあたりで理解していただけると。

    ですが、もちろん誰彼かまわず信頼するということはありません。
    信頼できる相手というのは本当にごくごくごくわずかです。
    ですが、信頼している相手は変に期待をかけることをせずともきちんと成果を上げてきてくれます。

    昔、一緒に仕事をしていたある相手は私を尊敬してくれ、私は相手を信頼するという関係で成り立っていました。
    お互い、相手のやってくれることに期待はしませんが、
    (またまた言葉尻が難しいんですが)自分は相手の期待に応えようと頑張るという関係だったように思います。


    尊敬できる人の期待には全力で応えます。
    自分はあまり期待するということはありません。
    が、自分が相手の期待に応えないということとはまた別です。
    相手が期待してくれているかどうかはわかりませんが、
    何かを依頼してくるということはそれなりの期待があることだと捉えています。

    冒頭で上げている通り、あまりよくないことだとは思いますが、りばてぃさんは基本的に好き嫌いが激しいので、
    嫌いな人からの依頼だとむげにあしらうこともままあります。
    が、一方で自分を信頼してくれている、自分を尊敬してくれている、自分が信頼している、自分が尊敬している相手からの依頼の場合、
    その期待には全力で応えようとします。

    最近は無茶ぶりをしてくれる誰かさんとか誰かさんがいたりいなかったりしますが、
    彼らは自分が尊敬するに値する人物です。
    そんな彼らからの依頼は自分への「チャンス」だと思って行動するようにしています。
    チャンスは自分で掴み取るものだ!な~んて話もありますが、
    無茶ぶりの依頼も全力で応えればチャンスを掴み取るなんてお茶の子さいさいです。

    ここからはまた余談です。
    自分のやる気とも比例する話なので私がいつもこういう行動をとっているわけではありません。
    ですが、たまたまやる気のある時期(やる気を出させてくれた人との関わりが強い時期)に
    自分にチャンスをくれる事案がたくさんあり、それに一つ一つ応えていたところ
    先ごろ、ブログに書いた通りMSMVP for Visual Studio ALMを受賞するという目に見える形の成果を得ることもできました。


    上司は責任をとるためにいるものだと思っています。
    基本的に上司は責任をとるためにいるものだと思っています。
    いつの時の上司に言われたか忘れてしまいましたが、そういうことを言ってくれた上司もいました(恵まれていると思います)。
    組織上、上司からミッションを支持され、それをこなしていくというのが仕事ですが、
    万が一、それに失敗した場合、責任を取るのは上司です。
    会社組織の中で、責任を取らされるのはマネージャーであり、自分ではないことを自覚しています。
    (しこたま怒られるということとは別です)
    上司はそうならないように私に適切な助言をする義務を負っていると思いますが、
    同時に、何の責任も取ることができない自分は、上司がそんなことをしなくてもいいように全力でやるべきだと思っています。

    私は、与えられたミッションをこなすためにはいいように上司をこき使います。
    部署間調整や偉い人への説明、社外的な問題などには問答無用で上司を引っ張り出します。
    自分だけでは解決するのが難しく、上司が出ていけば解決しやすいということをわかったうえでの行動です。
    会社組織の中でのことなので、肩書というものは非常に重要です。
    部長は部長通しで話をするのが手っ取り早く、役員は役員通しで話をするのが手っ取り早いです。

    もし、与えられたミッションを無視して自分の好き勝手、やりたいようにやりたいと思ってそうするのであれば
    それは自分で責任を取るべきですが、会社組織の中では一介の平社員が責任をとるというのはなかなかに難しいと思います。

    ここからはまたまた余談です。
    先にも出てきた私の同僚は私の上司(もちろん同僚の上司でもある)を心底嫌っています。
    が、私はあまりそんなことはありません。きっとうまく利用しているからということもあるのだと思います。

    正直、自分が嫌っている相手から好かれるということはよっぽど杞憂な人でもなければないと思います。
    自分が嫌い、相手も自分を嫌い、というのがよくある構図でしょう。
    ですが、これはただただ単純に無駄でしかありません。
    私も人の好き嫌いは激しいほうなので他人のことをとやかく言うことはあまりしないですが、
    上っ面だけでも友好的な態度をとることによって劇的に改善するということを少しは覚えたほうがいいと思っています。


    自分のやりたいことを上司が実現したいことの中に織り込ませます。
    会社組織の中で、一介の平社員が責任をとるというのはなかなかに難しいことです。
    難しいので、上司のミッション、ひいては組織のミッションにしてしまえばいいと思っています。
    そうすれば、自分は自分のやりたいことをできるし、責任は組織として追うことができます。
    ずるがしこいですが、自分で会社を起こすなどしないのであれば堅実な方法だと思っています。

    そのためには、冒頭にあった上司の思いをむげにしないということが非常に重要になってきます。
    上司の思いをくみ取り(くみ取ったふりをすることも)、自分のやりたいことを摺合せ、こういう手段で実現していきましょう
    と、自分のやりたいことに徐々に問題をすり替えていきます。
    上司としては自分のやりたかったことを部下が実現手段として提案してきてくれているという思いになりますので
    こんなうれしいことはないでしょう(私の思い込みですw)。
    喜んで、来期の計画検討の資料に織り込んでくれます。


    非常にずる賢い方法をとっているような気がしますが、
    りばてぃさんは基本的にわがままなので、自分のやりたいことしかやりません。
    ですが、それが組織のミッションであれば誰も文句はいいません。
    もちろん組織の方向性は無視しないようにしていますが、
    今のやり方が、自分が組織のミッションに対して最も効果的に成果を上げていける道を辿っていくことができる道だと思っています。


    最後にまたまた余談ですが、
    踊る大捜査線というドラマでわくさんが青島に「正しいことをしたければ偉くなれ」と言っていたのを覚えている、知っている方もいるのではないでしょうか。
    正しいことというのはドラマ上のニュアンスですが、要するに「自分のやりたいことをしたければ偉くなれ」ということだと思います。
    自分の意見としては、偉い人を使えばいいので別に偉くなる必要はないと思いますが
    組織運営という意味においては非常に重要な示唆を与える言葉であると今でも信じてやみません。

    投稿日時 15-04-2012 02:03 投稿者 libaty | コメント数:0
    タグ
  • TFSのソースコードキャッシュはProxyサービスがなくても動いている

    どはまったので自分用メモ

    TFSにはProxyサービスというものが用意されていて、
    遠隔地からソースコードを取得しなければならないときに身近なサーバーにソースコードのキャッシュを確保しておき、
    最新ソースコードの取得を迅速に行うということができるようになっています。

    普段、Proxyサービスを使ってないのでまったく意識していませんでしたが、
    Proxyサービスを使っていなくてもTFSはソースコードのキャッシュを保持しています。

    この機能は便利ですが、反面、チームプロジェクトコレクションなんかの復元を行った直後に、
    正しいソースコードが取得できないという問題にぶちあたることになります。

    この場合は、TFSの初期インストール状態で
    C:\Program Files\Microsoft Team Foundation Server 2010\Application Tier\Web Services\_tfs_data
    フォルダ内にあるGUIDで設定されたフォルダを削除することでキャッシュがクリアされます。

    再度、最新のソースコードを取得することでデータベースに格納されているソースコードを正しく取得することができるようになりました。

    投稿日時 10-04-2012 06:58 投稿者 libaty | コメント数:0
    タグ
  • なぜ響かないか、なぜ響かなかったのか

    とある友人のつぶやきにこんなものがありました。

    「ここまで火を付けるって、凄腕コーチがサポートしてるのかなー。」

    自分がアジャイルやるぞ!オー!!って燃え上がっているらしいことに対しての純粋な疑問というところでしょうか。
    あなたの周りには今までにもアジャイルに取り組んでいる人たちがいっぱいいて、いろんな気づきを与えてくれていたはずなのに、なんでまた急にそんなに燃え上がってる風なの?という疑問かもしれません。
    正直自分でもよくわかりませんw

    もう振り返れば6年くらい前になると思いますが、別の友人にこんなことを言われたことを今でも鮮明に覚えています。

    「ウォーターフォールで開発している時点で負け組だ」
    ※注意:多少ニュアンスの違いや前後の文脈はあったと思います

    どちらの友人も固有名詞を出すとびっくりするぐらい有名な方で、そんな気付きを与えてくれる人たちに囲まれているのになんてもったいない!って言われてしまいそうですが、少なくても6年前に言われたことに対しては、そんな前向きな思考はほとんどありませんでした。

    「だってしょうがないじゃない。×××ってSIerで仕事してるんだから」

    というような感想を持って終わったことも今でもよく覚えています。
    でも、今言われたらきっと違う感想を持つと思います。

    「それが良いと思えたらそうなるように働きかけてみる」と。

    あの当時は、そしてついこの前までは良いらしいといわれても「ふ~ん」で終わらせてしまうほどにはまったくもって全然響くものはありませんでした。なんでまったく響いていなかったのか、何が心に響いてがらっと考え方が変わったのか(または変えようとしているのか?)を自分自身で考えてみるというのはなかなかに興味深いと思い、一生懸命悩んでます。悩んでなんだったんだろう?と思うのも変な話ですが、心に響くタイミングってほんとに不思議なものであるとき突然というのが今までのパターンでしたが、レトロスペクティブが大事らしいのでちゃんと考えてみようと思います。

    自分で書いてて定かじゃないんですが、
    往々にして言われても響かないときは、
    「いいか悪いかじゃなく、仕事として言われたとおりにやるしかない」「自分には関係のないところで起こってる事実だ」
    と思っているとかそういう思考のもとで行動しているというかそれが当たり前として特に考えることもなく行動している
    というときのような気がします。
    「とくにかくやるしかない」
    というときも該当していそうです。特に目の前の作業、納期、キャパシティを超える量に忙殺されて、でも仕事としての責任は果たさなきゃというのだけはあって、まわりからはやんややんやとせっつかれて、というようなときなんかはこっちのパターンな感じです。
    端的にまとめちゃうと「思考停止」と「ゆとりのなさ」ということになると思いますが、それが日常だとそれにも気づくことはなかったような。。。

    途中、空白期間はあるもののまぁそれなりに技術コミュニティというところには顔を出しているような気はしますが、とはいえこのような思考状態なので、せっかくの勉強会も猫に小判、豚に真珠、馬の耳に念仏。。。よくこの手のコミュニティやちょっと先進的な研修などに行くと、「ここに参加されている皆さんは意識の高い人だと思いますが~」みたいな前振りがあったりしますが、自分の過去の経験から考えるに決してそんなことはなくw だれか知り合いがいるから行くとか、知り合いに呼ばれていくとか、それ以後は開催されているからなんとなく行くということを繰り返していただけなような。

    このような状態からいかに脱却しようとしているのか、しようとさせられているのかを引き続き考えてみようと思います。

    投稿日時 03-04-2012 08:54 投稿者 libaty | コメント数:0
  • Visual Studio ALM MVP頂きました

    twitterで書いたからまぁいっかーと思ってたのは内緒です。

    すでに下記にて情報が流出しておりますが、この度 Visual Studio ALM MVP を頂く運びとなりました。

    かおるんダイアリー
    Microsoft MVPを受賞しました

    長沢智治のブログ
    Visual Studio ALM MVP 受賞者

    上記2名を初め、TFSUGスタッフ、TFSUG勉強会で知り合った皆様には支えられているなーと感じる今日この頃です。
    改めてありがとうございます。

    復活という事実をご存知の方は多そうですが、過去に、
    ・2006年4月~2007年3月:Visual Studio Team System MVP
    ・2007年4月~2008年3月:無印
    ・2008年4月~2010年3月:Visual Studio Team System MVP
    ・2010年4月~2012年3月:無印
    ・2012年4月~2013年3月:Visual Studio ALM MVP
    という異色の経歴を放っております。
    一度離れてから再度受賞する人は珍しいとMVPの方やMSの中の方にも言われまくってますw

    個人的に、継続とまんねりが一番苦手なものなのでこのような経歴をたどっていますが、
    今回は同時期に同カテゴリーで受賞した身近な仲間がいるので、
    今までよりは少しだけ前向きに一緒にやっていこうと思っています。

    とりあえず、MVPレスなTFSのユーザーグループってなんか変じゃね?って状態から脱却できたので
    よしとしますw

    特に何かが変わることはないので、変わらずよろしくお願いいたします。

  • マイクロソフトの中の人がデイリースクラムを行う様子

    @ryuzeeさんがつぶやいていたので見つけたものがあります。

    Scrum at Microsoft: See the TFS Agile Team do a Scrum (aka Stand Up) - Long
    http://www.youtube.com/watch?v=-UUrLxNBK_g

    Microsoftの中でTFS 11(と思われる)かTF Serviceかを利用してデイリースクラム(朝会)をしている様子です。
    アナログの付箋でやるメリットはいろいろありそうですが、
    必要な時にだけプロジェクターを使ってタスクボードを写し、
    その場でドラッグ&ドロップでタスクを動かし、リアルタイムでバーンダウンチャートが更新される
    というのも便利なもんです。


    --以下余談--

    自分たちがスクラムでの開発を始めるに当たり、当然のように
    タスクの管理を付箋でやるのか?TFSで全部やってしまうのか?という話題になりました。
    便利さ、ユーザーストーリー、タスク、ソースコード、テストがすべてシステムで関連付けられるので
    タスクもTFSで全部管理してしまうのがベストだろうという話や
    特に上司など第3者に立ち止まって見てもらうには常に張り出しておいたほうがいいし、
    自分でバーンダウンチャートに線を引く達成感はシステムにはやらせたくないという話など
    いろいろな話がでました。

    結局、どちらも重要だということで、工夫をしながら両方使っていくことになりそうですが、
    何のためにそれをやろうとしているのかが明確であれば、
    ”何、2重管理なんて手間ばっかかかることしてるの?”という圧力にも屈することなくやっていけそうな気がします。

    投稿日時 31-03-2012 04:32 投稿者 libaty | コメント数:0
  • TFS de アジャイル

    リアルでお会いしたことがある方はご存じだと思いますが、俗にいう"SIer"といわれる会社で働いておりますゆえ、なかなか変化を受け入れるということはありません。ここ数年横目で見ながらずっと気にはなっていたもののなかなか実践するに至らなかったものの一つにアジャイル開発があります。ウォーターフォールが大好きなわけでもなく、アジャイルが大好きなわけでもありませんが、右へならえでずっとウォーターフォール型の開発を続けてきておりました。アジャイル開発するべきだーとかアジャイル開発っていいよーとかウォーターフォールなんてくそくらえーとか両サイド言いも悪いもいろいろ見聞きはしてきたものの特に強いあこがれや危機感を持つこともなく過ごしてきたというのが本当のところです。

    ここ数年は、Team Foundation Serverに関わることが多くなり、初めのうちはこの製品は何をするために登場したものなのだろう?というのを深く深く調べていくことが生業でした。その次に出てくるのはもちろん自分たちのウォーターフォールにどのように適用していくか?という発想です。
    ところが、TFSが世代を重ねるたびにどんどんどんどんアジャイル開発的な要素を持つことが多くなり、何を調べても何をしようとしてもアジャイルの界隈で耳にする原理原則やプラクティスといったものと切っても切り離せないものであるということを強く実感するようになってました。
    去年、縁あってALM Summit 2011というイベントに参加し、その前後で知り合った何人かの方と話を重ねていく中で、最大の気づきになったのが「TFSはコンセプトファーストでできている、そしてそのコンセプトはアジャイル、特にScrumに強く感化されている」ということでした。これが、いよいよやってみなきゃしょうがないと思うようになった最大のきっかけだったように思います。

    上司や関係者にボディーブローを打ち続け、紆余曲折あったり運が良かったりで上司の口からアジャイル開発でやってみろと言わせるまでになったのがつい1か月くらい前の話です。いよいよチャンスを引き寄せることができた!と思うと同時に不安満載でどうにもならなくもなりました。
    なんというか正直なところ、アジャイル開発をやってみたいというのは食わず嫌いはよくないというのが本音で、美味しいから食べてみなよと言われても懐疑的になって遠慮したり、でももしかしたら本当においしいのかもと思ってみたりとまさにそんな状態からのスタートです。右も左もわかりませんという状態ではさすがに前に進むことはできないのでいろんなところに顔を出すなどして用語や知識的な部分を理解しては見たもののやっぱりピンとはきません。所詮教科書は教科書、事例は事例でしかないということなのかもしれませんが。
    それでも、これまた運がいいことにTFSに携わっていたことによって培った人脈によってアジャイル開発支援をしてもらえる人たちと話をする機会を得ることができ、なんとも言えぬ不安や”具体的に”何がどうなっていくのか?というのを質問させてもらえる場をゲットすることができました。ところがどっこい、アジャイルコーチの口から出てくる言葉は往々にして、「なぜそれをするのか?」そしてそれに答えられない自分たち。でも、それが悪いことだとは思ってない自分たち。なぜそんなことを聞かれているのかもいまいちピンと来ていない自分たち。そんな状態に陥っていたように思います。もちろんアジャイルコーチという立場をとっている方がこの状況をほおっておくわけもなく、ファシリテーションのもとあーでもないこーでもないと議論をすることになりましたが、最終的にでた(このときは出されたというのが正しいかも)結論は「君たちは普段の議論が足りない」ということに尽きた気がします。
    ウォーターフォールが良い悪いではなく、与えられたプロセスに則って与えられた手順に従ってただ黙々と作業を繰り返していくうちに、「なぜそれをするのか?」という至極シンプルなことに対する解も持ち合わせられなくなってしまっていたということなのでしょう。

    自分たちがいるチームがこのような気づきを得てからまだ2週間足らずといった状況ですが、今はまさに「鉄は熱いうちに打て」という状態になり、いろいろなことに対して素朴な疑問を解決してみようという方向に動いて行っているように思います。
    いよいよスタートも目前に迫ってきている昨今ですが、もちろん根本的なきっかけになったTFSを使って実践していくつもりというかなぜかそのことだけは決まっていますw
    気づきやきっかけを与えてくれたたくさんの方々に感謝しながら、何か1つでもフィードバックができるように、またはたくさんの方々の新しい気づきのきっかけになるように、これからしばらくの間はこんな感じの内容についてもつづっていこうと思います。


    りばてぃ

    投稿日時 28-03-2012 11:18 投稿者 libaty | コメント数:3
    タグ , ,
  • VS 11 Betaの仮想マシンとハンズオンラボ

    VS 11 Developer Previewが発表された直後にも出ていましたが、
    今回もBeta発表直後にちゃんと更新されていたみたいです。

    というわけで、下記のブログにVS 11 ALM Betaの仮想マシンとハンズオンラボの一式が公開されています。


    Visual Studio 11 Application Lifecycle Management Virtual Machine and Hands-on-Labs / Demo Scripts


    中身をざっと見る感じでは、スクリーンショットがMetroスタイルのUIになっていたりするので、ハンズオンの流れそのものもBetaに合わせてちょこちょこ変わっているかもしれません。
    評価にはHyper-V環境が必要ですが、ざっとALM関連の新機能を俯瞰するにはちょうどいいと思うので、再度やってみようと思います。

    投稿日時 09-03-2012 02:58 投稿者 libaty | コメント数:1
    タグ ,
  • 名古屋アジャイル勉強会分科会第2回開発ツール勉強会のハンズオンは

     Webサイトや、名古屋アジャイル勉強会スタッフ、TFSUGスタッフのtwitterなどでささやかれておりますが、以前に紹介した通り、2/25(土)に開催される名古屋アジャイル勉強会分科会 第2回開発ツール勉強会ではTFSの入門をテーマにTFSUGがハンズオンを務めさせていただきます。

     厳正なる話し合いの結果、わたくしめが講師を務めさせていただくことになりました。よろしくお願いします。
    さて、当日に向けて、現在双方のコミュニティでは鋭意準備を進めておりますが、資料は概ね完成してきたので、なんとなくどんなことするのー?というのをご紹介しておきます。

     さて、何をいまさら感満載ですが、Team Foundation Server 2010に搭載されている4大機能とは?
    ずばり
    ・作業項目トラッキング
    ・ソースコード管理
    ・自動ビルド
    ・レポート
    です(だと思ってます)。

     これらは1つ1つを独立的に使うものではなく、4つを有機的に利用していく必要があるのはいわずもがな。これすべて開発プロジェクトを円滑に進めるために全部必要なものだから。
    というわけで、ハンズオンにおいてもこれら4つの機能をすべて網羅した形で実際のソフトウェアの開発を体験していただきます。もちろん、2時間前後という限られた時間の中での話ですので、開発するもの自体は非常にミニマムなものを想定していて、C#やVB.NETでコードを組んだことがない人はもちろん、まったくコードを組んだことがない人でも問題ないレベルのものを作成していきます。むしろ、TFSによって開発における各種の作業がどのように繋げられていくのか?を体験していただくことがメインですので、コードを書く作業はほんのおまけみたいなものです。
     さて、TFSがどのように有機的に様々なものを繋げていくことができるかを体験していただくためには、どれだけ簡単な内容であったとしても頭からお尻まですべてを一度はやってみていただくのが非常に効果的ではないかと思っています。今回はアジャイル勉強会ですので当然のようにアジャイルなやり方で。
     コードを書くのはおまけといいましたが、そのおまけの作業を行うにしても、どんなものを作らなければいけないのか?それはどのように作業していけば作成することができるのか?を考えなければいけません。Scrum的にはプロダクトバックログやスプリントバックログを作成するといった作業です。
     やることが決まったら、コードを書いて、ビルドして、テストします。この3拍子揃ったら、継続的インテグレーションがなければ話は始まりません。そこで、TFSの自動ビルド機能を使って継続的インテグレーション環境をセットアップし、実装、ビルド、テストのサイクルを支援してもらうことにしましょう。
     日々のこれらの作業はデイリースクラムを行ったり、バーンダウンチャートを使ったりして確認していくことは進捗を確認するうえで極めて重要です。もちろん、TFSにすべてのデータを格納しているわけですから、それらのためのレポートを出力するのなんてお茶の子さいさいです。どんなビューでどんなデータを表示してくれるのかしっかり確認しておくことにしましょう。

     このような背景のもと、2時間という短い時間の中ではありますが、実際に手を動かして、実際に目で見て、体で感じて、TFSを体験していただくのが、今回のハンズオンの内容となります。ちなみに、私の知る限りではコミュニティレベルでTFSのハンズオンを開催したことがあるという話は聞いたことがありませんので、もしかして初???(保証はできません<m(__)m>)

    サイト:名古屋アジャイル勉強会

    第40回名古屋アジャイル勉強会申込み要綱

    第2回開発ツール勉強会申込み要綱
  • TFSUG出張ワークショップ in 名古屋

    2/25(土)に名古屋アジャイル勉強会主催で

    名古屋アジャイル勉強会分科会 第2回開発ツール勉強会

    というものが開催されます。
    今回なんと、TFSUGがその勉強会にお邪魔し、出張ワークショップをやらせていただくことになりました(パチパチパチ)

    テーマはもちろんTFSがらみでズバリ「TFS入門」です。

    今回は機会があって自分も参加できることになったので、
    (というか、きっとハンズオンの講師を務めさせていただくことになると思いますが)
    せっかくなんで前日の2/24(金)に開催される

    第40回名古屋アジャイル勉強会

    にも参加してくる予定です。
    東京以外の勉強会に参加するのは初めてなので今から楽しみです。

    まだまだどちらも受付されていると思いますので、名古屋近隣の方はぜひぜひご参加ください。
    TFS問わずALM分野では大活躍のあのエバンジェリストも来るらしいですよ!?

    サイト:名古屋アジャイル勉強会

    第40回名古屋アジャイル勉強会申込み要綱

    第2回開発ツール勉強会申込み要綱

  • Team Review v1.1.3の使い方

    TFS Advent Calendarをしている際にいくつかのアドインを紹介しました。
    その中でTeamReviewというアドインを紹介しましたが、
    現時点でいくつか問題があったようです(というかすっかり忘れてました)

    ご指摘いただいた @yasuohosotani さんありがとうございます。

    1.作業項目定義
     Team Reviewの中ではCode Item, Code Review Responseという二つの作業項目を利用します。
     現在、公開させていただいている上記作業項目の日本語版では以下のフィールド定義にエラーがありました。
      ・関連リンク数(Related Link Count)
      ・外部リンク数(External Link Count)
      ・ハイパーリンク数(Hyperlink Count)
      ・添付ファイル数(Attached File Count)
      ・イテレーション ID(Itelation ID)
     これら各フィールドのname属性を正しい日本語(上記の日本語)に編集することで
     インポートすることができるようになります。

    2.Addinからの作業項目の作成
     Team Reviewではレビュー中のソースコードの一部分を選択した状態で右クリックすると
     コンテキストメニューからCode ItemやCode Review Responseの作業項目を作成することができます。
     この時、「Assign To」フィールドはドロップダウンから選択するようになっていますが、
     この部分はTeam Review側がユーザー情報をTFSから取得してドロップダウンの構築を行っています。

     このユーザー情報の取得は対象チームプロジェクトの「Contributors」セキュリティーグループに
     登録されているユーザーという検索条件で取得しています。
     しかし、英語版TFS以外ではContributorsグループは各言語にローカライズされています。
     日本語版TFSでは「共同作成者」となっています。

     この違いにより、Team Reviewがユーザー情報をうまく引っ張り出せないので、
     Team Reviewを利用したいチームプロジェクトに「Contributors」という名前のグループを作成してしまい
     そこにドロップダウンに表示したいユーザーを追加するようにします。


    P.S. 以前のバージョンではVBのプロジェクトではコードエディタの右クリックでTeam Reviewのコンテキストメニューが
       表示されないといったことがありましたが、現在はその問題はないようです。
  • TFS Advent Calendar Day 22~TFSの便利なアドインあれこれ~

    今日から始まるTFS Advent Calendarの22日目です。
    サイトはこちら:http://atnd.org/events/22819

    TFSには無料で提供されている便利なアドインが数多く存在しています。
    その中からいくつか便利な(というか私が普段使っている)アドインを紹介します。


    Team Foundation Server Power Tools

    言わずと知れた、というか絶対入れておくべきツールの1つです。
    執筆日(2011/12/22)現在、「Team Foundation Server Power Tools December 2011」というものが
    こちらのサイトで公開されています。
    http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

    このツールはTFSがインストールされているサーバーにもTFSのクライアントになる各端末にも
    どちらにもインストールするべきツールです。

    このツールを利用することで例えば、
    TFS Advent Calendar Day 10 および TFS Advent Calendar Day 15で紹介したような
    TFSのバックアップ&リストアを簡単に行うための機能に加え
    ・TFSからのメール通知でありとあらゆるタイミングを利用できるようにカスタマイズ
    ・TFSの運用環境診断(TFS Advent Caledanr Day 17~TFS Best Practices Analyzer~ by kkamegawaさん)
    ・チームエクスプローラーへのプレゼンス情報の統合(Live Messengerや旧OCSなど)
    ・Windowsエクスプローラーからのチェックイン/チェックアウト
    ・PowerShellコマンドレット提供
    ・4種類のカスタムチェックインポリシーの追加
    ・作業項目新規作成用テンプレート機能の追加
    ・プロセステンプレートのGUIベースでのカスタマイズ
    などなど、TFSを“実際に”使っていくときには手軽さ向上、運用負荷軽減になくてはならないツールです。

    # 2011/12/22現在、Eclipse向けのPower Toolsがリリースされたという情報が
    # bharry's blogにて公開されています。
    # 「December 2011 TFS Power Tools Release

    Team Foundation Server Administration Tool

    TFSの運用管理者にはやはりなくてはならないツールの1つです。
    執筆日現在、「TFS Administration Tool 2.1」が、こちらのサイトで公開されています。
    http://tfsadmin.codeplex.com/

    このツールはTFS環境一式(WSS, Reporting Servicesを含む)への管理者権限を持った
    ユーザーが利用する端末にインストールして利用します。

    このツールを利用することでTFSのセキュリティ設定を非常に簡単に行うことができるようになります。
    TFS環境一式での権限設定はTFSそのものに加え、WSSの対象サイトコレクション、Reporting Services
    と3か所に渡って行う必要があり、この点を意識せずに設定してしまったがために
    チームプロジェクトそのものには接続できるが、ドキュメントとレポートが見れない
    といったことが割とよく発生します。

    このツールでは、Active Directoryのユーザーまたはグループを
    TFS, WSS, Reporting Servicesの3か所に対してまとめて権限設定できるようなGUIを提供してくれます。
    もちろん、どの権限を振るかも状況に合わせて適宜選択することが可能です。


    Team Foundation Server Build Extensions Power Tool

    Team Foundation Serverは2010になってから、マイクロソフトとしてマルチプラットフォームへの
    対応をきちんと行うようになりました。
    現在は、Team Explorer Everywhereという製品を利用することでEclipseからもTFSを利用でき環境が整っています。
    Eclipseから繋ぐということはまぁ大概はJavaによる開発であろうということで、
    JavaソースコードのビルドをTFSのビルド機能にがっちゃんこするためのアドインです。
    執筆日現在は「Team Foundation Server Build Extensions Power Tool Decemer 2011」というものが
    こちらのサイトで公開されています。
    http://visualstudiogallery.msdn.microsoft.com/2d7c8577-54b8-47ce-82a5-8649f579dcb6

    このツールは基本的にはTFSサーバー(ビルドサーバー)にインストールしますが、
    チームビルドの編集を行うクライアントにもインストールしておく必要があります。
    # WFのアクティビティを認識して利用できるようにするため

    このツールを利用することで、Javaでよく利用されているAntまたはMavenを使ったビルドを
    チームビルドから利用できるようになります。
    また、そのために必要となるtargetファイルや、チームビルド編集時に必要となる
    WFのアクティビティなども同時に提供されます。
    # Javaの場合はやっぱJenkinsだよね♪というのはこの際おいておいて、
    # ちゃんとTFSからもJavaのビルドができるんだよ!というところがポイントです


    Microsoft Visual Studio Scrum 1.0

    スクラムというキーワードだけでもピピっと反応する人が多そうな一品です。
    TFS 2005~2010まで一貫して、TFSに初期状態で用意されているプロセステンプレートは
    「MSF for Agile」、「MSF for CMMI」の2種類のみでした。
    TFS 2010用のプロセステンプレートとして、且つマイクロソフトブランドとして、
    初めて上記2つ以外に提供されたのが「Microsoft Visual Studio Scrum 1.0」というプロセステンプレートで
    こちらのサイトで公開されています。
    http://visualstudiogallery.msdn.microsoft.com/59ac03e3-df99-4776-be39-1917cbfc5d8e?SRC=Featured

    もう細かいことは説明いたしません。
    TFSでスクラムのプラクティスに乗っ取ったやり方ができる
    というだけですべてを物語れるのではないかと思います。

    # ただし、英語版で提供されていますので、
    # 日本語版TFSで利用するためにはプロセステンプレートそのものにいろいろと手を入れる必要があります。
    # Team Foundation Server 2011 Developer Previewには標準でScrumテンプレートが付属してますので
    # それはそのまま製品化へ!というフィードバックをしてあげると最初からちゃんと日本語化されて
    # 製品に搭載された状態で出荷される可能性を高めることができると思います。


    Team Review

    こちらはTFSの仕組みを利用してコードレビューの依頼とレビューフィードバックのやりとりを
    簡潔化しようとするためのアドインです。
    執筆日現在は「Team Review Release 1.1.3」がこちらのサイトで公開されています。
    http://teamreview.codeplex.com/

    このツールはTFSのクライアントとなる端末にインストールすると同時に
    ツールに付属する2つの作業項目をTeam Reviewを利用したいチームプロジェクトに登録する必要があります。

    環境がすべて整うと、
    Visual Studioのコードエディタ上からレビュー依頼作業項目を発行することができるようになります。
    誰にどの部分を見てほしいかというような情報を登録して、レビュー依頼を登録します。
    レビュー依頼を受け取った利用者はその作業項目を参照しながら
    レビュー結果作業項目を作成していきます。
    レビュー結果には指摘箇所に該当するソースコードを添付したり、コピペしたり指摘内容を入力したりします。
    ここで、レビュー結果作業項目の数 = 指摘件数となります。

    最終的にレビュー結果一式を受け取った側は
    レビュー結果作業項目を参照しながら指摘事項を修正すると作業完了です。
    このとき、レビュー結果作業項目を参照すると該当するソースコードをコードエディタ上で開いてくれる機能などもあるので
    リズムよくどんどん修正してくことが可能となっています。

    ちなみに、環境構築時にさらっと「作業項目を2つ追加」と書きましたが、
    Team Reviewに用意された作業項目はちゃんと日本語化されていますのでご安心ください。
    # 日本語化したのが私なので訳が変でも許していただければ・・・w

    このTeam Reviewの考え方ですが、
    個人的にはTFS 11 Developer Previewにもその概念がふんだんに取り込まれたのではないかと思っています。
    TFS 11 Developer Previewにはレビューリクエスト、レビュー結果という作業項目とシェルブセットを使った
    コードレビューのワークフローを管理するための仕組みが用意されています。
    機能は多少異なりますが、なんとなく通づるところがあるように思う今日この頃です。


    TFS Timesheets

    このアドインは作業項目のカスタムコントロール機能を利用して作成されているものです。
    作業項目にカスタムコントロール使えたっけ?というあたりの時代の変遷が気になる場合は
    TFS Advent Calendar Day 1~Visual Studio Hawaiiはいずこへ~」あたりをご覧いただいたら良いかと思います。

    執筆日現在、「TFS Timesheets 1.0.3」というものが、こちらのサイトで公開されています。
    http://tfstimesheets.codeplex.com/

    この作業項目用カスタムコントロールを利用すると、
    純正作業項目ではなかなか難しい“計算処理”しかも、残存時間と実績時間の計算処理を行ってくれるようになります。
    さらにさらに、日本の管理者が涙ちょちょぎれるんじゃないかと思うぐらい賢いのが
    “日ごとの実績時間入力への対応”が行えてしまいます。
    # まぁ日々レポート見ればどれくらい減ったかってわかるんですけどねw
    実際には、このコントロールを作業項目上のどこかに配置しておき、
    何年何月何日にどんだけ作業をしたかという数値を登録していきます。

    すると入力された時間に応じて実績時間を増加させ、残存時間を減少させということをしてくれます。
    予定通りに進んでいない場合はこの時点で残存時間だけを手入力で増加させます。
    あら、不思議。
    何日にどんだけ作業して、結果としてまだ残存時間がこんだけあるらしい
    なーんて情報が一目瞭然です。

    本来、TFSのタスク作業項目は1日以内に終わる粒度まで分解して登録されることが望ましい
    というベストプラクティスがありますが、なかなかそうもいかないのが現状です。
    このツールを利用することで日をまたがった場合でも経過状況が簡単に把握できるので便利ですね。


    さいごに

    あまり多くのアドインを紹介することができませんでしたが、
    TFSには(もちろんVisual Studioにも)実に多くのアドインが提供されています。
    それらについては大筋は以下の2サイトを検索することで発見することができます。

    ・Visual Studio Gallery : http://visualstudiogallery.msdn.microsoft.com/
     マイクロソフト社のサイトとして公開されているもので、Visual Studioを中心とする開発系で便利なツール類が
     数多く登録されています。
     中には製品として有償のものであったり、製品のトライアルとして期間限定のものもありますが、
     無償提供(ライセンスはツールによりまちまち)されているものもたくさん存在しています。
     検索ワードとして「TFS」や「VS」などと検索カテゴリーを「Free」に設定して検索すると
     無償で利用可能で優良なツールを多く探し出せると思います。

    ・CodePlex : http://www.codeplex.com/
     マイクロソフト社が(?)コミュニティーベースのツール開発を行うための基盤を提供しているサイトです。
     Wiki, SourceControl, Issue Trackなどの機能がありますが、中身はTFSだとかなんとか。。。
     このサイトではEnterprise Library(マイクロソフト社製ではありませんよ?)や
     なぜかpatterns & practicesのドキュメントなどが公開されていたりもします。
     他にもVisual Studio Rangersという主にALM MVPを中心としたグループの活動成果や
     個人で公開されているツール類などが数多く公開されています。

     ちなみに、一部界隈では有名なASP.NET MVCのサンプルアプリ「Edtter」なんかもCodePlexにて公開されています。


    これらのサイトを徘徊し、ぜひともバニラTFSから脱却し、フレーバーTFSの世界を構築してみてください!!

  • TFS Advent Calendar Day 15~TFS 2010のバックアップとリストア~ Part 2

    TFS Advent Calendarの15日目です。
    告知サイトはこちら:http://atnd.org/events/22819

    前回、エントリーが長く(絵が大きいだけともいう)なってしまったので
    今回はリストア編をいきます。
    ※ちなみにTFSのためのSQL Serverの構造についてはTFS Advent Calendar Day 13の
     TFSにおけるSQL Serverの扱い by kkamegawa
     をご覧いただくといいと思います。

    では早速。今回もTeam Foundation Server 2010 Power Toolsを利用します。
    前回も紹介していたTeam Foundation管理コンソールに組み込まれたTeam Foundation Backupsから作業します。

    右側の方のメニューに「Restore Database」というものがあるのでここからデータベースの復元作業にとりかかりましょう。



    こちらもやはり基本的にはウィザードなので、そんなにそんなに悩むことはないとは思いますが、
    いくつかポイントを補足しながら実行していきたいと思います。

    ウィザードの最初のステップではTFS Backup Planによって作成されたバックアップデータの保存場所を指定します。
    やっぱりUNCパスで指定する必要があるので気を付けてください。
    パスを指定できたら必ず隣にある「List Backups」のリンクをクリックします。
    リンクをクリックした段階で初めて、対象フォルダ内に必要なデータがあるかの検索が行われ、
    データが見つかると下の図にあるようにバックアップデータの一覧が表示されます(図では1つしかありませんが)
    リスト内に表示された一覧から復元対象データを選択するところまでがこの画面での作業となります。



    次の画面の作業に移りましょう。
    レポーティングサービスのデータを格納するデータベースインスタンスと
    暗号化キーの復元に利用するパスワードを入力します。
    復元先データベースはバックアップ時に取得したサーバー名がデフォルト値で入っているので必要に応じて書き換えます。



    次の画面では各データベースの復元先サーバー(SQL Serverのインスタンス)を設定します。
    とはいってもやはりバックアップ取得時に設定されたものがデフォルト値で出てきていますので通常はそのままで大丈夫でしょう。
    別のサーバーに復元する場合には一個一個書き換えるようにしてください。



    設定が一通り設定するとVerifyになります。
    が、バックアップしていきなりリストアしようとすると、当然なんですが以下の画面のようなエラーが表示されます。



    通常、バックアップを使ってリストアする場合はディスクが逝ったなどとにかくデータがなくなったパターンがほとんどだと思いますので
    テストだから~ということでバックアップしていきなりリストアするとこのように
    すでに同じ名前のデータベースが存在しているよということでエラーとなってしまいます。
    もしほんとうにテストを行うのであれば、壊してもいい壊れてもいいTFSを用意したうえ
    一度、すべてのデータベースを削除しておく必要があります。

    復元先となるSQL Serverに同名のデータベースが存在していない状態でVerifyを行い、
    (場合により警告くらいはちょっとくらい無視して)復元を実行すると下記のように無事(?)に復元が完了します。


    # ちなみにテストのために多少データが入ってるTFSを利用しましたが、
    # データベースにはきっちり一度いなくなって頂きました。
    # もちろん復元後にはすべてのサービスに問題なく接続できるようになっています。


    これで無事にバックアップデータから復元を行うことができました。

    なお、実際の運用時には復元に利用したデータは削除しないようにしておいてください。
    Power Toolsのバックアップ機能を利用してプランを作成した際に、自動的に削除用のタスクも作成されています。
    保存しておきたい周期に応じてデータ削除用のタスクが自動的に古いバックアップデータを削除していきますので
    バックアップデータを保存してあるフォルダ内のファイルはいじらないことを強くお勧めします。
    ちなみにバックアップデータを手でいじってしまうとPower Toolsのバックアップ機能が正当なファイルであると認識できなくなってしまい
    復元用のデータとして利用できなくなってしまうことがあります。
  • TFS Advent Calendar Day 10~TFS 2010のバックアップとリストア~

    TFS Adevent Calendarの10日目です。
    告知サイトはこちら:http://atnd.org/events/22819

    今回は少し実用的なTFS 2010のバックアップとリストアについてざーっとまとめ記事です。
    ただし、エントリーが長くなるのでまずはバックアップから。

    TFS 2010のバックアップとリストアに関しては、バックアップ時の注意事項、
    同一サーバーに復元するパターンや異なるサーバーに復元するパターンなどと合わせて
    MSDNライブラリに詳細な記述が載っています。
    http://msdn.microsoft.com/ja-jp/library/bb552295.aspx

    しかし、かなりボリュームのある内容ですので正直読みながらやるのは結構大変です。
    端的にまとめると
    ・TFSおよび関連するサービスが利用しているデータベースは同じタイミングでまとめてバックアップ/リストアしてね
    ということになります。
    で、いざやろうと思うとやっぱり大変です。

    ということで、バックアップおよびリストアをそこそこシンプルに始めるための機能が
    Team Foundation Server 2010 Power Tools August 2011に含まれています。
    http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

    まずは上記サイトからツールをダウンロードしてきたのち、
    TFS 2010のアプリケーションサーバーになっている端末でPower Toolsのインストールを開始します。
    ※TFS 2010 Power Tools自体には多くの機能が備わっていて、もちろんTFSのクライアントとなる
      各開発者端末にもインストールすることができます。
      ただし、Backupを行うための機能についてはTFS管理コンソールにアドインされるため、
      TFSのアプリケーションサーバーになっている端末でインストールを行う必要があります。

    TFS 2010アプリケーションサーバーの端末でインストールを開始すると、
    インストールする機能を選択する画面で、以下のように「tfs backup plan」を選択することができます。


    インストールが完了したら、Team Foundation 管理コンソールを開きます。
    先ほどインストールした「backup plan」がアドインされて以下の図の左側にあるようにメニューが1つ追加されます。
    TFS環境一式のバックアップ/リストアは追加されたこの画面からすべて行うことができるようになります。


    このメニューからは主要項目として
    ・バックアッププランの作成
    ・フルバックアップの実施
    ・リストア
    を行うことができます。
    ※バックアッププラン未作成の状態では上記のような項目を選択することはできません。
      まずはプランを作成しましょう。

    ツールを使っていくためには、まずはバックアッププランを作成していきます。
    画面上で「create backup plan」を開くとウィザードが起動するので順次設定していきましょう。
    まずはバックアップデータの保存先と保存期間の設定です。
    一つポイントは保存先をローカルフォルダに設定することができません。


    次はレポーティングサービス関連データを含めるか否かです。
    含める場合はレポーティングサービスの暗号化キーもバックアップ対象とするため、キーを復元する際に利用する予定の
    パスワードを設定しておきます。
    ここでのポイントはパスワードは複雑さの要件を満たす必要があるということです。


    次は、Windows SharePoint Servicesのデータを含めるか否かです。
    TFSが依存しているすべてのWSSを対象に含めることができます。


    次にバックアップタスクを実行するためのユーザーを設定します。
    図ではNetwork Serviceを利用していますが、自分たちの環境に合わせて設定してください。
    当然のことですが、バックアップ先フォルダに対する書き込み権限を設定することをお忘れなく。


    Team Foundation Serverの通知設定を有効にしている場合は
    その設定もバックアップに含めることができます。
    通知設定を有効にしていない場合は以下の画面のように選択肢を選ぶことができません。


    最後に、スケジュールの設定を行います。
    標準では毎晩フルバックアップが選択されていますが、
    どのバックアップ形態を利用するか、どういったスケジュールでバックアップを行うかを設定することができます。


    最後にチェックが行われ、エラーがなければウィザードを進めていくことでバックアッププランの作成を行うことができます。
    バックアッププランの作成が終了した時点でReporting Servicesの暗号化キーバックアップデータも完成しているので、
    復元の際に利用することができます。

    プランの作成が終わって、Team Foundation 管理コンソールに戻ると
    先に示したようにフルバックアップを実施したり、リストアを行ったりといったことができるようになっています。
    バックアップが必要になった時に利用してみましょう。

    なお、このバックアッププラン作成ウィザードで作成したプランはWindowsのタスクスケジューラに登録されています。
    実行時間や間隔などを微調整したい場合にはそちらから編集してしまうことも可能となっています。


続きを見る 次のページ »

投稿カレンダー

<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

検索

Go

購読

SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems