ブックマーク / devpixiv.hatenablog.com (35)

  • CORSでハマったことまとめ - pixiv inside [archive]

    こちらは ピクシブ株式会社 Advent Calendar 2014 の12/16の記事です。 こんにちは、エンジニアの@dnskimoです。 先日、はじめてCORSを実装する機会があったので、覚書がてらまとめておきたいと思います。 CORSとは Cross-origin resource sharingの略です。 読み方は「コルス」でいいんでしょうか? Same-Origin Policyに弾かれずに、異なるドメイン間でリソースを共有する仕組みです。 2014年1月にW3C勧告になり、JSONPに替わる方法として徐々に普及してきているようです(要出典)。 アクセスコントロールの仕様も定義されているので、特定のサイトからのみ利用可能なAPIを作る際などに便利です。 JSONPのような「裏ワザ」的な方法ではないところも個人的に好みです。 詳しいことはネット上に素晴らしい記事がたくさんあるので

    CORSでハマったことまとめ - pixiv inside [archive]
    nishitki
    nishitki 2017/11/20
  • pixivの事例で考える、脆弱性報奨金制度との上手な付き合い方 - pixiv inside [archive]

    新CTOの@edvakfです。 今年のピクシブ株式会社アドベントカレンダーも無事最終日を迎えることができました。 http://qiita.com/advent-calendar/2016/pixiv 脆弱性報奨金というものがありまして、日だとCybozuさんとかLINEさんの事例が有名です。 今回はピクシブで脆弱性報奨金の導入事例を元に、脆弱性報奨金とどう付き合っていくのが良いかを考えていきます。 忙しい人向けのまとめ BugBounty.jpを利用して脆弱性報奨金制度を導入した セキュリティ部署を作らなくてもミニマルに始められて良い 会社の規模に合わせて報告件数をコントロールしながら報奨金額を設定しよう BugBounty.jp CybozuさんやLINEさんは自前で脆弱性報奨金の窓口を運営されていますが、ピクシブではBugBounty.jpというサービスを利用しています。(pixi

    pixivの事例で考える、脆弱性報奨金制度との上手な付き合い方 - pixiv inside [archive]
    nishitki
    nishitki 2016/12/26
  • GitLabの運用方法をドーンと公開!! - pixiv inside [archive]

    ピクシブ株式会社 Advent Calendar 2016の時間です。今回はピクシブ株式会社でエンジニアをしている @catatsuy が担当します。今回は意外と書いてなかったのでGitLabを社内でどう運用しているかの話を書こうと思います。 GitLabGitHub ピクシブ社内では以下の2つの方法でソースコードを管理しています。 自社でホストしているGitLab GitHub Organization それぞれ以下の特徴があります。 GitLabのメリット 自社でホストしているため、アメリカにサーバーがあるGitHubよりもgit cloneでリポジトリをダウンロードする場合などは速い オープンソースのプロジェクトのため、社内のサーバーにインストールするだけで使える ソースコードを読めば内部でやっていることが分かる ユーザー数やリポジトリ数などで料金がかからないため、気軽に使える G

    GitLabの運用方法をドーンと公開!! - pixiv inside [archive]
    nishitki
    nishitki 2016/12/16
  • pixiv開発を支えるVim (タグジャンプ編) - pixiv inside [archive]

    こんにちは、 ピクシブ株式会社 Advent Calendar 2016 の10日目の記事を担当します、エンジニアのkanaです。弊社は様々なサービスを開発・運営していますが、私はその中でもイラストコミュニケーションサービスのpixivの開発に携わっています。 今回は日々の開発の中で気になったちょっとしたVimの話をします。 発端 コードを読み書きしてると「この便利メソッドが中でやってる処理がどうにも臭うぞ……」という場面にしばしば遭遇します。そういう時はタグジャンプを使います。 universal-ctagsをインストールする プロジェクトのルートディレクトリで ctags -R を実行して tags ファイルを生成する という前準備を済ませたら、後は <C-]> で定義に飛ぶ <C-t> で元の位置に戻る というキーバインドを覚えるだけでコードツリーを高速で飛び回る事ができます。これで

    pixiv開発を支えるVim (タグジャンプ編) - pixiv inside [archive]
    nishitki
    nishitki 2016/12/11
  • 割れ窓理論を導入してWebサービスのクオリティに直結した話 - pixiv inside [archive]

    ピクシブ株式会社 Advent Calendar 2016 @8日目の記事です。 こんにちは、エンジニアのdo7beです。pixivFANBOXの開発などに携わっています。 さて、今回は新規開発プロジェクトに「割れ窓理論」を導入してサービスのクオリティ向上に繋がった話をご紹介したいと思います。 割れ窓理論とは 「割れ窓理論」とは、アメリカの犯罪学者ジョージ・ケリング氏が提唱した「建物の窓ガラスが割れたまま放置されると住民もゴミを捨てるようになり、治安が悪化し、より重大な犯罪が発生してしまう」という理論です。 つまり軽犯罪を取り締まることこそが、重大な犯罪を防ぐために重要であることを指しています。 私たちのチームではこれをWebサービスの新規開発プロジェクトに取り入れています。 WEBサービスにおける割れ窓は「軽度のデザイン崩れ」や「表記ゆれ」に、重大な犯罪は「バグ」や「全体のクオリティ低下

    割れ窓理論を導入してWebサービスのクオリティに直結した話 - pixiv inside [archive]
    nishitki
    nishitki 2016/12/09
  • ISUCON6裏話Nightで気になったツイート集―そして来年の出題は…? - pixiv inside [archive]

    12月からCTOになることになりました、ISUCON6選出題担当の@edvakfです。 11月22日に開催されたISUCON6裏話Nightで、ようやく自分の中でのISUCON6が終了しました。 当日の発表では試行錯誤したけどボツになったネタなども盛り込めたので、良い供養になりました。そのスライドを公開しつつ、当日のツイートのいくつかにコメントしていきます。 edvakfの発表スライド ISUCON6選の裏話 @ ISUCON6裏話Night // Speaker Deck catatsuyの発表スライド ISUCON6選のベンチマークでconsulを使用してクラスタを構築した話 / isucon6-night // Speaker Deck 気になったツイート 運営は大変なので小言を言わず優しくしてあげてね TLの小言は堪える。ほんと #isucon— fujiwara (@fuj

    ISUCON6裏話Nightで気になったツイート集―そして来年の出題は…? - pixiv inside [archive]
    nishitki
    nishitki 2016/11/25
  • Phan静的解析がもたらす大PHP型検査時代 - pixiv inside [archive]

    こんにちは、pixivPHPをやってるうさみです。健全なコードベースは黙っても降ってこないので、チーム全体で開発効率を高めるような改善をするのがお仕事です。 テキストエディタはmicro推しです ヾ(〃><)ノ゙☆ さる11月3日に大田区産業プラザ PiOで開催されたPHPカンファレンス 2016にて大怪獣に蹂躙されながらPhanについて30分のセッション発表をいたしましたので、その内容を紹介します! Phanとは PhanはPHPの静的解析ツールです。開発元はハンドメイドのマーケットサービスを運営し、現在PHP作者のRasmus Lerdorf氏する米Etsy社です。もちろんRasmus Lerdorf氏も開発に参加してます。 Phanは以下のような項目を検出できます。 関数・クラス・定数・変数などがすべて定義済か、アクセスできるか 関数の型と引数の数が合ってるか PHP5とPHP7の

    Phan静的解析がもたらす大PHP型検査時代 - pixiv inside [archive]
    nishitki
    nishitki 2016/11/16
  • Slackを一句BOTで風流に - pixiv inside [archive]

    おはようございます。プログラマーのhakatashiです。 普段はpixivコミックやpixivノベルの開発を手伝っています。が、今回はそれとは全く関係ないSlackの話をします。 一句BOTとは みなさんSlackは使っているでしょうか。普段から業務にプライベートにと幅広くSlackを使っていると、メンバーの何気ない一言に“一句”を感じることがあります。 風流ですね。 pixivにはこのような日常に潜む和の心を大切にする風雅なエンジニアが多いので、平安貴族よろしく日常会話や業務連絡に5・7・5の形の川柳を混ぜて会話します。とても優雅ですね。 ですが、上の画像のような完全に日常に溶け込んだ野生のステルス一句は、誰にも気づかれずにログの彼方へ流れていってしまうことも多いようです。そこで、Slackのメッセージから自動で一句を検出してReactionをつけるBOT、slack-ikkuを(1時

    Slackを一句BOTで風流に - pixiv inside [archive]
    nishitki
    nishitki 2016/07/06
  • 面倒な外部コマンドをAWS Lambda化して運用から解放される - pixiv inside [archive]

    最近は社内でChainerやTensorFlowのハンズオンをしている@edvakfです。 今日は機械学習ではなく、AWS Lambdaの話です。 pixivPDF生成機能 pixiv小説には自分の投稿した小説を印刷可能な縦書きPDFに変換する機能があります。 inside.pixiv.net 小説PDF化する部分は最初インターン生が作ったものが元になっていて、C++で書かれています。そのプログラムに渡すデータを用意する部分はというと、これまたインターン生が作ったpixiv-novel-parserと、小説文を組版に最適な形式に自動変換するhakatashi/osekkaiいうNode.jsのプログラムを使って生成しています。 サービスにC++のコードを導入するのって勇気がいりますよね? もし入力ファイルによって任意のコードが実行できる脆弱性があったりすると大問題です。そのため、この

    面倒な外部コマンドをAWS Lambda化して運用から解放される - pixiv inside [archive]
    nishitki
    nishitki 2016/06/14
  • ISUCON6出題チームが社内ISUCONを開催!AMIも公開!! - pixiv inside [archive]

    ISUCON6の出題者の1人の@catatsuyです。 GW直前の4/28、年度入社の新卒エンジニア全員と社内のエンジニアほぼ全員が参加するイベントとして社内ISUCONを開催しました。 同じく出題者の1人である@edvakfの記事でも書いたように、今年のISUCON6では株式会社はてなさんと弊社で共同出題する予定です。 inside.pixiv.net 今回は弊社のISUCON6出題チームの4人で開催した社内ISUCONの様子を紹介します。 社内ISUCON 時間は12:30から19:00まで行いました。営業日に会社のエンジニアのほとんどが参加するイベントなので、午後を割り当てる形にするぐらいが良いのではないでしょうか。今回は新卒研修の一環としての側面があったので、新卒エンジニアにはISUCON事前ハンズオンとしてこのような内容の講義を行いました。 初期実装 初期実装の言語は『Ruby

    ISUCON6出題チームが社内ISUCONを開催!AMIも公開!! - pixiv inside [archive]
    nishitki
    nishitki 2016/05/19
  • PHP7が羨ましかったのでpixivのPHP高速化についてドヤ顔してきた - pixiv inside [archive]

    最近TODOが増えすぎてきたので、自分専用Trelloを導入して捗っている @edvakf です。 PHP7 Casual Talks #2「速さ」 というイベントを知り、PHP7にはまだ行けていなくて悔しい思いをしていたら、 今回のテーマは「速さ」。...と書きましたがPHP7, Hack, HHVM等に気持ち関係していたら何でも良いです(Casual!)。 という記述を見つけたので、「これなら喋れるで!」ということで主にPHP的な高速化の話をしてきました。 DBまわりの高速化などはまだまだ話しきれないほどあるのですが、どこかの機会にお話しできたらと思います。 pixivのHHVMの話はWEB+DB PRESS Vol.88にも詳しく書きましたので、時代はPHP7よりHHVMやで!という方はそちらもどうぞ。 WEB+DB PRESS Vol.88 作者: 佐々木拓郎,高柳怜士,鶴原翔夢,

    PHP7が羨ましかったのでpixivのPHP高速化についてドヤ顔してきた - pixiv inside [archive]
    nishitki
    nishitki 2016/04/16
  • pixivのデータストア/キャッシュ戦略 その3 - pixiv inside [archive]

    HHKB Professional Type-Sが欲しいインフラ兼ソフトウェアエンジニアのbokkoです。 普段はHHKB Proの日語配列キーボードを愛用しています。英語配列は苦手です。このことを同僚のエンジニアに言うとジト目で見つめられ・・・睨みつけられること請け合いです。 連載の最後となる今回はpixivのデータストア/キャッシュ戦略を支える周辺ミドルウェアについて解説していきます。 memcachedからKyotoTycoonへ移行した際に発生した問題 前回の記事の最後にもあったようにpixivではAPの数だけあったmemcachedへのリクエストを少数のKyotoTycoonにまとめたことで一部のKyotoTycoonサーバへのTCPコネクション数が爆発してKyotoTycoonサーバのCPUやメモリリソースには余裕があるのにネットワークで詰まるという問題が起こりました。 元

    pixivのデータストア/キャッシュ戦略 その3 - pixiv inside [archive]
    nishitki
    nishitki 2016/03/21
  • サルでもわかる「pixivコミック」の裏側 - pixiv inside

    2016 - 01 - 14 サルでもわかる「pixivコミック」の裏側 Tweet はじめまして!あけましておめでとうございます。 ピクシブのアライアンス部でプランナーをやっています。chihopです。 簡単に部署の紹介を兼ねて自己紹介から。 私は2011年に新卒として入社し、マーケティング部(pixivの広告営業を行う部署)に一時お世話になり、現在はアライアンス部でWEB・リアル両方の企画や、それにかかわる商品企画、制作等をやっております。 アライアンスとは日語にすると「協業」。広告を除いた外部企業さんとのお取り組み、またユーザーの皆さんと一緒に何かの取り組みをする……という性質のものは、大体アライアンス部の担当です。 今回はそんなアライアンス部で運営を行っております、pixivコミックについてお話します。 まずpixivコミックというものをご存知でしょうか。 pixivコミ

    サルでもわかる「pixivコミック」の裏側 - pixiv inside
    nishitki
    nishitki 2016/01/14
  • フロントエンドで知っておきたい要素指定の考え方 - pixiv inside [archive]

    みなさんはじめまして、ピクシブのフロントエンドエンジニア id:koharusugiura です。 JavaScript を用いた開発を行う際に jQuery や Reactvue.js といったライブラリーを使う方は多いでしょう。これらのライブラリーは共通して DOM を扱うライブラリーとなります。 DOM についての説明は長くなるのでここでは省きますが、簡単に説明すると HTML や XML の構造を表現するための仕様です。DOM は JavaScript のためだけにある仕様ではなく、 JavaPython など、多くの言語に対応する仕様です。 前述した各ライブラリーは多くのウェブブラウザー間の差異を吸収してくれるため、非常に便利なものです。しかし、その機能の豊富さからライブラリー自体のサイズは大きく、ウェブブラウザーで読み込むファイルの数や合計の容量が増えてしまいます。状況

    フロントエンドで知っておきたい要素指定の考え方 - pixiv inside [archive]
    nishitki
    nishitki 2015/12/23
  • Vimとgitで俺たちの開発速度はさらに加速した - pixiv inside [archive]

    gitという、とっても便利なツールをご存知だろうか。 git とはソフトウェア開発に特化したバージョン管理ツールである。もはや、git 無しで僕らの開発は立ち行かないし、GitHubを中心としたエコシステムに僕らは支えられている。 日々の開発では、毎日数え切れないgitコマンドを打ち続けてプロダクトの歴史をアップデートしている。 この記事を見ているエンジニアの皆さんもきっとそうだろう。 いや? ちょっと待ってくれ。 そういえば、僕はしばらくgitコマンドをコンソールで叩いた記憶がない。 そうだ! vimをカスタマイズしてからというもの、gitを直接たたくより遥かに便利な開発環境になったんだった! Vimmerはunite-gitiなしでは生きられない unite-gitiというプラグインがある。 これがすこぶる便利なのだ。 github.com サヨナラ git add git statu

    Vimとgitで俺たちの開発速度はさらに加速した - pixiv inside [archive]
    nishitki
    nishitki 2015/12/23
  • 健全なpixivは健康なPHPに宿る〜モダンPHPを保つ7つの鍵 - pixiv inside [archive]

    ピクシブ株式会社 Advent Calendar 2015の18日めの記事でございます。 qiita.com こんにちは、うさみです。去年のAdventCalendarではEmacsにpixiv-novel-modeを作ったって記事を書きました。趣味はQiitaです。 現在pixiv.netではPHP 7に移行を進めていますが、それに先駆けて、この数年間に実施してきたpixivの改善について紹介いたします。 実際のところ私自身はあまり仕事をしてないので、この記事の内容のほとんどはほかのメンバーの業績チームの成果です p(ixi)v 最初に宣伝をしますが、技術評論社さまのWEB+DB PRESSにて、pixivの開発チームとして「PHP大規模開発入門」を連載しています。この記事でpixivPHP開発に興味が湧きましたら、ぜひ購読していただければ ヾ(〃><)ノ゙☆ 1. デプロイ機能の抜

    健全なpixivは健康なPHPに宿る〜モダンPHPを保つ7つの鍵 - pixiv inside [archive]
    nishitki
    nishitki 2015/12/18
  • ピクシブ社内広告サーバーに新機能を追加するためにボクがやったこと - pixiv inside [archive]

    この記事は ピクシブ株式会社 Advent Calendar 2015 15日目の記事です。 qiita.com インフラチームの @catatsuy です。 普段はインフラの仕事が中心ですが、広告サーバーの開発にも関わっています。今回は少し前にリリースされた広告サーバーの新機能について、私が実装した配信サーバーを中心に解説したいと思います。 広告サーバーの実装については何回か発表を行いました。以下のスライドをご覧ください。 ピクシブ広告サーバー開発・運用の軌跡 2015春インターン講義資料 // Speaker Deck ピクシブ社内広告サーバーでのGoの開発・運用 #gocon /p_ads_server_gocon2015 // Speaker Deck タグ指定で特定の広告を出したい ピクシブではユーザーの皆様に最適な広告をどうすれば出せるのか、日々テストをしています。その一環とし

    ピクシブ社内広告サーバーに新機能を追加するためにボクがやったこと - pixiv inside [archive]
    nishitki
    nishitki 2015/12/15
  • RubyスポンサーとしてRubyKaigi2015を盛り上げる技術 #rubykaigi - pixiv inside [archive]

    開発マネージャのbash0C7です。 去る12/11〜13の3日間、東京・汐留でプログラミング言語Rubyに関する国際的なカンファレンスであるRubyKaigi2015が開催されました。 ピクシブは最上位のRubyスポンサーとして、このカンファレンスの開催を支援しました。 スポンサードにあたって、お金だけでなく、実際に会場で場を盛り上げることにも貢献したいと思い、仲間たちと工夫を凝らしてみました。 *1 この記事はピクシブ株式会社 Advent Calendar 2015 14日目の記事です。 ピクシブとRubyKaigiの関係 ピクシブでは様々な技術を駆使していますが、Rubyも2011年以来様々なプロダクトで活用しています。 RubyKaigiにはスポンサーとして2013年以来Rubyスポンサーを務めている他、わたしが今回のOrganizerの一人としてコミットしています。 また、かつ

    RubyスポンサーとしてRubyKaigi2015を盛り上げる技術 #rubykaigi - pixiv inside [archive]
    nishitki
    nishitki 2015/12/15
  • PHPで高速に動作するURLルーティングを自作してみた - pixiv inside [archive]

    この記事は ピクシブ株式会社 Advent Calendar 2015 13日目の記事です。 qiita.com こんにちは、おはようございます、こんばんは、エンジニアのneo-nanikakaです。 最近、業務でURLルーティングの処理が必要になりました。 社内の他のPHPプロジェクトでは Teto Routing というライブラリを使っているのを知っていたので、こちらを使ってみることにしました。 見事にURLルーティング処理は実現され、他の処理の実装に入ることができました。 完 っと思っていた時期が私にもありました。 Teto Routingは、実行時間がルーティング数に依存する 実装になっています。 ここでいう実行時間とは、Teto RoutingにリクエストURL文字列を渡してから結果が返ってくるまでの時間のことです。 実際、Teto Routingは表1のような時間がかかります。

    PHPで高速に動作するURLルーティングを自作してみた - pixiv inside [archive]
    nishitki
    nishitki 2015/12/13
  • Let's EncryptとnginxでHTTP/2サーバを立てる - pixiv inside [archive]

    この記事は ピクシブ株式会社 Advent Calendar 2015 10日目の記事です。 qiita.com こんにちは。Androidアプリエンジニアのいとおちゃんです。 高校生の頃からアルバイトとしてピクシブに入社してから4年目になりました。昨年は若手アルバイトと名乗っていましたが、気づいたらもう大学生です。最近はpixivマンガアプリの開発をしています。 今回はAndroidアプリ開発の話ではなく、個人的に最もアツいと感じているLet's Encryptを使ってnginxでHTTP/2サーバを立てる話をします。 Let’s Encryptを使おう Let's Encryptを利用すると、無料で認証されたSSL証明書を簡単に発行することができ、ここ最近話題を集めています。今月、Let's EncryptはようやくPublic Betaになりました。そこで、まさに今が旬ともいえるLe

    Let's EncryptとnginxでHTTP/2サーバを立てる - pixiv inside [archive]
    nishitki
    nishitki 2015/12/10