テクノロジー

pixivの基盤ノウハウ大公開!PHPカンファレンス2017登壇レポート

tadsan tadsan
2017.11.1
シェア
ツイート
ブックマーク

技術基盤チームのうさみ(@tadsan)です。

pixivはPHPカンファレンス2017にスポンサーおよび、私を含めた2名(山際、うさみ)が本セッション(25分枠)に登壇いたしました。

企業ブース

ピクシブ株式会社はシルバースポンサーとしてPHPカンファレンス2017に協賛いたしました。当日はメインホールに企業ブースを設置し、実際のpixiv開発の様子をライブコーディングで披露して居りました。

「大規模WebサイトのURL刷新の方針と実装」

技術基盤チームの山際はWebサイトのURL設計と刷新の方針について話しました。

pixivは2007年から開始されたWebサービスです。イラストを投稿するサービスという点では現在まで一貫していますが、現在までの間には大小の絶え間ない変化があり、pixivが開発された当初のURL設計と現在のページ構成には乖離が生じている箇所も少なくありません。

良いURL設計の指針としてWebの発明者であるティム・バーナーズ=リーのHypertext Style: Cool URIs don't change. (和訳: クールなURIは変わらない)があります。これが書かれたのは1998年のことですが、pixivがリリースされた時点でも十分に認識されたとは言い難い状況です。

pixivがリリースされてから現在までの間にもRuby on RailsなどのWebアプリケーションフレームワークの普及などの要因があり、RESTなどの概念が普及してきました。

URLを取り巻く状況としては近年Safariがアドレスバーに完全なURLを表示しなくなるなどの変更がありました。しかしながらSNSでのページのシェアにおいては現在でもURLが広く利用されているため、簡潔でわかりやすいURL設計の価値は小さくありません。

過去のURLがリンク切れにならないような配慮は当然のことですが、URLを刷新することはpixivユーザーの皆様をはじめとして、多くの影響を与える事柄です。一度変更してしまうと、再度変更することはまた混乱を及ぼしてしまいます。そのため、慎重に検討しながら作業を進めています。

pixivはこれまでもURLルーティングを改善するための取り組みを行ってきました。よろしければ、こちらの記事も併せてお読みください。

「ここで差がつくエラー処理」

同じく技術基盤チームのうさみ(@tadsan)はPHPのエラー処理について話しました。

2007年に誕生したイラストコミュニケーションサービスpixiv(www.pixiv.net)はフレームワークなしのPHPで構築されました。現在でもpixivとコードベースを共有するいくつかのWebサービスも基本的には既製のフレームワークに載せず、薄いフレームワーク的な機能を共有しています。

そのような経緯から、pixivのエラー処理は基本的に自前で実装していました。今回の発表はpixivでの実装および、それを改善するための取り組みで得られた知見をまとめたものです。

本来、エラーの発生はユーザーに迷惑をお掛けすることなので避けるべきことです。しかし現実には想定外のバグやページによっては外部サービスの突然の応答不能などによって処理を正常に続行できない状況が生じます。

基本的にはエラーの発生は開発・運営側の手落ちなのでエラーが発生しにくい仕組み作りが肝要ですが、今回は「PHPにおいてエラーが発生する原因と種類」「起こってしまったエラーを処理する方法」について、PHPの仕様とライブラリにフォーカスを当てて紹介しました。

内容としては健全なpixivは健康なPHPに宿る〜モダンPHPを保つ7つの鍵 - pixiv insideおよびWEB+DB PRESS Vol.96(PDF版)で紹介した内容を更新したものです。

今回触れなかった点として、プログラムにおけるエラーの基本的な概念についてはメルカリの中野拓さん(@Hiraku)がPHPカンファレンス福岡2017で話したPHPのエラーと例外再入門がとても参考になるので、是非お読みください。

pixivではエラーを記録するためにFluentdを使った独自のログ収集基盤(fluentdによる大規模キュー設計 // Speaker Deck)を利用していますが、汎用的な方法に使える方法としてWebサービスのRollbarと、Fusicの小山健一郎さん(@k1LoW)が開発したfaultline (PHPカンファレンス福岡2017でfaultlineについて発表してきました #phpconfuk - Copy/Cut/Paste/Hatena)を紹介しました。

まとめ

ピクシブ株式会社では今後も日々の開発で得られた知見をカンファレンスや技術イベントなどでコミュニティに積極的に共有していきます。

ピクシブ東京オフィスおよび福岡オフィスではpixiv Nightやpixiv Technology Talksとして定期的に技術イベントを開催しています。

また、ピクシブ株式会社ではPHPのみならず、Ruby, Go, Scalaなどのさまざまな技術領域で共に活躍するエンジニアを募集しています。詳しくは採用情報をご覧ください。

シェア
ツイート
ブックマーク