『剣と魔法のログレス(PCブラウザ版)』の運用について


はじめまして。Aimingエンジニアの角谷です。
「剣と魔法のログレス(PCブラウザ版)」(以下ログレス)でサーバー・クライアントの
開発に携わっております。

今回は社内勉強会で話した内容を紹介したいと思います。
テーマは社内からのプロジェクトに対する質問のいくつかを取り上げたものになりました。

勉強会テーマ

  • ゲーム紹介
  • 過去に起きた問題で一番大変だった問題とどのような対応をしたか
  • これまでで一番大変だった事とどのように乗り越えたか
  • 産まれてしまったと思う技術的負債について。それについての失敗談や内容について
  • プロジェクトでエンジニアからみて他のプロジェクトに自慢したいこと

勉強会について

弊社では、運用(開発)をしているプロジェクトを対象に、定期的にテーマに沿った
勉強会を行っています。この時は新人向け、他プロジェクトに興味のある人向けに
行ったものになりました。

開発1.5年、運営4年+

Aimingで開発している中では相当なレガシーな運用と開発を行っていると思います。
(データ管理が Git でなくsvn など)
しかし、だからこその開発のシンプルさと親和性があると思いたいですね。
成果物の一部はスマホ版にも引き継がれています。

Flash開発

レガシーな開発として筆頭なのが Flash を利用している事があるでしょうか。
ブラウザとの相性も悪くなく、Adobe製品との組み合わせもやり易いものでした。
ブラウザによる動作違いも当時は少ないものでした。(PPAPI導入後はその範疇ではない)
MXML(Slide参照)によるUI作成機能は、これまでの開発の中ではやり易いものでした。

今後

プロジェクト運用中で得た経験や事実は、本だけでは得られないものです。
長期運営しているからこそ出来ること・起きたモノの解消をログレスは目指します。
まだまだ国内開発で頑張っておりますので、これからもよろしくお願いします。


mewlist

Redmine で技術仕様書を書こう


はじめまして!
株式会社 Aiming の土井です! エンジニアをやっております!

今回の開発者ブログでは、情報共有ツールとしての UML の活用方法について、現場での取り組みをご紹介させていただければと思います!

技術仕様書の“図” どうやって書いてますか?

株式会社 Aiming では、プロジェクトの Wiki やバグトラッキングに Redmine をメインに使っています。みなさんも既にご存知だったり、実際にバリバリ活用されていることとおもいます。

また、企画仕様書、技術仕様書などは Redmine の Wiki やエクセルに代表されるオフィススイート等を活用して作成しますが…
図の表現を求められるような仕様書を作る時に、どうやって作成しようか悩んだことはありませんか?

  • 標準ペイントソフトで頑張って作成
  • オフィススイートに含まれる、ドローツールを使って図を作成、画像吐き出し

というケースが一般的には多いようです。かくいう私も、Google スライドでの図表作成に明け暮れたものです(p_-)

そこで、今回は、技術仕様書で必要となる図の表現方法について、Aiming で行われている取り組みについて紹介したいと思います。

技術仕様書といえば、UML!

UML について詳細は割愛しますが、仕様を視覚的に見せなければならない時に用いられる、図の書き方に関する取り決めです。

例えばこんな感じです。

すごい戦闘システムのフロー

2366afd8450116b7157a68cbbd5f03b357ca53886bbe89633f17fcdf3e46642c

適当なプレイヤーモデルのクラス設計

e68f045825b59ced550524e65dcb848465a2d8260e931ae8b23f450ad58a62de

こんな感じで、要点をシンプルに図で見せられるとわかりやすいですよね?
でも、UML のルールにしたがって図を綺麗に書くのって、やってみると結構大変。

特にエンジニアは、絵心については自信がない方も多いのではないでしょうか?(絵心あるエンジニアの方すいません)

絵心がなくても大丈夫!

こういった図を描くために、「Windows の標準ペイントソフトと格闘して、気づけば日が暮れていた!」 みたいな経験、皆さんありますよね? この苦痛に耐え、その先に産みの苦しみを知るわけですが……ちょっと待って下さい。

実は、先ほどの例に上げた図、Redmine の Wiki に直接テキストで記述されているんです! (ここ、びっくりするところです)

すごい戦闘システム

{{plantuml
  title すごい戦闘システム
  
  (*) --> "コマンド?" as Wait
  Wait --> ["たたかう"] "敵のHPを減らす" as Damage
    --> if "敵は生きてる?" then
         --> [HP == 0] End
       else
         --> [HP > 0] Wait
       endif
  
  Wait -> ["にげる"] "戦闘終了" as End
  
  End -> (*)
}}

