連載 :
  インタビュー

日立のOSSコントリビュータに訊いた組織のあり方と失敗談

2021年6月28日(月)
松下 康之 - Yasuyuki Matsushita
日立のオープンソースコントリビューターに、コミュニティとの付き合い方や社内の立ち位置などをインタビューした。

企業に勤務するエンジニアがオープンソースソフトウェアに貢献する際に常に問題となるのは、対外的な活動と社内での業務とを両立させることだろう。企業によっては、オープンソースに特化した組織を作ることでその問題をある程度は解決している場合もある。

今回は、OSSソリューションセンタという名称でオープンソースに特化した組織を持つ株式会社日立製作所(以下、日立)のエンジニア3名に参加していただき、座談会形式でオープンソースへの貢献、業務とのバランスの取り方、失敗談などを語ってもらった。

今回の座談会には、日立のOSSソリューションセンタから乗松隆志氏、田畑義之氏、岡井倫人氏の3名に参加していただいた。

Zoomで参加した3名。左が岡井氏、右上が乗松氏、右下が田畑氏

Zoomで参加した3名。左が岡井氏、右上が乗松氏、右下が田畑氏

自己紹介をお願いします。

乗松:私は日立に新卒で入社してから約20年という社歴になります。最初はオープンソースソフトウェアとは関係のない仕事をしていました。Linuxに初めて関わったのは組込系の開発でした。2016年にOSSソリューションセンタに異動してきて、今はKeycloakのSIGのメンテナーをやっています。Keycloakには2017年頃から関わっています。

他にはオープンソースに関するカンファレンスなどでプレゼンテーションをするなどの啓蒙活動をやっています。

田畑:私は2013年入社ですので、乗松さんの大分後の入社ですね。OSSソリューションセンタに異動になる前は、日立のストレージを管理する製品の開発をやっていました。2017年にOSSソリューションセンタに異動してきた当初は、PostgreSQLなどのデータベースのシステムに関わっていました。その1年後に乗松さんと同じKeycloakのチームになりました。同時にAPI Gatewayの3scaleのコントリビューションをやっています。

オープンソースプロジェクトへの関わりという意味では、PostgreSQLに関して言えばあくまでもユーザーとして使う立場で、オープンソースソフトウェアに貢献するという立場ではありませんでしたね。今は、コントリビューション活動の他に、社内のエンジニアからの相談に乗ったり、事業部の案件を対応したりしています。

岡井:私は日立には2020年4月入社で前職があって厳密には新卒ではないんですが、新卒扱いとして3ヶ月ほど研修の後にOSSソリューションセンタに配属になりました。大学では物理をやっていてプログラミングの経験はありませんでしたが、今はKeycloakの検証や技術サポートなどの仕事をしています。

乗松さんも田畑さんも今はKeycloak、田畑さんは3scaleにもコントリビューションをしているということですが、それは自分で興味があったから始めたんですか? それとも日立としての戦略としてそのソフトウェアを選択したということなんですか?

乗松:それは日立の戦略ですね。認証系のシステムについてはこれから大きな需要があるだろうということだと思います。それがオープンソースであるべきかどうか? という点に関しては、私個人としてはプロプライエタリーのソフトウェアでも良いと思っています。しかし、現在ではイノベーションが主にオープンソースで起こっているからということもあるでしょうし、お客さんからオープンソースでという指定もあるというのが背景にあると思います。

ソフトウェア自体で言えば、自社で作るという以外にも外部の製品を買ってくるという方法論もありますし、サポートという点に関して言えばプロプライエタリーのソフトであればサポートを買うこともできます。一方オープンソースに関して言えば、その部分はある程度使う側が責任を持たなければいけないということも言えるでしょうね。レッドハットのように、オープンソースのサポートをビジネスにしているところからサポートを買うという選択肢も今ではありますし。

田畑:私もストレージの開発部隊で楽しく開発をやっていたんですが、OSSソリューションセンタが人を集めているということで面談をして、ぜひ来て欲しいと言われて来たので、自分からやりたいと言ったわけではなかったんです。

岡井さんは研修を受けてからの配属ということですが、日立にはオープンソースソフトウェアに関するトレーニングというのはあるのですか?

乗松:オープンソースソフトウェアに限らず、コンプライアンスという観点でライセンスや輸出管理などのリスクに関する研修はありますね。「オープンソースソフトウェアに貢献する時にどうやるか?」に関するルールはありますが、特にトレーニングとしてはない、かな?

