[Book]Mobageを支える技術 ソーシャルゲームの舞台裏

要約

本書は大規模Webサービスの構築・運用ノウハウを詰め込んで一冊にまとめた書籍です。急激に成長する巨大システム『Mobage』がどのように開発され、運用されているのか? その舞台裏を「ソーシャルゲーム(フィーチャーフォン/スマートフォン)」「大規模Webインフラ」「プラットフォーム」「ビッグデータ分析」といったテーマに分け、DeNAの実践的ノウハウを解説しています。

Amazonより

目次

Part1 ソーシャルゲーム開発技術
第1章 ソーシャルゲーム概論
第2章 ブラウザベースのソーシャルゲーム(フィーチャーフォン)
第3章 ブラウザベースのソーシャルゲーム(スマートフォン)
第4章 アプリケーション版のソーシャルゲーム開発

Part2 ソーシャルゲーム運用技術
第5章 35PV/dayをさばくインフラ構成
第6章 データベースのレプリケーション
第7章 データベースの高性能化/高可用性化
第8章 数千台のサーバを運用する技術

Part3 ソーシャルゲーム効率化技術
第9章 MySQLとの付き合い方
第10章 Job QueueとMessage Queue
第11章 アプリケーションチューニング
第12章 DevOps

Part4
第13章 大規模データマイニング

感想

最新の技術や過去に直面した大企業ならではの問題点を知ることができる。WEBサービスで言うとサーブレットベースのアプリケーション開発しかやったことがないので、Perlでどのようなシステム構成がとられているのかなど興味深い点も多々あり。やはり、捌くPVがあれだけ多くなると気にすることも全然違うし、全然違うアーキテクチャーになるんだなと関心。

アプリケーションについて
スマホ全盛期と言われつつも、フィーチャーフォンの開発を捨てきれない現状の中、フィーチャーフォン開発で気をつけなければならない点、スマホ開発で気をつけなければならない点、アニメーション処理、パフォーマンス改善のHOW TOが盛り込まれている。また、自社開発したライブラリとその使用方法についても言及されている(ngCore)。

インフラについて
Mobageがサービスを拡大するにつれて直面していった問題をベースにその解決策について書かれている。ゲームアプリケーションではサービスの活気の抑揚が激しいので、簡単にスケールアウト(またその逆も)できるような工夫がちりばめられている。また、DBとしてMySQLを利用しており、パフォーマンス劣化を検知する仕組みやどこを気にするべきなのか、チューニング方法などについても実務ベースで詳しく紹介されている。

データマイニングについて
Hadoopを用いた大規模ユーザ解析の手法について。それらのデータを分析するためのインテリジェントなアプリケーションの実装方法を紹介(Mahout)。

[Tips]ブラウザへのレスポンス改善Tips

How To.

Javascriptの読み込みをタグ直前に行う。

最初に読み込んでいるサンプル

中央区ホームページ
くらしに便利な情報の「一覧はこちら」の画像をマウスオーバーしたときのハイライト等の処理が含まれたJavascriptをheadタグ内で読み込んでいます。ブラウザからアクセスする人はhtml画面と同時にマウスオーバーすることがほとんど考えられないので、これらの読み込みは後でいいはず。(このスクリプト自体が軽いからあんまり影響ないんじゃんっていうのはいったんおいておいて)

<head>
.
.
.
(省)
.
.
.
<script type="text/javascript" src="/js/mause_over.js"></script>
</head>
<body>
.
.
.

最後に読み込んでいるサンプル

面白法人カヤックのホームページ
Google analyticsのアクセス解析用Javascirptはお作法てきな感じで最後に記述されることがおおいようです。

.
.
.
<body>
.
.
.
(省)
.
.
.
<!-- [ ANALYSIS ] -->
<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script> 
<script type="text/javascript"> 
try {
var pageTracker = _gat._getTracker("UA-53432-5");
pageTracker._trackPageview();
} catch(err) {}</script>
<!-- / [ ANALYSIS ] -->

</body>

[PHP]Netbeansとxdebugでデバッグする

PHPをdebugするためのエクステンション。パフォーマンスに影響を与える可能性があるので本番環境では利用しないほうがよい。

動作確認環境

