万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    web2py Windows

    Python2.7ならpipでインストールできる。(でもMercurialでインストールしたほうがいいかも?)

    pip install web2py
    

    しかしPython3.xでは入らないみたい。無理だった

    で、pipだとどうプロジェクトつくるんだ?
    pip install web2pyでインストールされたスクリプトについて

    こちらの方は以下の3つがインストールがどうじにできるみたいだが入らなかったよ。Windwosだからかな?

    • w2p_clone
    • w2p_apps
    • w2p_run
    pip install web2py
    Downloading/unpacking web2py
      Downloading web2py-1.98.2.tar.gz (4.7Mb): 4.7Mb downloaded
      Running setup.py egg_info for package web2py
        No handlers could be found for logger "web2py"
    
    Installing collected packages: web2py
      Running setup.py install for web2py
        No handlers could be found for logger "web2py"
    
    Successfully installed web2py
    Cleaning up...

    一応公式に推薦されている「w2p_clone」のコマンドでもうごかない・・。

    こちらからMarcurialをDLする。
    http://mercurial.selenic.com/

    「C:\Program Files\Mercurial」を環境変数PATHへ


    そして、

    hg clone https://code.google.com/p/web2py/

    こちらで起動できる

    cd web2py
    python web2py.py --nogui --password=test


    月間1億の売上を誇るゲームを持つさくらソフトが開発技術公開!ソーシャルゲームディレクター・デザイナーも知っておくべき開発手法勉強会&大ヒットゲームの負荷分散tips共有【第6回】【マイクロソフト×デジハリ大学院】実践ノウハウ勉強会

    http://atnd.org/events/26455



    □神装ヴァルキリー

    ・ソフト
    開発現場の構成:

    ・現場の構成
    社長
    企画者
    チーフ開発者
    兼任で一人


    開発者チーム
    5人構成
    経験:0〜10年

    ソーシャルアプリの開発未経験から

    ◯三上隼人
    経験:2ヶ月
    ギルド機能担当
    一ヶ月→二週間


    ・要求の流れ
    企画者→デザイナー→開発者チーム

    ・要求の特徴
    種類:機能、デザイン問わず
    時期:開始から公開直前まで
    件数:常に飽和状態
     ↓
    ソーシャルゲームの特徴

    ◯神装ヴァルキリーの場合
    主要部分
    売り出す機能:着せ替え
    ソーシャル要素:フレンド
    課金要素:アイテム、ガチャ

    ソート機能
    自動デッキ
    特典
    カード合成
    トレード
    ギルド
    プレゼント
    図鑑
    コンプボーナス
    協力戦
    クエスト
    検索の絞り込み
    ソート機能
    自動デッキ
    特典
    カード合成


    ・・・とはなりませんでした
    機能のリファクタリング

    〜事例紹介〜
    ◯工数を抑えられた事例
    ・対処法
    1.企画者、デザイナーと綿密な打ち合わせ
    2.必要事項をおさえて、最もシンプルに実装

    ◯具体的には
    1.変更で品質低下
    2.奥が深いと勘違い
    3.手軽だったが変更に弱い


    〜変更で品質低下〜
    腫瘍機能
    通りゲーム機能の詳解

    変更事例
     新機能追加
     Flashの追加
     進行中のステータス変化
      レベルアップ、カードドロップ、お金、経験値・・・etc

    チュートリアル
    ◯ページ進行

    クエスト1→合成→ボス戦→結果
          ↑
    Flash(次のページヘ飛ばす)

    ・クエスト1
    レベルアップ
    カードドロップ

    ◯変更後

    ステータス:チュートリアル終了後に初期化
    企画者の頭の中では分かっていたこと

    開発者と企画者は常に連絡しあって

    〜ナビゲーションリンク〜
    ・ナビゲーションリンク
    例)Googleの検索結果のナビゲーションリンクリンク

    ・神装ヴァルキリーの場合
     5つ表示:7, 8, 「9」, 10, 11など


    〜整理してみると〜
    ・必要なのは
     ・リンクの開始位置
     ・リンクの開発位置
     ・現在の位置
     ・リンクの終了位置
     ・全部で5つ:袖は2つまで

    ・結果
     ・最初に開始位置と終了位置を袖2つで初期化
     ・開始位置が初端なら、始端から5つで終了位置を
     ・else終了〜


    〜ツリー表示〜
    ディレクトリの階層構造

    初期コスト重視
    自動生成

    どのジョブがどのジョブの親なのか?
    ※ジョブはゲームの職業

    再帰処理で簡単に実装できる
     ・業務では役に立たない代表格(コンピュータサイエンス
     ・スタックでも同じことができる(コード量が大幅に増える)
      →コード量の増加
      →バグの温床

    ・まとめ
    工数を抑えられた事例
    ・対処法
    1.企画者、デザイナーと綿密な打ち合わせ
    2.必要事項を抑えて、最もシンプルに実装
    ・具体的には
    1.変更で品質低下
    2.奥が深いと勘違い
    3.手軽だったが変更に弱い

    基礎学習や日々の積み重ねが大事 学生が有利かも?

    □負荷分散
    ・一般的な構成

    ・さくらソフトの構成

    ・神装ヴァルキリー公開の 末

    ◯全体像
    ・携帯端末(ガラケースマホ
    →プラットフォームプロバイダ(DeNAGREEmixi
    →ゲームプロバイダ

    ・インフラ面
     ・ロードバランサ
     →アプリサーバ
     データベースサーバ
     ・レプリケーション:同じ物を複製
     ・テーブルごと移し替え

    ・ソフト面
     ・LL(PerlPHPRubyなど)
     ・キャッシュ:memcached

    ・図解


    〜長所と短所〜
    ・長所
     ・アプリの作成が楽
      ・ユーザの情報を探さなくてもいい。決め打ちできる
      ・LLで開発コスト低下
     ・アプリサーバをスケールアウトさせやすい

    ・短所
     ・アプリサーバの分散必須(LL遅い)
     ・データベースサーバでのupdateがスケールできない
     ・ハードのコストが大きい
      ・高価なSSDが必要になる場合も


    〜さくらソフトの構成〜
    ・インフラ面
     ・ロードバランサ
      ・ここで負荷分散はしていない
      ・アプリごとのサーバに振り分けるだけ

     ・ディスパッチャー
     ・アプリ+データベースサーバ
    ・ソフト面
     ・Java:速い
     フレームワークは自社開発
     ・多段キャッシュ:Why
      ・memcached セッションを来にしなくてもいい。サーバ間でやりとりできる・
      ・in process:memcachedに任せっきりではない自己管理(勝手に消えてほしくない)

     ・構成の対比ページを作る

    ・長所
     ・

    ・短所
     ・技術的なコストが高い


    〜その他の構成〜

    ・「只今混雑しております」の専用のサーバがある
     ・DeNAではこのサーバ死んでいるのではないのか?の判定。
     ・ロードバランサからアプリサーバへのアクセス時間
     ・アプリサーバからの応答時間
     ・場合に応じて、アラートサーバに働いてもらう
     ・正常に機能させるには実環境での測定が必要

    ・アラートメール
     ・只今混雑の状況に応じて、開発者に通知
     ・常時対応可能
    ・アプリの監視
     ・MRTGなどの一般的なツール
     ・自社開発


    MVC構成の

    Viewについてはサーバから受け取ったのをJSPに渡す二段構成
    Strutsを使わないメリットは??
    →キャッシュをいつどこで破棄しているのかを行わせるには自分たちで開発しないと手が届かないから。

    デッドロックの対応は?
    →適宜再起動していた

    ただ台数を増やすのではだめ

    ロードバランサを使って再起動か、それとも?
    ディスパッチャはJavaではなく、ルータで振り分ける

    OOSが不可欠
    LVS

    RPテーブルが動いている

    どのアプリに対してアクセスしているかをしている。
    ロードバランサといいつつバランシングはしていない。

    IPアドレスで分ける手法

    PostgresQLを使っている
    →バックアップはとっていない。

    ユーザ単位で水平分割

    ・グラフ
    横軸
     時刻
    縦軸
     秒間のエラー数
     秒間のアクセス数

    サポートチームが随時うけとっている

    Q.
    単体テストで使っているもの

    A.
     JUnit
      機能変更があるたびに書き換えるのでメンテができなくなる
      工数が伸びてしまう やめた
      →テストが・・

    Q.
    ・芸者東京のおみせやさん
     DeNAとグリーにも出して成功している
     違うプラットフォームにもだすか?

    A.
    面白そうなプラットフォームにもだす
    モンスターvsモンスター ヤフーモバゲー

    マジックマジック mixi

    どこでも進出したい

    Q.DeNA、グリーは?

    A.
    魅力的なプラットフォームと感じていない?

    Q.
    デッドロックを検出して、トランザクションして〜があるのに自社のを使った?

    A.
    知らない