概要

: author

須藤功平

: institution

株式会社クリアコード

: content-source

SEゼミ2015 - OSS Hack Weekend

: date

2015-07-11

: allotted-time

15m

: theme

clear-code

SEゼミの立場一覧

* 参加者(みなさん)
* スポンサー
* 運営

立場別SEゼミの目的

* 参加者
  * (('wait'))OSSを開発したい!
* スポンサー
  * (('wait'))一緒に働きたい人をみつけたい!
  * (('wait'))一緒にOSSを開発するとわかりそう!
  * (('wait'))→((*参加者のOSS開発参加を支援*))
* 運営:↑をサポートしたい!

参加者のふるまい方

* 選ばれている!と気負わない
  * 目的(OSSの開発)に集中すればよい
* スポンサー
  * 本来の参加者に興味
* 仮面をかぶらない
  * 入社→ミスマッチ→お互いに不幸!\n
    (('note:仮面をかぶり続けられるならアリ'))\n
    (('note:「m_seki ロールプレイングゲーム」で検索'))

スポンサー

* たくさんいる
* 勉強会中
  * 企業は気にしない
  * 担当メンターの人から学ぶ
* ランチ・懇親会
  * 様々な企業の様々なメンターと交流
  * →今まで知らなかった((*新しい視点*))!

スポンサー(1)

* クラウドワークスさん
* エス・エム・エスさん
* 万葉さん
* スマートエデュケーションさん
* クックパッドさん

スポンサー(2)

* ビズリーチさん
* VASILYさん
* Treasure Dataさん
* ピクシブさん
* 楽天さん

スポンサー(3)

* CROOZさん
* ミラクル・リナックスさん
* フリークアウトさん
* ぐるなびさん
* Cosylabさん

トレーナー

((‘tag:center’))((‘tag:margin-bottom * 2’)) 須藤

* 運営
* 進行と全体を気にかける係
* 大学生の頃からOSSの開発に参加
  * RabbitもOSS

メンター

* 参加者のサポート係
* 現役超優秀エンジニア
* スポンサー企業または運営
* OSS開発経験者
  * →困ったり悩んだら積極的に相談

このイベントの目的

* イベント中
  * 「自分が開発に参加したい」\n
    OSSの開発に参加
* イベント後
  * 継続的に開発に参加

目的の理由

* 「やりたい!」が大事だから
  * OSSの開発で一番大切なもの
* やりたくてやる!
  * (('wait'))開発を楽しめる
  * (('wait'))継続できる
  * (('wait'))できることが増える
  * (('wait'))もっと楽しめる(('note:(!=ツラくない)'))

目的の実現方法概要

(1) 「やりたい!」OSSを選ぶ\n
    (('note:(すでに選んだ)'))
(2) サポート付きで開発に参加
    * 全体へのノウハウ提供
    * 個別にメンターフィードバック

目的の実現方法

* 全体へのノウハウ提供
  * (('wait'))朝・午後:ステージから紹介
  * (('wait'))日に数回:メンターのミニガイド
* 個別にメンターフィードバック
  * (('wait'))メンターとふりかえり
  * (('wait'))issue/pull request前最終チェック

メンターのミニガイド

* 時間:突発的
* 場所:後ろの会議スペース
* いつ:メンターが高まったら\n
  (('note:(2人以上に伝えた方がいいと判断したら)'))
* 参加者:興味ある人(('note:(アナウンスあり)'))
  * トレーナーが内容を記録→後で共有
* 例:よいコミットは?

メンターとふりかえり

* 参加者の行動に対して\n
  メンターからフィードバック
  * 「よい」を発見→継続
  * 「困っている」を発見→アドバイス
  * 未認識の「問題」発見(直そう!)
  * 次に進むべき先を示す

参加者の行動

* 自分でログを残す
  * 残すほどフィードバックが増える!
* 残し方
  * 場所:\n
    clear-code/sezemi-2015のissue
  * 1人につき1 issue→後で作る
  * コメントして追記→後でデモ

ログの内容

* 残すこと
  * 作業・思っていること・備考\n
    (('note:(作業:やる事・やっている事・やった事)'))
* 残すとき
  * 違う作業を始める・詰まった
  * issue/pull requestを出した

目的の実現方法(再掲)

* 全体へのノウハウ提供
  * 朝・午後:ステージから紹介
  * 日に数回:メンターのミニガイド
* 個別にメンターフィードバック
  * メンターとふりかえり
  * issue/pull request前最終チェック

issue/pull request前n最終チェック

* issue/pull requestを出すとき
  * メンターに最終チェックをお願い
  * 対象:全部
  * フィードバックをもらうよい機会!
  * メンターに説明→\n
    自分の中で洗練される効果あり