ソフトウェア バージョン
OS Windows
xampp 1.7.7
PHP 5.3.8
Netbeans IDE 7.1.2
xdebug 2.1.1

PHP設定ファイルの編集

xamppをインストールしたディレクトリ下の、php/php.iniを編集します。

xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.idekey = netbeans

設定が完了したらApacheを再起動してください。
※設定が反映されているかは、phpinfo関数を利用します。

Netbeansの設定

ツール(T)>オプション(O)>PHPタブ>デバッグタブを選択

デバッグポート(G)を9000(php.iniのxdebug.remote_portと一致)
セッションID(D)をnetbeans(php.iniのxdebug.idekeyと一致)

デバッグする

任意の箇所にデバッグポイントをつけたら、デバッグ(D)>プロジェクト(***)をデバッグ(D) (Ctrl + F5)にてデバッグを開始します。

はまりポイント

Windows 7 Professionalの環境だと、xdebug.idekeyはphp.iniで設定しなくてもデフォルトでPCの「ユーザ名(hogeでログインしているならhogeが)」が表示されていましたが、Windows XP Professional環境だと「no value」となっていました。どのサイトをみても、xdebug.idekeyが記述してあるサイトにうまいことヒットしなかったので地味にはまった。

[Windows]脱マウス、すべてのアプリケーションに即効でアクセスする方法

一秒でも早く家に帰りたいあなたに送る。

ランチャー

よく使われるのが、ランチャーと言われるもの。
ランチャー:あらかじめ登録しておいたファイルやプログラムをアイコンで一覧表示し、マウスクリックによって簡単に起動できるようにするアプリケーションソフト。

便利なんだが、マウスのクリックをしなければいけないのがいけていない。しかもインストール or ダウンロードが必要。

Windowsの機能を使って実現

今回使うのは「環境変数」、Windows環境を普通に使う人はあまりいじらないかも?MS-DOS時代にはこいつらが大活躍していたらしい。

大まかな設定手順は以下の通り、
①一発で起動したいショートカットを配置する用のディレクトリを用意する。
②作成したディレクトリにパス設定を追加する。
③作成したディレクトリによく使うアプリケーションのショートカットを突っ込む。

ディレクトリを作成する

今回はC直下にshortというディレクトリを作成します。
コマンドプロンプトを起動(ファイル名を指定して実行 + cmd)して、以下を実行

C:\Documents and Settings\User Name> mkdir C:\\short

パス設定を追加する

マイコンピュータ上で右クリックし、プロパティを選択。詳細設定タブ中の環境変数を選択。システム環境変数の変数名が「Path」を選択し、編集を押下。そこに今回作成したディレクトリである「C://short」を追加します。

環境変数のを選択

Pathを選択して編集

末尾に「C://short」を追加

※追加するときに区切り文字のセミコロンを入れることを忘れない。

よく使うアプリケーションを突っ込む

例えばChromeを一発で起動させたいとします。Chromeのショートカットを作成し(Altを押しながら対象のアプリをドラッグするとショートカットは作成できます)、C://short配下に配置します。
追加したショートカットの名前を「短く」、「覚えやすいもの」に変更します。例えば、

Chrome -> ch
FireFox -> fi
InternetExplorer -> ie

とかにしています。

即効起動

上記で追加したChromeを一発起動します。Windows + Rを押します(ファイル名を指定して実行)、ch(上で変更したショートカット名称)を入力してOK選択。

Windows + Rを選択

登録したショートカット名でアプリを起動(ch -> Chrome)

これなら無駄なアプリケーションをダウンロードすることなく、マウスなしで一発・即効アクセス可能です。

[Book]君がオヤジになる前に

要約

38歳を迎える今、堀江貴文が発信する、新しい時代のための知恵とルール。 経済の先行きが見えず、保守化する社会情勢の中、不安と生きづらさを抱えている20~30代。彼らが、生き抜き、突破するためには、何よりも「思考停止」しない生き方が重要だ。 ビジネス術、転職、出世、結婚、子育て、生活習慣等について、「オヤジ」世代に差しかかった著者が、初めて「君」の痛みに対して向き合う。

Amazonより

目次

25歳の君へ
28歳の君へ
32歳の君へ
35歳の君へ
38歳の君へ

感想

