こんにちは。 マネーフォワードのIDサービス開発部のダンです。
今日は、OSSを利用し貢献する過程における考え方の変化について共有します。
OSSとは?
OSSはOpen Source Softwareの略で、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が自由なソフトウェアの総称です。 OSSはオープンで、コミュニティなどで共同開発されます。
OSSは、「オープン」「共同開発」「自由」などのキーワードがあります。 このキーワードは意味として理解していましたが、私はその中身を充分に認識していませんでした。
Money Forwardは、OSSコミュニティを支える活動を行っております。 マネーフォワードとオープンソース・ソフトウェア | Engineers' Blog 私たちはOSSのお陰で仕事ができており、自分もOSSに貢献する気持ちがだんだん大きくなりました。
OSS貢献前の私の考え方
プロジェクトにJoinして機能を開発する際、その機能のライブラリー(OSS)を探して、見つけたら導入します。
その時点での考え方は、、、
- OSSプロジェクトは有用なblack-boxである
- 先人が難しい課題に取り組み、解決してもらったので、我々はその課題に取り組まなくてよい
- ただ、コードが難しくことも多く、コードを読むのは辛いなぁ
- OSSは出来上がった食事である (Readme & using)
- OSSはalmost error-freeである (ほとんどエラーフリー)
- 沢山の人がそのOSSを使っているため、実績もあり、安定しているため、安心してすぐ使えます。良かった!
つまり、私は完全にOSS依存していて、何もやりたくなかったのです!
問題が発生したことで、変わり始めた考え方
導入したOSSのおかげで、担当したシステムはうまく稼働しました。
ところが、システムが徐々に大きくなり、機能が沢山追加され、以前は正常動作していたOSSに問題が発生しました。
私が遭遇したのは、トークンイントロスペクション(token introspection)という問題です。
それにより、考え方が少し変わってきました、、、
- OSSはblack-boxではないよ
- 出来上がった食事ではないよ
- Error-free?? No. A "ton" of errors out there
じゃ、OSS貢献していきましょう!
「問題に遭遇する」→「解決しよう」 この段階で、私の考え方が変わりました。
- OSSはオープンで豊富のリソースです
- OSS活動は一緒に食事を作ることです
- 「美味しい食事」を作るため、一緒に相談して開発でき、誰でもその料理に自分の料理を追加できます
- なので、コメントやアイデアがあったら、遠慮なくプッシュすることがOSSに価値になると思います
- トークンイントロスペクションの問題解決ため、色々調査し実装しました。「自分のソリューションは正しいかな?アイデアはこれでいいのかなぁ?このコードを充分で理解したか?」など考えましたが、私は遠慮なくプッシュしました。
初めてのコミットの結果としては、、、「OSSのアーキテクチャに合わない」との指摘をいただき、より良いアイデアを教えていただきました。
そのコメントのおかげで、私はそのOSSについて理解が深まりました。知らない人と相談でき、色々な観点を指摘を受け、本当に勉強しました。
その後も相談が続き、新しいソリューションになりました。そしてやっとLGTMをいただけました。
で、当初思った「自分のソリューションは正しいかな?アイデアはこれでいいのかなぁ?このコードを充分で理解したか?」 とウジウジしてプッシュを躊躇ってしまっては、勉強するチャンスを失ってしまい、それはとても惜しいことです。
- 出来るだけ多くの人が使えるようにします
僕がまだ辿り着いていないステージ
これまで、OSSについて私の考え方と体験はこういうステージを辿ってきました。
考え方を変えて色々なことを勉強できて嬉しいです。
さあ、OSSに貢献していこう!
--
マネーフォワードでは、エンジニアを募集しています。 ご応募お待ちしています。
【採用サイトのご案内】 ■マネーフォワード採用サイト ■Wantedly
【プロダクトのご紹介】 ■お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android
■ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』
■だれでも貯まって増える お金の体質改善サービス 『マネーフォワード おかねせんせい』