本記事はMinecraft JEのサーバー管理システムであるServer Starterの連載記事として執筆しています。
一部ShareWorldなど特殊な単語を用いていますが、興味のある方はこちらも見て頂けると嬉しいです。
このページでは筆者がGUI作成時に最低限意識していた項目をまとめてみました。
筆者も初心者のため、あくまで参考程度に見て行っていただけると嬉しいです。
早速プログラミングを始めると思いきや…
「これを作りたい!」と思い、いきなりソースコードを全部書き上げたなら、あなたは天才です。
GUIに限らず、ある程度規模の大きなシステムを構築しようとすると、たいてい、いきなり書き始めてもどこかで目標を見失ってしまい、作成を続けることが難しくなってしまいます。また、冗長な構築になってしまったり、構築漏れが出てしまったりとミスの原因になることも多々あります。
そのため、作成を始める際には、いろいろと事前の準備をしていくことが大切になると思っています。
業務などで行う場合を除き、趣味程度の構築ではこのくらい準備すればよいのでは?という項目を紹介していきたいと思います。
どんな機能が欲しい?(要件定義)
さて、あなたが作りたいと思ったソフトはどんな機能を有している必要があるのでしょうか。
筆者が作成したServer Starterでは主に以下の点に的を絞ることにしました。
機能要件(最低限確実に入っていないと成立しない機能のこと)
- ワンクリックでサーバーを起動できる
- 起動バージョンの追加がMinecraft launcherを通さずとも可能
- 起動するワールドを選択・追加できる
非機能要件(付属的な機能、ユーザーがより良くソフトを使うことができる機能)
- ShareWorld(リモートサーバー同期システム)の導入
-
server.properties
を編集できる(よく編集する項目はハイライトされている) - 不要になったバージョン・ワールドの削除ができる
- ワールドを再生成できる
- サーバー起動時にサーバーを立てている人にはop権限を与える
- Spigotサーバーが導入できる
- Datapack・配布ワールド・Pluginが導入できる
- サーバーが終了するとPCもシャットダウンさせることができる
- Minecraftのクライアントが存在しなくとも稼働することができる
「非機能要件」にあるような付属的な機能を充実させることによってユーザーフレンドリーなシステムを構築することができ、ユーザーに喜ばれるようなものに仕上げることができます。
また、ユーザーに喜ばれるだけではなく、単純に個人で開発している際にボリュームのあるものに仕上がるため、達成感を得られると思います。
開発の見通しを立てる(設計)
これで搭載する機能も確定したため、コーディングに入りたくなりますが、もうひと作業残っています。
搭載する機能は決まりましたが、これはあくまで実際にコーディングをする上では抽象的なものです。この抽象的なものを具体的なものにしていく作業をする必要があります。
初心者的にはフローチャートがおすすめ
最低限考えておいてよかったと思うことの一つに処理フローの決定があります。
どんな処理をどこで行っておき、条件分岐によって分岐した処理はどこで本流と合流するのか、などを考えておくことで、開発の見通しが立ち、無駄な分岐やメソッドの開発をしなくて済むようになります。
これを整理する簡単なツールとしてフローチャートを筆者は使いました。ここで意識していたのはわかりやすければ何でもよいことです。
一例として筆者がかつて作成したフローチャートの一部を貼り付けていますが、このフローチャートは2,3正式な書き方からすると間違っている箇所があります。しかし、自身の思考を整理するためのいわゆるメモ程度のもののため、人に見せるものでもないところは手を抜いても良いのではないかと個人的には感じています。
個人開発の利点であるスピード感を損なわないように、必要以上に本流と関係ないところで時間をとる必要はないと思います。
どんな画面構成にするか
これはGUI制作に限った話ですが、システムの処理内容が決まったとしても、実際にどんな画面でユーザーに操作してもらうかを考えなければなりません。
情報量を落としつつも、実装するすべての機能にアクセス可能な画面にする必要性があります。
Server Starterのメイン画面は現行版(v1.0.0)では以下のようになっています。
特に、主要機能であるサーバーのバージョン・ワールド選択を前面に出し、その他の細かい設定は別の画面で行うように作成しました。
まとめ
今回の記事でまとめたことはあくまで、一例であり、絶対的なものではありません。しかし、初めて中規模・大規模なシステムをはじめて作る方のリード文程度の立ち位置の記事になることを目指して執筆しました。
業務とは違う自由な開発が可能な個人開発を楽しみましょう!