株式会社クリアコード > ククログ

ククログ

«WerckerのDockerバックエンドを使ってCentOS向けCIをするには 最新 自己流JavaScriptを書いていた人がAngularJSのユニットテストで躓いた点»
タグ:

SEゼミ2015 - OSS Hack 4 Beginnersを開催 #sezemi

2015-06-27にOSS開発参加未経験学生向けOSS開発イベントであるOSS Hack 4 Beginnersを開催しました。このイベントについて、内容を作った立場からどうしてこのような内容にしたのかについて紹介します。また、今回の内容の課題と今後の解決案についてもまとめます。

目標

このイベントの目標は「OSS開発参加への不安を取りのぞくこと」にしました。参加者から不安が取りのぞかれていれば目標達成ということです。

この目標にした理由は、学生から「OSSの開発に参加したい気持ちはあるけど、漠然とした不安があって行動に移せていない」という声を聞いたからです。実際、イベントに参加した学生も同様の理由でOSSの開発の参加に至っていないということでした。

OSSの開発に参加することが当たり前の人視点では「とりあえず手を動かせばいいのに」と考えてしまいます。そのため、OSSの開発の参加に至っていない理由が前述の理由だということには思いもよりませんでした。勉強になりました。

OSSの開発に限らず、「漠然とした不安」で行動に移せていないケースは他にもあるのかもしれません。

内容の方針

「漠然とした不安」を取りのぞくため、次の方針の内容にしました。

  • 選択肢を減らす
  • 安全な環境を用意する
  • 実際に経験する

選択肢を減らす、特に、選択肢をオススメのもの1つにすることにより、「間違った選択肢を選んでしまう」という不安を排除し、正しい方向へ進んでいる感を与えます。選択肢がなくなった部分に関して自分で考えることが減ってしまうというデメリットがありますが、それは不安が解消し、余裕をもって行動できるようになってからでよいと割りきります。

なお、選択肢を減らすという方針はpixivこしばさんからのリーダブルコード勉強会へのフィードバックが元になっています。ありがとうございます。

安全な環境を用意するのは「うまくいかなくても大丈夫感」を与えて不安を排除するためです。選択肢を減らすのは「うまくいっている感」を与えて不安を排除するためでしたが、逆方向からも不安を排除するということです。

上述のように最初の1歩の敷居をさげ、実際に経験します。実際に経験することで、よくわからない「OSSの開発に参加」というものが具体的なものになります。具体的なものになれば、「漠然とした不安」は「心配することではなかった」と「具体的な困っていること」になります。「具体的な困っていること」は個別に具体的な対策を立てて解消できます。

内容

この方針を元に次の内容にしました。

  1. オススメの手順を「1つだけ」伝える
  2. 手順をやっているところを見せる
  3. 実際に手順をやってみる
    • 手順をやるときはそばでメンターがサポートをする
    • 手順をやるときは失敗しても大丈夫なOSSに対してやる

「1.」と「2.」は「選択肢を減らす」方針の実装です。1.で手順を伝え、2.で見本を見せ、「これを真似すればよい」ようにします。

「3.」の箇条書き2つは「安全な環境を用意する」方針の実装です。メンターがそばでサポートするので、自分ではうまく進められていなくても軌道修正できます。失敗しても大丈夫なOSSの開発に参加するので、メンターのサポートをすり抜けて失敗してしまっても大丈夫です。なお、失敗しても大丈夫なOSSとは「メンターが開発に関わっているOSS」です。開発者がその場にいるので失敗しても大丈夫だよ、というわけです。

「3.」は「実際に経験する」方針の実装です。↑の不安を排除する施策を実施した上で実行します。

OSSの開発に参加するオススメの手順

実際に紹介したOSSの開発に参加するオススメの手順を説明します。

それは「まず動かす」ことです。開発者としてではなくユーザーとして動かします。

開発するぞ!という意気込みで着手しようとするといきなり開発者として関わりたくなるものですが、そうではなく、まずはユーザーとして関わることがオススメです。

理由は、まずユーザーとして関わることで次のことがわかるからです。(逆に言うと、次のことをわかるためにユーザーとして動かします。)

  • 何をするソフトウェアなのか
  • どうやって使うか

これがわかったかどうかは「他の人に教える」ことで確認できます。他の人に何をするソフトウェアか、どうやって使うかを教えて、その人がそのソフトウェアのことをわかって使えるようになったら自分がわかっているということです。

さて、これらのことがわかるためには次のことをする必要があります。

  1. 「このOSSについて」のようなドキュメントを読む
  2. そのOSSをインストールする
  3. インストールしたOSSを動かしながらチュートリアルを実行する

多くのOSSでは、これらをする中でなにかしらつまづきます。

今までOSSの開発に参加していなかった人は、つまづいたら次のような行動をとります。

  • グチる
  • 使うことをやめる
  • Webを検索して解決策を見つけて解決し、先に進む

OSSの開発に参加するオススメの手順では違う行動をとります。つまづいたところをメモに残します。(今回のイベントではGitHubのissueを使いました。つまづいたところ1つに対して1つのissueです。)

