2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UT-virtualAdvent Calendar 2018

Day 20

VisualStudioCodeでPlantUMLを動かしてみた【初リリース】

Last updated at Posted at 2018-12-20

プログラミング勉強歴5か月ぐらいの@Re96kn11です。

今回はVisualStudioでPlantUMLを使ってみました。

##なぜUMLを書こうと思ったのか
プログラミングでゲーム開発などをやっていると、コードがどんどん汚くなっていって開発が億劫に感じることがしばしば。そこでコードの全体図を把握するためにURLを書いてみることにチャレンジしました。

##環境構築をしよう
###VSCodeのインストール方法

  1. VisualStudioCode(以下VSCode)からインストーラーをダウンロード
  2. インストーラーを起動しドライブ内に保存
  3. VSCodeを起動
  4. メニューが英語のため日本語に変換する(英語がいい方はスルー)
    Visual Studio Code[vsCode]日本語化[@ntkgcjさんの記事]を参考にさせていただきました!!

###PlantUMLのインストール方法
Visual Studio Code で UML を描こう![@couzieさんの記事]を参考にさせていただきました!!

##では早速書いていこう!!
plantUMLの書き方については、【新人教育 資料】第4章 UMLまでの道 〜クラス図を書いてみよう編〜[@devopsCoordinator]さんの記事を参考にせていただいています。

###作りかけのゲームのUMLを書いてみた結果

NepuLeagueVR.pu
title NepuLeagueVR

package GameManager{

  class GameManager{
      FixedUpdate();
  }

  enum GameState{
        INIT,
        START,
        MODE,
        READY,
        STAGE1,
        STAGE2, 
        STAGE3,
        BOSS,
        FINISH,
        END
    }
}

class UIManager{
    -qText: Text
    -count: Text
    -ansText: Text
    activeText(f: bool)
    SetSentence(setnence: string)
    SetAnswer(answer: string)
    InitCount()
}

class ObjectManager{
    -qObj: GameObject
    -aObj: GameObject
    -stQpos: Vector3
    -stApos: Vector3
    
    Start()
    SetQuestion(f: bool)
    MoveQuestion(speed: float, dpoint: float)
    SetAnsObj(s: bool)
    MoveAnswer(speed: float)
    IncorrectMove(float shedSlope)
    ResetApos()
    InitPosition()
}

class QuestionManager{
    +ansWords: char[]
    -qNumber: int
    +sentence: string
    +answer: string

    Start()
    ChooseQuestion(qCount:int, qAlChoose: int[])
    InitQuestion()
}

class DataManager{
    +speed: float
    +dpoint: float
    +shedSlope: float
    +nQ: int
    +collectAns: int
    +qCount: int
    +nQUestion: int
    +ansSentence: string
    +qDvide: bool
    +qChoose: bool
    +ansInput: bool
    +ansHit: bool
    +qAlchoose :int[]   
    
    InitDataManager(i:int, b:bool, s:string)
    ResetQuestion(b:bool)
}

class HitJudge{
    OnCollisionEnter(Collision collision)
}

class AnswerManager{
    +inputField: InputField
    InputAnswer()
    InitText()
    JudgeAnswer(ansSentence: string)
}

class EnemyController{
}

class SoundManager{
}

UIManager -right-> DataManager : 参照
QuestionManager -up-> DataManager : 参照 
QuestionManager --> UIManager : 参照
QuestionManager --> ObjectManager : 参照
GameManager --> AnswerManager : 参照
GameManager --> DataManager : 参照
GameManager --> QuestionManager : 参照
GameManager --> ObjectManager : 参照
GameManager --> UIManager : 参照
HitJudge --> DataManager : 参照
AnswerManager --> DataManager : 参照
AnswerManager --> UIManager : 参照
AnswerManager --> QuestionManager : 参照

図はこんな感じです。
NepuLeagueVR.png

##反省点と学び
オブジェクト指向もくそもないめちゃくちゃな図になってしまいました。
設計もせずに書き連ねるとろくなシステムが出来上がらないことが一目瞭然ですね(笑)
PlantUMLを使えばクラス図で全体の様子を把握しやすくなるのでとても便利だと感じました。
このゲームはまだ作成途中なのでUMLを用いてきれいな設計に直してから開発に取り組んでいきたいと思います。少しずつではありますが、Unityや設計に強くなれるように初心者ながら頑張っていきたいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?