はじめに
サーバーアプリを開発するツールと言えば一般にライブラリ形式で提供されているものが多い印象ですが、このフレームワークでは頻繁に書くような慣習的なコーディング部分をコマンド操作で概ね補えるようになっています。
以下のようにフレームワークコマンドのUsageを表示すると、サーバーの実装に必要なコマンド群が表示されます。
> php worker
SOCKET-MANAGER Framework 1.0.0
Usage:
command [arguments]
main
Empty...
craft
craft:init <初期化クラス名> 初期化クラスの生成
craft:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成
craft:protocol <プロトコルUNIT定義のクラス名> プロトコルUNIT定義のクラスとステータス名Enumの生成
craft:command <コマンドUNIT定義のクラス名> コマンドUNIT定義のクラスとキュー/ステータス名Enumの生成
craft:main <メイン処理のクラス名> メイン処理クラスの生成
craft:setting <設定ファイル名> 設定ファイルの生成
craft:locale <メッセージファイル名> メッセージファイルの生成
コマンドによる実装とサーバー起動
例えば、メイン処理を作成してインスタンス化し、サーバーを起動するまでの手順は以下2ステップのコマンドで完結します。
①メイン処理の作成
php worker craft:main <メイン処理クラス名>
というコマンドを使ってメイン処理クラスのひな形を作成します。
今回の場合はMainForTest
というクラス名を指定。
> php worker craft:main MainForTest
[success] メイン処理クラスの生成に成功しました (MainForTest)
生成されたクラスはapp/MainClass
の場所に格納されます。
②サーバーを起動
php worker
コマンドを使ってapp:main-for-test
というサーバー名を指定して起動。
(サーバー名はキャメルケースをスネークケースに変換して先頭にapp:
を付与したものになります)
今回の場合はポート番号10000番で起動。
> php worker app:main-for-test 10000
これでホスト名'localhost'(デフォルト)の10000ポートをListenポートとしてサーバーが起動します。(Ctrl+C
で停止します)
また、php worker
を実行して再度USAGEを表示すると、先ほど生成したサーバーの名前がmain
カテゴリへ追加されているのが確認できます。
> php worker
SOCKET-MANAGER Framework 1.0.0
Usage:
command [arguments]
main
app:main-for-test Command description
craft
craft:init <初期化クラス名> 初期化クラスの生成
craft:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成
craft:protocol <プロトコルUNIT定義のクラス名> プロトコルUNIT定義のクラスとステータス名Enumの生成
craft:command <コマンドUNIT定義のクラス名> コマンドUNIT定義のクラスとキュー/ステータス名Enumの生成
craft:main <メイン処理のクラス名> メイン処理クラスの生成
craft:setting <設定ファイル名> 設定ファイルの生成
craft:locale <メッセージファイル名> メッセージファイルの生成
利用できるプロジェクト環境
サーバー開発が始められる環境は、開発の目的に合わせて以下の4種類のプロジェクトから選べるようになっています。
①フレームワークのデモ環境
Webブラウザ⇒マインクラフト間チャットが可能なチャットサーバーのデモ環境です。
デモ環境には6種類のサーバーが内包されていて、マルチサーバー環境でサーバー間通信(IPC)によるプライベートメッセージの送信が可能なサーバーも含まれています。
②新規プロジェクト開発環境
プロトコル開発も含めて一から始められる環境です。
開発に必要な各コマンドの利用例をご紹介しています。
③Websocketサーバー開発環境
Websocketプロトコルが実装済の環境で、サーバーコンテンツの開発から始められます。
簡単なチャットコンテンツの作成例をご紹介しています。
④マインクラフトコンテンツ専用環境
マインクラフトのカスタムアイテムやカスタムエンティティを制御できます。
Webブラウザでアイテムショップを運用できます。
以下のページではカスタムアイテムの一つである「いなずまの弓」を実装例としてプロジェクト環境をご紹介しています。
この環境では①のデモ版を継承しているのでデモの機能はそのまま使えます。
おわりに
コマンドベースのインターフェースはLaravelとの連携を考慮しているので、以下のページでその連携方法をご紹介しています。
連携後はLaravelのコマンドを使ってサーバーを起動する事もできるので、Laravelのリソースを使った開発が可能になる事に加え、Webアプリとのオールインワン環境としても使えるようになります。
また、Laravelとの連携後であってもこのフレームワークのコマンドを使って引き続きサーバー開発が行えます。