第4回エンジニア交流勉強会「gungi」行って来た。

今回のテーマは「イントラHacks」だった。詳しい概要はタイトルのリンク先にあるので省略。大きく分けると

  • トークセッション
  • iUGの紹介 by 丹野氏
  • 事例紹介 by 倉貫氏
  • シゴタノ!forエンジニア by 大橋氏

という流れだった。最後時間押し気味で質問時間が無かったのがやや残念だった。以下詳しい内容についてのメモ(※限りなく走り書きのメモなので間違いがあるかもしれないので何か問題があれば指摘して頂けるとうれしいです。)

20070831追記

倉貫氏の資料が公開されてます。
http://d.hatena.ne.jp/kuranuki/20070830

トークセッション

TIS 倉貫氏

詳しくは事例紹介で説明があったので省略

  • QA
    • Q:どういう経緯で社内SNS開発に着手したのか?
    • A:2005年にmixiを社内に持ってくればいいんじゃないかと考えたため。
      • 2005年って着手するのがはえぇ…
    • Q:SNSが一般的なじゃない中で上長や会社をどうやって説得したのか?
    • A:SNSという名前を出さずに社内情報共有システムとして開発してしまってから、SNSという名称を出した。
    • Q:当時マイナーなRoRを採用した決め手は?
    • A:若手にまじってプログラムの勉強をやり直したかったが、いまさらJavaもないと思ったので。
ドリコム 吉川氏
  • ブログオフィスについての説明。(アーキテクチャ等の説明もあったけど一応伏せておく)
  • QA
    • Q:インストール手順やパッケージ製品ならではの苦労や乗り越える工夫は?
    • A:インストールを外部の業者でも行えるようにマニュアル化
    • A:お客様にサーバを送って貰ってインストール作業を行う
    • A:パッケージ化して配布できるようにする。
    • A:保守は、クリティカルなデータの入ったサーバを送ってもらうわけにもいかないので、往訪するなり、パッチを送るなりで対応
    • Q:どのようなきっかけでパッケージ開発をはじめたのか?
    • A:社長のカレー好きに困り果てた社員の一人がカレーいきたくないとブログに書いたことがきっかけで、社内ブログあってもいいんじゃね?みたいな流れで。
    • A:開発のきっかけは、とある社員が2週間でパッケージ化すると豪語したから。
      • 実際に2週間で最初のリリースは出来たらしい。すごいな…。
    • Q:製品をブラッシュアップさせるために社内で行ったことは?
    • A:品質面では社内でまず利用して、不具合や要望を吸い上げる
    • A:製品面では社内コンテスト等を開催して成績のよかった人に特典(トロ食べ放題とか)出したりしてる。
マイネットジャパン 松尾氏
  • Newsing 及びイントラNewsing開発についての話
  • イントラNewsingとは
    • 社内ソーシャルニュースサイト
    • タバコ部屋トークが出来るツールを目指した。
    • ウリ
      • Newsingのエッセンスを投入
      • ランキング機能で、社内でホットなニュースがすぐわかる。
      • イントラ内のファイルサーバもピックアップ対象になる。
      • 導入効果がすぐにわかる統計分析機能
トークセッション全体のQA
  • 社内向けならではの機能や工夫は?
    • 倉貫氏
      • SNSに登録時点でみんな友達
      • 社員ブクマ機能(人にタグ付け。メガネとか、06入社とか、変態とか、Javaな人とか、Railsな人とか、趣味や仕事や風貌に関連付けたタグがつくらしい。面白そう。技術系キーワードで探せばプロジェクトメンバーも見つけ易そう。)
    • 吉川氏
      • 特定の人物とかしか共有したくないクローズドブログ機能
    • 松尾氏
      • ファイルサーバのファイルもブクマできる
  • サイト(コミュ)活性化促進するために行ったシステム的な試作、運用時の工夫などある?
    • 倉貫氏
      • 自分たち自身が一番のヘビーユーザになるようにした。
      • 最初は10人とかで始めて、アクティブ率(アクティブユーザ/母数)を大きく保ちつつ(活用しそうな人から順番に)人を増やしていった。現在では8:2の法則で2割の人が積極的に活用している。10日以内のログイン率は5割くらい。
  • 社内炎上はある?
    • 倉貫氏
      • プチ炎上はあったが、運営側では我慢した。次第に収まり、ITリテラシの向上に役立ったようだ。
  • 検索機能で工夫している点はある?
    • メモが取り切れなかった…orz
  • ユーザが勝手に始めた意外な使い方や、ユニークな要望は?
    • 吉川氏
      • 意外な使い方としては、トップダウンの意思伝達にのみ使われるケースがあった。
    • 倉貫氏
      • ユニークな機能として、開発者が勝手にプレゼン機能を作ってしまった。(再生ボタン押すと、ブログが勝手にプレゼンになるらしいw)

iUGの紹介

  • 丹野氏
  • 概要
    • 会員数275
    • 企業内におけるweb2.0ツール活用を研究?
    • 年4回のカンファレンス、企業インタビュー、講演など

後でどういうコミュニティなのかちゃんと調べてみよう…。

事例紹介(倉貫氏)

チーム開発について

はじめに
  • ユーザに品質の高いアプリを常に提供する
  • 開発者たちがプログラミングを中心に楽しく開発

を両立したい。

品質高い?常に?
  • バグが少なく、保守しやすい。
  • 一度リリースしておしまい、ではない
プログラミング?楽しく?
  • エンジニアの本懐
  • 動くソフトウェアが需要
  • 作業がクリエイティブである
  • プロジェクトを通じて(エンジニアが)成長できる
