= OSS開発手順 : author 須藤功平 : institution 株式会社クリアコード : content-source SEゼミ2015 - OSS Hack 4 Beginners : date 2015-06-27 : 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さん * ミラクル・リナックスさん * フリークアウトさん * ぐるなびさん = トレーナー (('tag:center'))(('tag:margin-bottom * 2')) 須藤 * 運営 * 進行と全体を気にかける係 * 大学生の頃からOSSの開発に参加 * RabbitもOSS = メンター * 参加者のサポート係 * 現役超優秀エンジニア * スポンサー企業または運営 * OSS開発経験者 * →困ったり悩んだら積極的に相談 = このイベントの前提 * 参加者 * OSS開発に参加したい * でも参加したことはない (('wait')) (('tag:center')) ↓\n 仮説:漠然とした不安があるから = このイベントの目的 参加者の\n OSS開発参加への\n 不安を払拭 = 目的の理由 (('tag:center')) OSS Hack Weekendの準備 * ビクビクせずに済むように * このPR嫌がられないかな… * スムーズに進められるように * どこから手をつければいいんだ… * 時間だけが過ぎていく… = 不安を払拭すると… (('tag:center')) OSS Hack Weekend * ビクビクせずに済むように * このPRでいこう! * スムーズに進められるように * まずはここから着手! * その後はアレをやろう! = 参加者の目的の再確認 * SEゼミ * OSSを開発したい!(でもなんか不安 * OSS Hack 4 Beginners * OSS開発参加への不安を払拭! * →Weekendでスムーズに取り組める! = 目的の実現方法概要 (1) 手順を伝える * 知らないから不安なんじゃない? * ただし、((*1つだけ*))伝える * 不安には多くの選択肢より1つのオススメ (2) 失敗しても大丈夫なOSSで体験 * 未体験だから不安なんじゃない? * 対象OSS:メンターが関係者 = 目的の実現方法 (1) 開発参加時の手順を知る * オススメ手順を知る (2) (('wait'))手順を見る * トレーナーが手順をデモ (3) (('wait'))実践する * 参加者が実際に体験する = 開発参加時の手順 (('tag:center')) (('tag:margin-bottom')) (('tag:margin-bottom')) 途中で詰まったらメモしておく\n (('note:(後で直すため)')) * まず動かす(ものすごく大事)\n (('note:(急いで進むよりここをちゃんとできることが大事)')) * 開発用にインストール * テストを実行 = 詰まったらメモ * うまくいかない * 文句言っちゃう? * 文句を言っている時間で((*直す*))? * (('wait'))直す!(あるいは報告する) * OSS開発参加のチャンス!楽しもう! * 次の人は((*うまくいく*)) (('note:メンターへ:うまくいかない時どう動く人と一緒に働きたい?')) = メモ * forkリポジトリーのissueへ\n (('note:(forkすることは後で説明する)')) * 再現できる情報を書く\n (('note:(大事なので午後も説明する)')) * 何をした?何を期待?実際は? (('note:メンターへ:最終的に「報告をもらう人が理解できる情報」にブラッシュアップするので、雑でいいのでそのときに参考になる情報を入れるようにフォロー。自分ならどういう情報を入れる?'))\n (('note:メンターへ:バグレポートに必要な情報を想像するといいかも'))\n (('note:メンターへ:どんな報告をする人と一緒に働きたい?')) = メモ例 brewでインストールできるはずなのに失敗した (↑期待する結果) (↓なにをしたか) % brew install XXX (...コマンドの実行結果...) (↑実際の結果) XXX is not found ↑というようにパッケージがないと言われる = まず動かす (1) 対象OSSを確認 (2) 対象OSSをfork (3) 対象OSSのドキュメントを確認 * 「ユーザー」として動かす * 「開発者」としてじゃない! = ユーザーとして動かす * ドキュメントを読んで…\n (('note:(↓に不備があったら((*メモ*))。後で直す。)')) * 概要理解 * インストール * チュートリアル実行など… * このOSSがわかる!\n (('note:(↑が「まず動かす」で目指すところ。速く!じゃない。)')) (('note:メンターへ:詰まった人のフォローは、問題を代わりに解決ではなく、自分はこうやって調べる、一緒にやってみよう、でお願い'))\n (('note:メンターへ:一緒の調査経験後、どうなる人と一緒に働きたい?')) = わかる * ↓の状態になっていること * 自分が使える * 他の人に説明できる * 他の類似ツールと比較できる (('wait')) (('tag:center')) 「まず動かす」で\n 「わかる」状態に\n ならなかったら… = わからない… * ドキュメントが足りなかった? * サンプルコードを確認 * テストコードを確認 * パラメーターを変えながら動かす * ↑はメモポイント! (('note:メンターへ:こういうときは自分はどうやっている?'))\n (('note:メンターへ:新しい視点を伝えて')) = 開発参加時の手順 (('tag:center')) (('tag:margin-bottom')) (('tag:margin-bottom')) 途中で詰まったらメモしておく\n (('note:(後で直すため)')) * まず動かす(ものすごく大事)\n (('note:(急いで進むよりここをちゃんとできることが大事)')) * 開発用にインストール * テストを実行 = 開発用にインストール * ドキュメント * あり→その手順に従う * なし→メモして後で手順をPR * あるけど不備→メモして後で直す * 通常のインストールより\n 手間がかかることが多い = テストを実行 * ドキュメント * あり→その手順に従う * なし→メモして後で手順をPR * あるけど不備→メモして後で直す * テスト * なし→メモして後でPR\n (('note:(ただし、テストの仕組みづくりは難易度が高い)')) = 開発参加時の手順 (('tag:center')) (('tag:margin-bottom')) (('tag:margin-bottom')) 途中で詰まったらメモしておく\n (('note:(後で直すため)')) * まず動かす(ものすごく大事)\n (('note:(急いで進むよりここをちゃんとできることが大事)')) * 開発用にインストール * テストを実行 = 今日の流れ - 午前 * 10:00- 進め方の説明 * 11:00- まず動かす * 12:00- 無料ランチ\n (pixivさん提供!) * 13:00- スポンサーのLT = 今日の流れ - 昼下がり * 13:30- まず動かす(続き) * 15:00- フィードバックしよう = 今日の流れ - 夕方 * 17:00- まとめ * 17:10- 質疑応答 * 17:30- アンケート記入 * 18:00- 無料懇親会 = デモ = 開発参加時の手順 (('tag:center')) (('tag:margin-bottom')) (('tag:margin-bottom')) 途中で詰まったらメモしておく\n (('note:(後で直すため)')) * まず動かす(ものすごく大事) * 今日はここまででもよい * 開発用にインストール * テストを実行 (('note:メンターへ:つまづいていても答えを教えずに自分ならどこに着目して調べるかを伝えて一緒に調べて'))\n (('note:メンターへ:動いたらグループの他の人を手伝うように促して')) = 大事なこと 楽しむ! = まずユーザーとして動かす (1) 対象OSSを確認→fork (2) 対象OSSのドキュメントを確認 (('note:(↓に不備があったらforkのissueに((*メモ*))。後で直す。)')) * 概要理解・インストール・ * チュートリアル実行など… (('tag:center')) このOSSがわかる!を目指す\n (('note:(わかる = 自分が使える・他の人に説明できる)'))