鶴岡達也さん「フリマアプリ「メルカリ」の超高速開発を支えるPHP」
iPhone,
はじめに
最初にメルカリについて紹介しました。メルカリは,
サーバー構成
サーバー構成は現在は60台です。昨年の今頃はサーバーは1台
現在の構成は実は3代目だと言います。2世代目でWEBとDBを切り離し,
第1世代はキャッシュサーバーすらない状況で,
メイン言語は実はPHP
開発にPHPを選んだ理由は,
安易に見えますが,
さらに,
とはいえ,
また,
どんな考え方で開発してきたか
メルカリはまだ成長段階だと言います。日本に限った上では2013年一番成長した会社とは言われてますが,
サービスはいくら丁寧に作られていて良くできていても,
- 継続して作るためには,
スピードが必要。 - 実際スピードを出すのに難しいことって開発者,
予算, 時間どれも足りないのが普通。
そして,
- 1. 迷ったら単純なほうを選ぶ
「低機能だけど単純なもの」 を選ぶと学習コストが低く, 短期的に結果が出てくる。半年, 1年先のメリットよりも今が大事。
- 2. 最高だと思うものの6割で出す
「完璧を目指すより, まず終わらせろ」 というFacebookの考え方に似ている。
- 3. 最も重要なことにフォーカスする
- メルカリの場合はホーム画面に表示される商品の一覧にフォーカスし,
良くなってきた。盛り込む機能は限界まで絞っていて, 初期はAPIが95種類だった (現在は171種類ある)。また, インフラも最初は高性能な専用サーバ1台にすべて詰め込むことで, 本番環境は1日で構築できた。2ヶ月で負荷限界になったが, それでも準備期間は短くなった。
- メルカリの場合はホーム画面に表示される商品の一覧にフォーカスし,
しかし,
ただ,
まとめ
最後に,
岸田健一郎さん「擬人化から始めるPHPerのためのオブジェクト指向超入門」
岸田健一郎さんの発表です。今日はオブジェクト指向のプログラミングではありません!
class Hogeやら,
そもそもオブジェクトとは,
「生命と知性を与える」
- 情報保持役
- モデルやエンティティ。情報を知ってる。保持するデータから計算するのはOK。
- 構造化役
- ざっくりグループ化する。リストや配列,
ハッシュとかキューとか。エンティティの関連とかを表現する。
- ざっくりグループ化する。リストや配列,
- サービス提供役
- 特殊な処理を提供する。WorkerやWriterみたいに,
-erになっているクラスを見つけたら, それは大抵サービス提供役。
- 特殊な処理を提供する。WorkerやWriterみたいに,
- 制御役
- 他の複数のオブジェクトから状況を聞き出して判断する。判断した結果を支持する。
- 調整役
- あるオブジェクトから情報を受け取って,
他のオブジェクトに渡す。
- あるオブジェクトから情報を受け取って,
- インターフェース役
- イベントを受け取って,
誰かに依頼したりする。
- イベントを受け取って,
まずは,
ここで,
- 1. 社長が雑談している時の社長の発言を保存したいとき
- (登場人物)社長,
秘書, 広報, 事務 - 社長→秘書 「今日xxxなことがあってさ。社長語録に書き留めて,
SNSに投稿しておいて」 - 秘書→事務 「社長語録に記録しといて」
- 秘書→広報 「SNSで広めておいて」
- (登場人物)社長,
- 2. コピーを10部ソートしてホッチキスとめしたいとき
- (登場人物) 社長,
コピー係, 複写係, ソート係, ホチキス係 - 社長→コピー係 「コピーしといて」
- コピー係→複写係 「印刷しておいて」
- コピー係→ソート係 「並べ替えておいて」
- コピー係→ホチキス係 「ホチキス留めておいて」
- (登場人物) 社長,
この時,
オブジェクトの相互作用も明確になります。PHPにおいての関連性は,
最後に,