弊社CTOの山下が、RCC(立命館コンピュータクラブ)で開かれた勉強会、その名もRCCOSSに参加してきました。仕事で開発をしながらもOSS(Open-source software)活動をしている開発者はたくさんいると語る山下。OSS活動がエンジニア人生に及ぼす影響、メリット・デメリットについてお話しました。今回はそのときの内容をお届けいたします。


OSSは今やソフトウェア開発に欠かせないもの

まずOSS活動とは何かというところから話はスタート。
 

OSSとは

オープンソース・ソフトウェア(英:Open-source software, 略称:OSS)とは、ソースコードが利用可能で、著作権保持者がどんな目的のためでもソフトウェアを、学習、変更、そして配布するための権利を提供するというライセンスに基づいたソフトウェアである。
— wikipedia より引用

OSS活動とは

OSSを開発することに関わる活動のこと。世の中で一般的に使われているプロダクトに機能を追加するなどして貢献するというものと、自分で作ったフレームワークなどを公開して他人に使ってもらうものがある。
— 発表スライドより
 代表的なOSS。開発には欠かせないソフトウェアがほとんどOSSであることがわかる。

代表的なOSS。開発には欠かせないソフトウェアがほとんどOSSであることがわかる。

 

ソフトウェア開発では欠かすことのできなくなったOSS。ソフトウェア開発の現場でなぜ採用されていったかについて振り返る。


昔は、開発で使うソフトウェアがOSSじゃない場合は、お金を出して買ってインストールして、アップデートがあるとアップデート料金を払って買って、ということをしていた。ライセンスがCPU単位だと、今はCPU4個とか、8個とか乗っているので、高額になってしまう。OSSだとそのへんを削減できる。
ベンダーロックインというのがあって、ある企業システムのハードウェアとか、ソフトウェアが一つのベンダーになっていると、あまりよろしくない。そのシステムが一つのベンダーに依存していると、ベンダーが潰れてしまうと、にっちもさっちもいかなくなるが、OSSだと、その辺を回避できる可能性がある。

ソースコードがオープン(OSS)になっていると、作る人がやめても、誰か他の人が継続してくれる可能性もある。実質されないときもあるが、可能性がのこる。

 

コストの面やリスクヘッジという観点で、OSSの採用が増えていったことが伺える。

 

Seasar2のムーブメントとGitHubの登場がOSS活動を身近に

日本発のOSSが生まれたことや、開発のための環境が整ったことによって、OSS活動が身近になったと語る。
 

Seasar2のムーブメントで、OSS活動は誰でも始めても良いという機運がうまれた。さらに、GitHubの登場によって、そのための道具が揃って、更に敷居がぐっと下がった。主にはプルリクエストがそれを後押した。プルリクエストをGUIで誰でもカジュアルに出来るようにしたのがGitHubの功績ではないか。

自分で新しいものをゼロから開発しなくても、OSS活動にコミットすることはできる。新しくできたリポジトリを見つけて、タイポを指摘するといった簡単なところから始める、というような記事を見つけて、なるほどなぁと思った

発表の中で紹介されていた記事 : ショボいPull Requestを積み重ねて、自分の中でOSS活動の敷居を下げる

 

OSS活動にトライする

 実際に山下が初めて送ったプルリクエスト

実際に山下が初めて送ったプルリクエスト

山下も最初のプルリクエストはすごくドキドキしたそうだ。上の画像は山下のプルリクエスト第一号。プルリクエスト上で議論が起こることもあるそうだが、この時はそういうこともなくあっさりマージされてしまったそうだ。

 

現在も自らOSSの開発も行っている山下。先月リリースされた、ShareDocsは、Scalaの練習と当時会社で抱えていた情報共有の課題を解決するために開発したそうだ。また、OSS活動を通してソフトウェアを作っておくと、新しい技術を試すよい題材になるとも語っていた。

 山下が開発したナレッジ共有ツールのShareDocs

山下が開発したナレッジ共有ツールのShareDocs

 

仕事をしながらOSS活動を続ける

山下自身のOSS活動のモチベーション、続けるコツについて。

仕事上の制約からはずれて自分の好きなコードを書けるのが一番のモチベーションに繋がる。仕事では、業務の都合上、題材や、技術要素、人、納期などが制約になるが、OSS活動はそれらがない。単純に楽しめるし、業務とOSS活動で制約と自由の精神的バランスを取る
OSSを続けるコツは、普段の仕事の一部をうまく切り出すこと。とにかくつくりたいものを作ってOSSにするだけだと、ハードワークになりがちで年齢とともにつらくなってくる。仕事とやりたいことを上手くつなげるというセンスが要求されるものの、そのほうが継続しやすいと思う。
また、そういう活動に理解のある会社なりに身をおいているかどうかも重要。

山下が思うOSS活動がエンジニアにもたらすメリットは次の通り。

  • 客観的評価を得る
  • スキルが上がる / ブーストする
  • 日常的な英語の読み書きの機会を得る
  • イベント登壇の機会がもらえたりする
OSS活動をしていると他人の目に晒すことになるので、スキルアップにレバレッジを効かせることがきる。また、公開を前提にすると書くコードの精度を上げざるを得ないというような意識も生まれる。ドキュメントやコミュニケーションに使う言語は英語でやるべき。英語で発信することで世界中から反応が得ることができるというのが、OSSの醍醐味でもある。発信する人のところには情報も集まってくるメリットもあるため、恐れずに発信すべき。
 

一番大きなメリットはエンジニアとしての客観的評価が得れるということ。企業に属して開発を続けているとエンジニアとしての客観的評価を得るのは難しい。OSS活動はGitHubに公開することになるので、業界における自分の位置をなんとなく知ることもできるそうだ。また、OSSはグローバルであると語る山下。英語で発信することで世界中のエンジニアとコラボレーションができるという。また、GitHubの活動履歴や、スターの数が名刺代わりになることもあるとのこと(勝手にそれなりにデキるっぽい人だとお客さんから評価されたこともあるとか...)。

 Git Awards というサービスを使ったときの山下のスコア。横浜でJavaが2位...強い....

Git Awards というサービスを使ったときの山下のスコア。横浜でJavaが2位...強い....

メリットが有る一方で、デメリットもあると語る。

  • (直接的な)金銭的な見返りはほぼない
  • 時間がとられる
  • たまに批判を受ける

一部では、OSS活動を仕事にできている人もいるが、多くの場合はそうはいかない。仕事とプライベート、やりたいことと制約のバランスを取りながら開発するセンスが問われると語っていた。

OSS活動を通してエンジニアとしての世界を広げる

最後に学生さんたちにエールを送った。

今やソフトウェアの中心はOSSで、OSS活動ができる環境は誰にでもあります。仕事で好きなことが出来ないのでは?と思う人もいるかとはおもうが、OSS活動を上手く仕事とつなげる方法はあります。OSS活動をすることで、目の前の仕事をこなすだけでは得られない世界の広がりが生まれるでトライしてみては。
— 山下

 

エンジニアリングが大好きな学生さんの中には、企業に入ってしまうと自分の好きな開発が出来ないと仕事でエンジニアを選択することを諦めてしまうケースも多くない。企業の中にはGitHubを見て採用するというところも増えてきているので、就職後のミスマッチを防ぐためにも自分のやってきたこと、やりたいことをOSS活動を通して、アウトプットしてみてはいかがでしょうか。

今回の勉強会でOSS活動にトライしようと思ってくれる学生さんが増えてくれると、我々としては嬉しい限りです。招待してくれたRCCの皆様には本当に感謝です!