気軽に楽しくOSSに貢献しようと言うお話。
OSSとは?
さて、いかにも楽しそうなタイトルで始まったnoteですが、みなさんOSSとはなにか分かりますでしょうか?
技術職ではない方向けに軽く説明をすると
OSSとは、オープンソースの概念に基づき、ソフトウェアのソースコードが無償で公開され、改良や再配布を行うことが誰に対しても許可されているソフトウェアのことである。
OSSとは、「Open Source Software」の略で上記のようなものです。
例えば今、Google I/Oが開催されていてタイムラインはGoogle I/O一色という具合ですがGoogleさんで言うと、AngularJSやFlutter、この前カンファレンスにも参加したGolangなどがありますね。GoogleのOSSはGoogle Open Sourceに集まっているので気になる方は見てみてください!
OSSに貢献するとは?
ここまで読んで、「あぁプログラミング強者がなんかGoogleに貢献しようぜ的な話してんな。」と思った方いるかも知れませんが、僕の技術レベルでは(特に自分が使っているプロジェクトに)貢献なんて出来ないです。笑
OSSに貢献すると言うのは、上記のようなバチバチに強い人達と一緒に最初からしなくても、自分に合ったもの(自分でも理解できそうなもの)からやっていけばいいと思っています。
ここで一度、「OSSに貢献する」の解釈を書いておきたいと思います。
・英語のドキュメントを日本語に訳す
・問題点を見つけてissueにあげる
・よりいい改善点を見つけてissueにあげる
・実装をしてPRを投げる
ざっくり言うと上記の4つかなと思います。これは上記の行動どれをしてもGitHub上では「コントリビュートしたリポジトリ」としてそのOSSのリポジトリが登録されるからです。
じゃあ実際どうやって貢献するのか
では早速、どのように貢献するのかをみていきましょう。まず僕のGitHubをみてください。
ここに6つのリポジトリが並んでいます。このうち僕個人のリポジトリは
・konojunya/sadako
・konojunya/HEW2018
の2つです。sadakoと言うのは、貞子の「きっと来る〜♪」というあの曲のパロディで「git pull〜♪」と言う音をgit pullした時(post-merge)で鳴らすと言うふざけたプロジェクトです。このリポジトリにスターがついてるのは有名なエンジニアのmattnさんがTwitterで取り上げてくださりPRも送ってもらったのでスターがついてます。
もう一つのHEWというのは僕の学校であるHALのイベントの時に作ったコードをGitHubにあげていてVue + Go + ECS + RDSと言う構成でCI環境やDockerfileなども入ったサンプルになりうるリポジトリです。ではあとの4つはなんなのか。
まず分類すると
issueをあげたリポジトリ
・dawnlabs/carbon
・styleguidist/react-styleguidist
・gin-gonic/gin
PRを投げたリポジトリ
・sallar/github-contributions-chart
になります。
issueをあげたリポジトリで、carbon(https://carbon.now.sh)と言うのは最近Twitterにソースコードをあげる時に綺麗に見せるあれです。(以下のような画像)
react-styleguidistは、去年の夏にCyberAgentでインターンしている時に使って動かなかったのでissueを送りました。
ginはGoのWebフレームワークです。ginでは、こんな風な実装の方がイケてるんじゃない?みたいなことをissueにあげて、他の人が困ってたら自分で解決できそうなら解決してあげるという活動をしています。
github-contributions-chart(https://github-contributions.now.sh)は、本当に先週とかにTwitterで見かけたGitHubのコントリビュート数をGitHubに登録してからの年数分チャートで出してくれるサービスです。
僕はこのサービスをみて使った時に、「Twitterで拡散しやすいようにした方が楽しいんじゃね。」と思いました。
この「こうしたほうがいいんじゃね?」と思った時こそ、OSSに貢献するチャンスだと思います。
実際に貢献してみた。
早速issueに提案をしてみました。
するとみるみる他の開発者から、いいね!って言ってもらえたりこう言う風に実装すると良さそうだね!みたいなコメントが来て、これは自分が責任持って実装しなければ!と思いすぐにコードを書き始めました。
このプロジェクトはクライアントはReact、サーバーサイドはNode.jsを使っていたので自分のスキルセット的にも実装できるプロジェクトでした。
プルリクエストを投げるぞ
実装も多分できたなと言うところで、プルリクを投げてみます。
すると...
コードレビューを受けることができました!
今回は実装的なコードレビューでの指摘はなかったんですがなんせ英語が苦手で命名に苦労しました。笑
コードレビューをくださってる人はMicrosoftのSkypeにいる方なようですが、そんな人にコードレビューを受けれるだけでOSSに貢献する価値があると思った瞬間でした。
速攻マージされた
コードレビューが終わり、プロジェクトにマージされました!
masterに直接ではなく、その他の調整などを行うためのブランチに一度取り込まれ、今はmasterに自分のコードがはいっています。
masterにマージされたと言うことはデプロイが終わってたらサービスに実装したものが上がってるのではないか...!
あがってました :)
Twitterのシェアボタンを押すとリンクとハッシュタグをつけてポップアップで呟くことができます。
まとめ
今回で、より一層OSS活動が楽しくなりました。
海外のエンジニアとGitHub上でやりとりをしてこんな風に実装した方がいいよとアドバイスがもらえて、マージされたらめちゃめちゃ感謝される。こんな素晴らしい世界があっていいのか....
僕が最初に「気軽に貢献しよう」と言ったのは、気軽な気持ちでやって実装で悩んだとしても他の人が助けてくれたりするので大丈夫だよ。と意味です。
特にTwitterでなんかバズってる?みたいなサービスに貢献できると、向こうの反応も早くてTwitterで反応もみれて嬉しいので、ぜひ皆さんOSSに貢献していきましょう!
僕のTwitter→ @konojunya ぜひフォローしてください!
この記事が気に入ったらサポートをしてみませんか?