田畑:いわゆる社内向けのガイドライン的なものはあると思いますが、トレーニングという形式ではないと思いますね。

乗松:コントリビューションの仕方というのをちゃんと明文化しているプロジェクトもあると思いますが、今の日立では私が先行していろいろ学んだことを後輩に伝えているという感じですね。

岡井:乗松さんがすでにいろいろとやってくれているので、困った時には乗松さんに訊けばだいたいは解決する感じです。

ひとくちにOSSのコミュニティと言っても千差万別で、どうやってコントリビューションしたら良いのか? は一概に言えないかもしれませんね。田畑さんはPostgreSQLを使っていたということですが、PostgreSQLのコミュニティとKeycloakのコミュニティでは違いを感じますか?

田畑:PostgreSQLは、Keycloakと比べるとコントリビューションするのはハードルが高い気がしますね。一方3scaleもKeycloakもハードルはそれほど高くないです。PostgreSQLは最初にメーリングリストで「こういう修正したい」というのを投げて、ある程度賛同を集めてからコードを出す、というような流れでした。ソフトウェアとしての歴史が長いことや、コミュニティのサイズが大きいというのも関係していると思います。単純にGitHubにPRを送るとかIssueを出すみたいな感じにはいかなかったと思います。

乗松:私はKeycloakだけを専門的にやっていて他のコミュニティがどうなってるのかは知らないのでコメントできませんが、ある程度、複数のオープンソースコミュニティを経験している人なら共通するやり方というか手法が見えてくるのかもしれません。

Keycloakに関して言えばメーリングリストに「こういうことをやりたいんだけど」というのを送ることから始まるって感じですね。機能が大きい場合はコードの先に設計ドキュメントを書くというのが不文律的に決まっていまして、まずはそれをGitHubの特定の場所にUpするということになっています。

あとはコミュニティに所属していると、メンテナーのそれぞれの役割が決まっているというのが段々見えてくるんですよね。こういう話であれば誰に話をすれば良いのか、それがわかってくるって感じです。

田畑:Keycloakコミュニティは他のコミュニティとはちょっと違っていて、Issueの管理にJiraを使っているなどの特徴があります。当初は全部がオープンソースだったわけではなくて、プロプライエタリーのコードがあり、そちらのバグの管理とかをJiraでやっていたという経緯があるのだろうと思います。

3名ともそれぞれオープンソースには関わっているということになりますが、仕事の配分というのはどんな感じなんですか? 事業部からの仕事の依頼も結構あるのではないですか?

乗松:私は日立の中でも特殊な立ち位置で、Keycloakのメンテナーをやっているというのもありますが、90%は社外の人との仕事、つまりオープンソースへのコントリビューションがメインになっていますね。SIGのメンテナーをし始めてから特に忙しくなってきた感じです。実は私が受け取るメールはほぼ社外の人からという感じですから。あとこういう立場って、社内の人からどうやって見られているのかを常に意識しないといけないというのはありますね。直接的ではないですが、日立がKeycloakに関わることで営業的にはプラスになっているというのは聞いたことがあります。

田畑:私の場合は逆で、事業部のエンジニアからの相談に乗ったり、検証をやったりというのが80%くらいです。乗松さんは特殊だと思いますね。やっぱりメンテナーというのは、やることが多いんだなと思います。メンテナーとコントリビューターの違いは、メンテナーはコードのレビュー結果について承認してマージできる権限を持っているが、コントリビューターにはそういう権限がないということになります。

岡井さんは、乗松さんタイプと田畑さんタイプのどちらを目指していますか?

岡井:難しい質問ですね。私はまだ案件には絡んではいないので、将来的には田畑さんのようにお客さんのシステムにも関わってきたいとは思っています。

以前にOSSソリューションセンタのセンター長である河合さんに話を伺った際に、日立の場合はトップダウンで新しいことを進めないと上手く行かないという話もありました。それに関しては?

乗松:そうですね、上からの支援というかサポートは必要だと思います。

乗松さんとしては「あいつは何やってるんだ?」という見られ方をするからということですか?

乗松:そうですね。それもあります。こういう仕事をここまでやるとこういうように評価されるんだよ、というのを予め言ってもらうというのが大事です。私の仕事は正にそれですから。やっぱりオープンソースというまったく新しいことに特化してやるには、社内の支援というか理解がないと難しいと思いますね。

