070829 intra-sns case-study

50
社内SNS開発 - 事例紹介 チーム開発は【コミュニケーション】がキモ! 第4回エンジニア交流勉強会「gungiテーマ:「イントラHacksTIS株式会社 日本XPユーザグループ 倉貫義人 2007/08/29 kuranuki_at_gmail.com

Upload: yoshihito-kuranuki

Post on 01-Jul-2015

3.584 views

Category:

Documents


0 download

DESCRIPTION

第4回エンジニア交流勉強会「gungi」資料

TRANSCRIPT

Page 1: 070829 intra-SNS case-study

社内SNS開発 - 事例紹介

チーム開発は【コミュニケーション】がキモ!

第4回エンジニア交流勉強会「gungi」

テーマ:「イントラHacks」

TIS株式会社日本XPユーザグループ

倉貫義人

2007/08/29 kuranuki_at_gmail.com

Page 2: 070829 intra-SNS case-study

はじめに

私たちの目指す開発とは・・・

ユーザに   品質の高いアプリケーションを                 常に提供できる

開発者たちが    プログラミングを中心に                楽しく開発できる

Page 3: 070829 intra-SNS case-study

品質の高い?常に?

ユーザに   品質の高いアプリケーションを                 常に提供できる

バグが少ない保守しやすい

Web2.0 → Software as a Service1度リリースしておしまい、ではない

Page 4: 070829 intra-SNS case-study

プログラミング?楽しく?

開発者たちが    プログラミングを中心に                楽しく開発できる

エンジニアの本懐動くソフトウェアが重要

作業がクリエイティブであることプロジェクトを通じて成長できること

Page 5: 070829 intra-SNS case-study

しかも・・・

ユーザに   品質の高いアプリケーションを                 常に提供できる

開発者たちが    プログラミングを中心に                楽しく開発できる

チームで開発

Page 6: 070829 intra-SNS case-study

そのためには

Page 7: 070829 intra-SNS case-study

コミュニケーション重要

Page 8: 070829 intra-SNS case-study

なぜ?

Page 9: 070829 intra-SNS case-study

ソフトウェアはコミュニケーションで

できているから

Page 10: 070829 intra-SNS case-study

コミュニケーションは多ければ多いほど

良い

Page 11: 070829 intra-SNS case-study

・・・わけではない

Page 12: 070829 intra-SNS case-study

無駄の無い効率的な

コミュニケーション

Page 13: 070829 intra-SNS case-study

ただし

Page 14: 070829 intra-SNS case-study

共有したいのは「情報」

だけ・・・ではない

Page 15: 070829 intra-SNS case-study

思いや感情、チームの目標、考え方、理念

Page 16: 070829 intra-SNS case-study

全部ひっくるめて共有したい

Page 17: 070829 intra-SNS case-study

コミュニケーション重要

Page 18: 070829 intra-SNS case-study

どうやってコミュニケーション

していくか重要

Page 19: 070829 intra-SNS case-study

ということで・・・

今日ご紹介するのは、ソフトウェア・サービス開発時の

コミュニケーションについて

どのように実践してきたか、という・・・

私たちの事例です。

Page 20: 070829 intra-SNS case-study

事例

• 社内SNSの開発・運用

• SNSの特徴– 企業ユースに特化

• 全文検索機能• 社員ブックマーク機能• イベント管理機能• 質問回答機能 ….etc

• 開発・運用の特徴– ゼロからスクラッチで開発(当初2人)

– 開発者自身が、業務運用・システム運用を担当– ユーザニーズに応じた機能改修と定期的なリリース

• 開発のゴールは、システムの完成ではないため

Page 21: 070829 intra-SNS case-study

社内SNS導入の経緯

SNS

経営からのミッション・技術情報の共有による業務効率化・社内の有識者の有効活用

現場技術者の思い・部門を超えたコミュニケーションの実現・個人で情報を発信できる場の存在

外部環境の変化・W eb2.0の流行の兆し(05年当時)

・CGMによるデータ生成の仕組み

ツールの選択・個人ごとに書き込みができる(ブログ)・利用者のプロフィールが見える

