アクセス解析機能開発秘話

アクセス解析機能開発秘話

Takuya (UX/UIエンジニア)、Atsushi (Webアプリケーションエンジニア)、Shunsuke (インフラエンジニア)

アクセス解析はユーザーが絶対に欲しいものだろうと思った(Shunsuke)

──最近のpixivの中でも、アクセス解析機能のリリースは大きなものだったと思います。開発の準備はいつごろからしていたのでしょうか?

Shunsuke 実は、アクセス解析は様々な段階の開発を経てリリースした機能です。正式にリリースする形を固めて開発を開始したのは2013年4月ですね。それ以前には、2012年の年末から、本当に運用できるのかを試していました。アクセス解析機能は、ユーザーの方がイラストを投稿して反応を見るうえで、やはり絶対に欲しいものだろうと思った。実は作品を投稿しているユーザーは、作品の管理画面を何回もリロードして見ている人が多いんですよ。

Atsushi 作品管理ページでは作品の閲覧数や評価数を見ることができるので、投稿後に画面に貼り付いて何度もリロードしているユーザーの方が多くいることがわかった。だから、アクセス解析機能の開発は、作品がどう見られているか気になっている多くのユーザーのニーズがあると思ったんです。

michi

Takuya アクセス解析機能自体はずっとやりたいと思っていたんですが、なかなか着手できない部分だった。リソースもなければ、つくれる人もいなかったから。

──実際に、開発が大変だったのどの点ですか?

Shunsuke アクセス解析の画面を実際に使うことができるのは、プレミアム会員の方だけですが、解析対象はpixivの全ユーザーになります。そのため、「全ユーザーがどれだけプレミアム会員の作品を見ているか」という膨大なデータをさばかなければいけない。解析対象になるページが1秒でも遅くなってしまったらWebサービスとして大打撃です。特にPVが多いページが重くなったら、それだけ多くのユーザーにストレスを与えてしまうので、いかに軽く実装するかに注力しました。今回実装した方法というのは、データを一時的にサーバーのローカルに貯めておいて、それをfluentdという、Rubyで最近使われ始めたばかりのプロダクトを使って集計しています。集計サーバーにきた情報を、1分置きにmysqlに突っ込むという手段です。

Atsushi 取得は1分置きだけど、その時に走る処理もかなりリアルタイムに近づけています。ラグもほぼ無くて、数秒程度の処理で書き込まれています。どういう方法をとれば一番負荷が少なく実装できるのか、ログを取りながら何度も調査して今の形に落ち着きました。送り先も、直接データベースに保存するのではなく、送られた先でもファイルに書き出して、後から処理するという形にしています。おそらく他社のサービスではこういう実装はあまりしていないと思います。

Shunsuke データも2台のサーバーに送っていて、片方のサーバーが万が一、過負荷で落ちてしまっても、もう1台に保存されているので、取りこぼしなく処理できるようになっています。もともとリアルタイム性を重視した設計を意識していて、サーバーもそれに見合うように数秒で書き込めるように拡張を進めていました。

Atsushi 当初はデータをMongoDBに保存しておくという話もあったんですが、最終的には、ファイルにどんどん追記していくという──古き良き方法なのか知らないですけど(笑)。

Shunsuke データベースに情報を保存する際、通常は「このイラストの値に1プラスする」という方法が取られます。しかし、今回のデータ構造は、ファイルにリニアで書いていく追記型を採用し、いつどこからアクセスされました、という情報をただ単に追記する形式をとっています。アクセスのパターンとしては、ランダムアクセスではなくシーケンシャルアクセスになるため、処理が軽くなる。シーケンシャルアクセスにおいて一番速いのはファイルに直接書くことなので、現在の方式に落ち着きました。

自分の分野に限らず、持っている技術を使って横断的に取り組むことが多い(Takuya)

──今回のプロダクトの開発にはどれくらいの人数が関わっているのでしょうか?

Atsushi 6人ぐらいです。プロトタイプからだと8人ぐらい。やりたい人が自然と集まって、少人数で行なっています。何をつくるのか具体的に決まっていったのは実際に動きだしてからで、今の形に落ち着いてからはメインを3人ぐらいで分担して進めていきました。基本的には誰がどこを担当する、というのはガチガチに固まっているわけではなくて、pixiv全体をみんなが見ています。アクセス解析の機能を入れたいという話自体は、ずっと前から上がっていましたね。