近年蔓延しているやる気のない思考停止状態に陥った各世代の人におくる、思考停止に陥らないための堀江貴文回答が詰まった一冊。

本書で定義されている「オヤジ」とは年齢的なものを指しているのではなく、まったく思考しなくなり、保守的になってしまった人のことを指している。

とりあえず、25歳と28歳のトピックを呼んでみた。(それ以降は老いたときにでも呼んでみる)

様々なケース(異なったバックグラウンドを持った架空の人)において、どう振る舞うべきかが事細かに書かれている。一部堀江流すぎてうなずけない箇所もあるが、偉人の提言はありがたい。

とにかく、行動と提案のサイクルを日々の生活の中でまわし、思考し続ける習慣を身につけることが求められている。今を甘んじてはいけない、週末起業なんかやるくらいなら、いっそ会社をやめて起業してしまえ、、、常に女を口説き続けろ、、、参考になります。

[Book]Think Simple―アップルを生みだす熱狂的哲学

要約

〈シンプル〉は、ビジネスにおける最強の武器だ!

かつてアップルを倒産の淵から救った伝説のThink Differentキャンペーンを手がけ、iMacを命名したことでも知られる著者が初めて明かす、世界ナンバーワン企業の作り方。アイデアを実現させ、イノベーションを生みだし、生産性を上げ、何よりもクリエイティビティを高めるために必要なのは、シンプルさがもつ力を熱狂的に信じることだ――そのための核となる10の法則で、〈シンプル〉の真髄に迫る。

NHK出版より

目次

Introduction シンプルの杖
第01章 Think Brutal 容赦なく伝える
第02章 Think Small 少人数で取り組む
第03章 Think Minimal ミニマルに徹する
第04章 Think Motion 動かし続 ける
第05章 Think Iconic イメージを利用する
第06章 Think Phrasal フレーズを決める
第07章 Think Casual カジュアルに話し合う
第08章 Think Human 人間を中心にする
第09章 Think Skeptic 不可能 を疑う
第10章 Think War 戦いを挑む
Conclusion Think Different

要点・感想

スティーブと著者との体験を交えながら、シンプルを説き、シンプルの実現することの難しさ、シンプルであることのビジネス的メリットをまとめた本。ジョブスの伝記にはないエピソードも多々あるので、おもしろい。
[Book]Steve Jobs

Think Brutal・・・何事も率直に伝える。まどろこしい表現や態度は必要なく、伝えるように伝える。「充分によいでは、不充分」

Think Small・・・すばらしい人材が小さなチームを組んで出すアウトプットは計り知れない。チームが大きくなれば大きくなるほど、統制が難しくなり、ワークフローのようなプロセスが必要になる。ひとつひとつのプロセスが制度化することで、そのラインを外すのが難しくなり、目の前にある「すばらしいアイデア」すらも目を瞑り、プロセスのラインに乗ってしまう。

Think Minimal・・・Appleの製品ラインナップは極限までしぼられていて、ユーザが目的にあった商品を選択しやすい。一方、DELL等他のメーカーの製品はモデルが多すぎて、目的の商品にたどり着くのが億劫になってしまう。ビジネス上商品を扱っていない場合でも、イノベーションのかけらを事業化したいと考えたときに誰に何を伝えれば事業化できるか考えてみれば、そのプロセスは計り知れない、また直感的に「やってみよう」というアジリティがない企業が多い、何かを事業化するためには必ず論理に裏づいた根拠が必要となる(もちろん必要ではあると思うが)。往々にしてビジネスにおける成功は論理の裏に基づいていないことを考えると、アジリティの必要性は成功するために必要だなと思う。「疑わしときは、ミニマル化せよ」

Think Motion・・・「偉大なことをなしとげるには、ふたつのことが重要だ。計画と、充分ではない時間だ。」簡単に考えると、すごくいい製品を作りたい、いいアルゴリズムを創造したいと考えるときにはたっぷりと時間を用意して、議論し、生み出されると思いがちだが、自分の実務経験から見てもそれは違う気がしている。締め切りがあり、スケジュールがタイトだからこそ生まれてくる「何か」がある気がしている。とにかく限られた時間の中で、頭をフル回転し休むことなく動き続けることが重要である。

