事例

株式会社メルカリ & GitHub

昨年、奮発して購入したステキなコートも、1、2回着ただけで自分のスタイルではないと気付くこともあれば、体型に合わないこともある。いざ着てみたら自分の季節に合わなかったということもある。しかし、高価な買い物であったために、単に処分したり寄付することは避けたい。このような場合、あなたならどうするだろうか。昨今、多くの消費者がメルカリを利用している。2013年の立ち上げ以降、消費者間で取り引きが行われるこのフリマアプリは、クローゼットを整理したいお客さまや予算重視の買い物客が利用する定番のサービスとなっている。

メルカリは急成長を続けている。2021年1月、メルカリは株式会社ソウゾウを設立。ソウゾウは、メルカリShopsを含む企業と消費者間の商取引であり、小売店はメルカリプラットフォーム上に専用のEコマースストアを構築できる。また、メルカリは、決済サービスメルペイ (日本国内で236万か所の加盟店モバイル決済プラットフォーム) のサービスも展開し、フィンテック事業にも進出した。

社内で統一された開発ツールとしてのGitHub

GitHubは、メルカリが全社的に使用されている数少ないツールの1つであり、同社が成長、進化する中で、社内の開発者たちがコラボレーションするための重要なプラットフォームである。「メルカリは成長し、日本と米国の両国において大きなプレゼンスを確立しています。GitHubがあってこそ成し得たことです」と、ソウゾウのソフトウェアエンジニアである山本竜三氏は説明する。

GitHubの導入により、メルカリの開発者は社内でのコード共有が簡単にできるようになった。「インナーソースは私たちの働き方に影響する重要な要素です」と、山本氏は話す。「入社した社員は、メルカリ全体のほとんどのリポジトリにアクセスできます。そのため、どのチームも、他のチームによって実施済みの作業を活用したり、他部門の社員によって維持されているコードの改良に貢献できます」

メルカリでは、社内でGitHubのユビキタス性を活用してツールを統合している。「CI/CDとセキュリティの自動化にGitHubを利用する大きなメリットの1つは、必要な機能がGitHubに組み込まれているため、追加のツールを構築、導入、または維持する必要がないということです。」と、山本氏は述べる。「つまり、開発者はツール管理に費やす時間を減らし、時間を増やしたいと思っているコード開発作業のほうに、より多くの時間を割くことができます」

GitHub Advanced Securityでセキュリティ対策を強化

また、メルカリは、セキュリティチームがシークレット管理プロセスの引き締めを検討していた2021年6月に、GitHub Advanced Securityの使用も開始した。それ以前は、webhookを用いて社内で作成したシークレットスキャンツールを使用して、各コードのプッシュをスキャンしており、アプリケーションがシークレットを検出すると、Slack上で開発者に通知を送信していました。

「GitHub Advanced Securityのシークレットスキャンニングを利用することで、社内で作成したシークレットスキャンツールを運用、管理する必要がなくなり、開発者のGitHubワークフローの中でセキュリティ対策ができるようになりました」と、プロダクトセキュリティディレクターのNikolay Elenkov氏は説明する。「問題の確認と修正に要する手順が減ったため、アラート発生時に簡単かつ迅速にアクションを実行できるようになりました」

メルカリでは主に、バックエンドシステムににGo 言語、フロントエンドアプリケーションにJavaScript と TypeScriptを使用しているが、その他さまざまな言語やフレームワークも使用している。「現在、多くのアクティブリポジトリがあるため、各テクノロジースタックをカバーすることは困難です。CodeQLは私たちが使用する大半の言語をサポートしています」

Elenkov氏によると、GitHub Advanced Securityの導入はスムーズに進み、「誤検知(フォールス・ポジティブ)に関する問題はほとんど発生していません。解決方法が明らかではない問題に直面した場合でも、GitHub Professional Servicesと連携して解決策を見つけることができました。スキャン時にプライベートリポジトリから依存関係をフェッチするのに苦労しましたが、サポートチームの支援により、対応策を見つけられました」と話す。

