ピクシブ株式会社

創作活動を、もっと楽しくする

今回はRubyBizグランプリで大賞を受賞したpixivとpixiv関連サービスについて、ピクシブ株式会社CTOの道井 俊介氏に話を伺った。

〈 CTO 道井 俊介氏 〉

ピクシブ株式会社は2005年に設立され、現在では従業員数約600人、そのうち約180人がエンジニアである。
コーポレートミッションとして「Accelerate creativity. 創作活動を、もっと楽しくする。」を掲げ、イラスト、マンガ、小説といったポップカルチャーのコンテンツに根ざして事業を展開している。

ピクシブではイラスト、マンガ、小説の投稿プラットフォームである「pixiv」というサービスをメインの事業としている。
pixivは2007年にサービスを提供開始し、現在、累計ユーザー数が1億人以上、約1.3億作品が投稿されている。
国内だけでなく海外からも積極的に利用されており、約220の国と地域にユーザーが居り、新規登録ユーザーの約7割が海外である。

このpixivを中心に、ピクシブは創作活動に関わるサービスを多数展開している。
pixivはPHPで作成されているが、周辺サービスではRuby on Rails(以下Rails)で作られているものも多い。
創作物の総合マーケットプレイスである「BOOTH」、グッズ制作サービス「pixivFACTORY」、クリエイターの創作活動を応援するためのファンコミュニティ「pixivFANBOX」、pixiv投稿マンガや出版社との協業作品などが楽しめる「pixivコミック」、講談社と共同で企画・運営・開発に取り組んでいるマンガアプリ「Palcy」、Web発⼩説、ゲームのノベライズ、絵本まで豊富なラインナップの「pixivノベル」、3Dキャラクターの投稿プラットフォーム、3Dキャラクターを制作できるソフトウェアの「VRoid Hub」などをはじめ、多くのサービスでRailsが使われている。

〈 Ruby on Railsを活用したプロダクト 〉

ピクシブでは、2011年頃から開発にRailsを取り入れはじめ、Railsで開発され最も長く運営されているのは2012年にリリースされたpixivコミックである。
ピクシブではこれらの多くのサービスにRailsを活用することで、よりプロダクトの成長、プロダクトの開発速度を早めることができ、結果、多くのサービスをリリースすることができた。

海外からの利用も多い

pixivの場合は、当初から海外進出を意識していたわけではなく、日本のイラストやマンガが好きな海外の方が見つけて使ってくれるようになったそうである。
とはいえ、ユーザー数の伸びでいうと、海外を意識した施策を始めてからの方が多い。

2011年ごろから英語、中文(繁体字)などの閲覧に対応したのを皮切りに、国際版pixiv βをリリースするなど、様々な海外向けの施策を開始した。
海外ユーザーを対象としたSEO、翻訳機能などサービス面ではもちろん、海外ユーザーの作品投稿を促進する施策なども併せて行ってきた。
海外から広く使われるようになることで、大変になることもある。
有名なサービスになれば、それだけ攻撃されるリスクも高まり、責任も大きくなる。
世界中の人々に安心してサービスを利用してもらうには、グローバルサービスとして一般的なセキュリティ基準を担保する必要がある。

そこで、社内でpixiv CSIRTを組織し、インシデントレスポンスを行っている。
またホワイトハッカーによる脆弱性報告を促進するため、脆弱性報奨金精度(バグバウンティ)を設けるなど、セキュリティを担保する施策を行っている。
また決済サービスに関しても、全社で利用する決済基盤の整備を行い、安心・安全な決済が出来るようエマージェンシーフローを整えている。

Rubyに関する取り組み

Railsプロダクトの健康診断

pixivの特長的な取り組みとして、「Railsプロダクト診断」がある。
これはどのようなもので、どのような効果があるのだろうか。

ピクシブのサービスは長期運用されているものも多い。
長年運用していると、RubyやRailsのバージョンアップへの追従や、使用しているGemに不具合や脆弱性が見つかったり、ライブラリが時代に合わなくなったり、メンテナンスされなくなるなどの課題も出てくる。
そこで定期的に外部の方にソースコードの点検をしてもらい、プロダクトの健康状態を診断してもらっているそうだ。

「この健康診断は、Railsのソースコードを実際に見て診断していただいています。
ソースコード上で、今後開発において支障が出そうなところを診断してくれています。
例えばRubyのバージョンが次いつリリースされて、利用している機能が消えてしまうので、その前に上げた方がいいですよとか、アップデートするときに例えばRubyとRailsどちらを先にバージョンアップするか、使用しているGemの変更に合わせてどう対応するかなど、アドバイスいただいています。」(道井氏)

古くなったコードを直すのは後回しになったり、滞りがちになるが、健康診断という形で外部の方に指摘してもらうことにより、やらねばという気持ちになるそうだ。
「なんとなく自覚していても、健康診断の数値を見ると何とかせねばという気持ちになったりしますよね。
このような形で指摘を受けると、その対応の後押しになっています。
弊社規模になるとCTOひとりがすべてのプロダクトの開発状況を常に事細かに熟知するのは困難です。
この結果をもとに診断者と1on1をすることによって、私自身がプロダクトの状況や困りごとを知ることができる機会にもなっています。」(道井氏)

Rubyエンジニアの情報共有の場、互助会

エンジニアも各事業部に所属しているため、エンジニア同士の横のつながりの場として「互助会」がある。
互助会はRailsを使っているメンバーなら誰でも参加でき、毎週30分程度実施している。
あらかじめ、各事業部の状況や相談事などを書きこんでおき、それをもとに開催している。
そこには診断結果や対応した内容についても共有されており、自サービスに対応する際の参考になっているそうだ。
また、互助会のメンバーでモブプログラミングをしたり、他部署の事例を聞いたり、共通で使っているGemの仕様やメンテナンスを検討するなど、事業部を横断する開発や情報共有の場として活用されているようだ。

