OSS Forwardするエンジニアにインタビュー!なぜOSS開発文化が育っていないマネーフォワードで活動をおこなうのか?

企画概要

今回は最近マネーフォワードが公開したOSS開発の消費税計算GemJctを主導したTaKOBKiさんに、なぜ社内ライブラリをOSSで公開しようと考えたのか、を根掘り葉掘り聞いてみたいと思い、インタビュー企画を実施しました。

jct

OSSとは?

オープンソースソフトウェア(英: Open Source Software、略称: OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称である[1]。

wikipedia参照

それでは早速インタビューしていきたいと思います!
聞き手は技術広報の luccafort です。

プロフィール: 株式会社マネーフォワード CTO室付 前田 喬之(TaKO8Ki

luccafort: まずは自己紹介からお願いします

TaKO8Ki:2019年11月からマネーフォワードの京都開発拠点にインターンとしてジョインしました。
『マネーフォワード クラウド会計Plus』(以下、会計Plus)のスクラムチームに入って、開発をしていました。
経歴を全て話すと長いのですが、『会計Plus』のパフォーマンス改善をおこなったり、現在も本番環境で動いているマイクロサービスの設計と開発をしていました。

luccafort:そうなんですね!OSS活動はいつ頃はじめたんですか?マネーフォワードに入る前から精力的にやっていたんですか?

TaKO8Ki:個人活動でRustのOSS開発をしたり、割と大きめのOSS開発に参加していました。
具体的にはTaKO8Ki/gobangというRust製のTUI(Text User Interface)のSQLクライアントのOSS開発が、自分がメンテナンスしている中では一番大きいものになります。

gobang_repository

diesel-rsRustへのコミットも少ししています。

https://github.com/rust-lang/rust/pulls/TaKO8Ki

優れた知識や技術があるのに公開しないのはもったいない

luccafort:今回のインタビューのテーマが「自社ライブラリのOSS開発・OSS活動」なんですが、どのような経緯でOSS開発やOSS活動をするようになったんですか?

TaKO8Ki:きっかけはRustに興味があったことでした。
当時他社の短期インターンシップに参加していたのですが、そこにRustが好きなエンジニアの方がいて、Rustで書かれた様々なOSSにコントリビュートしているのを見て「こんな世界があるのか」と興味を持ったのがきっかけです。

その後、OSS開発を続けられたのは『会計Plus』のようなサービス開発の面白さとは違い、自分がコントリビュートしたコードが世界中のプロダクトで動いていることに面白さを感じたからです。
例えば、RustにPull Requestを送ってマージされると自分が書いたコードが取り込まれますが、それは言い換えると、「自分が書いたコードが世の中の自分が知らない企業やプロダクトを動かしている」と言えるかもしれません。そこにワクワクした、楽しいと思えたからこそ続けられたんだと思います。

luccafort:今回取材するきっかけになったのは、社内ライブラリをOSS開発化しよう!と取り組んでいるのが、すごくテクノロジードリブンだと思ったからなんですが、OSSとして公開しようと思ったきっかけはなんだったのでしょうか?

TaKO8Ki:まず、自分がOSS開発やOSS活動をやりたいと思った前提として、OSSとして公開した消費税計算GemのJctのように、マネーフォワードってビジネスドメインに特化した技術や知見を持ってます。

そういったプロダクトをたくさん作れば作るほど、社内に独自の知識や知見、技術が蓄積されているんじゃないか、と考えていました。
その技術や知識って社内ではもちろん有用なんですが、世の中に公開しても全然いいんじゃないかと思ったんですが、実はあまり公開されているものがなかったんです。

技術や知識を公開することは、技術ブログを書くことで会社がやったことを共有するように、もっと自然に行われていいと考えています。
そういった資産が社会に還元されていくことで、自分たちもまたその恩恵を得られるような循環していく文化がマネーフォワードにあるといいなと考えて活動を開始しました。
最終的には、新しい取り組みをしたら技術ブログを書くように、社内に新しい技術や知識が溜まったら公開される文化になっていけばいいと思っています。

luccafort:素晴らしいですね!「技術や知識がもっと公開されていくような文化になるといい」ということですが、そう思われたきっかけのようなものはあるんですか?

TaKO8Ki:そうですね、きっかけという意味でいうと他社のインターン先でOSS開発の現場を体験したことが大きな要因だと思います。
OSS開発が活発な他社でインターンをしていた時期があるんですが、そこでは社内で使われているCICD(Continuous Integration / Continuous Deliveryの略)ツールの開発を1ヶ月くらいやっていました。
そこで、実際に社内で使われている技術や知識がOSSとして公開されることが、さまざまなメリットをもたらすことを実感しました。

pipecd

それまでは、企業としてOSS開発することにあまり興味を持っていなかったんですが、実際に体験して楽しかったので「じゃあマネーフォワードではどうなのか?」と考えました。
ですが、マネーフォワードではまだそこまでOSS開発は活発ではなかったんですよね。
前述のインターン先には、自分が理想的だと考える文化が既にあるため、いろいろと参考にさせてもらっています。

luccafort:このあたりの話もまた別の機会に深く掘り下げて聞いてみたいです。
そういった、TaKO8Kiさんにとって理想的な文化を持つ企業があるなかで、何故マネーフォワードで1からOSS開発の文化を作っていきたいと思ったのですか?

TaKO8Ki:そもそも就職する理由の1つにSaaSを作りたいという想いがあったのでマネーフォワードにジョインしたのですが、社内ではOSS開発をする文化が活発ではなかったので、自分がマネーフォワードのOSS開発文化の第一人者として自由に引っ張っていけそうだなと思いました。
マネーフォワードはそういう意味では自分にとってはすごくちょうどよくて、OSS開発の文化はまだ育っていないけど、OSS開発に理解はあるし大事だということはわかってる。実際に取り組める人がまだ少ないだけだと考えていました。

luccafort:会社や個人でOSS推奨している一方で、活動を継続させることが課題とよく耳にするのですが、会社やコミュニティにとってポジティブな面があったエピソードがあれば教えてもらえますか?

TaKO8Ki:実際のプロダクトで使われている技術であってもGitHubのActiveityとして残るのは技術志向のプログラマとしては好印象ではないかと考えています。
同じ選考を受けるときでも、OSS開発に参加している履歴や足跡があることで評価されやすくなったり、カンファレンスに登壇できたりといったメリットがあると思います。
他にも、OSS開発をすることでアウトプットする相乗効果もあると考えています。

これは以前OSS活動をもっと活発にしたいと考え、OSS開発が活発な他社のエンジニアの方にヒアリングをさせてもらったときに仰っていたんですが、例えば、技術ブログを例にすると、一般的には「A機能を実装して、B技術を使いました」という記事を書くと思います。
しかし、OSS開発を公開すると第一段階でOSS開発を公開したという情報を発信でき、第二段階で内部のアーキテクチャやそこで得た知見や知識を技術ブログに書くことができます。
その内容が素晴らしければ、第三段階として大型カンファレンスやテックイベントに登壇できるという一連の流れが生まれます。
なによりも、OSSを公開することでアウトプットする機会が通常の何段階も増えると考えています。

対外的にも「こんな取り組みをしているんだ」と認識してもらうことで企業にもメリットがあるし、イベントの登壇者が増えるとコミュニティや業界も盛り上がります。
当然、エンジニア個人としてもポートフォリオの実績になるので、三方良しの状況を作ることができると考えています。

OSS開発の文化がないタイミングでOSSを公開しようとすると「社内ライブラリを公開したことがない」や「ライブラリ部分だけ切り離す想定で開発をしていない」といったことが起こると考えています、この対応をしていくのは正直大変だろうと思います。
ただ、OSS開発を公開する文化が定着してしまえば、大変ではなくなるのではないかと思います。
OSS開発が当たり前になったマネーフォワードでは、開発時の前提として公開されることがデフォルトなので、最初から公開されることを前提としたシステムの設計や疎結合なアーキテクチャを実現できないか考慮することになると考えています。

このようにマネーフォワードで開発されるさまざまな知識や技術を、公開することが当たり前の文化にしていきたいと考えていますし、実現したら誰もが嬉しいWin-Winな状態になると思います。
公開できるものは全て公開していけばいいと思っていて、公開することが選択肢の1つになればいいですね。
技術ブログと違い、OSS開発やOSS活動は実際に書かれたコードを追うことができるのでより技術にフォーカスした魅力を伝えられるのではないか、と考えています。
最初から公開することが前提だと「これは公開してもいいのか?」と考える余地がなくなるのも嬉しいですね。

OSS活動を通してこういう世界があるんだ!と知ることができた

luccafort:いままでOSS活動をしてきた中で「これは想定してなかった」というポジティブな面があれば教えてください。

TaKO8Ki:世の中にはRubyコミッターのような、OSS開発が仕事に繋がり、OSS開発を通してお金を稼いでいる人たちが日本だけでなく世界中にいます。現にマネーフォワードにもコミッターの方がいますよね。

OSS開発自体が仕事になることでエンジニアキャリアの選択肢を増やすことになるんじゃないかと思います。

今興味があることをやる、興味がないことは興味が湧いたらやる

luccafort:そうですね、よりやりたいことに専念してお金が稼げるとエンジニアとしては嬉しい状況ですね!さてここまでいいことばかりを聞いてきたので、苦労話も聞いてみようかなと思うんですが、いままでOSS活動を通じて大変だったこと、苦労したことはありますか?

TaKO8Ki:そうですね、個人的にはやはりモチベーションの管理が難しいと感じています。
OSS開発は一人、多くても数人で開発することが多いと思います。
OSS開発を始めるきっかけがあり、それを解決したいから作ると思うんですが、ある程度やりきってしまうと、継続的なモチベーションを持ち続けるのが難しいです。
モチベーションが続かないとコードのメンテナンスがされなくなってしまい、そのままになっていることが個人だとよくあることかなと思います。

TaKO8Ki:gobangは「GUIのアプリケーションではなくTUIでできるといいな。」と思って開発していました。
最近Web開発に携わっていないので少し活動が停滞しています。またWeb開発に携わるようになれば活動を再開すると思います。
スポンサーを求めて無理やり開発のモチベーションを高める手段もあると思いますが、なかなか難しい問題ですね。

モチベーション管理で大事にしていることとして、基本的に「いま興味があることをやる、興味がないことはやらない」ようにしています。
「やらないといけないが、興味がないこと」はやりません。
いま興味を持てないことでも、時間をおいて意外とモチベーションが戻ってきたり、開発したOSSを使いたいときがくると思うので、そのときにまた開発を再開すればいいかなと考えています。

TaKO8Ki:その他の課題としては、cotowaliというOSSを開発されている方が金銭的な支援がないと開発を継続するのは難しいとツイートされていて、モチベーションもそうですが金銭面での支援も重要だなと感じています。

cotowali

そういった意味では、ただ開発しているだけでは難しい面があります。
ある程度OSS開発が成長すると、広報的な活動、例えば支援を求めたり、そもそもいろんな人に知ってもらうなども必要になってくると考えています。
これら全ての活動を開発者1人で巨大なOSS開発を支えるのは大変なので、なにか良い方法がないか考えていきたいです。これはOSS開発についてまわる問題ではないかなと思います。

負担にならない広報の仕方が重要

luccafort:その他にOSS活動やOSS開発で工夫している点、苦労している点などはありますか?

TaKO8Ki:負担にならない広報の仕方が重要だと考えています。
個人的に「大変じゃないけど広報的に意味がある」と思っているのが、「A機能を追加しました」というPullRequestのリンクか何かを貼ってツイートしたりするのが意外と意味があるのではないかと思っています。
本職の広報活動のような意気込みは必要なくて、いまやっていることを発信してくという感じです。
そういった発信を積み重ねていくと、自然と広報的な意味合いも持ってくるのかなと思っています。

会社に依存しないエンジニア個人としての技術力も鍛えたい

luccafort:ぼくはゲームや漫画が趣味なんですがそうするとなかなかOSS活動をする時間の捻出が難しいと感じています。TaKO8Kiさんはどういう時間配分やバランスでOSS開発をされていますか?

TaKO8Ki:基本的には業務時間外はほとんど触っていることが多いです。
漫画は難しいのですが、アニメや映画などはコードを書きながら見るタイプなので目を動かさなくていい、注力しなくていいエンタメ系は重宝しています。
ゲームをプレイするのは難しいですが、ゲーム実況を流しながら開発と両立していますね。
Jctのような業務でOSS開発をやる場合は、業務外でJctを触るかはわからないですがそれ以外のOSS開発をするんじゃないかと思います。
そのとき「気になってるけど会社でまだ触れない技術」を触っているんじゃないかと思います。Jctをやるかは興味が向くかどうか次第ですね。

会社で扱わない技術に触れるのは単純に興味があるというのが一番大きいんですが、会社に依存しない、エンジニア個人としての技術力も鍛えたいと考えています。そういった評価軸があってもいいのかなと意識してやっている面もあります。
エンジニアとしての技術スタックと、会社にとっての技術スタックの両方を高めたいと考えています。
会社にとってのメリットがあれば会社に取り込むし、そうでなくても別の機会で活かす機会があると思いますね。

今後も個人としてもマネーフォワード内での活動としてもOSS開発を継続していきたい

luccafort:今後、OSS開発を通じてどのようになっていきたいと考えていますか?個人として、マネーフォワードとしての2つの立場からお答えしてもらえると嬉しいです。

TaKO8Ki:個人としては、今後もRust本体にコミットしていきたいです。
Rustには様々なチームがあるのですが、将来的にはcompiler contributor teamなどのどこかのチームに所属してRustに貢献していきたいと考えています。

マネーフォワードとしてでいうと、個人に比べてもっとシンプルです。
さきほどもいったように社内の技術や知識をOSS開発として公開することで、会社とコミュニティの双方に貢献していく文化を作っていきたいと考えています。
マネフォワードを代表するようなOSS開発が1つあるとやりきった感があるかもと考えていますが、狙って当てようとすると先ほど問題としてあげた、エンジニア個人の負担が大きくなってしまうので、自然な流れとして文化が生まれて、マネーフォワードを代表するOSS開発が生まれたらいいなと思っています。

まとめ

社内ではたこやきさん、たこやきくんの愛称で親しまれる前田さんのインタビュー記事でした。
個人ではOSS活動や開発をしているメンバーは少なくないのですが、会社としてもっと盛り上げていきたい!と強い気持ちを表明され、感化されたことでこのインタビュー記事が実現しました。
一緒にOSS開発をForwardしていく、技術や知識を公開するのが当たり前になるマネーフォワードにしていきましょう!

マネーフォワードでは自ら手を動かして開拓していくエンジニアを募集しています。

取材後にLAPRASさまのインタビュー記事が公開されていました。
よろしければこちらも御覧ください。


マネーフォワードでは、エンジニアを募集しています。
ご応募お待ちしています。

【会社情報】
Wantedly
株式会社マネーフォワード
福岡開発拠点
関西開発拠点(大阪/京都)

【SNS】
マネーフォワード公式note
Twitter – 【公式】マネーフォワード
Twitter – Money Forward Developers
connpass – マネーフォワード
YouTube – Money Forward Developers

Pocket