デブサミ2019 2日目(02/15)メモ 10:00〜 ドラゴンクエストXを支える失敗事例

  • 個人スポンサー席満席?
  • 立ち見あり
  • 開始前にコンドーさん(翔泳社)の挨拶

    • 2日続けて参加してる人がそこそこ多い
  • スクエニ青山さん

    • DQ10プロデューサー
    • 後で資料は配る
      • これ書いてる時点ではまだ公開されていない(週明けかな?)
    • テクニカルディレクター時代(1つ前の仕事)の話がメイン?
    • キングボンビーを初めてプログラムした(PCエンジン)
      • 生みの親ではない(サクマさん)
  • オンラインサービスはリリース後が本番

    • 運用、運営
  • 良い設計

    • 要件を満たしているのが前提
    • 経験からくる
  • DQ10は6年半やってる

  • 痛い目見ないとわからない部分もある
  • 組織によって解は違う

  • MMORPG

    • MOとの対比→MOはホスト(ロビー?)あり
  • 詳細は本見てね

https://www.amazon.co.jp/%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88X%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-%E2%94%80%E2%94%80-%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3RPG%E3%81%AE%E8%88%9E%E5%8F%B0%E8%A3%8F-WEB-PRESS%E3%83%97%E3%83%A9%E3%82%B9%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4297101742/ref=sr_1_1?ie=UTF8&qid=1550311595&sr=8-1&keywords=%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88+%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93

  • 運営、運用が重要

    • 運営→攻め→イベントとか→柔軟性
    • 運用→守り→不具合対応とか→継続性
  • 失敗事例

    • その1 スキル(?)を使った時の効果音が鳴り続けたり、ノイズがある「場合がある」。

      • クライアント側の話
      • エフェクト

        • データドリブン
        • C++
        • 何も直してません!
        • ミスした時に音を止める処理が無効化されてた
          • 別のスキルで、逆に音が鳴って欲しいのに止まっちゃう不具合があって、それを直す時に他のスキルでもミスした時に音が止まるようにしてしまった。
            • 別のスキルの方を個別の処理にした
      • 教訓

        • 影響範囲をBTSのチケットに明記し、再検証し、影響範囲は極力狭くすべし。
    • redmineを使っている

    • その2 パーティーのオートマッチングが行われない「場合がある」

      • 邪神の迷宮(?) 8人パーティーで進めるダンジョン
      • エリアが複数あり、エリアによってマッチングに参加できる条件が異なる。
        • 条件は月2回(?)自動で更新(変更)される
      • プログラマ、デザイナー、プランナーがいて、条件はプランナーが決めている。(って言ってたと思う。うろ覚え)
      • 条件判定はクライアントで一次チェックが行われてからサーバーで最終チェックしている
        • 一次チェックがOKで最終チェックがNGだった
        • サーバー側にハードコードされた条件判定処理があった
          • 以前のアップデートで条件のデータフォーマット変更があった
            • リリースタイミングが微妙だったので、一旦暫定対処としてハードコードした。
              • 該当ダンジョンのデータが新フォーマットで、システムがまだ旧フォーマット対応だった?
      • 教訓
        • 暫定対応は本対応するまでチケットを残そう
    • その3 釣りで釣った魚(魚じゃないのもある)のサイズ誤判定

      • 釣れるものは123種類
      • 釣りの処理はC++Luaで実装されている
        • C++部分ではmmの情報をintで持っていて、Lua部分ではmとmmの情報をdoubleで持っている。
      • 1023mm以上だとビッグサイズ、1022mm以下だとノーマルサイズ。
        • Lua部分で1000で割ってmをmmにする処理の誤差で1023mmのものが1022mmと誤判定されてた
          • 割る前に補正処理が入っていたけど割るところでNG
          • ぱっと見であってそうだったからスルーしてしまった
          • 急に起きた
            • データ作るところで1023mmになるはずのものが1022mmになってしまった
              • ダブルマスタ(再計算を避ける為にマスタデータを複数持っていた)のズレ
              • 別の不具合も影響して起きた
      • 魚(?)を交換してしまった人をログ等から探して個別に対応した(スクリプトでデータ修正)
      • 教訓
        • 表面化していないバグがあるものと思え
    • 考察

      • 影響範囲を明確に
      • ちゃんとチケットを登録してクローズまで持っていく
      • どうやったら防げたか?
        • チケットを登録していないものが大部分
          • 影響ないだろうと軽視しがち
    • チケット200000ぐらい(不具合以外のタスクも含めて)
  • QA

    • 開発体制はどれくらいの人数でやっている?
      • 具体的な数字の公表はNG
        • 人事から止められている(コスト等がバレてしまう?)
        • スタッフロールには数百名の名前が
    • 影響範囲を特定する方法は?
      • 個別に見る
      • 個々の経験値に依存(あまり良くない)
    • チケットに登録されない理由は?
      • (担当者が)登録するまでもないと思ってしまう
      • 勘違い
        • 大部分はできているがたまーに漏れてしまう感じ
    • タスクが多い中、モチベはどう保つ?
      • 飽きて辞める人もいる
      • チーム内の異動はある
  • 雑感

    • ゲーム固有の話は少なめで一般的な話が主だったかなぁという印象

