qiitaの作り方 〜incrementsのチーム開発とプロダクトマネージメント〜

48
Qiitaの作り方 Incrementsのチーム開発とプロダクトマネージメント〜 Increments株式会社 プロダクトマネージャー及川 卓也 ([email protected])

Upload: takuya-oikawa

Post on 16-Apr-2017

3.650 views

Category:

Software


0 download

TRANSCRIPT

Qiitaの作り方〜Incrementsのチーム開発とプロダクトマネージメント〜

Increments株式会社

プロダクトマネージャー及川 卓也 ([email protected])

氏名 及川卓也

メール [email protected]

Twitter @takoratta

Facebook takoratta

Qiita takoratta

GitHub takoratta

経歴 DEC → Microsoft → Google → Increments

先日、Oracleのイベントに参加しました。

「DEC時代はデータベースで競合していたし、マイクロソフトはSQL Serverでオラクルとバチバチやってた。グーグルなら関係ないかと思いきや、数年前から裁判し始めてしまった(笑)。そんな私がオラクルのこういう場所に立てて、とても光栄」と語り、会場を沸かす及川氏。

「DEC時代はデータベースで競合していたし、マイクロソフトはSQL Serverでオラクルとバチバチやってた。グーグルなら関係ないかと思いきや、数年前から裁判し始めてしまった(笑)。そんな私がオラクルのこういう場所に立てて、とても光栄」と語り、会場を沸かす及川氏。

IBMはもっと縁が薄いです �

IBMなんて考えもしなかった

すみません

Agenda - QiitaとQiita:Team- Incrementsのチーム開発

QiitaとQiita:Team

Increments

「ソフトウェア開発をよくすることで

世界の進化を加速させる」

プログラマのための技術情報共有サービス

ドキュメントを軸としたコラボレーションサービス

プログラミングのメモやスニペットの記録に最適なアプリケーション

Kobito

知見を共有しスキルを高めることができるプログラミングに特化したオープンな情報共有コミュニティ

かんたんにわかりやすく書ける

タグやストックで見たい記事がみつかる

編集リスエストで知恵を分けあえる

シンプルで使いやすい専用エディタ

知見を共有しスキルを高めることができるプログラミングに特化したオープンな情報共有コミュニティ

かんたんにわかりやすく書ける

タグやストックで見たい記事がみつかる

編集リスエストで知恵を分けあえる

シンプルで使いやすい専用エディタ

編集リクエスト

GitHubのPR (Pull Request) のように、変更を直接行い、それを提案として、作者に送ることが出来る。

作者は送られた編集リクエストを差分の形でレビューすることができ、内容を確認の後、採用・不採用を決める。

採用された編集リクエストより、その後に付与されたストック数の相分のContributionを得ることができる。

ContributionContributionとは

Contribution (コントリビューション ) とは貢献度を

意味し、投稿した記事がストックがされることや編

集リクエストが受け入れられた記事がその後ス

トックされることで数値が上がっていきます。編集

リクエストによる貢献は投稿した記事の貢献の 10

分の1とし、10を最大としています。

かんたん・気軽に書ける、チームを強くする為の社内向け情報共有サービス

導入企業一覧

Incrementsのチーム開発

私たちが大切にしていること作業は意識的に自動化する

Incrementsでは様々なレイヤーで自動化を推し進めています。

自動化できる作業は自動化することで、ユーザーヒアリングや設

計など自動化できない創造的な仕事により多くの時間を充てら

れるようにしています。また自動化して作業がコード化されると、

作業内容が可視化されるため作業フローを改善しやすくなりま

す。効率化のための改善は継続的に行っています。

重要な価値に集中する

Incrementsは「本当に必要かどうか」を考えることをとても大事

にしています。リーン・スタートアップを元とした開発フローを構築

しており、実装する前に価値仮説を立てて、提供したい価値や解

決したい課題を明確にすることに時間をかけています。またユー

ザーヒアリングを非常に大事にしています。エンジニアでも直接

ユーザーからフィードバックを受ける機会が多いので、自分の考

えだけに寄らずユーザーのニーズに沿った開発を無駄なく行え

ます。そのため、エンジニアでもユーザー体験を重要視していま

す。

情報共有で属人性を減らす

ミーティングの議事録はもちろん、口頭で話したようなことも価値

がありそうならばQiita:Teamへすべてきちんと残し、特定の人達

しか知らないという状況を防いでいます。困ったことはデイリース

クラム(朝会)や日報などでこまめに共有、チームみんなで解決し

ていくことを徹底している環境です。

HRTを大切にしたコミュニケーション

