ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja es nb ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja es ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja en ja ja en ja ja vi ja sv eu ja en en hu ja ja en en pl ja ja jbo hbs_lat en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja
SEゼミ2015 - OSS Hack 4 Beginnersを開催 #sezemi - 2015-07-02 - ククログ
手順をやっているところを見せる
実際に手順をやってみる
手順をやるときはそばでメンターがサポートをする
手順をやるときは失敗しても大丈夫なOSSに対してやる
「1.」と「2.」は「選択肢を減らす」方針の実装です。1.で手順を伝え、2.で見本を見せ、「これを真似すればよい」ようにします。
「3.」の箇条書き2つは「安全な環境を用意する」方針の実装です。メンターがそばでサポートするので、自分ではうまく進められていなくても軌道修正できます。失敗しても大丈夫なOSSの開発に参加するので、メンターのサポートをすり抜けて失敗してしまっても大丈夫です。なお、失敗しても大丈夫なOSSとは「メンターが開発に関わっているOSS」です。開発者がその場にいるので失敗しても大丈夫だよ、というわけです。
「3.」は「実際に経験する」方針の実装です。↑の不安を排除する施策を実施した上で実行します。
OSSの開発に参加するオススメの手順
実際に紹介したOSSの開発に参加するオススメの手順を説明します。
それは「まず動かす」ことです。開発者としてではなくユーザーとして動かします。
開発するぞ!という意気込みで着手しようとするといきなり開発者として関わりたくなるものですが、そうではなく、まずはユーザーとして関わることがオススメです。
理由は、まずユーザーとして関わることで次のことがわかるからです。(逆に言うと、次のことをわかるためにユーザーとして動かします。)
何をするソフトウェアなのか
これがわかったかどうかは「他の人に教える」ことで確認できます。他の人に何をするソフトウェアか、どうやって使うかを教えて、その人がそのソフトウェアのことをわかって使えるようになったら自分がわかっているということです。
さて、これらのことがわかるためには次のことをする必要があります。
「このOSSについて」のようなドキュメントを読む
そのOSSをインストールする
インストールしたOSSを動かしながらチュートリアルを実行する
多くのOSSでは、これらをする中でなにかしらつまづきます。
今までOSSの開発に参加していなかった人は、つまづいたら次のような行動をとります。
Webを検索して解決策を見つけて解決し、先に進む
OSSの開発に参加するオススメの手順では違う行動をとります。つまづいたところをメモに残します。(今回のイベントではGitHubのissueを使いました。つまづいたところ1つに対して1つのissueです。)
メモに残すことは「直す」あるいは「報告する」ためです。「直す」も「報告する」もOSSの開発に参加していることになります。つまり、自分がつまづいたところを「OSSの開発に参加するチャンス!」だと捉えて行動するということです。これまで「OSSの開発に参加するきっかけなんてないよ…」と思っていた人も、見方を変えるだけで実はきっかけはたくさんあったことに気づきます。
グチったり、使うことをやめたり、回避策を見つけて先に進む代わりに、「次の人が同じようにつまづかないように」します。それが「直す」あるいは「報告する」です。
この時点では「直す・報告する」対象はコードではなくドキュメントのことが多いでしょう。それでいいのです。ドキュメントの改良も大事なOSSの開発です。ドキュメントの書き方でつまづかなくなる人がいるのですから。自分のちょっとした行動で、次の人がつまづかなくなるってステキなことじゃないですか。
一通り動かして、このOSSのことがわかったら、溜まっていたメモを元にupstream(開発元)にフィードバックします。
フィードバック方法については、次のような例を示し、個別のケースについてはメンターのみなさんにお任せしました。(もっと具体的な手順を示した方がよかったかもしれない。)
フィードバック時には次の情報を含める(「バグレポートに必要な情報」が指標)
実際の結果はどうだったか
↑の情報をまとめるときは次の手順でまとめる
まずは自分がわかるようにまとめる
自分がわかるようにまとめたものを、開発者に伝わるようにまとめる(開発者にとってリーダブルなようにまとめる)
なお、オススメの手順を説明した資料は次の資料です。
SEゼミ2015 - OSS Hack 4 Beginners - OSS開発手順
ほとんどの参加者が漠然とした不安を払拭できたようです。(イベントの最後に全員に挙手してもらって確認しました。)
この内容は今回のイベントのために考え、初めて実行したものです。今回の結果だけを考慮しただけですが、「漠然とした不安」を解消するやり方として、「オススメの手順を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ページを見てみてください。
SEゼミ、HackOSS 4 Beginnersのフォロワー参戦 - jfluteの日記
Workshop for OSS Hack Weekendにメンターとして参加しています | ビズリーチラボ
Satoryu's Diary(OpenShift支店)(2015-06-27)
現在クリアコードではソフトウェア開発者を募集しています! フリーソフトウェア開発での開発の仕方をベースに、成果や知識を公開し共有しながら業務に携われます。
WerckerのDockerバックエンドを使ってCentOS向けCIをするには
自己流JavaScriptを書いていた人がAngularJSのユニットテストで躓いた点
Apache Arrow
milter manager
ククログの記事はCC BY-SA 4.0とGFDLのデュアルライセンスで自由に利用できます。
クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。
クリアコードは「クリアコードをいい感じにする人」を1名募集しています。
クリアコードはフリーソフトウェア開発で培った技術力を提供しています。特にMozilla製品(Mozilla FirefoxとMozilla Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。