20180813

お仕事

  • この時期は朝の電車が空いてて良い
  • SQL Alchemyでorder by descは「order_by(Table.column.desc()」
  • Vueでクエリパラメータ取りたい時は「this.$route.query」

カメラ

  • 単焦点レンズ用の偏光フィルタを購入
  • 動画撮影用にGoProがちょっとほしかったりする

グラブル

  • スタレ後半はトール
  • サプはグラシ
  • ラブライブコラボのコラボ品はだいたい取れて、残りはガチャチケとブレード4凸ぐらい。
  • 溜まってたアーカルムチケ消化中

20180809

台風

  • 夜のうちに北に抜けたみたいで、今朝は雨も降らず電車もなんともなかった。

お仕事

  • headにOGPのmetaタグ書いてて、試しにfacebookのdebuggerでチェックしたらfb:app_idが必須とか言われた。

    • そのアプリIDのおかげで、facebook側でどれだけシェアされたかみたいなのが見られるらしい?
    • シェアされた時の見た目を変えたいだけなんだけどな
  • AWS LambdaのあるfunctionだけRDS接続でaccess deniedになった。

    • serverless.ymlのfunction個別のiamRoleStatementsにRDSのARNが入ってなかったせいみたい?
    • function全体に設定するiamRoleStatementsにはRDSのARNは書いてあるんだけど、function個別の設定で上書きされちゃうってことなんだろうか?

スタバ

  • 抹茶のフラペが出てたんで飲んでみた
    • つぶつぶなものの食感が良かったかな
    • 桃のフラペを最終日に滑り込みで飲みに行ったんだけどまだあった

グラブル

  • ラブライブコラボは一応maniacも100hellも食えてる
  • スタレ前半はシロウ

20180803

お仕事

  • PythonのProcessをいじる処理を書いてた
    • 「while True:」で回して「time.sleep(60)」で待ってから条件判定してProcessを上げたり落としたりする感じ。

AWS

  • ソリューションアーキテクトアソシエイト試験のオンラインワークショップが無料だったので見てた

グラブル

  • 無料10連で金月1
    • お中元の青箱から銀天
  • おはガチャで金月
  • ンナギ集めで拾ったサマーガチャチケ2枚使ったらコーデックス2枚出てきた
  • グランデ初自発
    • ディールでコスモス弓ATが出た
  • 他はリヴァとか討滅戦とかアーカルムとか色々

20180802

お仕事

  • twitter APIのfilterを使ってtweetを取ってくる処理を書いてたり、PythonのProcessを複数走らせてそれを管理する処理を書いてたりした。

グラブル

  • ランク151になった。
  • イベは貢献5m達成済みで、武器と石も3凸できてるんで、半額満喫中。

20170926

・お仕事

最近はEXCELパワポでお絵描きすることが多いです。

 

今週席替えがあって、移動先の席が冷房キンキンで寒過ぎて体調悪くなりました。

上着やブランケットは常備しとかないといかんですね。

 

・ぐらぶる

とうらぶコラボはカスカス回収したのとSSR刀の4凸が1本ずつできました。

開催中の風有利古戦場では琴3凸2本作成を目標にちびちびやってます。

 

召喚マルチのドロ率の件は、運営の対応がおかしいなあとは思いますけど、

対処したくてもできない状態だったりするんでしょう。

まあ、ネトゲなんて昔も今もやったもん勝ちなところがありますし、

そんなもんだと割り切って遊ぶしかないんじゃないですかね。

 

android

ConstraintLayoutのxmlandroid studioでいじってると、値を書き換えたのに勝手に書き換えた値が元に戻ったりする謎現象に遭遇しまして、android studioGUIのデザインツール上の配置を元に書き換えてるっぽいんですよね。

 

xcodeのStoryboardとかもそうですけど、こういうGUIツールとかIDEありきの仕組みとか部品って個人的にはあんまり好きじゃなくて、手でも書けるけどツール使ったら楽ですよー程度のものであって欲しいです。