Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kenta USAMI
PDF, PPTX
8,706 views
Real World PHP in pixiv
2015年10月23日にピクシブ株式会社で行った、ぐるなびさんとの合同勉強会で発表
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 31
2
/ 31
3
/ 31
4
/ 31
5
/ 31
6
/ 31
7
/ 31
8
/ 31
9
/ 31
10
/ 31
11
/ 31
12
/ 31
13
/ 31
14
/ 31
15
/ 31
16
/ 31
17
/ 31
18
/ 31
19
/ 31
20
/ 31
21
/ 31
22
/ 31
23
/ 31
24
/ 31
25
/ 31
26
/ 31
27
/ 31
28
/ 31
29
/ 31
30
/ 31
31
/ 31
More Related Content
PDF
たのしい独自フレームワーク
by
Kenta USAMI
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
by
Junichi Ishida
PDF
PHPという概念が存在しない退屈な世界
by
Yoshihiro Ohsuka
PDF
はじめてのUser-Agent文字列
by
Kenta USAMI
PDF
H2O and php
by
Junichi Ishida
PDF
Phpでアプリケーションサーバー
by
k-motoyan
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
by
Hisateru Tanaka
たのしい独自フレームワーク
by
Kenta USAMI
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
by
Junichi Ishida
PHPという概念が存在しない退屈な世界
by
Yoshihiro Ohsuka
はじめてのUser-Agent文字列
by
Kenta USAMI
H2O and php
by
Junichi Ishida
Phpでアプリケーションサーバー
by
k-motoyan
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
by
Hisateru Tanaka
What's hot
PDF
Phpstormちょっといい話
by
Hisateru Tanaka
PDF
東京Node学園 今できる通信高速化にトライしてみた
by
Yoshiki Shibukawa
PDF
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
by
Hiroshi Toda
PDF
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
by
Hiroshi Toda
PDF
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
by
Kazuhiro Hara
PDF
PHPerに覚えて欲しい日本語の重要性
by
Rina Fukuda
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
by
Hisateru Tanaka
PPTX
Typescriptの中のこと(浅め)
by
Kazuhide Maruyama
PPTX
TypeScriptはいいぞ
by
Jun Suzuki
PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
by
Jun-ichi Sakamoto
PPTX
Re: WebServer BenchMarking
by
Ryo Tomidokoro
PDF
Ruby on vim yokohama.vim発表資料
by
Shohei Kobayashi
PDF
LaravelとMVCの先へ
by
Yuuki Takezawa
PPTX
非同期系統の基礎
by
segayuu
PPTX
〜laravel で学ぶ MVC
by
mikakane
PDF
WebStormでできること
by
kamiyam .
PDF
IDEALIZE YOU
by
佑介 九岡
PDF
Infrastructure as codeのススメ
by
kanji htmt
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
by
sasezaki
PDF
わかると楽しいInfrastructure as code
by
Shohei Kobayashi
Phpstormちょっといい話
by
Hisateru Tanaka
東京Node学園 今できる通信高速化にトライしてみた
by
Yoshiki Shibukawa
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
by
Hiroshi Toda
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
by
Hiroshi Toda
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
by
Kazuhiro Hara
PHPerに覚えて欲しい日本語の重要性
by
Rina Fukuda
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
by
Hisateru Tanaka
Typescriptの中のこと(浅め)
by
Kazuhide Maruyama
TypeScriptはいいぞ
by
Jun Suzuki
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
by
Jun-ichi Sakamoto
Re: WebServer BenchMarking
by
Ryo Tomidokoro
Ruby on vim yokohama.vim発表資料
by
Shohei Kobayashi
LaravelとMVCの先へ
by
Yuuki Takezawa
非同期系統の基礎
by
segayuu
〜laravel で学ぶ MVC
by
mikakane
WebStormでできること
by
kamiyam .
IDEALIZE YOU
by
佑介 九岡
Infrastructure as codeのススメ
by
kanji htmt
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
by
sasezaki
わかると楽しいInfrastructure as code
by
Shohei Kobayashi
Viewers also liked
KEY
リーダブルコード : このコード、読み易くなくなくない?
by
Yoshiyuki MIYAGI
PDF
リファクタリング?
by
Yoshiyuki Miyagawa
PPTX
JAWS-UG開催情報 20170125-8th初心者支部
by
由佳 青木
PPTX
クラウドお遍路20161001LT_青木由佳
by
由佳 青木
DOCX
отчёт Buybrand expo 2012
by
Victoria Kazakova
PPTX
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
by
由佳 青木
PPTX
Glt vol48
by
Masanori Hayashi
PPTX
Symfony meetup-7
by
Masanori Hayashi
PPTX
PHP framework Phalcon
by
Masanori Hayashi
PPTX
Glt vol49
by
Masanori Hayashi
PPTX
AWSreinvent2016社内報告yuka_jyotei
by
由佳 青木
PDF
型超ざっくり入門@ハンズラボ社内勉強会
by
Yusuke Usui
PPTX
EC-CUBE3プラグイン仕様
by
Shinichi Takahashi
PDF
継続的デリバリー全体像とハンズオン #yuru_gee #21cafe
by
智治 長沢
PDF
継続的デリバリーを支える開発環境
by
智治 長沢
PDF
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
by
Yuki Okada
PPTX
Phpstudy98
by
Masanori Hayashi
PDF
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
by
アシアル株式会社
PDF
最近の PHP の話
by
y-uti
PPTX
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
by
一成 田部井
リーダブルコード : このコード、読み易くなくなくない?
by
Yoshiyuki MIYAGI
リファクタリング?
by
Yoshiyuki Miyagawa
JAWS-UG開催情報 20170125-8th初心者支部
by
由佳 青木
クラウドお遍路20161001LT_青木由佳
by
由佳 青木
отчёт Buybrand expo 2012
by
Victoria Kazakova
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
by
由佳 青木
Glt vol48
by
Masanori Hayashi
Symfony meetup-7
by
Masanori Hayashi
PHP framework Phalcon
by
Masanori Hayashi
Glt vol49
by
Masanori Hayashi
AWSreinvent2016社内報告yuka_jyotei
by
由佳 青木
型超ざっくり入門@ハンズラボ社内勉強会
by
Yusuke Usui
EC-CUBE3プラグイン仕様
by
Shinichi Takahashi
継続的デリバリー全体像とハンズオン #yuru_gee #21cafe
by
智治 長沢
継続的デリバリーを支える開発環境
by
智治 長沢
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
by
Yuki Okada
Phpstudy98
by
Masanori Hayashi
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
by
アシアル株式会社
最近の PHP の話
by
y-uti
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
by
一成 田部井
Similar to Real World PHP in pixiv
PPTX
php-src の歩き方
by
do_aki
PPTX
PHP基礎勉強会
by
Yuji Otani
PDF
International php conference 2016 参加レポート
by
Ryosuke Miyahara
PDF
Silex入門
by
Takuya Sato
PDF
PHPの今とこれから2014
by
Rui Hirokawa
PDF
eZ Publish勉強会9月〜テンプレート言語〜
by
ericsagnes
PDF
PHPとJavaScriptの噺
by
Shogo Kawahara
PDF
PHP & Queue
by
sasezaki
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
by
Rui Hirokawa
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
by
Rui Hirokawa
PDF
php.js
by
Kenta USAMI
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
by
Hideharu MATSUFUJI
PPT
Web事例からみたセマンティックウェブ/野田 健夫
by
kurubushionline
PDF
徹底攻略!PHP5.4
by
Takuya Sato
PDF
PHPの今とこれから 2013
by
Rui Hirokawa
PDF
[TechLION] PHP Conference Japan 2014
by
Yuki MAEJIMA
PPTX
Aizu.LT::Tokyo #2
by
Taku Unno
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
PDF
スクリプト言語PHP攻略法
by
Rui Hirokawa
PDF
PHPMATSURI2011 LT大会
by
Takako Miyagawa
php-src の歩き方
by
do_aki
PHP基礎勉強会
by
Yuji Otani
International php conference 2016 参加レポート
by
Ryosuke Miyahara
Silex入門
by
Takuya Sato
PHPの今とこれから2014
by
Rui Hirokawa
eZ Publish勉強会9月〜テンプレート言語〜
by
ericsagnes
PHPとJavaScriptの噺
by
Shogo Kawahara
PHP & Queue
by
sasezaki
最新PHP事情 (2000年7月22日,PHPカンファレンス)
by
Rui Hirokawa
PHPの今とこれから2024 at PHP Conference Japan 2024
by
Rui Hirokawa
php.js
by
Kenta USAMI
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
by
Hideharu MATSUFUJI
Web事例からみたセマンティックウェブ/野田 健夫
by
kurubushionline
徹底攻略!PHP5.4
by
Takuya Sato
PHPの今とこれから 2013
by
Rui Hirokawa
[TechLION] PHP Conference Japan 2014
by
Yuki MAEJIMA
Aizu.LT::Tokyo #2
by
Taku Unno
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
スクリプト言語PHP攻略法
by
Rui Hirokawa
PHPMATSURI2011 LT大会
by
Takako Miyagawa
More from Kenta USAMI
PDF
5分でわかる静的解析入門
by
Kenta USAMI
PDF
なんとかStormに負けたくないEmacs初級篇
by
Kenta USAMI
PDF
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
by
Kenta USAMI
PDF
pixivとl10n/i18n
by
Kenta USAMI
PDF
Rubicureに学ぶメタプログラミング
by
Kenta USAMI
PDF
Accept-language
by
Kenta USAMI
PDF
これからの名前の話をしよう
by
Kenta USAMI
PDF
近況の報告と自宅警備員が失職した話
by
Kenta USAMI
PDF
学ばないDSL
by
Kenta USAMI
PDF
札幌F#勉強会とは何だったのか
by
Kenta USAMI
PDF
tadsanとは誰か
by
Kenta USAMI
PDF
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
by
Kenta USAMI
PDF
PowerShell+Lisp = ? (第2回残パン会)
by
Kenta USAMI
PPTX
キャンプ後の生活の変化とモチベーションの変化について
by
Kenta USAMI
PDF
関数型都市忘年会『はじめての函数型プログラミング』
by
Kenta USAMI
PDF
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
by
Kenta USAMI
PDF
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
by
Kenta USAMI
PDF
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
by
Kenta USAMI
PDF
セキュリティ&プログラミングキャンプに行こう!
by
Kenta USAMI
PPTX
セキュリティ&プログラミングキャンプに行こう!
by
Kenta USAMI
5分でわかる静的解析入門
by
Kenta USAMI
なんとかStormに負けたくないEmacs初級篇
by
Kenta USAMI
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
by
Kenta USAMI
pixivとl10n/i18n
by
Kenta USAMI
Rubicureに学ぶメタプログラミング
by
Kenta USAMI
Accept-language
by
Kenta USAMI
これからの名前の話をしよう
by
Kenta USAMI
近況の報告と自宅警備員が失職した話
by
Kenta USAMI
学ばないDSL
by
Kenta USAMI
札幌F#勉強会とは何だったのか
by
Kenta USAMI
tadsanとは誰か
by
Kenta USAMI
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
by
Kenta USAMI
PowerShell+Lisp = ? (第2回残パン会)
by
Kenta USAMI
キャンプ後の生活の変化とモチベーションの変化について
by
Kenta USAMI
関数型都市忘年会『はじめての函数型プログラミング』
by
Kenta USAMI
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
by
Kenta USAMI
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
by
Kenta USAMI
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
by
Kenta USAMI
セキュリティ&プログラミングキャンプに行こう!
by
Kenta USAMI
セキュリティ&プログラミングキャンプに行こう!
by
Kenta USAMI
Real World PHP in pixiv
1.
Real World PHP
in pixiv ぐるなびピクシブ 合同勉強会 2015年10月23日
2.
お前誰よ • うさみけんた /
tadsan • 2012年11月にピクシブ入社 • 入社前は自宅警備しながらRuby書いてた • API/OAuth/PC版サービスなどのPHPもろもろ • 最近では漫画・小説チームとして動いてる • PHPカンファレンスのLT応募に落ちました
3.
注意 • 時間配分は考慮してない • 開発楽しい!とかじゃなく淡々と羅列するだけ •
ゆっくり話すので、「お前何言ってんんだ」と 感じたらつっこみを入れてください • 資料はあとで公開します
4.
アジェンダ • 現状についてだらだら話す • pixivのデプロイについて •
pixivの開発環境について • pixivのPHPについて • pixivのSQLについて • そのほか
6.
pixiv.git (クラスのお友達) ├ accounts.pixiv.net ├
admin.pixiv.net ├ api.pixiv.net ├ batch ├ embed.pixiv.net ├ m.pixiv.net ├ me.pixiv.net ├ oauth.pixiv.net ├ pixiv-lib ├ public-api.pixiv.net ├ rpc.pixiv.private ├ source.pixiv.net ├ spapi.pixiv.net ├ spotlight.pics ├ ssl.pixiv.net ├ touch.pixiv.net ├ util ├ vendor ├ web-test └ www.pixiv.net
7.
変遷 • 以前(2013年頃まで)は、サブディレクトリ ごとに独立したGitリポジトリで、共通部分 をsubmoduleとして扱ってた • 共通部分の抽象化もうまくなされて居らず、 重複・細部が異なるコードが分散してた
8.
変遷 • submoduleは疎結合なモジュールに適する • 結合度が高いモジュールのリポジトリを分 割すると、変更コストが極めて高い •
リポジトリを統合することで凝集度を高め るリファクタリングも断行しやすくなった • 細部が異なる重複コード問題も根絶
9.
デプロイ • 基本的にサーバー全台(xx台程度)にrsync • 以前(2013年)はPHPファイルの増減を伴った デプロイ時には(ページにもよるが)、 xxx件程度のエラーが発生してしまってた •
現在はBlue-GreenDeploymentの確立で、 ファイルの追加/削除も怖いものではない
11.
デプロイ (pploy) • 汎用的なデプロイシステム •
/.deploy ディレクトリにファイルを配置 • bin/deploy スクリプトが実行される • readme.html で画面カスタマイズ可能 • Gitに依存するので、特定のバージョンを チェックアウトして反映することも容易
12.
デプロイと変遷 (ブログ記事紹介) • 開発・デプロイ環境の変遷
2014年春版 • 履歴を残したまま複数のgitリポジトリを統 合する • pixivのデプロイを支えるpploy • github: edvakf/pploy • WEB+DB PRESS Vol. 84
13.
pixivの開発環境 • DBなどの依存が多く、ローカルに環境を構 築することは容易ではない(不可能でもない) • 共有の環境にSSHでログインして開発 •
端末のEmacsやVimで開発するひとも • rsyncでローカルと同期してPhpStormなど • @tadsanはTRAMPを利用してる
14.
pixivの開発環境 • ApacheのVirtualHostを大胆に活用 • /home/www/にシンボリックリンクを作成 •
社内ネットワークでDNS名前解決できる • www.tadsan.example.com のような形式 • pixiv関係なくても任意のPHPを動作可能 • OpenStackで同じ仕様のサーバー増やせる
15.
pixiv-lib • DBの操作を抽象化する層(DAO) • データの入出力などをまとめて扱う層 •
社内では「Common層」と呼ばれる • セッション・国際化などの基盤機能 • その他の共通処理いろいろ! • むかしはextlibって呼ばれてた (懐古)
16.
pixivのPHPコード • PHP 5.5
+ Apache • URLを見ればわかる通り、ページ=PHP • search.php, member_illust.php など… • 一部のリクエストはHHVMで捌いてる • ルーティングのためmod_rewriteに依存
17.
pixivのPHPコード • 既存のフレームワークに依存しない • 独自フレームワークを運用してる部分もある •
口にすると顔をしかめられがちだが、 用途に合せて設計ができるのは悪くない • どちらにしろ自分たちでセキュリティを 担保しなければいけないのはおんなじ!
18.
pixivのPHPコード • 動的な言語機能は必要ない限り利用しない • クラスの静的メソッドを多用する •
継承は排除する方向 • トレイトもあまり利用しない • リファレンスは原則排除する • PhpStormを使ってもつらいものはつらい
19.
pixivのPHPコード • include_onceってたくさん書いてる!! • オートローダーの利用は限定的 •
pixiv-libでは現状は利用不可 (鋭意改善中) • リポジトリ内に混在する都合上、 Composerのautoloadは利用しにくい • 一部ではphpabで生成してinclude
20.
pixivのPHPコード • コミットログやコード内コメントは、 英語または日本語で各人の得意な方で • 意識高く「全部英語で」など拘らない •
必要な文章は論理的に誤りがないように • コミットのルールは厳格に定めない • 各人のやりかたを尊重する • 典型的な Github Flow で運用
21.
loadset.php • 各プロジェクトの初期化ファイル • エラーハンドラーの設定 •
必要なライブラリのロード • 定数(define)の定義 • loadsetのみrequire_onceで読み込む • そのほかは全部 include_once で
22.
pixivのSQL • MySQL 5.5 •
文字列結合によるSQL組立つらすぎ… • ORマッパー/自動クエリビルダーは利用せず • 2015年の初旬からSQLに型をつけて安全に 書けるライブラリを社内で運用 • 脆弱性対策の文脈で生まれたが書きやすい
24.
pixivのSQL • Q: なぜ自動クエリビルダー利用しないの? •
いままでが文字列結合で組み立ててたから • クエリが単純ではないパターンも多い • 例: ブックマークなど
25.
pixivのAPI • いろんな試行錯誤をしてきた • 一部で有名なCSVのAPI
(最初期) • ActiveResourceで利用するためのAPI • スマートフォンアプリ向けREST API • 社内向けのシンプルなAPI (RPC)
26.
パッケージ管理 • Composerを利用 • composer.pharはpixiv.gitに同梱 •
社内ネットワーク内でSatisを運用 • Jenkinsで定期的に更新 • GitHubの障害があっても支障なし • 手動で実行もできる
27.
pixivのテスト • 基本的にPHPUnitでテストを書く • 2013年頃にテストを書く文化が定着した •
GitlabのMRにpushしたら自動テスト走る • うっかりmasterにpushされたら即座に idobataに通知される
28.
pixivのレビュー体制 • 毎週pixiv.gitに携る各チームのレビュアーで 設計方針や最新の情報などを共有・相談 • レビュアーが各チームに持ち帰る •
各自メンバーに説明したり、レビュー過程 で指摘することで全体のコード品質を保つ • ガイドラインや推奨スタイルの確立
29.
そのほか • pixivのデプロイ回数は一日およそ20回 • ディレクターが文言変更をすることが多い •
Jenkinsをいっぱい使ってる • cronの代替として • スクリプトのWebUIとしても利用できる • 各種エディタの勢力は均衡してる
30.
ふろく (WEB+DB PHP連載) •
特におもしろい記事 • Vol.81: テストしにくいコード対策 • Vol.83: 安全なコーディングスタイル • Vol.84: デプロイ・Composer運用 • Vol.87: PHPDoc記法で型注釈 • Vol.88: HHVMの運用
31.
続きはWebで • https://github.com/pixiv • http://inside.pixiv.net/ •
GitHub (tadsan個人で公開してるもの) • BaguettePHP/php-simple-routing • BaguettePHP/http-accept-language
Download