Takuya 社内の雰囲気としても、「次はアクセス解析だよね」という事をみんなで話していた。そういう意味ではpixivをつくっている人がみんなで関わった機能だともいえます。普段の開発でも、自分の分野に限らず、持っている技術を使って横断的に取り組むことが多いですね。

yokono

Atsushi 僕としては、特化した人を増やすよりも全体を触れる人が増えた方がいいと思っています。

──UIはどうやって決めていきましたか?

Takuya 便利で使いやすい、というのは当然ですが、「どうすれば面白いプロダクトになるか」という点を工夫しました。まず表示させるデータを決めるのですが、作品があまり閲覧されていないユーザーさんも当然いるわけです。そういう方は表示する情報によっては、開いた画面がほとんど真っ白になって、悲しい思いをしてしまう。だから、誰が見ても動きがあるような情報を出そうと心がけています。

Atsushi データというのは、人によって捉え方も受け取る量も違うので、みんなにとって良い機能にするべく頑張りましたね。

Shunsuke 僕はフロント側のことにはあまり関わっていなくて、データをどう取ってサーバーに送るか、というバックエンドのことばかり考えていたので、「また一個指標増えるの?」ということしか気にしていませんでした(笑)。

Takuya UIの見た目としては、シンプルに、誤解がないようにつくりたかったので、参考にFlickrやSoundCloud、それにYouTubeのアクセス解析の画面も見ていました。UIだけでなく、どういうデータを扱っているのかも参考にして、慎重に選んでいます。おかげさまで、公開してからすぐ反響もあり、特に「検索キーワード」のページがたくさんクリックされていた。作品を投稿するユーザーの方からしたら、どういった経路から自分の作品が見られているのか、やはり興味が大きいようです。UIを設計する段階でも最初から予想はしていたので、「検索キーワード」は大事にした部分でした。アクセス解析機能自体は、個人サイトやブログでイラストを発表している人の中には、普段から使っている方も多い。だからpixivユーザーにも受け入られやすかったのだと思います。

access

「そのプロダクトにどういう価値があるのか」という根底から話せる人は頼りになる(Atsushi)

──アクセス解析機能は今後、どういった方向性での拡充を進めていく予定ですか?

Atsushi 具体的なところだと、小説作品のアクセス解析もやりたいという話があり、そろそろ動き始めるつもりです。ユーザーの方々からも要望が上がっています。もともと設計段階で、小説でも使えるように考えていたので、まずはその対応からですね。

Takuya ランキングに入るようなユーザーの方は、実は普段から独自に作品の分析をされているようなんです。今どんな作風の人気があるか、どんな二次創作が流行っているのか。作品をもっと多くの人に見てもらおうとする上で、今後、アクセス解析機能は、あって当たり前の基本機能という位置付けになっていくかと思います。小説の解析もそうですが、まだ未実装になっている部分がちょこちょこあるので、それを進めようと思っています。

Shunsuke 1ヵ月分まとめてデータを表示させたり、過去を遡ったりする機能は実装できる見込みは立っているのですが、それより先に、もう少しデータ量の増加を強化したいという理由から、リリースを見送っています。

takayama

Takuya 範囲指定もできるようになる予定です。UIが大変なんですけど(笑)。このように、まだアクセス解析機能は未完成なんです。だから、どんどん開発を進めていかなければいけない。

Shunsuke かなりの機能を抑えて実装されていますね。完璧につくると時間がかかってしまうから、できるところからですね。

──アクセス解析機能の開発チームに限らず、「こんな人にピクシブに入って欲しい!」という希望はありますか?

Atsushi こういうものをつくりたい、という時、「そのプロダクトにどういう価値があるのか」という根底から話せる人は頼りになる。技術的にも、面白いことをしている人や純粋にスゴいことをしていて感動させてくれる人が良いですね(笑)。

Shunsuke 社員には新しいもの好きな人が多いですよね。今回も先ほどのfluentdをはじめ、表側もD3.jsという新しい技術を取り入れています。

Takuya SVGでグラフを簡単に書いたりできるから、retinaディスプレイで見ても綺麗なんです。もちろん、ドキュメントも少ないから自分でどうにかしないといけないけど。スマートフォン版のアクセス解析機能にSVG描画をいれたんですが、Androidユーザーの一部の方には使えないものもあったり……。

Atsushi けれど、ほとんどのユーザーさんに価値があるものだったので、出さないよりは出した方が良いという判断をしました。あとは、ピクシブでは、仕事以外でも自分で物をつくっていた人が多いですね。コードを書くのが好き、休日でも何かしらプログラムを触っているような、そんな人を待っています。

プロジェクトストーリー一覧へもどる

TOPへ