070829 intra-sns case-study
DESCRIPTION
第4回エンジニア交流勉強会「gungi」資料TRANSCRIPT
![Page 1: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/1.jpg)
社内SNS開発 - 事例紹介
チーム開発は【コミュニケーション】がキモ!
第4回エンジニア交流勉強会「gungi」
テーマ:「イントラHacks」
TIS株式会社日本XPユーザグループ
倉貫義人
2007/08/29 kuranuki_at_gmail.com
![Page 2: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/2.jpg)
はじめに
私たちの目指す開発とは・・・
ユーザに 品質の高いアプリケーションを 常に提供できる
開発者たちが プログラミングを中心に 楽しく開発できる
&
![Page 3: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/3.jpg)
品質の高い?常に?
ユーザに 品質の高いアプリケーションを 常に提供できる
バグが少ない保守しやすい
Web2.0 → Software as a Service1度リリースしておしまい、ではない
![Page 4: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/4.jpg)
プログラミング?楽しく?
開発者たちが プログラミングを中心に 楽しく開発できる
エンジニアの本懐動くソフトウェアが重要
作業がクリエイティブであることプロジェクトを通じて成長できること
![Page 5: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/5.jpg)
しかも・・・
ユーザに 品質の高いアプリケーションを 常に提供できる
開発者たちが プログラミングを中心に 楽しく開発できる
チームで開発
![Page 6: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/6.jpg)
そのためには
![Page 7: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/7.jpg)
コミュニケーション重要
![Page 8: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/8.jpg)
なぜ?
![Page 9: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/9.jpg)
ソフトウェアはコミュニケーションで
できているから
![Page 10: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/10.jpg)
コミュニケーションは多ければ多いほど
良い
![Page 11: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/11.jpg)
・・・わけではない
![Page 12: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/12.jpg)
無駄の無い効率的な
コミュニケーション
![Page 13: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/13.jpg)
ただし
![Page 14: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/14.jpg)
共有したいのは「情報」
だけ・・・ではない
![Page 15: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/15.jpg)
思いや感情、チームの目標、考え方、理念
![Page 16: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/16.jpg)
全部ひっくるめて共有したい
![Page 17: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/17.jpg)
コミュニケーション重要
![Page 18: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/18.jpg)
どうやってコミュニケーション
していくか重要
![Page 19: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/19.jpg)
ということで・・・
今日ご紹介するのは、ソフトウェア・サービス開発時の
コミュニケーションについて
どのように実践してきたか、という・・・
私たちの事例です。
![Page 20: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/20.jpg)
事例
• 社内SNSの開発・運用
• SNSの特徴– 企業ユースに特化
• 全文検索機能• 社員ブックマーク機能• イベント管理機能• 質問回答機能 ….etc
• 開発・運用の特徴– ゼロからスクラッチで開発(当初2人)
– 開発者自身が、業務運用・システム運用を担当– ユーザニーズに応じた機能改修と定期的なリリース
• 開発のゴールは、システムの完成ではないため
![Page 21: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/21.jpg)
社内SNS導入の経緯
SNS
経営からのミッション・技術情報の共有による業務効率化・社内の有識者の有効活用
現場技術者の思い・部門を超えたコミュニケーションの実現・個人で情報を発信できる場の存在
外部環境の変化・W eb2.0の流行の兆し(05年当時)
・CGMによるデータ生成の仕組み
ツールの選択・個人ごとに書き込みができる(ブログ)・利用者のプロフィールが見える
![Page 22: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/22.jpg)
運用状況
利用者数: 約1593名総記事数: 約13213件アクティブユーザ: 約700名 (10日間以内にアクセスしたことがある人)
2005年12月15日:運用開始利用者は口コミにより順次拡大
(2007/8/28)
![Page 23: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/23.jpg)
ミドルウェア構成図
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](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/24.jpg)
主要採用技術
Ruby on Rails
![Page 25: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/25.jpg)
Railsといえば・・・
設定より規約convention over configuration
![Page 26: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/26.jpg)
重要なポイント
チームにおける約束事(規約)は
コミュニケーションにとても有効
![Page 27: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/27.jpg)
開発体制
倉貫(サービスマネージャ+プログラマ)
• プログラマ(設計&プログラミング)・・・全工程を担当• 開発・システム運用・サイト運営・・・全業務を担当
アプリケーション インフラ
OJT
![Page 28: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/28.jpg)
コミュニケーションと体制
参加する人数は少なければ少ないほど
コミュニケーションのロスが少ない
![Page 29: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/29.jpg)
コミュニケーションと工程
作業の工程は少なければ少ないほど
コミュニケーションのロスが少ない
![Page 30: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/30.jpg)
会議
• 定例–朝会(スタンドアップMTG) ・・・毎朝15分–週計画&振り返り ・・・毎週1.5時間
• あとは必要に応じて個別実施
無駄な会議はしない参加者は必要な人だけ
![Page 31: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/31.jpg)
ふりかえり
• 週に1度実施
• Keep / Problem / Tryで共有– よかったこと / 問題点 / 次にやってみること
![Page 32: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/32.jpg)
ふりかえりをすることで
個人の持つよかったノウハウや抱えている問題が
チームのものとなっていく
![Page 33: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/33.jpg)
ファシリテーターがいると良い
• 会議をスムーズに進行• 参加者の会議への参加を促す
マネージャの負荷軽減
チームの潤滑油
投資効果の評価が難しい
![Page 34: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/34.jpg)
開発環境
開発者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](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/35.jpg)
ソースコードの共有
• 個人ごとにソースコードを管理しない• 全員がソースコードの変更点を知れるように
プログラム・ライブラリの前提を共有できる
リリースまでの情報共有を減らせる
and を活用svkSubversion
![Page 36: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/36.jpg)
開発環境の共有
• 本番環境と開発環境をそろえる• プログラマ同士の開発環境をそろえる
問題発生時の前提を共有できる
新しいプログラマーとも前提を共有できる
X enVMW are Player or を活用
![Page 37: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/37.jpg)
具体的に使っている環境
• VMWarePlayer 2.0– Debian– Emacs << rails.el + psvn.el …– screen + zsh– Ruby on Rails– MySQL
• putty
![Page 38: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/38.jpg)
タスク・不具合の共有
• すべての作業を予定と記録として残す• いつでも進捗状況を誰でも把握できるように
進捗の打ち合わせ時間を短くできる
誰が関係者かの前提を共有できる
or を活用TracredMine
![Page 39: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/40.jpg)
その他の情報共有
• RSSリーダー– redMine(かTrac)の出力するタイムラインを取得
– チームで起きたことのすべてをRSSで読める
• SNSのグループ機能– グループの掲示板機能を利用して情報共有– メーリングリストは使わない →情報の一元管理– 「ドッグフードを食べる」意味もある
• SNSのブログ機能– 日報がわりのブログを投稿する
![Page 41: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/41.jpg)
開発環境
開発者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](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/42.jpg)
ツールとコミュニケーション
ツールを使って知識の前提を揃えることで
普段のコミュニケーションの
質が向上する
![Page 43: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/43.jpg)
ペアプログラミング
二人で一緒に開発
ディスプレイを用意すると便利
詳細設計も同時に行う
新人に一人で作業させない(重要でない仕事は無いのだから)
![Page 44: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/44.jpg)
ペアプログラミングとコミュニケーション
• 常時コードレビューを実施している状態• ソースコードを理解している人間をクラスタ
ドキュメントによるコミュニケーションを減らす
引継ぎ・不在時のための情報共有を減らす
![Page 45: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/45.jpg)
コードレビュー&リファクタリング
「人月の神話」(外科手術チーム)
チーフプログラマと助手
外部設計(仕様)も同時に行う
![Page 46: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/46.jpg)
ツールとコミュニケーション
ドキュメントによるコミュニケーションは
コストパフォーマンスが悪い人で補完人を補完
![Page 47: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/47.jpg)
さいごに
![Page 48: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/48.jpg)
今日お話したことは・・・
• XPと呼ばれる【開発の進め方】の一部です– XP = eXtreme Programming
![Page 49: 070829 intra-SNS case-study](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/49.jpg)
今年も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](https://reader034.vdocuments.site/reader034/viewer/2022052601/559398071a28ab811a8b456e/html5/thumbnails/50.jpg)
ありがとうございました
TIS株式会社日本XPユーザグループ
倉貫義人
kuranuki_at_gmail.com
それと・・・Railsプログラマ探してます
今日紹介したようなプロジェクトで一緒に仕事してみませんか?