読者です 読者をやめる 読者になる 読者になる

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



スケールするためには仕組み化が必要 ー「ピクスタ」インタビュー | SideCI導入事例

会社概要

  • 今回ご協力頂いた企業: ピクスタ株式会社
  • 利用人数: 16人
  • ご利用開始年月日: 2014年5月

はじめに

今年の9月に上場したばかりの話題のベンチャー、写真素材サイト最大手の「PIXTA」を運営するピクスタ株式会社さんにインタビューに行ってきました。

PIXTAは1500万点以上の高品質・低価格のロイヤリティフリー画像素材が数百円から購入可能な写真素材サイトです。先ほど見て初めて知ったのですが、イラストや動画素材、シーズンものの素材(年賀状素材など)も販売されています。ピクスタさんはよく渋谷界隈のRubyの勉強会・コミュニティの会場にもなっており、東京在住のRubyプログラマの方は既によくご存知かもしれません。

ピクスタさんは日本とベトナムの2拠点4チームで開発しているとのこと。今回はその中の基盤技術チームの3名にお話を聞いてきました。

ピクスタ社サイトイメージ

高まるチームの独立性と開発部としての統一性

ーピクスタさんではどのような体制で開発を進めていらっしゃいますか?

佐藤さん: まず、私たちPIXTAの開発チームは大きく分けて4種類のチームで開発を進めています。PIXTAではオンラインマーケットプレイスとして、クリエイターが投稿した素材を購入者に販売しています。

佐藤さん: そのため、開発チームもそのビジネスフローに合わせて、「クリエイター向けのチーム」「購入者向けのチーム」の2チームと、ベトナムに拠点がある「ベトナムチーム」、私たち「基盤技術チーム」の計4チームがあります。私たちは開発部の何でも屋といった立ち位置ですが、いわゆるDevOps部分などを担当しています。

後藤さん: 今後はこの各チームの独立性がより高くなっていくと思います。そのチームを支えつつ、開発部として共通化・仕組み化し、整備してスケールアウトさせていくのが私たちの役割ですね。

基盤技術チーム 佐藤さん 基盤技術チーム 佐藤さん

SideCIの導入のきっかけ

ーピクスタさんではどのような動機でSideCIに興味をもったか教えて下さい。

佐藤さん: 実は初めは興味本位なんです。SideCIがリリース間もないころに試しに使ってみたことがあります。その頃はまだ洗練されておらず、GitHubへSideCIがコメントをしてくるタイミングや量が適切じゃないといったことがありました。こうした話をSideCIの角さんとしたことがあります。そこから徐々に改善されてきて、本格的にSideCIを使い始めたのは今年からですね。

佐藤さん: 今年のはじめ頃にコーディング規約を社内で議論し定めました。その際にコーディング規約をチェックするツールとして、「HoundCI」などのSideCI以外のサービスもいくつか試験的に導入していたのですが、どれかに一本化しようという話になりました。

佐藤さん: 個人的にSideCIがサポートしているツールの中で特に嬉しいのがbrakemanですね。セキュリティは気をつけるべきところで、ペネトレーションテストなどを行っていたことがありますが、Railsに対応したセキュリティホールをスキャンするプロダクトは商用でもあまり見かけません。SideCIはそのbrakemanが使え、RubocopもありReekもあり、rails_best_practicesもあるといったように、必要な機能が揃っています。一番対応しているツールが多く使いやすいSideCIに一本化することに決めました。SideCIは多くのツールを簡単に入れられて設定も楽なのでいいですね。

言語も働く場所も違う時にすごく便利

― 入れてみてどうですか

佐伯さん: 夏頃、ベトナムチームの立ち上げを行ったのですが、その際にSideCIのありがたみを感じました。立ち上げ直後なので、向こうのエンジニアはピクスタのコーディングルールを知らないわけです。ドキュメントを渡すだけだと、コードレビュー時にルールを守れているかのチェックを人間が行う必要があります。これは全く面白い作業ではありませんし、そもそも非効率です。ベトナムチームとのコミュニケーションは当然リモートですし、母国語も違います。こういった中でコーディングルールを守れているかのチェックを人間が都度行うのは大変です。SideCIを導入したことで自動的にチェックと指摘がなされるようになったため、そういったチェックを人間がしなくてよくなりました。

佐伯さん: 同じコーディングルールを別チームでも運用したいと思った時、RuboCopの設定ファイルをそのチームに渡すだけで簡単に運用できるのが、嬉しかったです。

佐伯さん: プロジェクトの開始時などの環境作り、チーム作りの際にSideCIは必要になるツールだと思っています。

基盤技術チーム 佐伯さん 基盤技術チーム 佐伯さん

「botが指摘する」ことの良さ

後藤さん: コードレビューの際には設計など本質的なレビューをしたいのですが、新しく入った人だと、社内で決めたコーディングスタイルに沿っていないことがあります。そこを人がレビューすると、レビューする側(レビュワー)もされる側も(レビュイー)も疲れてしまう、うるさく思ってしまいますので、静的解析で人間じゃないアカウントが指摘し、レビュイーがそれを直した状態でコードレビューの依頼をしてもらえるというのが良いですね。

基盤技術チーム 後藤さん 基盤技術チーム 後藤さん

今後の課題

― 今後の課題などはありますか?

後藤さん: 私たちピクスタ内では全社的に「1→10のフェーズは終わった。次は10→100のフェーズ」と掲げており、10→100をより早く達成出来るよう、スケールするための仕組みを作っていきたいと考えています。

佐伯さん: ピクスタの行動基準としてピクスタウェイを掲げているのですが、そこに先ほどの内容も含まれています。

スケール化のために仕組み化 本当に人の手を加えることが必要な部分以外は仕組み化(=再現性、継続性、効率性、効果性がより高まることに寄与する取り組み)することに徹底的にこだわる。オンライン上の機能のみならず、あらゆる部署のあらゆる業務が仕組み化の対象となる。そして仕組み化により生まれたリソース(主に時間)を、より付加価値の高い業務に投下することで、PIXTAが生み出す価値を最大化することを常に志向する。 https://pixta.co.jp/recruit/way

佐伯さん: SideCIを使っているのも「スケール化のための仕組み化」の一貫です。コードレビューでの細かいチェックは、今までの1→10のフェーズでは人間が行うこともできました。しかし、10→100のフェーズとなると、人の手には負えない部分が増えてきます。

佐伯さん: SideCIに限らず、他の部分でもスケール化のための仕組み化、自動化を今後も進めていきたいと思います。

ピクスタの皆さんの集合写真 ピクスタの皆さん。左から佐伯さん、後藤さん、佐藤さん