メモに残すことは「直す」あるいは「報告する」ためです。「直す」も「報告する」もOSSの開発に参加していることになります。つまり、自分がつまづいたところを「OSSの開発に参加するチャンス!」だと捉えて行動するということです。これまで「OSSの開発に参加するきっかけなんてないよ…」と思っていた人も、見方を変えるだけで実はきっかけはたくさんあったことに気づきます。

グチったり、使うことをやめたり、回避策を見つけて先に進む代わりに、「次の人が同じようにつまづかないように」します。それが「直す」あるいは「報告する」です。

この時点では「直す・報告する」対象はコードではなくドキュメントのことが多いでしょう。それでいいのです。ドキュメントの改良も大事なOSSの開発です。ドキュメントの書き方でつまづかなくなる人がいるのですから。自分のちょっとした行動で、次の人がつまづかなくなるってステキなことじゃないですか。

一通り動かして、このOSSのことがわかったら、溜まっていたメモを元にupstream(開発元)にフィードバックします。

フィードバック方法については、次のような例を示し、個別のケースについてはメンターのみなさんにお任せしました。(もっと具体的な手順を示した方がよかったかもしれない。)

  • フィードバック時には次の情報を含める(「バグレポートに必要な情報」が指標)
    • 何をしたか
    • 期待した結果はなにか
    • 実際の結果はどうだったか
  • ↑の情報をまとめるときは次の手順でまとめる
    1. まずは自分がわかるようにまとめる
    2. 自分がわかるようにまとめたものを、開発者に伝わるようにまとめる(開発者にとってリーダブルなようにまとめる)

なお、オススメの手順を説明した資料は次の資料です。

結果

ほとんどの参加者が漠然とした不安を払拭できたようです。(イベントの最後に全員に挙手してもらって確認しました。)

この内容は今回のイベントのために考え、初めて実行したものです。今回の結果だけを考慮しただけですが、「漠然とした不安」を解消するやり方として、「オススメの手順を1つだけ示し」、「安全だと感じれる環境」で、「実際に経験する」というのは有効なやり方と言えそうです。

機会があれば、同様のアプローチで「OSSの開発に参加する人を増やす」ことを試してみたいです。(OSSの開発に参加する人を増やしたい方はご相談ください。)

よかったこと

今回のイベントでよかったことおよび次も続けたいことをまとめます。

  • メンターが楽しそうだったこと
    • 楽しいポイントがどこだったのかはわかりませんが、楽しかったのは非常によいことです。(参加者にも「楽しんでOSSの開発に参加して欲しい」と伝えました。)
  • メンターが参加者の隣に座れるイスがあったこと
    • イスに座ってサポートするとより深くサポートできるのではないかという気がしました。
    • pixivさんが提供してくれた会場には脇にたくさんイスがあり、すぐにイスを追加できて便利でした。

課題と解決案

今回の内容は、優秀なメンターがいたから成り立っていました。そのため、同様の内容を再現することが難しいのが課題です。

また、失敗しても大丈夫なOSS(メンターが開発者なOSS)は必ずしも題材として適切ではありません。たとえば、難易度が難しいとか必要な前提知識が多すぎると適切ではありません。適切な題材となりえるOSSを用意できるかどうかということも課題です。

解決案は…今のところないです。どうするといいでしょうねぇ。

まとめ

今回初めて開催したOSS Hack 4 Beginnersについて内容を考えた立場から紹介しました。OSS Hack 4 Beginnersは続くOSS Hack Weekendのためのイベントでした。OSS Hack Weekendでのびのびと楽しくOSSの開発に参加するために漠然とした不安を解消したのです。

なお、OSS Hack WeedendはOSS Hack 4 Beginnersに参加していなくても参加できます。引き続き優秀なメンターが多数参加するので、OSSの開発に参加したそうな学生さんに教えてあげてください。OSS Hack Weekendでは学生が希望するOSSの開発に参加します。OSS Hack 4 Beginnersはイベント開催側が対象OSSを選びましたが、OSS Hack Weekendでは野生のOSSの開発に参加します。「このOSSの開発に参加してみなよ」という案を持っている方はそれも一緒に学生に教えてあげてください。

  • OSS Hack Weekend:2015-07-11と07-12の2日間開催(07-06申し込み締め切り)

今回の勉強会に参加したメンターの感想に興味のある方は次のWebページを見てみてください。

2015-07-02

«WerckerのDockerバックエンドを使ってCentOS向けCIをするには 最新 自己流JavaScriptを書いていた人がAngularJSのユニットテストで躓いた点»
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|
タグ:
RubyKaigi 2015 sponsor RubyKaigi 2015 speaker RubyKaigi 2015 committer RubyKaigi 2014 official-sponsor RubyKaigi 2014 speaker RubyKaigi 2014 committer RubyKaigi 2013 OfficialSponsor RubyKaigi 2013 Speaker RubyKaigi 2013 Committer SapporoRubyKaigi 2012 OfficialSponsor SapporoRubyKaigi 2012 Speaker RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer badge_speaker.gif RubyKaigi2010 Sponsor RubyKaigi2010 Speaker RubyKaigi2010 Committer
SapporoRubyKaigi02Sponsor
SapporoRubyKaigi02Speaker
RubyKaigi2009Sponsor
RubyKaigi2009Speaker
RubyKaigi2008Speaker