開発ワークフローに組み込まれたセキュリティ対策

一般的には、開発終了後にセキュリティチームがソフトウェアのセキュリティチェックを行うが、開発者ワークフローにセキュリティスキャンを組み込むことで、セキュリティ問題への対応はより効率的になる。開発終了から数日後、数週間後、または数か月後にセキュリティの修正を行う場合、バグの正確なコンテキストを思い出せない可能性が高くなります。一方、開発の段階からセキュリティ対策を行う場合、コードとコンテキストがまだ頭の中に残っているため、すぐに問題を突き止められるためだ。また、コード内の脆弱性やシークレットを本稼働環境へデプロイする前に気づきます。「具体的な問題の重大度を開発者に警告することで、問題をより迅速に解決できます。応答時間はチームによって異なりますが、当社には問題の迅速な解決を重視する文化があります」と、Elenkov氏は話す。

GitHub Enterpriseのセキュリティツールはメルカリのセキュリティをシフトレフト (開発プロセスの中で可能な限り早い時期に移行) している。「本稼働環境よりも開発環境で問題を修正する方がかなり安く済むため、当社にとっては大きなメリットです」と、彼は付け加える。「問題を早い段階で突き止めて修正することで、修正のスケジュールを設定したり、パッチ適用によって本稼働環境に問題が生じないか心配する必要がなくなります」

さらに、メルカリ全体でGitHubを利用しているため、GitHub Advanced Securityの機能であるシークレットスキャンを組織全体で利用することも実現できた。「コードスキャンを展開するのがより容易になったのは、間違いなくGitHubのおかげです。ツールを全員のワークフローに統合することは複雑で時間がかかるため、GitHubがなければ悪戦苦闘していたでしょう」と、Elenkov氏は話す。「シークレットスキャンとCodeQLをGitHubプラットフォームに組み込むことで、さまざまななことを非常に簡単に実行できるようになりました」

GitHub Actionsで実装するワークフローの自動化

メルカリでは、GitHub Actionsを使用してワークフローの効率化も実現している。例えば、ソウゾウチームはGitHub Actionsを主要なCI/CDツールとして使用し、クラウド内のGo環境のプロビジョニングからテストやセキュリティスキャンの実行まで、あらゆることを自動化している。「当社では、GitHub Marketplaceで公開されているGitHub Actionsを多く利用していますが、カスタムGitHub Actionsの作成も非常に簡単です」と、山本氏は話す。「使い始める際に役立つ例やドキュメントが豊富に揃っています」

GitHub Actionsを利用することで、メルカリはニーズに合わせてソリューションを柔軟にカスタマイズしている。「当社では、セルフホステッドランナーを使用してあらゆることを行っています」と、彼は説明する。「GitHub Actions とセルフホステッドランナーによって、独自にビルドキャッシュの最適化ができたり、シークレットの管理がよりセキュアにできています」

また、GitHubは規制の厳しい金融サービス分野の要件にも対応しているため、メルカリが抱える最新の課題の解決にも一役買っている。「GitHub Professional Servicesは、これからも成長を続けたいという当社のニーズをコンプライアンス面でサポートしてくれます」と、山本氏は話す。

さらに、山本氏は次のように話す。「GitHubは私たちにとって空気のような存在です。私たちの働き方の一部としてあまりに自然に存在しているため、時には気付かないことすらあります。GitHubのない生活は考えられません」

  • 業種

    Eコマース

  • 企業規模

    1,000+

GitHubを企業で活用する

柔軟なホスティングオプションやビッグデータに裏付けされたセキュリティが、企業におけるソフトウェア開発をサポートします。

What will your story be?

Start collaborating with your team on GitHub

Free

GitHub
のコア機能

$ 0 /月

Team

Advanced collaboration for individuals and organizations

$ 4 ユーザー/月

Enterprise

企業ニーズを満たすセキュリティ、コンプライアンス、柔軟なデプロイメント

$ 21 ユーザー/月

Want to use GitHub on your own? Check out our plans for individuals