OSSでコントリビューターになって、ドヤりたかったというのが、OSSを始めるきっかけでした。
しかし、今となってはどうやってドヤればいいのか分かりません。
そんなところでOSSのメリットや取り組み方、そのときにやった僕なりの工夫という順で示していきます。
OSSのここがいい!!
キャリア
OSSをやることでエンジニアのキャリアとしてプラスになります(多分)。
OSSのコントリビューターになるということは、エンジニアとしてそのバッジを胸にするということです。
そのバッジが多いほど強いやつに見られます(多分)。
ちなみに、噂によると日本人でOSSをやっている人は少ないらしいです。
英語のコミュニケーション
たいていのOSSのでは、海外のエンジニアとコミュニケーションをすることになります。
日本では英語を使うタイミングはほとんどないので、そういう機会を得られるというのは、OSSならではです。
貢献できる幸せ
アドラー心理学では、他人への貢献感が幸せに繋がるといいます。
OSSをやるというのは、世界で使われるソフトウェアの開発をするということです。
OSSにはアドラー心理学でいう、貢献感と幸せがあります。
OSSのやり方
プロジェクトを見つける
プロジェクトを見つけることからですが、一番ここが難しいのかもしれません。
まず、どう探せばいいのか分かりません。
でも、もう悩んでも仕方ないので、なにかテキトーに選んでいいです。
僕の場合は、今持っているプロジェクトでPHPMailerを使っていたので、PHPMailerを選びましました。
どう貢献するかを決める
プロジェクトにはいろいろな貢献のしかたがあります。
例えば、ドキュメントの翻訳や、バグの報告、issueの解決、とかです。
僕の場合は、プロジェクトにあったissueの中から、テストカバレッジの改善というissueを選びました。
これを選んだ理由は、2つです。
-
カバレッジのテストには、前提知識はあまり必要ない
-
テストのコンテキストを理解した上の改善ではなく、あくまでもカバレッジ優先
コミットする
あとは決まったらやるだけです。
テストのカバレッジを上げることだけに集中してやりました。
今回のissueはあくまでも、今回のissueはカバレッジの改善でした。
なので、カバレッジ優先を念頭に取り組みました。
ただ、PHPMailerは、名前の通りメールを送るものなので、メールを送ることを踏まえたテストをしないといけません。
しかし、ラッキー?なことにメールを送るのなら、このへんはテストするだろう、というところが、テストされてなかったので、まずとりあえずそこを埋めるようにしただけでも、カバレッジは上げることはできました。
また、カバレッジなので、リフレクションを使ったりしてカバレッジをあげていきました。
そもそもテストとしてどうなの?というのは確かにありますが。
カバレッジだったので(言い訳)。。。
苦労した点
TravisCIの結果と、開発環境で再現できない
開発環境で通るテストも、TravisCIでは通らなくて苦しみました。
しかし、手元でTravisの結果を再現できないのは、まああるよ、とのことでした。
この点には、そのあとコミュニケーションをとると、こんな返事がありました。
そんなもんなのね。
コーディングフォーマットが違う
僕の書いたコードは、PHPMailerのコーディングフォーマットに則っていないことで、Travisから怒られるということがありました。
これを直すのがまあ、めんどかったです。
プロジェクト毎にこういうルールがあると思うので、気をつけましょう。
よくみたら、最初に注意しているという。。。。
PR申請 → マージされる
Travisのテストが通ると、正式にPRが申請されます。
あとはレビュアーのレビューを待ちます。
そして、テスト後のレビューは特に指摘はありませんでした。
そして、このとおり。これを待ってました。
今では、僕のリポジトリにはprivateからPublicになったPHPMailerがあります。
(これはやったね。でいいすよね?)
OSSにおいて、英語がハードルに感じる人もいるかもしれませんが、そんなことありません。
僕もそんなに英語ができるワケではありません。
その証拠に、今回載せたやり取りはかなり拙い英語だったと思います。
(やり取りをしてくれたマーカスが優しかったというのもあるかもしれませんが。)
ということで、OSSはまたやろうと思います。
おまけ → 工夫した点
ここから以降は、ある意味おまけです。
怠ける僕を律するための工夫や、わからないときの対策を書いていきます。
これからOSSをする人の助けになるかもしれません。
メンタル面の工夫
-
毎日同じだけの時間をかけること
-
「スタンフォードの自分を変える教室 スタンフォード シリーズ/ケリー・マクゴニガル」では、なにかをするには意志力とあります。
僕は飽きやすい性格なので、努力を当たり前にする仕組みを作りました。
当たり前の仕組み作り
やったことではなく、やった時間でこなす
「仕事に追われない仕事術 マニャーナの法則・完全版/マーク・フォースター」では、やったことでやめると、終わったという事実が心に刻まれる、とあります。
なので、キリの良いところであえて終わらないようにしました。
キリよく終わりそうなときはあえて、手を付けるようにしました。
ハッタリ作戦
僕がやるつもりのissueで、誰かに先を越されるのは嫌だったので、先に「俺は少しできちゃっている。」みたいなハッタリを言って自分を追い込みました。
「ハッタリ」を噛まして、自分の逃げ道をなくしました。
ただ相手からしたらハッタリですらなかったかもしれませんが、自分に対してのハッタリにはなりました。
僕はこれくらいしないと、OSSを途中で諦めてしまうかもしれません。
諦めたくなかったのでハッタリをかましました。
分からないことは、聞く
当たり前ですが、分からないことは聞きました。
僕はまずgithubの使い方もよくわかっていなかったので、そこから聴きました。
それから、PRのしかたとか、わからないことはとにかく聞きました。
聞いているうちに英語でコミュニケーションするのが楽しく感じました。