分123456鶴岡達也さん「フリマアプリ「メルカリ」の超高速開発を支えるPHP」iPhone,Androidとマルチプラットフォームに展開中のフリーマッケットCMSを開発しているメルカリの鶴岡達也さんのセッションです(このセッションはタイトルは超高速参勤交代をインスパイア!したものだそうです⁠)⁠。はじめに最初にメルカリについて紹介しました。メルカリは,ものを売りたい人がスマホで撮って気軽に出品できるアプリです。メルカリがお金を一時的に受け取る形で,安心を提供しています。毎日10万件以上が出品されており,月間流通額は数十億円あります。テレビCMも開始しています。サーバー構成サーバー構成は現在は60台です。昨年の今頃はサーバーは1台(1万円程度)のみで運用してしいましたが,1年で60倍になりました。現在の構成は実は3代目だと言います。2世代目でWEBとDBを切り離し,3代目でロードバランサとキャッシュを用いて負荷分散という成長を遂げてきました。第1世代はキャッシュサーバーすらない状況で,Apache+mod_php+MySQLという構成でした。第3世代ではロードバランサとしてnginxを使っています。メイン言語は実はPHP開発にPHPを選んだ理由は,創業メンバとつながっている開発者の多くがPHP開発者で確保しやすかったということ,そして単に身近だったからだそうです。安易に見えますが,実は重要だったこととして(後述のマインドの話にも共通しすが)「⁠現実的な問題」を解決したかったを挙げて強調していました(モダンな言語を駆使することが目的ではなかったとも話していました⁠)⁠。WordPressがPHP以外の言語でつくられていれば今ほどの勢いはなかったのではないかと指摘し,身近に問題解決していることの価値をもっと認めようと述べました。現在のメルカリの平均レスポンスタイムは50ms台で,普通に使えるレベルです。簡単なのに実用的であること,他言語の技術者でも,すぐ習得できてしまう等のメリットがあることも付け加えられました。いえ,現在のシステムで良くない点もあります。それはメルカリはバッチ処理が多いことです。データを大量に取り入れてプッシュ通知を送る処理は,PHPは不得意だと言及。これに対する対策は「得意な言語に任せる」のがよいとしました。PHPのプログラムを常駐させていると,サーバのメモリを消費してしまうため,たいへんなことになります。できるだけプロセスを落として起動して......と現状は再起動を行っていますが,今後はネックになると考えており,いずれは先の例と同じく「得意な言語に任せる」という話になりそうだと述べていました。現在はサーバースペックでカバーしているそうです。どんな考え方で開発してきたかメルカリはまだ成長段階だと言います。日本に限った上では2013年一番成長した会社とは言われてますが,0から100に達する中で1に過ぎないと考えているそうです。会社としてはスピードが最も大事だと考えていて,リリースするまでのスピードを意識しています。具体的には「もっとゆっくり作ればよかった」ということはありえない,という意識を共有していると話していました。サービスはいくら丁寧に作られていて良くできていても,誰も使わないのであれば意味がありません。そのため,次のことを念頭においているそうです。継続して作るためには,スピードが必要。実際スピードを出すのに難しいことって開発者,予算,時間どれも足りないのが普通。具体的な方法として次のことを挙げました。迷ったら単純なほうを選ぶ「低機能だけど単純なもの」を選ぶと学習コストが低く,短期的に結果が出てくる。半年,1年先のメリットよりも今が大事。最高だと思うものの6割で出す「完璧を目指すより,まず終わらせろ」というFacebookの考え方に似ている。重要なことにフォーカスするメルカリの場合はホーム画面に表示される商品の一覧にフォーカスし,良くなってきた。盛り込む機能は限界まで絞っていて,初期はAPIが95種類だった(現在は171種類ある⁠)⁠。インフラも最初は高性能な専用サーバ1台にすべて詰め込むことで,本番環境は1日で構築できた。2ヶ月で負荷限界になったが,それでも準備期間は短くなった。スピードのためにすべてを捨ててはいけないと話します。具体的にはテストは省略しすぎないことを指しました。PHPUnitでどんなテストを書くべきかよく考えたそうです。費用対効果の高いテストを書くのは,開発者のセンスが問われます。未来の開発者が救えるかどうかという視点が重要で,カバレッジではなくエンドツーエンドで正しさをテストすることを挙げました。エンドツーエンドのテストがあれば,安心して元のコードを大胆に変更できます。優れたテストがあれば,テストのためにコード品質が犠牲になっても許容できるとしました。まとめ最後に,「⁠PHPで素早くハイパフォーマンスなアプリを作りましょう。別の言語でつくろうとかではなくて,PHPで自信を持って出していきましょう!」と述べていました。今日はオブジェクト指向のプログラミングではありません!と述べ,セッションが始まりました。FugaInterfaceとかのオブジェクト指向を実現するための構文はさておき,現実世界の話を例に,オブジェクト指向とはなにか?を理解することを目的としたセッションです。そもそもオブジェクトとは,複雑なタスクを実行するためにコミュニケーションを取り,協調して課題を解決するためにあるもの。いくつかのステップを経てオブジェクト指向を理解していきましょうと話しました。「生命と知性を与える」「⁠対話形式を用いる」ことにより,実世界に見えない存在も考えだすと言います。オブジェクト指向の場合,次の6パターンのいずれかの役割になるそうです。情報保持役モデルやエンティティ。保持するデータから計算するのはOK。構造化役ざっくりグループ化する。リストや配列,ハッシュとかキューとか。エンティティの関連とかを表現する。特殊な処理を提供する。複数のオブジェクトから状況を聞き出して判断する。判断した結果を支持する。調整役あるオブジェクトから情報を受け取って,他のオブジェクトに渡す。インターフェース役イベントを受け取って,誰かに依頼したりする。それぞれの性格(ロール)を決めます。フレームワークでよくあるcontrollerが太るとかは,MVCの3つという枠組みだと,1つのクラスが肥大化してしまうことです。ここで,実現したい機能について役割を書き出してみます。その際,「⁠適切な名前をつけること」「⁠6つの中の役割にあてはめてみること」を考えるようにします。次の例を挙げて説明しました。「⁠今日xxxなことがあってさ。「⁠ホチキス留めておいて」この時,上記の関係を図に書くことが重要だそうです。性格が決まると責務はおのずと決まってきます。オブジェクトの相互作用も明確になります。PHPにおいての関連性は,「⁠クラス名=役割」「⁠プロパティ=性質」「⁠メソッド=できること」になります。オブジェクトデザインを入門書として読んでみてほしいと述べていました。会社でポイントサイトの開発を担当。業務でもプライベートでも一番長く触っている言語はPHPだが,最近はNode.jsやアプリ開発に浮気中。PHPを使うようになって9年。楽しい事には何でもやってみるスタイル。趣味はプログラミング,仕事もプログラミング。最近はアプリ開発が多くなっているが,Web開発となるとPHPは手放せない。仕事でしかPHP書いていません。5.5は素敵だと思っています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。