2020-3-6
エンジニアと立ち話。Vol.42 @ Kent.K(メルカリCorporate Engineeringチーム)ちょっとお話いいですか?
メルカリで働くソフトウェアエンジニアに、ちょこっとお話を聞いていく本シリーズ。第42回では、メルカリCorporate Engineering内にあるSystem Engineeringチームの@Kent.Kに、@kiyokawa(同チームマネージャー)、そして@shibuchin(メルカリHRBP)がちょこっとお話を聞きました。
急拡大する組織において、会計システムや組織管理システムなど、コーポレートに関するシステムの整備が追いつかず、運用が属人的になってしまっていたタスクをどう改善すればよいのか…。そんな人的なリソースに頼っていたタスクの一部を、約半年前に入社した@Kent.Kがごりごりと自動化し、なんと工数を1/20に削減。いったいどんな方法で?全メルカリグループの業務を支える、System Engineeringチームのミッションや仕事についてもご紹介します。
Sysyem Engineeringチームに「ちょっとお話いいですか?」
@shibuchin:ども!ちょっとお話いいですか?
@Kent.K:あ、はい。「エンジニアと立ち話」ってやつですね。
@kiyokawa:ですです。今日は@shibuchinさんと一緒に、@Kent.Kさんにいろいろお話を聞きたいと思います。まずは「エンジニアと立ち話」ではお決まりの質問ですが、@Kent.Kさんは、メルカリにジョインする前は何をしていたんですか?
@Kent.K:2019年8月に入社しました。当時のCorporate Engineeringの「世界一働きやすいIT労働環境を構築する」というビジョンに共感したのが動機でした。入社前は小売業のシステム子会社で、業務系システムを構築したり、従業員の評価システムの導入・管理プロジェクトの立ち上げとプロジェクトリードをしていました。ちなみに、メルカリで4社目です。
@kiyokawa:そして今、@Kent.Kさんは、Corporate Engineeringの中でも、僕がマネジメントしているSysyem Engineeringチームで活躍してもらっています。Sysyem Engineeringチームは、グループ全社で利用するITシステムの立案・導入・改善や、各システム間でのなめらかなデータ連携を可能にする基盤構築、オフィスITの導入・改善を行っています。
組織変更時に、手動で行っていたタスクを自動化することで約1/20に工数削減
@shibuchin:@Kent.Kさんには、とあるタスクの自動化をして、これまでの工数を1/20ほどに削減したという話があるんですよね?
@kiyokawa:組織変更時に手動で行っていた、組織構造マッピングのタスクを自動化した話ですね。
@Kent.K:はい。メルカリグループでは、組織改編がよく起こります。その度に、組織構造データを会計システムに合わせるためのデータフォーマット修正を手作業で行っていました。その人的な作業を自動化したんです。
@kiyokawa:実は、毎回この手作業に120時間ほどの工数を費やす状態だったんですよ。
@Kent.K:今までは、組織のマスタファイルからデータフォーマットを修正するために名前から識別をしなくてはいけないなど、人的な突合(つきあわせ)作業が発生していたんです。それだと、同じ名字の人がいる場合、どうしても目視で判断が必要な作業が発生してしまう。または、とある組織データはツリー構造だけど、別のデータは二次元構造になっているなど、これらのファイルの整理に時間を取られている状態でした。
@kiyokawa:それを自動化してもらったわけですが、大変だった点や工夫した点はありますか?
@Kent.K:最初は何もわからない状態から関係者へのヒアリングを行い、課題を特定し解決方法を探るところからスタートしました。参照するデータソースが4つのファイルに分かれていて、それをうまいこと繋ぎ合わせるのが大変でしたね。TeamIDを元に各ファイルから情報を吸い出し、裏側で組織全体のツリー構造を一時的に作成。それをもとに必要な情報を再生成し連携用のファイルを生成して、一連の作業をボタン1つで実行するようなプログラムを書きました。また、二次元データをツリー構造に変換するのに、すべての処理をできるだけ素早く終わらせる工夫もしました。
@shibuchin:どんな工夫なのですか?
@Kent.K:Google App Scriptでコードを処理しているのですが、データを全件チェックすると処理に時間がかかります。そこで、計算量のオーダーを考慮して、最小限のチェック回数で済むような処理方式としました。
@shibuchin:…なるほど、すごいですね。
@kiyokawa:今まで自動化するためのプログラミングスキルを持つメンバーが、System Engineeringチームにはいませんでした。でも、@Kent.Kさんによる自動化で解決し、大きな業務改善を行うことができました。
取引先チェックの自動化を実現
@kiyokawa:さらに@Kent.Kさんは、これまで人力で行っていた取引先チェックを自動化した話もあります。
@shibuchin:自動化の鬼ですね。
@Kent.K:はい。毎月かなりの数の反社チェックを含む新規取引先の事前チェックを人力で行っていて、その作業が担当者の業務を圧迫している状態でした。取引先チェックを申請する人も、申請してから担当者によるチェック終了まで待ちの時間が発生するため、契約フローに間が空いてしまう課題もありました。
@kiyokawa:ですね。そして、取引先チェックの自動化にあたって、ダウ・ジョーンズが提供する企業データソリューションのWeb APIを使うことにしました。メルカリが利用しているkintone(さまざまな申請・承認作業を一元管理するコーポレート業務システム)といかに繋ぎ込めるかがポイントでしたね。ほかにも、工夫したポイントはありますか?
@Kent.K:Web APIを叩くのですが、kintoneだとフロントのカスタマイズしかできず…。サーバーサイドをカスタマイズすると、APIを実行できない制約があったんです。そこで中継サーバーになるようなものをFaaSで組み、認証及びデータの加工を行うようにしました。返ってくるデータがXMLなので、kintone側で扱いやすいようJSONにコンバートしてから返却する仕組みも実装しています。@kiyokawaさんやCorporate Productsチームの@wadatchさんにアドバイスもらいながら、ほぼ1人で5人日くらいで実装できたんじゃないかと思います。
@shibuchin:このUI、わかりやすくて良いですよね。あと、チェックがその場で終わって感動しました。
@Kent.K:ありがとうございます。取引先チェックの申請者に対しては、UI上で今どういったステータスなのか、次のステップはどんなものなのか、わかりやすく伝えられるように工夫しました。また、入力項目を減らし、ペインポイントを少なくするようにしました。
@kiyokawa:この取引先チェックの自動化は、社内からすごく好評ですね。
Employee Experienceの向上を目指して
@kiyokawa:最後に、@Kent.Kさんの仕事のモチベーションはどこにありますか?
@Kent.K:Corprate Engineeringのミッションは「Employee Experienceの向上」なのですが、ただ掲げているだけではなく、それを実践できているグループだと思います。ある意味で、僕たちの「ユーザー」はメルカリグループの全社員です。そのユーザーがすぐ目の前にいて、課題を解決することで、みんなの業務が少しでも改善され、会社の生産性が向上することを目の当たりにできることはやりがいを感じますね。
@kiyokawa:メルカリは、組織課題があれば、テクノロジーで解決しようとする姿勢が根本にありますよね。
@Kent.K:そうですね。
@kiyokawa:組織にはいろんな課題があり、それに対する解決方法にもいろんなアプローチがあります。Corporate Engineeringの業務範囲で言うと、なんでもかんでもテクノロジーで解決しようとすれば良いわけではなく、時には業務整理だけで解決できることもあります。そこを見定めてバランス良く判断できる人が求められます。その意味では、@Kent.Kさんは抜群にバランスが良いです!要件定義や業務整理もできて、さらにリーズナブルなかたちで手を動かして実装もできる。僕にはないスキルなので、尊敬しています。
@Kent.K:ありがとうございます。
@shibuchin:すごく褒めてますね!そんなCorporate Engineeringでは、現在絶賛採用中ですよー!
@Kent.K、@kiyokawa:さすが(笑)。ぜひ、よろしくお願いします。