Page 22: 070829 intra-SNS case-study

運用状況

利用者数: 約1593名総記事数: 約13213件アクティブユーザ: 約700名 (10日間以内にアクセスしたことがある人)

2005年12月15日:運用開始利用者は口コミにより順次拡大

(2007/8/28)

Page 23: 070829 intra-SNS case-study

ミドルウェア構成図

FastCGIDevelopment Kit

Subversion

MySQL

Google Search Appliance

<Client/ブラウザ>

Lighttpd

mod_fastcgi

Webサーバ

RubyGems

Railsruby-fcgi ruby-ldap

Ruby

mysql-ruby

Apache2.2

Reverse Proxy / Load Balancer

mod_proxy

mod_proxy_balancer

mod_ssl

SWIG

Nagios

MRTG

監視ツール

全社統合メールサーバ

全社ドメインコントローラ

Proxyサーバ

Ruby on Rails

OpenSSL

Webアプリケーション層

Webサーバ層

データベース層

社内連携システム

Page 24: 070829 intra-SNS case-study

主要採用技術

Ruby on Rails

Page 25: 070829 intra-SNS case-study

Railsといえば・・・

設定より規約convention over configuration

Page 26: 070829 intra-SNS case-study

重要なポイント

チームにおける約束事(規約)は

コミュニケーションにとても有効

Page 27: 070829 intra-SNS case-study

開発体制

倉貫(サービスマネージャ+プログラマ)

• プログラマ(設計&プログラミング)・・・全工程を担当• 開発・システム運用・サイト運営・・・全業務を担当

アプリケーション インフラ

OJT

Page 28: 070829 intra-SNS case-study

コミュニケーションと体制

参加する人数は少なければ少ないほど

コミュニケーションのロスが少ない

Page 29: 070829 intra-SNS case-study

コミュニケーションと工程

作業の工程は少なければ少ないほど

コミュニケーションのロスが少ない

Page 30: 070829 intra-SNS case-study

会議

• 定例–朝会(スタンドアップMTG) ・・・毎朝15分–週計画&振り返り ・・・毎週1.5時間

• あとは必要に応じて個別実施

無駄な会議はしない参加者は必要な人だけ

Page 31: 070829 intra-SNS case-study

ふりかえり

• 週に1度実施

• Keep / Problem / Tryで共有– よかったこと / 問題点 / 次にやってみること

Page 32: 070829 intra-SNS case-study

ふりかえりをすることで

個人の持つよかったノウハウや抱えている問題が

チームのものとなっていく

Page 33: 070829 intra-SNS case-study

ファシリテーターがいると良い

• 会議をスムーズに進行• 参加者の会議への参加を促す

マネージャの負荷軽減

チームの潤滑油

投資効果の評価が難しい

Page 34: 070829 intra-SNS case-study

開発環境

開発者A(自前PC利用)

   D ebian (Linux)

X en

・・・・・・・(仮想的に複数存在する)

開発者ごとの仮想OS

D ebian

Ruby MySQ L

Rails

MyA pp Emacs

D ebian (Linux)

Subversion

redM ine

W indows

putty

W indows

D ebian

Ruby MySQ L

Rails

MyApp Emacs

VMW are Player putty

開発者B(シンクライアント利用)

IE / FF IE / FF

ソースコードのアップデート・コミット

ソースコードのアップデート・コミット

ターミナルでログイン

ブラウザで動作確認

開発用サーバリポジトリサーバ

連携

Page 35: 070829 intra-SNS case-study

ソースコードの共有

• 個人ごとにソースコードを管理しない• 全員がソースコードの変更点を知れるように

プログラム・ライブラリの前提を共有できる

リリースまでの情報共有を減らせる

and を活用svkSubversion

Page 36: 070829 intra-SNS case-study

開発環境の共有

• 本番環境と開発環境をそろえる• プログラマ同士の開発環境をそろえる

問題発生時の前提を共有できる

新しいプログラマーとも前提を共有できる

X enVMW are Player or を活用

Page 37: 070829 intra-SNS case-study

具体的に使っている環境

• VMWarePlayer 2.0– Debian– Emacs << rails.el + psvn.el …– screen + zsh– Ruby on Rails– MySQL

• putty

Page 38: 070829 intra-SNS case-study

タスク・不具合の共有

• すべての作業を予定と記録として残す• いつでも進捗状況を誰でも把握できるように

進捗の打ち合わせ時間を短くできる

誰が関係者かの前提を共有できる

or を活用TracredMine

Page 39: 070829 intra-SNS case-study

redMineて?

• Tracに似たプロジェクト管理ツール– 課題・不具合・タスク管理

– Wiki– Subversionとの連携

• Ruby on Railsで作られている(オープンソース)

• 複数プロジェクトを管理できる• ガントチャートで表示できる

http://gihyo.jp/dev/serial/01/redminehttp://groups.google.com/group/redmine-users-ja

参考URL

Page 40: 070829 intra-SNS case-study

その他の情報共有

• RSSリーダー– redMine(かTrac)の出力するタイムラインを取得

– チームで起きたことのすべてをRSSで読める

• SNSのグループ機能– グループの掲示板機能を利用して情報共有– メーリングリストは使わない →情報の一元管理– 「ドッグフードを食べる」意味もある

• SNSのブログ機能– 日報がわりのブログを投稿する

Page 41: 070829 intra-SNS case-study

開発環境

開発者A(自前PC利用)

   D ebian (Linux)

X en

・・・・・・・(仮想的に複数存在する)

開発者ごとの仮想OS

D ebian

Ruby MySQ L

Rails

MyA pp Emacs

D ebian (Linux)

Subversion

redM ine

W indows

putty

W indows

D ebian

Ruby MySQ L

Rails

MyApp Emacs

VMW are Player putty

開発者B(シンクライアント利用)

IE / FF IE / FF

ソースコードのアップデート・コミット

ソースコードのアップデート・コミット

ターミナルでログイン

ブラウザで動作確認

開発用サーバリポジトリサーバ

連携

Page 42: 070829 intra-SNS case-study

ツールとコミュニケーション

ツールを使って知識の前提を揃えることで

普段のコミュニケーションの

質が向上する

Page 43: 070829 intra-SNS case-study

ペアプログラミング

二人で一緒に開発

ディスプレイを用意すると便利

詳細設計も同時に行う

新人に一人で作業させない(重要でない仕事は無いのだから)

Page 44: 070829 intra-SNS case-study

ペアプログラミングとコミュニケーション

• 常時コードレビューを実施している状態• ソースコードを理解している人間をクラスタ

ドキュメントによるコミュニケーションを減らす

引継ぎ・不在時のための情報共有を減らす

Page 45: 070829 intra-SNS case-study

コードレビュー&リファクタリング

「人月の神話」(外科手術チーム)

チーフプログラマと助手

外部設計(仕様)も同時に行う

Page 46: 070829 intra-SNS case-study

ツールとコミュニケーション

ドキュメントによるコミュニケーションは

コストパフォーマンスが悪い人で補完人を補完

Page 47: 070829 intra-SNS case-study

さいごに

Page 48: 070829 intra-SNS case-study

今日お話したことは・・・

• XPと呼ばれる【開発の進め方】の一部です– XP = eXtreme Programming

Page 49: 070829 intra-SNS case-study

今年もXP祭り開催します!

http://www.xpjug.org/http://jucalion.s66.xrea.com/xpjug2/modules/eguide/

XP祭り2007 ~XPブートキャンプだ!~

9月1日(土曜) 10:00開場 10:30開演

於 江戸川区総合文化センターhttp://edogawa-bunkacenter.jp/

JR※ 新小岩駅からバス、または徒歩だと16分です。

   参加費 無料!!

• Agile2007レポート by 平鍋健児 • Rubyistドリームチームによるライブアジャイル開発• 事例紹介• 体験トラック• チュートリアル• ライトニングトークス   …etc

Page 50: 070829 intra-SNS case-study

ありがとうございました

TIS株式会社日本XPユーザグループ

倉貫義人

kuranuki_at_gmail.com

それと・・・Railsプログラマ探してます

今日紹介したようなプロジェクトで一緒に仕事してみませんか?