クラウドソーシングな
ISSUEの作り方
hisaju
$ git issue add
ありがとうございました
ではなくて
自己紹介
サラリーマンでアドテクやったり、フリーランスでス
タートアップ手伝ってみたり、スタートアップ入ってみ
てCTOやったり、起業してみたり
• 菊本 久寿(きくもと ひさとし)
• 株式会社StartupTechnology代表取締役
• Twitter: hisaju01
• Facebook: https://www.facebook.com/hisaju
• http://hisaju.org
クラウドソーシングを使うようになった経緯
フリーランスで案件燃えたか
ら、git flow、pull request開発
でクラウドワークス出したら
人がいっぱい集まったよ!
クラウドソーシングを使うようになった経緯
その流れでクラウドワークス
さんに事例で取り上げられた
り、イベント一緒にやらせて
もらったよ!
クラウドソーシングを使うようになった経緯
StartupLabo
結果そのやり方が出来るクラ
ウドソーシングを自分で
作ったよ!
StartupLaboを利用した開発工程
クラウドマネージャー github
クラウドエンジニア
issue登録
同期
好きなissueをアサイン
pull request
レビュー
マージ
社内エンジニアと違うクラウドソーシング
社内エンジニア クラウドワーカー
使える言語、WAF
スキル
仕様の把握
稼働時間、場所
使える言語、WAF
責任
?
前提条件が
全く違う
クラウドソーシングの使い方はイメージを変える
こうじゃなくて
クラウドソーシングの使い方はイメージを変える
こう
では具体的に説明します
先ほどの前提条件を考慮
前提条件整理
• スキルが把握出来ない
– 難しいものは振らない
• 場所も時間も合わない
– コミュニケーション量を抑える
• 稼働が読めない、責任も持たせられない
– 大きく振らない
• 仕様を把握していない
– 唯一の共通コンテクスト(Railsのルール)だけで分かるよ
うに
– 細かく記載
前提条件整理
• スキルが把握出来ない
– 難しいものは振らない
• 場所も時間も合わない
– コミュニケーション量を抑える
• 稼働が読めない、責任も持たせられない
– 大きく振らない
• 仕様を把握していない
– 唯一の共通コンテクスト(Railsのルール)だけで分かるよ
うに
– 細かく記載
難しくしない
Scaffold
(rails-admin-
scaffold)
ActiveAdmin
slimerb
AngularJSJQuery
エンジニア的な欲求を捨てて
初級者でも使えるものを選択
前提条件整理
• スキルが把握出来ない
– 難しいものは振らない
• 場所も時間も合わない
– コミュニケーション量を抑える
• 稼働が読めない、責任も持たせられない
– 大きく振らない
• 仕様を把握していない
– 唯一の共通コンテクスト(Railsのルール)だけで分かるよ
うに
– 細かく記載
コミュニケーションコストを抑える
scaffold
view
Logic Design
伝えやすいもの 伝えづらいもの
そもそも振る作業をこちらに寄せる
前提条件整理
• スキルが把握出来ない
– 難しいものは振らない
• 場所も時間も合わない
– コミュニケーション量を抑える
• 稼働が読めない、責任も持たせられない
– 大きく振らない
• 仕様を把握していない
– 唯一の共通コンテクスト(Railsのルール)だけで分かるよ
うに
– 細かく記載
大きく振らない
小さく振ったほうがダメージが少ない
前提条件整理
• スキルが把握出来ない
– 難しいものは振らない
• 場所も時間も合わない
– コミュニケーション量を抑える
• 稼働が読めない、責任も持たせられない
– 大きく振らない
• 仕様を把握していない
– 唯一の共通コンテクスト(Railsのルール)だけで分かるよ
うに
– 細かく記載
Railsルールに合わせた細かいISSUEの書き方
• scaffoldをベースに管理画面など
– rails-admin-scaffoldのテンプレートを作っておく
と更に楽
– READMEにscaffoldの書き方を記載
• バリデーションはテーブル定義から読める
• 実際にプログラムを書くように説明する
ISSUEの例
• 概要
– 管理画面メニュークーポン>クーポン管理からリンクするクーポン
(coupons)の一覧、詳細、追加、編集、削除の実装をお願いします。
• テーブル定義
– https://docs.google.com/a/xxxxxxxxxxxxxxxxxxxxx
• 詳細
– クーポンの一覧、詳細、追加、編集、削除の実装をお願いします。
– フォーム
• バリデーションはテーブル定義やテーブル定義の備考を参考に設定してください。
• カテゴリはselectボックスでお願いします。
• カテゴリが2の場合のみプランのセレクトボックスが表示されるようにお願いします。
• 一覧表示項目
– ID
– カテゴリ
– クーポン名
【管理画面】クーポン管理
裏技
Rspec形式で仕様を補足する
describe "/courses/1にアクセス"
context “このページのパス名をキーにしたCookieが存在しない場合” do
it "新規訪問とみなしてページビューをカウントアップする" do
end
it "このページのパス名をキーにしたCookieを設定出来る" do
end
end
context "このページのパス名をキーにしたCookieが存在する場合” do
it "すでに訪問済のためページビューはカウントアップされない" do
end
end
context "(Timecop使って)Cookie設定後12時間経過した場合” do
it "設定したCookieがリセットされてる" do
end
it "ページビューがカウントアップされる" do
end
end
end
まとめ
• StartupLaboのやり方は、気軽にプロジェク
トに参加出来るようにするために、あえてコ
ンテクストの把握を捨てている為このような
やり方になっていますが、みなさんのチーム
では何が必要で何が必要でないかを取捨選択
し、それに合わせたISSUEの作り方をそれぞ
れ考えてみてください
ありがとうございました

クラウドソーシングなIssueの作り方