今日の流れ - 午前

* 10:00- 進め方の説明
* 10:30- まず動かす
* 11:45- ミニふりかえり
* 12:00- 無料ランチ\n
  (フリークアウトさん提供!)
* 13:00- スポンサーのLT

今日の流れ - 午後

* 13:30- 開発ノウハウ紹介
* 13:45- 開発(('note:(随時ミニガイド)'))
* 17:00- ふりかえり
* 17:30- まとめ・質疑応答
* 17:45- プチ懇親会

大事なこと

((‘tag:center’)) ((‘tag:x-large’)) 詰まったらn ログ

((‘tag:center’)) ((‘tag:x-large’)) ((‘wait’)) ↓n 後で直すため

詰まったらログ

* うまくいかない…
  * 文句言っちゃう?
  * 文句を言っている時間で((*直す*))?
* (('wait'))直す!(あるいは報告する)
  * OSS開発参加のチャンス!楽しもう!
  * 次の人は((*うまくいく*))

((‘note:メンターへ:うまくいかない時どう動く人と一緒に働きたい?’))

問題発見は難しい

* 修士:問題解決力を期待
* 博士:問題発見力を期待

((‘tag:center’)) ヒント

((‘wait’)) ((‘tag:center’)) 自分の困った→解決するべき問題n ↓n 詰まったらログn ((‘note:(詰まったこと == 困ったこと)’))

詰まった?問題発見?

* ググるとき詰まっていない?
  * (('wait'))Stack Overflowの情報で回避?
  * (('wait'))本体を直した方がよくない?
* 何度も使い方を調べていない?
  * (('wait'))使いにくいAPIなのかも
  * (('wait'))APIを改善した方がよくない?

午前の進め方

* まず動かす(ものすごく大事)
  * ↑は今から説明
  * ↓は↑ができれば大丈夫
* 開発用にインストール
* テストを実行

まず動かす

(1) 対象OSSを確認
(2) 対象OSSをfork
(3) 対象OSSのドキュメントを確認
    * 「ユーザー」として動かす
    * 「開発者」としてじゃない!

ユーザーとして動かす

* ドキュメントを読んで…\n
  (('note:(↓に不備があったら((*ログ*))。後で直す。)'))
  * 概要理解
  * インストール
  * チュートリアル実行など…
* このOSSがわかる!\n
  (('note:(↑が「まず動かす」で目指すところ。速く!じゃない。)'))

((‘note:メンターへ:詰まった人のフォローは、問題を代わりに解決ではなく、自分はこうやって調べる、一緒にやってみよう、でお願い’))n

わかる

* ↓の状態になっていること
  * 自分が使える
  * 他の人に説明できる

((‘wait’)) ((‘tag:center’)) 「まず動かす」でn 「わかる」状態にn ならなかったら…

わからない…

* ドキュメントが足りなかった?
  * サンプルコードを確認
  * テストコードを確認
  * パラメーターを変えながら動かす
* ↑はログポイント!

((‘note:メンターへ:こういうときは自分はどうやっている?’))n ((‘note:メンターへ:新しい視点を伝えて’))

午前の最後

* ログをもとにミニふりかえり
* 目的:
  * 今日最後のふりかえりのリハーサル
  * ログが役に立つことを実感!
  * 午後もログを書いてもらおう!

メンターとミニふりかえり

* 参加者の行動に対して\n
  メンターからフィードバック
  * 「よい」を発見→継続
  * 「困っている」を発見→アドバイス
  * 未認識の「問題」発見(直そう!)
  * 次に進むべき先を示す

午前のおさらい

* 終日:作業ログをつける
* 午前1:まず動かす(マジ大事)
  * 開発用にインストール・テスト実行
* 午前2:ミニふりかえり
  * 作業ログを使う!
* (('note:期待すること:「自分の問題」が見つかる'))
  * (('note:見つからなかったら既存のissue/pull requestから探す'))

おさらい:詰まったら…?

* うまくいかない…
  * 文句言っちゃう?
  * 文句を言っている時間で((*直す*))?
* 直す!(あるいは報告する)
  * OSS開発参加のチャンス!楽しもう!
  * 次の人は((*うまくいく*))

((‘note:メンターへ:うまくいかない時どう動く人と一緒に働きたい?’))

ヒント

* コントリビュートに上下はない
  * コード・テストの改善も大事
  * ドキュメントの改善も大事
* ((*×*))できるようになってからやる
  * やるからできるようになる!
  * できることはやる
  * できないこともチャレンジ!

大事なこと

楽しもう!

作業1

* ログ用issue作成
* clear-code/sezemi-2015
  * issue 22をコピー
  * ログの書き方は↑に書いてある

((‘tag:center’)) デモ