プログラミング勉強歴5か月ぐらいの@Re96kn11です。
今回はVisualStudioでPlantUMLを使ってみました。
##なぜUMLを書こうと思ったのか
プログラミングでゲーム開発などをやっていると、コードがどんどん汚くなっていって開発が億劫に感じることがしばしば。そこでコードの全体図を把握するためにURLを書いてみることにチャレンジしました。
##環境構築をしよう
###VSCodeのインストール方法
- VisualStudioCode(以下VSCode)からインストーラーをダウンロード
- インストーラーを起動しドライブ内に保存
- VSCodeを起動
- メニューが英語のため日本語に変換する(英語がいい方はスルー)
Visual Studio Code[vsCode]日本語化[@ntkgcjさんの記事]を参考にさせていただきました!!
###PlantUMLのインストール方法
Visual Studio Code で UML を描こう![@couzieさんの記事]を参考にさせていただきました!!
##では早速書いていこう!!
plantUMLの書き方については、【新人教育 資料】第4章 UMLまでの道 〜クラス図を書いてみよう編〜[@devopsCoordinator]さんの記事を参考にせていただいています。
###作りかけのゲームのUMLを書いてみた結果
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 : 参照
##反省点と学び
オブジェクト指向もくそもないめちゃくちゃな図になってしまいました。
設計もせずに書き連ねるとろくなシステムが出来上がらないことが一目瞭然ですね(笑)
PlantUMLを使えばクラス図で全体の様子を把握しやすくなるのでとても便利だと感じました。
このゲームはまだ作成途中なのでUMLを用いてきれいな設計に直してから開発に取り組んでいきたいと思います。少しずつではありますが、Unityや設計に強くなれるように初心者ながら頑張っていきたいと思います。