-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev-ops.html
More file actions
505 lines (384 loc) · 31.7 KB
/
dev-ops.html
File metadata and controls
505 lines (384 loc) · 31.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>フレームワークのDevOps環境 | SOCKET-MANAGER Framework For PHP</title>
<meta name="description" content="SOCKET-MANAGER Framework の DevOps環境構築手順と GUIランチャーによるサービス運用管理を解説。CUEI/Oモデルに基づき、サービスの起動・停止・監視・設定保存・JSONダウンロードまでを一元化。リソース監視やチャット機能も搭載。" />
<meta content="SOCKET-MANAGER, GUIランチャー, DevOps環境, CUEI/Oモデル, サービス管理, 起動停止, JSON設定, サービス追加, リソース監視, カスタムモニタリング, ランチャーログ, チャット機能, PHP worker, launcher導入" name="keywords">
<link rel="canonical" href="https://socket-manager.github.io/document/dev-ops.html" />
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LF9W695NNW"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LF9W695NNW');
</script>
<link rel="icon" href="https://socket-manager.github.io/document/favicon.ico" type="image/x-icon" />
<link type="text/css" rel="stylesheet" href="./css/common.css" media="all" />
<script src="./js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="./js/common.js"></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "SOCKET-MANAGER Framework - DevOps環境構築とGUIランチャーによるサービス運用管理",
"description": "SOCKET-MANAGER Framework の DevOps環境構築手順と GUIランチャーによるサービス運用管理を解説。CUEI/Oモデルに基づき、サービスの起動・停止・監視・設定保存・JSONダウンロードまでを一元化。リソース監視やチャット機能も搭載。",
"keywords": "SOCKET-MANAGER, GUIランチャー, DevOps環境, CUEI/Oモデル, サービス管理, 起動停止, JSON設定, サービス追加, リソース監視, カスタムモニタリング, ランチャーログ, チャット機能, PHP worker, launcher導入",
"image": "https://socket-manager.github.io/document/img/dev-ops/GUI-main.png",
"articleSection": ["Technical Documentation", "Server Development", "DevOps Environment Setup", "PHP Programming"],
"author": {
"@type": "Person",
"name": "SOCKET-MANAGER開発チーム"
},
"publisher": {
"@type": "Organization",
"name": "SOCKET-MANAGER",
"logo": {
"@type": "ImageObject",
"url": "https://socket-manager.github.io/document/logo.png",
"width": 355,
"height": 50
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://socket-manager.github.io/document/dev-ops.html"
},
"url": "https://socket-manager.github.io/document/dev-ops.html",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Framework Top",
"item": "https://socket-manager.github.io/document/"
},{
"@type": "ListItem",
"position": 2,
"name": "フレームワークのDevOps環境",
"item": "https://socket-manager.github.io/document/dev-ops.html"
}]
},
"isPartOf": {
"@type": "WebSite",
"name": "フレームワークのご紹介",
"url": "https://socket-manager.github.io/document/"
}
}
</script>
</head>
<body>
<div class="layout">
<div class="menu" role="navigation" aria-label="ページメニュー">
<h2 class="menu-title">SOCKET-MANAGER</h2>
<h4 class="menu-reference menu-page-title-bottom"><a href="./reference/" target="_blank">>> Reference</a></h4>
<h2 class="menu-label">MAIN-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./">▶フレームワークのご紹介</a></h3>
<h3 class="menu-page-title-link"><a href="./event-handler.html">▶イベントハンドラについて</a></h3>
</div>
<h3 class="menu-label-sub">IMPLEMENT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./init-class.html">▶初期化クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./unit-parameter.html">▶UNITパラメータクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./protocol-unit.html">▶プロトコルUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./command-unit.html">▶コマンドUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./main.html">▶メイン処理クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./setting.html">▶設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./message.html">▶メッセージファイル</a></h3>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./runtime-manager/" target="_blank">>> ランタイムライブラリ</a></h3>
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./simple-socket/" target="_blank">>> シンプルソケット機能</a></h3>
</div>
<h3 class="menu-label-sub">ADVANCED</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./architecture.html">▶アーキテクチャ</a></h3>
<h3 class="menu-page-title-link"><a href="./event.html">▶イベント駆動アーキテクチャ</a></h3>
<h3 class="menu-page-title-link"><a href="./ipc.html">▶IPC(プロセス間通信)</a></h3>
<h3 class="menu-page-title-link"><a href="./multi-server.html">▶マルチサーバーの構成</a></h3>
<h3 class="menu-page-title-link"><a href="./tcp-and-udp.html">▶TCP/UDP通信について</a></h3>
<h3 class="menu-page-title-link"><a href="./laravel.html">▶Laravelと連携する</a></h3>
<h3 class="menu-page-title-link"><a href="./system-setting.html">▶システム設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./custom-command.html">▶カスタムコマンド作成機能</a></h3>
</div>
<h3 class="menu-label-sub">OTHER-PROJECT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./new-project.html">▶新規開発環境</a></h3>
<h3 class="menu-page-title-link"><a href="./websocket.html">▶Websocketサーバー開発環境</a></h3>
<h3 class="menu-page-title">▼フレームワークのDevOps環境</h3>
<ul>
<li><a href="./dev-ops.html#begin">はじめに</a></li>
</ul>
<ul>
<li><a href="./dev-ops.html#setup">環境の導入方法</a></li>
</ul>
<ul>
<li><a href="./dev-ops.html#make-server">サーバーアプリ作成確認</a></li>
</ul>
<ul>
<li><a href="./dev-ops.html#launcher-use">ランチャーでの起動</a></li>
</ul>
<ul>
<li><a href="./dev-ops.html#last">おわりに</a></li>
</ul>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-minecraft"><a href="./minecraft-contents/" target="_blank">>> マインクラフト専用環境</a></h3>
<h3 class="menu-page-title-link-for-launcher"><a href="./launcher/" target="_blank">>> GUI & CLI ランチャー</a></h3>
<h3 class="menu-page-title-link-for-rest-api"><a href="./rest-api/" target="_blank">>> REST-APIサーバー開発環境</a></h3>
</div>
<h2 class="menu-label">EXTRA-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./extra-demo.html">▶デモサーバーの種類</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-command.html">▶デモのコマンド仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-setting.html">▶デモの設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-minecraft.html">▶マインクラフトの通信仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-close-frame.html">▶切断フレームの検証</a></h3>
</div>
<h2 class="menu-label">PHP-TECHNIQUE</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./php-pass-by-reference.html">▶参照渡し</a></h3>
<h3 class="menu-page-title-link"><a href="./php-phpdoc.html">▶PHPDocのフォーマット</a></h3>
</div>
<div class="menu-dummy-for-framework"></div>
</div>
<div class="main" role="main">
<h1>【フレームワークのDevOps環境】</h1>
<a id="begin"></a>
<h2 class="subtitle">はじめに</h2>
<div class="text-block">
SOCKET-MANAGER Framework の DevOps環境は、アーキテクチャページで紹介されている CUEI/O モデルに基づいて設計されています。<br />
このモデルにより、SOCKET-MANAGER Launcher を活用したサービス運用が可能となり、GUIランチャーを通じてサービスの起動・停止・監視・設定管理を一元化できます。<br />
本記事では、DevOps環境における SOCKET-MANAGER Launcher の導入と連携手順を中心に解説します。<br />
<br />
<h3 class="underline">CUEI/Oモデルとは</h3>
CUEI/Oモデルは、SOCKET-MANAGER Frameworkが採用する「CUEIアーキテクチャ」を運用領域まで拡張した設計思想です。<br />
CUEIは <strong>Communication(通信抽象化)</strong>、<strong>Union(共有基盤)</strong>、<strong>Event(非同期処理)</strong>、<strong>IPC(サーバー間通信)</strong> の4要素で構成され、効率的かつスケーラブルな通信処理を実現します。<br />
これに <strong>Operation(運用管理)</strong> を加えたものがCUEI/Oであり、開発から運用までを一貫してカバーする包括的なモデルです。<br /><br />
※ CUEI、CUEI/Oに関する詳細な説明は<font><a href="./architecture.html">▶アーキテクチャ</a></font>をご覧ください。<br />
<br />
<h3 class="underline">DevOps環境がこのモデルに準拠している理由</h3>
DevOpsは「開発(Dev)」と「運用(Ops)」を統合する文化・仕組みを重視します。CUEI/Oモデルはまさにその思想と一致しており、
<ul>
<li>開発段階ではCUEIの非同期処理や共有基盤により効率的な実装が可能</li>
<li>運用段階では/O(Operation)の仕組みにより監視・管理を統合的に実現</li>
</ul>
といった形で、DevOpsのライフサイクル全体を自然に支える構造を持っています。<br />
そのため、DevOps環境を構築する際にCUEI/Oモデルは理想的な準拠基盤となります。<br />
<br />
<h3 class="underline">SOCKET-MANAGER LauncherがDevOps運用に適している背景</h3>
SOCKET-MANAGER Launcherは、単なるサービス起動ツールではなく、<strong>リソース管理や監視機能を備えたランチャー</strong>に加え、<strong>コミュニケーションツール(チャット)をビルトイン</strong>した統合環境です。これにより、開発から運用までを一貫して支援する「CUEI/O」モデルを実現し、DevOpsの実践に最適化されています。<br /><br />
さらに、SOCKET-MANAGER Launcher環境は <strong>SOCKET-MANAGER Framework上の新規開発環境</strong>としての側面も持ち合わせており、以下の特徴を備えています。<br />
<ul class="margin-list">
<li>
<strong>ローカルなどの開発環境において、デベロッパーが運用を見据えたテストを実施できる</strong><br />
→ 開発段階から実運用に近い条件で検証できるため、リリース後のトラブルを未然に防止。
</li>
<li>
<strong>本番環境へそのまま移行可能</strong><br />
→ 開発・検証環境と本番環境の差異を最小化し、デプロイ時のリスクを軽減。
</li>
</ul>
このように、SOCKET-MANAGER Launcherは「開発と運用の断絶」を解消し、<strong>開発効率と運用安定性を両立するDevOps基盤</strong>として機能します。<br />
</div><br />
<a id="setup"></a>
<h2 class="subtitle">環境の導入方法</h2>
<div class="text-block">
以下のコマンドでインストールできます。<br />
<pre color-change="command" aria-label="DevOps環境のインストール">
> composer create-project socket-manager/launcher <インストール先のディレクトリ名>
</pre><br />
インストール完了後、プロジェクトルートで<code>php worker</code>コマンドを実行すると以下のようなUsageが表示されます。<br />
<pre color-change="command" aria-label="Usage表示">
> php worker
SOCKET-MANAGER Framework 1.X.X
Usage:
command [arguments]
main
app:cli CLI サービス管理ランチャー
app:gui GUI サービス管理ランチャー
craft
craft:init <初期化クラス名> 初期化クラスの生成
craft:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成
craft:protocol <プロトコルUNIT定義のクラス名> プロトコルUNIT定義のクラスとステータス名Enumの生成
craft:command <コマンドUNIT定義のクラス名> コマンドUNIT定義のクラスとキュー/ステータス名Enumの生成
craft:main <メイン処理のクラス名> メイン処理クラスの生成
craft:setting <設定ファイル名> 設定ファイルの生成
craft:locale <メッセージファイル名> メッセージファイルの生成
runtime
runtime:init <初期化クラス名> 初期化クラスの生成
runtime:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成
runtime:units <ランタイムUNIT定義のクラス名> ランタイムUNIT定義のクラスとキュー/ステータス名Enumの生成
runtime:main <メイン処理のクラス名> メイン処理クラスの生成
simple
simple:tcp-server <メイン処理のクラス名> TCPサーバー用メイン処理クラスの生成
simple:tcp-client <メイン処理のクラス名> TCPクライアント用メイン処理クラスの生成
simple:udp <メイン処理のクラス名> UDP通信用メイン処理クラスの生成
</pre>
※<code>laravel:command</code>コマンドに関してはLaravel環境でしか表示されません。<br /><br />
上記のUsageが表示されていれば、DevOps環境の構築が完了しています。<br />
</div><br />
<a id="make-server"></a>
<h2 class="subtitle">サーバーアプリ作成確認</h2>
<div class="text-block">
それでは動作確認を兼ねて以下のコマンドを実行し、メイン処理クラスを作成します。<br />
今回は<code>MainForTest</code>という名前で作成します。<br /><br />
以下のように表示されれば成功です。<br />
<pre color-change="command" aria-label="MainForTestクラス作成">
> php worker craft:main MainForTest
[success] メイン処理クラスの生成に成功しました (MainForTest)
</pre><br />
再度<code>php worker</code>を実行してみます。<br />
<pre color-change="command" aria-label="Usage表示">
> php worker
SOCKET-MANAGER Framework 1.X.X
Usage:
command [arguments]
main
app:cli CLI サービス管理ランチャー
app:gui GUI サービス管理ランチャー
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 <メッセージファイル名> メッセージファイルの生成
runtime
runtime:init <初期化クラス名> 初期化クラスの生成
runtime:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成
runtime:units <ランタイムUNIT定義のクラス名> ランタイムUNIT定義のクラスとキュー/ステータス名Enumの生成
runtime:main <メイン処理のクラス名> メイン処理クラスの生成
simple
simple:tcp-server <メイン処理のクラス名> TCPサーバー用メイン処理クラスの生成
simple:tcp-client <メイン処理のクラス名> TCPクライアント用メイン処理クラスの生成
simple:udp <メイン処理のクラス名> UDP通信用メイン処理クラスの生成
</pre><br />
アプリ名<code>main-for-test</code>という名前で登録されている事が確認できます。<br />
まずは以下のコマンドを実行して今回作成したサーバーを起動した状態にしてください。<br />
<pre color-change="command" aria-label="サーバー起動">
> php worker app:main-for-test 10000
</pre><br />
その後PowerShellなどで以下のように<code>netstat</code>コマンドを実行して10000ポートがListenされている事が確認できれば正常に動作しています。<br />
(動作確認後は <code>Ctrl+C</code> などでプロセスを停止しておいてください)<br />
<pre color-change="command" aria-label="Listenポート確認">
> netstat -ano | Select-String -Pattern "127.0.0.1:10000"
TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING 21536
</pre>
</div><br />
<a id="launcher-use"></a>
<h2 class="subtitle">ランチャーでの起動</h2>
<div class="text-block">
ここでは先ほど <code>craft:main</code> コマンドで作成した <code>app:main-for-test</code> のアプリをランチャーで起動してみます。<br />
<br />
<h3 class="underline">ランチャー本体(内蔵Websocketサーバー)の起動</h3>
プロジェクトルートで以下のコマンドを実行してGUIランチャーを起動します。<br />
<pre color-change="command" aria-label="GUIランチャーの起動">
> php worker app:gui
</pre>
<br />
<h3 class="underline">GUI を開く</h3>
<code>app/client/launcher.html</code> のファイルをブラウザで開くと、以下の接続フォームが表示されます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/connection-form.png" target="_blank"><img src="./img/dev-ops/connection-form.png" loading="lazy" alt="接続フォーム" title="接続フォーム" /></a>
<figcaption><strong>接続フォーム</strong></figcaption>
</figure>
</div>
<br />
<h3 class="underline">ランチャー本体(内蔵Websocketサーバー)と接続</h3>
ホスト名/ポート番号/オペレータ名 を入力してから「接続」ボタンを押します。<br />
(ランチャーのポート番号はデフォルトで 5000 です)
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/connection-form-input.png" target="_blank"><img src="./img/dev-ops/connection-form-input.png" loading="lazy" alt="入力済み接続フォーム" title="入力済み接続フォーム" /></a>
<figcaption><strong>入力済み接続フォーム</strong></figcaption>
</figure>
</div>
するとランチャーとの接続シーケンスが開始され、以下のように CPU/メモリ/ディスクの各リソース情報やサービス一覧/チャット画面などが表示されます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/GUI-main.png" target="_blank"><img src="./img/dev-ops/GUI-main.png" fetchpriority="high" loading="eager" alt="接続直後のGUI画面" title="接続直後のGUI画面" /></a>
<figcaption><strong>接続直後のGUI画面</strong></figcaption>
</figure>
</div>
<br />
<h3 class="underline">サービスの追加</h3>
初回はサービスが登録されていないので、以下のようにサービス一覧の部分は見出しのみが表示されます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-list-init.png" target="_blank"><img src="./img/dev-ops/service-list-init.png" loading="lazy" alt="サービス一覧(サービス未登録状態)" title="サービス一覧(サービス未登録状態)" /></a>
<figcaption><strong>サービス一覧(サービス未登録状態)</strong></figcaption>
</figure>
</div>
「+新規サービス追加」ボタンを押すと入力フォームが開くので、必要事項を記入してから「一覧に反映」ボタンを押します。<br />
(同じ環境内で管理する場合は実行パスに"."のみ入力します)<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-add-form.png" target="_blank"><img src="./img/dev-ops/service-add-form.png" loading="lazy" alt="サービス追加フォーム" title="サービス追加フォーム" /></a>
<figcaption><strong>サービス追加フォーム</strong></figcaption>
</figure>
</div>
以下のように確認画面が表示されるので「OK」ボタンを押すと登録が完了します。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-add-confirm.png" target="_blank"><img src="./img/dev-ops/service-add-confirm.png" loading="lazy" alt="サービス追加時の確認ポップアップ表示" title="サービス追加時の確認ポップアップ表示" /></a>
<figcaption><strong>サービス追加時の確認ポップアップ表示</strong></figcaption>
</figure>
</div>
<br />
<h3 class="underline">サービスの起動/停止</h3>
登録されたサービスは以下の一覧に表示されますので「▶」ボタン押下でサービスを起動できるようになります。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-added.png" target="_blank"><img src="./img/dev-ops/service-added.png" loading="lazy" alt="サービス追加後の一覧表示" title="サービス追加後の一覧表示" /></a>
<figcaption><strong>サービス追加後の一覧表示</strong></figcaption>
</figure>
</div>
以下はサービスが起動中の画面ですが、「▶」ボタンが「■」に置き換わっているので、これを押すと停止させる事ができます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-started.png" target="_blank"><img src="./img/dev-ops/service-started.png" loading="lazy" alt="サービス起動中の画面" title="サービス起動中の画面" /></a>
<figcaption><strong>サービス起動中の画面</strong></figcaption>
</figure>
</div>
<br />
<h3 class="underline">設定ファイルの保存/ダウンロード</h3>
登録したサービス情報は「設定保存」ボタンを押す事で以下の確認ポップアップが表示され、「OK」ボタンを押す事で所定の場所(setting/services.json)に設定ファイルとして保存されます。<br />
保存された情報は次回以降も同じ設定で読み込まれます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-save-confirm.png" target="_blank"><img src="./img/dev-ops/service-save-confirm.png" loading="lazy" alt="設定保存時の確認ポップアップ表示" title="設定保存時の確認ポップアップ表示" /></a>
<figcaption><strong>設定保存時の確認ポップアップ表示</strong></figcaption>
</figure>
</div>
「JSONダウンロード」ボタンを押すと以下のダウンロード用のダイアログボックスが表示されますので、設定ファイルの内容に関わらず現在画面に登録されている最新の設定ファイルをダウンロードする事ができます。ダウンロードしたファイルはバックアップ用として保存しておくか、別の環境の設定ファイルとしてご利用頂けます。<br />
<div class="img-block">
<figure class="center-figure">
<a href="./img/dev-ops/service-download.png" target="_blank"><img src="./img/dev-ops/service-download.png" loading="lazy" alt="ダウンロード時のダイアログボックス表示" title="ダウンロード時のダイアログボックス表示" /></a>
<figcaption><strong>ダウンロード時のダイアログボックス表示</strong></figcaption>
</figure>
</div>
</div><br />
<a id="last"></a>
<h2 class="subtitle">おわりに</h2>
<div class="text-block">
今回はソケット通信アプリを開発する例として <code>craft:main</code> のコマンドを使ってメイン処理クラスの作成を行いましたが、この環境は新規開発環境でもあるため、他のコマンドも使って実装していく事になります。
さらに大きく分けると<strong>ソケット通信アプリ</strong>や<strong>常駐型アプリ</strong>の開発基盤でもありますので、それぞれで使えるコマンドも異なります。<br /><br />
コマンドの詳細な使い方に関しては、以下のページでご紹介していますので、そちらをご覧ください。<br />
<ul class="margin-list">
<li>ソケット通信アプリ開発(craftカテゴリのコマンドによる実装)⇒<font><a href="https://socket-manager.github.io/document/new-project.html" target="_blank">▶新規開発環境(SocketManager用)</a></font></li>
<li>常駐型アプリ開発(runtimeカテゴリのコマンドによる実装)⇒<font><a href="https://socket-manager.github.io/document/runtime-manager/new-project.html" target="_blank">▶新規開発環境(RuntimeManager用)</a></font></li>
</ul>
ランチャーの詳しい操作方法については<font><a href="./launcher/" target="_blank">▶GUI & CLI ランチャー</a></font>のページをご覧ください。<br />
</div><br />
</div>
</div>
</body>
</html>