Submit Search
Upload
composerの遅さをまじめに考える #phpstudy
•
23 likes
•
29,430 views
Hiraku Nakano
Follow
第98回PHP勉強会の発表内容です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 59
Download now
Download to read offline
Recommended
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
Google Cloud Platform - Japan
Azureの上におとりを置いて、世界中から攻撃される様子を観察した話
Azureの上におとりを置いて、世界中から攻撃される様子を観察した話
Ryuki Yoshimatsu
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
GMO GlobalSign Holdings K.K.
Kong Enterprise の紹介
Kong Enterprise の紹介
Yoshito Tabuchi
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
UnityTechnologiesJapan002
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
Recommended
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
Google Cloud Platform - Japan
Azureの上におとりを置いて、世界中から攻撃される様子を観察した話
Azureの上におとりを置いて、世界中から攻撃される様子を観察した話
Ryuki Yoshimatsu
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
GMO GlobalSign Holdings K.K.
Kong Enterprise の紹介
Kong Enterprise の紹介
Yoshito Tabuchi
【Unite Tokyo 2019】AWS for Unity Developers
【Unite Tokyo 2019】AWS for Unity Developers
UnityTechnologiesJapan002
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
DDDモデリング勉強会 #6
DDDモデリング勉強会 #6
株式会社Jurabi
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外
Takuya Sato
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
taro fumizono
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
Go 製リアルタイムサーバーの Kubernetes での運用について
Go 製リアルタイムサーバーの Kubernetes での運用について
KairiOkumura
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
Yuta Matsumura
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Web Services Japan
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
More Related Content
What's hot
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
DDDモデリング勉強会 #6
DDDモデリング勉強会 #6
株式会社Jurabi
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外
Takuya Sato
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
taro fumizono
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
Go 製リアルタイムサーバーの Kubernetes での運用について
Go 製リアルタイムサーバーの Kubernetes での運用について
KairiOkumura
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Azure AD による Web API の 保護
Azure AD による Web API の 保護
junichi anno
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
Yuta Matsumura
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Web Services Japan
What's hot
(20)
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
DDDモデリング勉強会 #6
DDDモデリング勉強会 #6
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
明日使える!デザイン思考×システム思考が身につく「 70デザイン項目」まとめ
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Go 製リアルタイムサーバーの Kubernetes での運用について
Go 製リアルタイムサーバーの Kubernetes での運用について
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Azure AD による Web API の 保護
Azure AD による Web API の 保護
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Similar to composerの遅さをまじめに考える #phpstudy
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
Composerはじめました
Composerはじめました
Takashi Nojima
vimプラグインでよりよい(ry
vimプラグインでよりよい(ry
soh335
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
Atsushi Matsuo
Similar to composerの遅さをまじめに考える #phpstudy
(6)
composer-scriptsについて
composer-scriptsについて
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Composerはじめました
Composerはじめました
vimプラグインでよりよい(ry
vimプラグインでよりよい(ry
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
More from Hiraku Nakano
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
JSON SchemaとPHP
JSON SchemaとPHP
Hiraku Nakano
こわくない同時実行制御
こわくない同時実行制御
Hiraku Nakano
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
Hiraku Nakano
pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Xml builderの紹介
Xml builderの紹介
Hiraku Nakano
More from Hiraku Nakano
(7)
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
JSON SchemaとPHP
JSON SchemaとPHP
こわくない同時実行制御
こわくない同時実行制御
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
pecl-AOPの紹介
pecl-AOPの紹介
URLで遊ぼう
URLで遊ぼう
Xml builderの紹介
Xml builderの紹介
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Recently uploaded
(12)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
composerの遅さをまじめに考える #phpstudy
1.
composerの遅さを まじめに考える 第98回PHP勉強会 @Hiraku
2.
自己紹介 • 中野 拓
(@Hiraku) • 口癖「composerが遅い」 packagistのミラー作った http://packagist.jp • 2015/12からメルカリで働いています。
3.
今日は composerの話を しに来ました
4.
5.
composerは遅いのか
6.
composer遅いと言う人々 • 中国、フィリピン、日本、ブラジルあたりに 多いらしい • issueに文句を書いてる人は大体アジア人 •
北米ではcomposerは速い
7.
俺 俺
8.
composerを速くする活動 やってます • ミラーサイト http://packagist.jp •
並列化プラグイン hirak/prestissimo • https://packagist.org/packages/hirak/ prestissimo
9.
packagistのミラーサイト
10.
hirak/prestissimo (並列化プラグイン) インストールするだけで10倍ぐらい速くなります
11.
どちらもコマンド1行で使える # (ミラーサイトの有効化) $ composer
config -g repositories.packagist composer http:// packagist.jp # (並列化プラグインのインストール) $ composer global require hirak/prestissimo # フィードバック募集中!!
12.
なぜこれで速くなるのか を解説します
13.
composerが遅い理由 日本で
14.
サーバーが遠い …で終わるんだが
15.
あえて別の言い方をしたい
16.
光が遅いから。
17.
18.
なぜ”光”の話になるのか
19.
サーバーの場所 • packagist.org ←
たぶんフランスにある • github.com ← たぶんサンフランシスコにある • 日本からの通信で必ず通るもの =海底ケーブル =光ファイバー
20.
約8000km
21.
光は結構遅い • 真空で約30万km/s • 光ファイバー中で約20万km/s •
8000kmで片道最低40msかかる • (実際は他にも遅延原因があるから もっと遅い)
22.
「40msって速くね?」 • 物理限界が40msであって、実際は(ry • これにgithub.comの事情が加わる •
https://api.github.com から https://codeload.github.com へ 毎回リダイレクトしている
23.
HTTPSの往復 • ゼロからHTTPS通信すると、パケットの往復が4回発 生する • TCPのハンドシェイクで1往復 •
TLSのハンドシェイクで2往復 • HTTP本体で1往復 • 1回リダイレクトすると更に倍
24.
約8000km を8往復
25.
128,000km
26.
地球3.2周分 https://flic.kr/p/7icRw2
27.
composerはこれを 全zipに対して行っている
28.
それぞれが 地球3.2周分
29.
さすがの光でも • 片道40msで8回往復すると640ms • しかも実際は •
海底ケーブルは最短距離を通ってないし • 途中には様々なルーターやら何やらを通る からそこでも遅延がある
30.
実際の遅延時間
31.
curlで雑に測ってみる # (githubから適当なzipをダウンロードする) $ curl
--head --location --output prestissimo.zip https://github.com/hirak/prestissimo/archive/0.1.4.zip --write-out " time_namelookup: %{time_namelookup}n time_connect: %{time_connect}n time_appconnect: %{time_appconnect} n time_redirect: %{time_redirect}n time_total: %{time_total}" ... time_namelookup: 0.013 time_connect: 0.201 time_appconnect: 0.884 time_redirect: 1.270 time_total: 2.400
32.
(試行1回と雑なので、 目安だと思ってください)
33.
項目の意味 time_namelookup (0.013) 開始からDNS解決まで(秒) time_connect (0.201) 開始からTCPハンドシェイク完了まで(秒) time_appconnect (0.884) 開始からTLSハンドシェイク完了まで(秒) time_redirect (1.270) リダイレクトで費やした時間(秒) time_total (2.400) かかった時間全て(秒)
34.
フェーズ毎の値に修正 名前解決 0.013 TCPハンドシェイク 0.201
- 0.013 = 0.188 TLSハンドシェイク 0.884 - 0.201 = 0.683 リダイレクト一回分 1.270 HTTPの本体 2.400 - 1.270 - 0.884 = 0.246
35.
2.400秒 中の 0.640秒 が たぶん光のせい
36.
距離と遅延 • 物理的に通信してるのだから、物理的に距離 が遠いとその分遅れる • アジアや南米でcomposerが遅いのは、サー バーから物理的に遠いから
37.
composerを速くする方法
38.
解決方法 1. packagistやgithubが近くにあればいい 2. 往復を減らせばいい 3.
並列化して待ち時間を活用すればいい 4. 光がもっと速くなればいい←難しそう
39.
1. 距離を縮める • 近くにミラーサイトを建てる •
CDNが導入されてれば同じ効果がある (packagist本家が導入してくれれば…) • githubのミラーはちょっと大変…
40.
packagistに関しては packagist.jpミラーで 実装済み
41.
2. 往復を減らす(1) • zipあたり8往復するのは無駄 •
api.github.com→codeload.github.com リダイレクトをやめる 最初からcodeloadに取りに行く • これでzipあたり4往復減らせる
42.
さっきの例で、 1zipダウンロード時間の内訳 download 0.240 redirect 1.270 tls 0.683 tcp 0.188 dns 0.013
43.
リダイレクトを削る download 0.240 redirect 1.270 tls 0.683 tcp 0.188 dns 0.013
44.
2. 往復を減らす(2) • 同じコネクションを使いまわして次のzipをダ ウンロードする(Keep-Alive) •
初回は省略できないが、2回目以降TLSハンド シェイクまで省略できる(3往復)
45.
Keep-Aliveで2回目以降省略 download 0.240 redirect 1.270 tls 0.683 tcp 0.188 dns 0.013
46.
zip50個の場合 50 * 4
+ 49 * 3 = 347 往復の削減効果
47.
地球69.4周分 節約 https://flic.kr/p/7icRw2
48.
PHPでKeep-Aliveなリクエスト <?php $ch = curl_init(); curl_setopt($ch,
CURLOPT_URL, 'http://example.com/1.txt'); curl_exec($ch); // 同じ$chを使い回して2回目 curl_setopt($ch, CURLOPT_URL, 'http://example.com/2.txt'); curl_exec($ch); curl_close($ch);
49.
3. 並列化 • 待ち時間に別のダウンロードを行う •
通信路の暇をなくせる • 帯域を100%使いきったら、 並列化の効果は薄い (prestissimoは6並列にした) • PHPの場合、curl_multiを使えばできる
50.
リダイレクト削減と Keep-Aliveと 並列化は hirak/prestissimoで 実装済み
51.
解決方法の現状 packagistが近くにあれば packagist.jpで実装した リダイレクトを減らす hirak/prestissimoで実装した Keep-Aliveを使う
hirak/prestissimoで実装した 並列化する hirak/prestissimoで実装した 光が速くなれば 未解決
52.
インパクトのある部分は 結構つぶせた
53.
まとめ
54.
本当は • composerじゃなくて 光がクソ遅いのが全て悪い!と 言いたかったが… • 光の伝搬時間は全体の一部でしかない。 まだ我々には改善できることがある
55.
我々が知るべきこと • 地球規模だと光の遅さが体感できる • 物理限界を意識して実装しよう •
composerの実装・file_get_contents()は HTTP/1.0で、連続ダウンロードに向いていな い (curl使おうぜ)
56.
もっと詳しく知りたい人は ←この本にだいたい 書いてあります
57.
光の遅さに文句が言える エンジニアになろう
58.
ご静聴ありがとうございました
59.
We are hiring!
Download now