適当なプレイヤーモデルのクラス設計

{{plantuml
  abstract Abstract {
    HP
    MP
    瞑想する()
  }
  
  interface Interface {
    走る()
    投げる()
    飛ぶ()
  }
  
  class Player {
    名前
    運
    適当なことを言う()
  }
  
  Abstract <|-- Player
  Interface <|.. Player
}}

Redmine のプラグイン (PlantUML) を導入する

UML をテキストで記述する機能は、PlantUML Redmine plugin という Redmine のプラグインで提供されています。

PlantUML Redmine plugin

図をテキストで書くことのメリット

  • ペイントソフト・ドローツールの使い方に明るくなくても
    プログラムみたいに図が描ける
  • エンジニア間だけでなく、プランナーとの情報共有にも活用できる。図なので!
  • Redmine Wiki の履歴がテキストで残る。つまり、図の差分が把握できる
  • クラス図なんかは そのままソースコードの雛形として使える
    設計段階からコードの全体像を意識することができるので、設計と実装を分離して考えることにもつながる
  • 順番の入れ替え、追加削除が容易なので仕様変更に強い
    (仕様が変わって矢印をマウスで一つ一つ引き直すみたいな経験…ありますよね)

最後に

Redmine をお使いの方は、PlantUML Redmine plugin をインストールしてみてはいかがでしょうか。

UML はとても強力なツールですが、敷居が高い印象を持つ方も多いと思います。
まずは、PlantUML の公式サイトのサンプル画像をみて簡単な図から描いてみましょう!


『剣と魔法のログレス いにしえの女神』でのBigQueryの利用


Web開発チーム エンジニアの富田です。
「剣と魔法のログレス いにしえの女神」(以下ログレス)の管理ツールを開発しています。

先日、社内勉強会でBigQueryについてお話する機会があったので、その内容を元にしながら、ログレスでのBigQueryの利用や「管理ツール」開発について紹介したいと思います。

BigQueryの利用について

ログレスでは、ゲームサーバーから出力されるログをBigQueryにアップロードしています。
出力されるログは、膨大且つ様々な種類がありますので、その中から目的のデータを探し出すには、BigQueryの検索性能は非常に有用です。

AimingでのBigQueryの利用については、下記の記事に記載していますので、ご興味のある方はご覧頂ければと思います。
AimingでのGoogle Cloud Platformの利用事例について紹介しました

また、ログだけでは無くデータベース内のデータも一部、BigQueryにアップロードしています。
ログ内にはアイテム名やクエスト名のようなデータではなく各IDしか入っていませんので、データベース内の情報とJOINすることで、それらを取得できるようにしています。

他のメリットとしては、BigQueryにアップロードしておけば、本番環境の状態に関わりなく、各種集計処理を行うための負荷の高いクエリを投げることができます。

「管理ツール」でのBigQueryの利用について

ログレスの「管理ツール」では、お客様サポート用の機能、売上等のKPI、プッシュ通知などの運用ツールなどを提供しています。

「管理ツール」の機能例

これらの機能の一部で、BigQuery内のデータを利用しています。

例えば、アイテムデータ喪失のお問い合わせ用にアイテムの操作履歴の検索機能や、プランニングの参考のためにクエストの達成状況を一覧する等の機能があります。

これらの機能は、運営・制作スタッフの要望や新コンテンツの追加等によって、現在も次々と追加されています。

また、他の使用例としては、先日公開した ログレス国勢調査 の各項目の集計に利用しました。
掲載している各集計値は、全てBigQueryのデータを元にしています。

データ解析ツールとその利用

Aimingには各ゲームのKPIを横断的に閲覧できる解析ツールが有り、このツールではBigQuery内のデータを使用しています。

このツールに集計クエリを登録すると、簡単に時系列(時間単位/日次/週次/月次)でグラフ化することができます。

例えば、イベント用のクエストの達成率を一覧したり、ガチャ施策が想定通りの効果が得られなかった場合に、その要因となる指標を集計してグラフ化し、お客様によりご満足いただけるゲーム体験を提供するための改善に役立てるなどの利用用途があります。

Web開発チームでは、日頃より、この解析ツールについての社内勉強会・ワークショップを行い、エンジニア以外の利用も推進していく活動も行っています。

また、各種イベント施策の効果検証をデータ面から補強できるように、グラフ化やデータ抽出を行って、プランニングに役立てて頂いてます。