事業部制のメリット

ピクシブでは現在、1サービス1事業部の事業部制をとっている。
以前は違う体制だった時期もあるそうだ。
事業部制にしたメリットはどんなところにあるのだろうか。

「各プロジェクトが、各自リソースや目標の管理機能ができるのが一番大きいです。
ピクシブの事業部制の場合、エンジニアやプロダクトマネージャーだけでなく、ビジネス職も全員その事業部に所属しています。
そうすることにより、各事業部の中で今一番やらねばならないことと各メンバーの優先順位が一致します。
さらに、エンジニアであってもプロジェクト側の意見を言いやすいし、各メンバーがフラットにコミュニケーションできる状況が作れています。」(道井氏)

事業部はサービス単位で構成されるため、サービスの規模と事業部の規模が比例し、事業部の人数に差ができてしまう。
立ち上げたばかりのサービスのように小さい規模のものでは、エンジニアが数人のところもある一方で100人を超える事業部もある。
ピクシブの事業部制の特徴は事業部の規模を小さくし、メンバーの裁量を大きくしているところにあるようだ。
その優位性を生かすために、大きな事業部ではさらにユニット制をとるなど、チームの規模が大きくなりすぎないようにしている。

「規模の小さいサービスではエンジニアが数人という事業部もあり、その中でサービスを運営していかねばならないため、メンバーが薄くなってしまうところもありますが、一人一人の裁量が非常に大きいという特徴もあります。
事業部ごとに独立しているため、それぞれが異なる開発手法や体制を採ることができるのも事業部制のメリットだと思います。」(道井氏)

事業部ごとに独立していると自発的な取り組みが期待できる一方、Rubyのバージョンなどが事業部依存になってしまうリスクもある。

「プロジェクトごとに状況がバラバラになり、例えばここがRailsのバージョンアップが止まってるとか、そういうことが起こると非常に困ります。
それを防ぐために健康診断や互助会といった仕組みを取り入れて、できるだけそういうことが起こりづらいような状況を作ったりしています。」(道井氏)

さらに、1人のエンジニアが複数のサービスを兼任することは基本的に行っていない。
これは、エンジニアもコードの実装にとどまらず、サービスにコミットしてほしいという思いがあるからのようである。

「兼務しないのは、単純に時間の管理がやりやすくなることもありますが、エンジニアであっても単純に実装作業だけをやるわけではなく、プロジェクトを立ち上げる段階から関わって、リリース後の改善までを担当しています。
そうすると複数のプロジェクトを兼務していると本人も周りの人もやりづらいとなってしまうところがあるので、できるだけ兼務させずに一人の人がプロジェクトの最初から最後まで携われるようにしています。」(道井氏)

Rubyの効果

Railsプロダクトの健康診断

短期間でリリースし、運用し続けているサービスの例として、pixivコミックをあげてくれた。

「たとえば、pixivコミックはコードを書き始めてから2ヶ月でリリースしました。
短期間でサービスをリリースできるのは、Railsの持つ大きな力だと思っていますし、Rubyの強みです。
もう一つの強みとして、作ったプロダクトが成長した時、どこかのタイミングで、他の言語に変えるようなことをしなくてよいことです。
pixivコミックはサービス開始から10年以上、同じコードをバージョンアップやメンテナンスをしながら、今でも開発し続けています。
のこのように、長期間開発し続けて、より品質の高いコードになっていくのが強みだと思います。」(道井氏)

Rubyの柔軟性を活用した標準化

ピクシブのサービスでは、ひとつのpixivアカウントで様々な創作活動にまつわることができるようになっている。
ピクシブアカウントを持っていれば、BOOTHで商品を販売することもできるし、pixivFACTORYのグッズを制作することもできる。
これらを実現するために、社内で使われているRailsの構成の標準化、pixiv本体と連携するためのAPIの提供、アカウントサービスをRailsから使うためのGemの配布などを行っている。
複数サービスから利用するAPIを作成する際、Rubyの柔軟性を活用することによって各サービスの違いを吸収しやすい。

〈 標準的なRuby on Railsアプリケーションの構成 〉

「Railsの構成をできるだけ標準化にすることで、メンテナンス性を上げることができますし、高速な開発が可能になっています。」(道井氏)

コミュニティの存在

ピクシブではRubyに関するイベントのスポンサーやイベントでの登壇などRubyコミュニティにも積極的に貢献している。

「やはり、日本には多くのRubyのエンジニアの方がいらっしゃるというのも強みの一つで、Rubyのコミュニティで知り合って弊社にジョインしていただいた方もたくさんいらっしゃいます。
優秀なエンジニアの方に入っていただくことがサービスの安定に繋がるので、コミュニティに支えられているところもあります。」(道井氏)

これからも創作活動を支援する仕組みを提供し続ける

これまで創作活動を支援するしくみを作ってきたピクシブ、これからもさらに楽しく創作できるしくみを考えているそうである。

「今後もピクシブは『創作活動を、もっと楽しくする。』というミッションを実現するために様々なサービスを提供していきたいと思っています。
そのために今、特に力を入れているのは、クリエイターのためのクリエイティブツール、新しい創作の形を実現するようなツールであったり、その仕組みづくりに力を入れています。
そのために今進めているプロジェクトも複数あります。」(道井氏)

まだ具体的な内容は話せないが取り組んでいる新しいサービスもいくつかあるそうで、リリースを心待ちにしたい。

※本事例に記載の内容は取材日時点(2023年12月)のものであり、現在変更されている可能性があります。