HRTとは「Team Geek ―Googleのギークたちは

いかにしてチームを作るのか」という本にある考

え方で、Humility(謙遜)、Respect(尊敬)、Trust(信頼)の3つを意味しています。「驕り高ぶら

ないようにしよう」「相手を尊敬しよう」「人を信頼

してまかせよう」といった HRTの概念を意識する

ことで、コミュニケーションの衝突が避けられるよ

うになりました。また導入した結果、元々気をつ

けている文化だったことに気づくことができまし

た。

自動化

開発フローはすでに一般的となったGitHubのPull Requestを用

いた手法

各レポジトリのmasterブランチから分岐して実装し、実装終了後

にGitHubでPull Requestを投げて、Circle CIによるCIを走らせる

とともに、他のエンジニアにコードレビューしてもらい、コードレ

ビューとCIが無事終了したならば、masterブランチにマージしてデ

プロイ

テスト

Circle CIが走る際に自動的にテストが実行される。

● Linterによる文法チェック(静的コード解析)

○ Linterによる文法チェックはYAMLとSCSS、Rubyに対して

行われるようになっている。SCSSはscss-lintをRubyはRubocopを使っている。

● RSpecによる機能テスト

Circle.ymlからの抜粋

test: override: - bash script/circleci/lint_yaml.sh - bash script/circleci/lint_scss.sh: parallel: true files: - app/assets/stylesheets/**/*.scss - bash script/circleci/lint_ruby.sh: parallel: true files: - app/**/*.rb - lib/**/*.rb - spec/**/*.rb - bash script/circleci/test_rails.sh: parallel: true files: - spec/**/*_spec.rb - bash script/circleci/test_javascript.sh

bundle update

Gemパッケージの更新をCIに組み込む。

● Circle CIのNightly Buildsの機能を利用。

○ 外部から環境変数を設定した上で、特定のブ

ランチのビルドを行う

○ 環境変数BUNDLE_UPDATEがtrueのときに

bundle updateが起動される

○ そのスクリプトをcronで毎日実行

Circle.ymlからの抜粋

test: post: - > if [ -n "${BUNDLE_UPDATE}" -a "${CIRCLE_BRANCH}" = 'master' ] ; then bundle update fi

Cronサーバー

Circle CI

masterブランチのサーバー

GitHub

スクリプト実行でCircle CIを起動

環境変数BUNDLE_UPDATEを付加してCIを実行

$ bundle update

git pushおよびPull Requestの作成

hook

CI

ChatOpsチャットサービス上で

● 開発チームの情報を集約

● 高機能Botにより各種自動化ツールを操作

Qiitan

c.f ) Ruby製HubotクローンのRubotyをSlackで動かす - Qiita

Qiitan 画像検索

注)GoogleのAPIの変更で現在動作しなくなってしまった orz

Qiitan 天気予報

渋谷ランチ情報

rubyコード実行

Qiitan 掃除時間と当番の割り当ての通知

Qiitan GitHubへのIssue登録

Deploy & Mergeリクエスト

Qiitan#from_twitterでQiitaについてのツイートを収集

なんでも自動化&省力化

例)某勤怠管理サービスを導入 → 勤怠(出社および

退勤)を入力するWebシステムがイケてない(良くあ

る)→ ブラウザとWeb間の通信を解析 → Qiitanで入力可能に

情報共有

チャットを通じて、ハイコンテキストな環境を作り出す。

暗黙知を形式知として書き出す。

チーム編成

PM

Sales

PR

Mktg

ENG

QA

Legal

Support PM プログラマー(ENG)

デザイナー

注)Incrementsはまだ社員19名の会社です。

PM ENG● What● When● Why

● How

IncrementsのProduct Management

PM×2

● 及川: Qiita● 海野(CEO): Qiita:Team

○ しゃちょ〜 がPMやってちゃいけないので、Qiita:Teamの

PMを大募集中!

PM Job Description

PRD (Product Requirements Document)

OKR (Objectives and Key Results)

KPIツリー

おまけ本当はやりたかったこと

IBMのことを悪く言っていた過去を懺悔するつもりで

RubotyをBluemixで動かそうとしました

http://qiita.com/takoratta/private/0c941a1ce2e9a660d093

心意気だけでも買ってください

WE ARE HIRING!

世界の進化を加速させるために!

みんながかんたんに始めることができ、世界にインパクトを与えられること。

私たちは、ソフトウェア開発をよくすることで、よりよい世界が実現するまでの時間を大

幅に短縮することを目指しています。私たちといっしょに未来をつくりましょう。

http://increments.co.jp/jobs

Thank You!http://qiita.com