しかも…(上記を)
  • チーム開発で実現しないといけない
  • コミュニケーション重要
  • なぜ?
    • ソフトウェアはコミュニケーションで出来ている
      • (ただし)多ければ多いほどいい。。。わけじゃない
    • 無駄の無い効率的コミュニケーションが必要。
    • 共有したいのは情報だけじゃない
    • 感情、目標、考え方、理念…etc…すべてを共有したい!
    • どうやってコミュニケーションを取るかが重要
そこで
  • どうやって実践したのか?を紹介
事例
  • 社内SNS開発
  • 特徴
    • 企業ユースに特化
    • 開発運用の特徴
      • クラッチから最初は二人で開発
      • 開発者自身が業務運用、システム運用担当
      • ユーザニーズに応じた機能追加と定期リリース
導入経緯
  • 経営からのミッション
  • 現場の思い
  • 外部環境の変化
  • ツールの選択
Rails

Railsの辺りはメモできず。

重要なポイント
  • チームにおける約束事(規約)はコミュニケーションにとても有効
開発体制
  • プロマネ(倉貫氏)
    • アプリケーションエンジニア3名
    • インフラ担当1名
    • OJGT2名
  • プログラマは設計&プログラミング、全工程を担当
  • 開発、システム運用、サイト運営、全業務を担当
  • コミュ体制
    • 参加する人数がすくなければ少ないほどコミュニケーションロスが少ない
    • やたら人をいれればいいというものではない
    • 作業工程は少なければ少ないほどコミュニケーションロスが少ない
    • 大きな企業ではお役所仕事すぎて何も進まない
    • 幸いにも自分たちで企画して自分たちで作るという究極の短工程だった
会議
  • 定例
    • 朝会
    • 必要に応じて個別実施
    • 無駄な会議しない
    • 参加者は必要な人のみ。不必要だと感じたら途中退席可。
ふりかえり
  • 週一回
  • Keep(よかったこと)/Probrem(問題点)/Try(次にやってみたいこと)で共有
    • 3つに縦割りにした図が出てきた。
  • ふりかえりをすることで…
    • 個人の持つノウハウや抱えている問題がチームのものとなっていく!!
  • ファシリテータがいるといい
    • 会議をスムーズに進行
    • 参加者への会議への参加を促す
開発環境
開発環境の共有
  • 本番環境と開発環境をそろえる
  • プログラマ同士の開発環境をそろえる

なぜか…?

  • 問題発生時の前提環境を共有できる
  • 新しいプログラマとも前提を共有できる
  • VMWare Player or Xenを活用
    • ベースになるディスクイメージを作っておいてSubversionとかで管理してるのかな?このへん質問したかったけど時間なくて聞けず…
  • 実際の環境
タスク、不具合の共有
  • すべての作業予定を記録として残す
  • 進捗状況をいつでも誰でも把握できるように
  • 進捗の打合せ時間短縮
  • 誰が関係者かの前提を共有
  • ツールとしてはredMine or Tracを利用
redMine
  • Tracに似てるプロジェクト管理ツール
    • 課題、不具合、タスク管理
    • Wiki機能
    • Subversion連携機能
  • RoRで作られてる
  • 複数プロジェクトを1インスタンスで管理可能
  • ガントチャートを表示できる
  • 後輩が記事書いてるらしい?もしかして、でぃべろっぱーずさいどの中の人のことかな?
その他共有
  • RSSリーダー
    • readMineの出力するタイムラインを購読することでチームで起きたことのすべてをRSSで補足
  • SNSグループ機能
  • SNSのブログ機能
    • 日報代わりのブログを投稿
ツールとコミュニケーション
  • ツールを使って知識の前提をそろえることで普段のコミュニケーションの質が向上する
ペアプロ
  • 常に二人一組で開発
  • 詳細設計も二人で
  • 新人を一人にしない
ペアプロとコミュニケーション
  • 常時ソースレビューを実施
  • ソースコードを理解している人間をクラスタ化する
  • ドキュメントによるコミュニケーションは減らす
    • ドキュメントを残さないということではない
  • 引継ぎ、不在時のための情報共有を減らす
コードレビュー、リファクタ
  • チーフプログラマと助手
  • 外部設計(仕様)も同時にやる
(再び)ツールとコミュニケーション
  • ドキュメントによるコミュはコストパフォーマンス悪すぎる。人で補完、人を補完

シゴタノ!forエンジニア

  • スピードハックスや、チームハックス(持ってます)の大橋氏によるプレゼン
  • スピード速くてメモ追いつかず…
  • 継続力という本が最近出たらしい(たぶん買う)
  • ブログを続けるコツについての話だった。

あと最後に個人的トピック

  • 倉貫氏と名刺交換させて頂けた。(いつもブログ拝見しております。ディフェンシブな開発 〜 SIビジネスの致命的欠陥に心打たれた一人ですm(_ _)m)
  • jsugjava-ja合同飲み会の時にお会いしたonkさんに再会できたw 名刺切れてたので交換できなかったのが残念。
  • XP祭り2007は諸事情により参加できることになった。諸事情の部分は一応伏せておく。
  • 倉貫氏とは初対面だったが全くSIerの香りがしないことにびっくりした。失礼を承知で書いておくと、もっとお年を召した方だt(以下自粛)。railsの人材募集中らしい。
  • マイネット・ジャパンの皆さんは熱い人が多い。
  • Award On Rails 2007のTシャツホスィ
  • (一応9月末までは)現職の他部署の方がいらっしゃったようだが、正直名前覚えてなくて気まずい感じだった…。
  • 懇親会で微妙にPython温泉を宣伝してみた。