田畑:ただOSSソリューションセンタができているので、それができる前とは事情は違うとは思います。今だったら新しいソフトウェアにコミットしようという発想が出てきた時には、エンジニアといからのボトムアップでそれを推進できると思います。

オープンソースプロジェクトは多種多様な人との対話というかコミュニケーションが必要で社内の人と同じように接しても必ずしも上手く行かないことは多いとは思いますが、Keycloakのコミュティで上手く行かなかった経験はありますか?

乗松:これは私の失敗の一つなんですが、我々が「こういう機能が必要だ」と思ってそれを提案して、実装しようとした時に何度説明してもその利点が伝わらずに多くの時間と労力を使ったにもかかわらず、実装できなかったという例はありますね。

これはKeycloakのソフトウェアとしての方向性とも関わってきてしまうんですが、KeycloakはRed Hatのエンジニアが開発をリードしているプロジェクトで、Red Hatの商用製品としてはRed Hat SSO(Single Sign On)という名前になっているんですね。SSOはユーザーが1回のサインオンで複数のシステムへの認証を行うというのがコアの機能なんですが、当時は日立としてはもっと細かくAPI寄りのトークンを処理するような方向に行きたかったんです。でもその方向性はSSOのそれとはちょっと違う。言ってみれば逆の方向性だったわけです。

それで我々としてはその利点を充分に説明したつもりだったんですが、開発を行っているメンテナーのチームには理解してもらえなかったんです。あそこでもっとソフトウェアとしてのどんなユースケースを想定しているのかを理解して、それに沿うような機能を提案していれば、あの時間と労力は無駄にならなかったとは思います。

その機能で利益を得るユースケースの数が少なかった、ということですか?

乗松:そうとも言えますね。

監視ツールのZABBIXのようにオープンソースだけどコードはZABBIXの社員しか書かない、1社でしか使わないような機能を実装したいならそのコストを負担しろ、そのコードはオープンソースとして公開するというやり方もありますが、あのやり方は特殊ですよね。

乗松:ZABBIXのやり方は知りませんでしたが、普通のオープンソースプロジェクトではそのソフトウェアが何を目指しているのかを理解するというのは重要だと学びましたね。ただユースケースが少ない機能をメインのブランチに入れてコードベースが膨らむのはメンテナーとしては避けたいので、そこは外部のプラグインとかで実装するのが良いと思います。

OSSソリューションセンタとしては、現状でコントリビューションしているオープンソースプロジェクトはKeycloakとNode-RED、それに3scaleということになります。今後、新しいオープンソースソフトウェアに対して貢献をしていこうという予定はありますか? 個人的にはメモリーセーフなプログラミング言語Rustを推しているので、日立さんからもコントリビューションしてもらいたいとは思っていますが。

乗松:Rustは名前ぐらいしか知らないのでコメントできないんですが、社内でいろいろと議論はしています。いくつか候補が挙がっているという段階ですね。社内には「OSSよもやまばなし」という社内向けのディスカッションをする場があって、その中で多くの質問や対話が産まれています。

これは日立の社員であれば誰でも書き込める掲示板ということですか?

乗松:そうです。現場のエンジニアも研究所の人も参加しています。その中で新しいオープンソースに関して質問が出て、それを知っているエンジニアが答えを書き込むことで、誰がどんなことに興味を持っているのかがわかります。当初は質問ばかりで誰も答えずに過疎化するんじゃないかという心配もありましたが、今は結構賑わってますね。

日立の「OSSよもやまばなし」のスクリーンショット(一部)

日立の「OSSよもやまばなし」のスクリーンショット(一部)

田畑:この中から将来、日立として戦略的にこの新しいプロジェクトに取り組むべきだという発想が出てくるかもしれません。

ボトムアップで草の根的にオープンソースプロジェクトに取り組むよりも、まずはビジネスのニーズから逆算して最もビジネスに貢献できるプロジェクトは何か? を見つけ、その後はそこに集中的に資源を投下する。日立としてのオープンソースプロジェクトへの取り組みが垣間見えたインタビューとなった。社外の人との関わりを優先せざるを得ないコミュニティの中で、責任を持つポジションと社内の関わりを優先し、そのソフトウェアを社内に啓蒙できるポジションの双方が必要だということが感じられたインタビューとなった。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています