Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

4,880 views

Published on

2016年8月30日行われたIBM Cloud Community勉強会での講演です。

Published in: Software
  • Be the first to comment

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

  1. 1. Qiitaの作り方 〜Incrementsのチーム開発とプロダクトマネージメント〜 Increments株式会社 プロダクトマネージャー及川 卓也 (takoratta@qiita.com)
  2. 2. 氏名 及川卓也 メール takoratta@qiita.com Twitter @takoratta Facebook takoratta Qiita takoratta GitHub takoratta 経歴 DEC → Microsoft → Google → Increments
  3. 3. 先日、Oracleのイベントに 参加しました。
  4. 4. 「DEC時代はデータベースで競合していた し、マイクロソフトはSQL Serverでオラクルと バチバチやってた。グーグルなら関係ないか と思いきや、数年前から裁判し始めてしまっ た(笑)。そんな私がオラクルのこういう場所 に立てて、とても光栄」と語り、会場を沸かす 及川氏。
  5. 5. 「DEC時代はデータベースで競合していた し、マイクロソフトはSQL Serverでオラクルと バチバチやってた。グーグルなら関係ないか と思いきや、数年前から裁判し始めてしまっ た(笑)。そんな私がオラクルのこういう場所 に立てて、とても光栄」と語り、会場を沸かす 及川氏。 IBMはもっと縁が薄いです
  6. 6. IBMなんて考えもしなかった
  7. 7. すみません
  8. 8. Agenda - QiitaとQiita:Team - Incrementsのチーム開発
  9. 9. QiitaとQiita:Team
  10. 10. Increments 「ソフトウェア開発をよくすることで 世界の進化を加速させる」 プログラマのための技 術情報共有サービス ドキュメントを軸としたコ ラボレーションサービス プログラミングのメモやス ニペットの記録に最適な アプリケーション Kobito
  11. 11. 知見を共有しスキルを高めることができる プログラミングに特化したオープンな情報共有コミュニティ かんたんにわかりやすく 書ける タグやストックで 見たい記事がみつかる 編集リスエストで 知恵を分けあえる シンプルで使いやすい 専用エディタ
  12. 12. 知見を共有しスキルを高めることができる プログラミングに特化したオープンな情報共有コミュニティ かんたんにわかりやすく 書ける タグやストックで 見たい記事がみつかる 編集リスエストで 知恵を分けあえる シンプルで使いやすい 専用エディタ
  13. 13. 編集リクエスト GitHubのPR (Pull Request) のよう に、変更を直接行い、それを提案とし て、作者に送ることが出来る。 作者は送られた編集リクエストを差分 の形でレビューすることができ、内容 を確認の後、採用・不採用を決める。 採用された編集リクエストより、その 後に付与されたストック数の相分の Contributionを得ることができる。
  14. 14. Contribution Contributionとは Contribution (コントリビューション) とは貢献度を 意味し、投稿した記事がストックがされることや編 集リクエストが受け入れられた記事がその後ス トックされることで数値が上がっていきます。編集 リクエストによる貢献は投稿した記事の貢献の 10 分の1とし、10を最大としています。
  15. 15. かんたん・気軽に書ける、 チームを強くする為の社内向け情報共有サービス 導入企業一覧
  16. 16. Incrementsのチーム開発
  17. 17. 私たちが大切にしていること 作業は意識的に自動化する Incrementsでは様々なレイヤーで自動化を推し進めています。 自動化できる作業は自動化することで、ユーザーヒアリングや設 計など自動化できない創造的な仕事により多くの時間を充てら れるようにしています。また自動化して作業がコード化されると、 作業内容が可視化されるため作業フローを改善しやすくなりま す。効率化のための改善は継続的に行っています。 重要な価値に集中する Incrementsは「本当に必要かどうか」を考えることをとても大事 にしています。リーン・スタートアップを元とした開発フローを構築 しており、実装する前に価値仮説を立てて、提供したい価値や解 決したい課題を明確にすることに時間をかけています。またユー ザーヒアリングを非常に大事にしています。エンジニアでも直接 ユーザーからフィードバックを受ける機会が多いので、自分の考 えだけに寄らずユーザーのニーズに沿った開発を無駄なく行え ます。そのため、エンジニアでもユーザー体験を重要視していま す。 情報共有で属人性を減らす ミーティングの議事録はもちろん、口頭で話したようなことも価値 がありそうならば Qiita:Teamへすべてきちんと残し、特定の人達 しか知らないという状況を防いでいます。困ったことはデイリース クラム(朝会)や日報などでこまめに共有、チームみんなで解決し ていくことを徹底している環境です。 HRTを大切にしたコミュニケーション HRTとは「Team Geek ―Googleのギークたちは いかにしてチームを作るのか」という本にある考 え方で、Humility(謙遜)、Respect(尊敬)、 Trust(信頼)の3つを意味しています。「驕り高ぶら ないようにしよう」「相手を尊敬しよう」「人を信頼 してまかせよう」といった HRTの概念を意識する ことで、コミュニケーションの衝突が避けられるよ うになりました。また導入した結果、元々気をつ けている文化だったことに気づくことができまし た。
  18. 18. 自動化 開発フローはすでに一般的となったGitHubのPull Requestを用 いた手法 各レポジトリのmasterブランチから分岐して実装し、実装終了後 にGitHubでPull Requestを投げて、Circle CIによるCIを走らせる とともに、他のエンジニアにコードレビューしてもらい、コードレ ビューとCIが無事終了したならば、masterブランチにマージしてデ プロイ
  19. 19. テスト Circle CIが走る際に自動的にテストが実行される。 ● Linterによる文法チェック(静的コード解析) ○ Linterによる文法チェックはYAMLとSCSS、Rubyに対して 行われるようになっている。SCSSはscss-lintをRubyは Rubocopを使っている。 ● RSpecによる機能テスト
  20. 20. 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
  21. 21. bundle update Gemパッケージの更新をCIに組み込む。 ● Circle CIのNightly Buildsの機能を利用。 ○ 外部から環境変数を設定した上で、特定のブ ランチのビルドを行う ○ 環境変数BUNDLE_UPDATEがtrueのときに bundle updateが起動される ○ そのスクリプトをcronで毎日実行
  22. 22. Circle.ymlからの抜粋 test: post: - > if [ -n "${BUNDLE_UPDATE}" -a "${CIRCLE_BRANCH}" = 'master' ] ; then bundle update fi
  23. 23. Cron サーバー Circle CI master ブランチの サーバー GitHub スクリプト実行でCircle CIを 起動 環境変数 BUNDLE_UPDATEを付加 してCIを実行 $ bundle update git pushおよびPull Requestの作成 hook CI
  24. 24. ChatOps チャットサービス上で ● 開発チームの情報を集約 ● 高機能Botにより各種自動化ツールを操作
  25. 25. Qiitan c.f ) Ruby製HubotクローンのRubotyをSlackで動かす - Qiita
  26. 26. Qiitan 画像検索 注)GoogleのAPIの変更で現在動作しなくなってしまった orz
  27. 27. Qiitan 天気予報 渋谷ランチ情報 rubyコード実行
  28. 28. Qiitan 掃除時間と当番の割り当ての通知
  29. 29. Qiitan GitHubへのIssue登録 Deploy & Mergeリクエスト
  30. 30. Qiitan #from_twitterでQiitaについてのツイートを収集
  31. 31. なんでも自動化&省力化 例)某勤怠管理サービスを導入 → 勤怠(出社および 退勤)を入力するWebシステムがイケてない(良くあ る)→ ブラウザとWeb間の通信を解析 → Qiitanで 入力可能に
  32. 32. 情報共有 チャットを通じて、ハイコ ンテキストな環境を作り 出す。 暗黙知を形式知として書き出す。
  33. 33. チーム編成 PM Sales PR Mktg ENG QA Legal Support PM プログラマー (ENG) デザイナー 注)Incrementsはまだ社員19名の会社です。
  34. 34. PM ENG ● What ● When ● Why ● How
  35. 35. IncrementsのProduct Management PM×2 ● 及川: Qiita ● 海野(CEO): Qiita:Team ○ しゃちょ〜 がPMやってちゃいけないので、Qiita:Teamの PMを大募集中!
  36. 36. PM Job Description
  37. 37. PRD (Product Requirements Document)
  38. 38. OKR (Objectives and Key Results)
  39. 39. KPIツリー
  40. 40. おまけ 本当はやりたかったこと
  41. 41. IBMのことを悪く言っていた 過去を懺悔するつもりで
  42. 42. RubotyをBluemixで 動かそうとしました
  43. 43. http://qiita.com/takoratta/private/0c941a1ce2e9a660d093
  44. 44. 心意気だけでも買ってください
  45. 45. WE ARE HIRING! 世界の進化を加速させるために! みんながかんたんに始めることができ、世界にインパクトを与えられること。 私たちは、ソフトウェア開発をよくすることで、よりよい世界が実現するまでの時間を大 幅に短縮することを目指しています。私たちといっしょに未来をつくりましょう。 http://increments.co.jp/jobs
  46. 46. Thank You! http://qiita.com

×