Think Iconic・・・Appleのマーケティングに対する考え方。これは、と思ったものをそのまま引用。
「マーケティングの歴史における最良の例にして、もっとも偉大な作品のひとつはナイキだ。ナイキはコモディティ(日用品)を売っている。靴だ。だが、人々がナイキについて考えるとき、ただの靴のメーカーとは思っていないはずだ。彼らは宣伝で価格について語ったことがない。自社のエアソールがどうだとか、リーボックと比べてどこが優れているとかは話さない。ではナイキは広告で何をしているのだろう?偉大なアスリートをたたえ、偉大なスポーツをたたえているのだ。それがナイキであり、それがナイキであり、ナイキはそのためにあるのだ。」
Appleはマーケティングするさいにに製品の特徴を・製品自身を紹介するわけではない、ブランドの価値をマーケティングしている。

Think Phrasal・・・商品のネーミングはシンプルさを体現するための究極系であり、そのネーミングがその商品の明暗を左右することもある。商品ラインナップに対するネーミング体系やバージョンに対するネーミングに対してもAppleはよく考えられている。「i」の文字を見るだけで、その商品がAppleであることをみんながわかり(ラインナップに対するネーミング体系)、人々は「iPhone 4S」と呼ぶのではなくそれを単に「iPhone」と呼ぶ(バージョンに対するネーミング)。

Think Casual・・・大企業のように形式に沿った行為は、いいアイディアを殺してしまうことがあり、議論の本質を握りつぶしてしまう可能性がある。カジュアルであれ。

Think Human・・・「5ギガバイトの容量を持った音楽プレイヤー」より「1000曲をポケットの中に」のほうがより人間らしさを感じる、親しみやすいキャッチコピーとなる。製品開発、広告では数値的なデータも重要であることは間違いないが、人間らしさを重んじているのがAppleである。
人類にとって、イノベーションとなる製品はその人が欲しいものではなく(アンケートの集計結果から導きだされるような製品ではない)、いまはないのだがもし「この製品」ができたら生活の一部となる・生活に欠かせなくなるというものを創造し、提供することである。

Think Skeptic・・・要望に対する「ノー」は疑う必要がある、それは「できない」ではなくて「あなたの要望が高すぎるから実現が難しい」を意味している可能性があるからだ。また、リスクをとって見返りがそのリスク以上あるならばそれを進んで行うべきである。不可能は「ほとんど」ない。素晴らしいアイデアを残すためには、極端なことをしなければならないのだ。

シンプル万歳。Apple万歳。

[Book]「叩き上げCEO」が明かす結果にこだわる思考法

要約

成功するマネジャーと失敗する人の違いはどこにあるのか? 現場からCEOにまで上り詰めた著者が、「結果を出す」ための思考法と行動、部下を能率的に動かす術を説く。各章末に「アクションガイド」を収録。

日経Bizアカデミーより

目次

Chapter 1 なぜマネージャーの仕事がうまくいかないのか
Chapter 2 信頼の持つ力 – 高潔さ、オープンな環境、相手への敬意
Chapter 3 マネージャーの一番大事な仕事 – 結果を出す
Chapter 4 ものごとはシンプルに
Chapter 5 リーダーが責任感を持てば部下にも伝染する
Chapter 6 結果を出すためのテクニック
Chapter 7 成功するマネージャーの心得
Chapter 8 気が散る原因をコントロールする
Chapter 9 高いパフォーマンスを出す会社にする

感想

厳しいビジネスの状況の中、著者自身の成功体験・失敗体験を交えながら、マネージャーとして結果を出すための行うべき行動を説いた本。
本書で定義されていた結果とは、「売り上げを伸ばす」「新規顧客を獲得する」「既存顧客を維持する」「コストを削減する」であり、これらに結び付かない行動にはすべて意味がない。
また、マネージャーとして部下の育て方や接し方についても詳しく書かれており、責任感のある大きな仕事を部下に任せ、その仕事とプロジェクトが掲げる目標をリンクさせてあげることで、部下のポテンシャルを最大限引き出し、チーム全体として成功を収めるノウハウも興味深かったです。
今マネージャーで仕事の方法に行き詰ってしまった方も・マネージャーを客観的に評価したい部下の方も、是非。