「TGWSWebAdmin」に関する日記

地震とTGWSWebAdminとNeoMupl

地震

埼玉県、東京都で震度5強の地震 津波の心配なし
私は無事です。

TGWSWebAdmin

開発中止しました。
だいたい普通のTGWSAdminで事足りるのと、TGWSWebAdminを動かすのに結局TGWSAdminが必要になることから、ウェブ側に作る意義が薄く、相応に開発意欲もさっぱりだったので。
ウェブ側に置いた方がいい機能は、個別に作ってcronで動かすか、APIを作ってTGWSAdminからつつくかしましょうかね。

NeoMupl

WPFに移行する準備段階として、UIとそれ以外に分ける作業中。
昔やろうとして頓挫したんだけど、UIと密結合なところは、間にインターフェースをかませてUIを直接触らないようにしたらいけるかなと考えています。

TGWSWebAdmin

普通のTGWSAdminでほぼ足りてるから全然開発進んでないけど、必要なクラスをとりあえずちょっと用意してみました。
うーん、完成させる気あるのか…。

TGWSWebAdmin

TGWSAdminは平均して2分に1回動いているので、今のWebサーバー上で動かすようにするのはやっぱり非現実的かなーと思います。
ということで、結局VPSでTGWSWebAdminを心置きなく常時運転するのがいいのかなーというところに舞い戻ってきました。
とりあえず、テスト用タスクだけですが、生成できるようになりました。

TGWSWebAdmin

別にTGWSWebAdmin用のサーバーを別途立てなくてもよくね?という気がしてきました。
現状でも、TGWSAdminの機能の一部はWeb側に丸投げしている部分があります。だったらスケジューリングも含めて全部丸投げでいいんじゃないかなって。
その場合、自動的にスケジュール通りに動かす仕組みが必要になりますが…。

TGWSWebAdminとプロフィール

TGWSWebAdmin

タスクリストの読み込みまで開発。
と言っても、読み込むデータがないのでまだ張りぼて。インターフェースをどうしようかと思案しながらなので、具体的な動作はまともにできていないのです。

そんなことより、TGWSWebAdminを開発しながらVisual Studio Codeの環境整備。
PHP-CS-Fixerの公式サイトを見ながらコード整形のルールを自分好みに整備しています。おおむねいたれりつくせりなSymforyのルールで、お節介すぎると感じたところは順次Offにしています。
PHP DocBlockerも入れて、ドキュメントコメントも入れやすくしました。
そして何より、PHP IntelliSenseを入れたので、関数の定義を参照できたり、コードの自動補完が利いたり、圧倒的に便利になったのです。
有料ソフトのPhpStormにはきっと遠く及ばないのでしょうが、ここまでやっただけでも、かなり快適になりました。

プロフィールページ

やっぱりどう考えても一覧に出てくる情報量が少な過ぎなのです。ほとんどの質問に対する回答は短く簡潔なのに、それすら削っているから、すごく読みにくいのです。
情報量を削っているのは、「読みに行く」というアクションを取らせて、回答を読んだ時の印象を強めようというのと、アクセス数の統計を取りたいという狙いがあったからなのですが、一言二言の回答まで削ってしまうのは、さすがにやり過ぎというものなのです。

TGWSWebAdminとドラクエ10

TGWSWebAdmin

もっとも根幹をなすTaskの部分を作成中。
まだ何も動かない状態で、パッケージ管理ツールのComposerにも慣れながらの作業なので具体的な実装はほとんど進んでいませんが、とりあえずHelloWorld的なものを表示するだけの仮タスクだけは作りました。

ドラクエ10

しろいコキンのモンスターバトルロード進めました。
ランクCだったのを一気にAまで上げました!メインキャラのはずのミフミン(ランクB)を一日で軽く超えました!
絆のエンブレム2種と、虹パックをありったけ交換しました。

TGWSWebAdmin

TGWSAdmin、今はWindows10の個人PCを使って運用しています。
しかし、アップデートで勝手に再起動したり、そうでなくてもうっかり何かやらかして落ちたりということがたびたびあったわけです。で、遠隔地の安定したデータセンターに安価でサーバー機を仮想的に作れるVPSというものに興味を持っているという話を先月しました。
あのときは、Linuxに不慣れなまま時間が過ぎていって、いったんVPSを解約することになりましたが、そろそろまた具体的な行動を始めようかなと。

いきなりVPSを再契約するわけではありません。
プログラム自体は動く段階まで手元で持っていって、充分動くことが確認できたら、そのとき初めてVPSを契約し、プログラムを稼働させるのです。

VPSはLinuxで運用するつもりなので、まず、WindowsでもLinuxでも動くものを作らなければいけません。
当初、TGWSAdminが.NETでできていたので、Linuxでも動く.NET、.NET Coreを検討していました。実際、.NET Coreを両方の環境で動かす段階まではこぎつけました。
しかし、さらに検討を進めていくと、それは必ずしも得策ではありませんでした。
いくつか理由はあったのですが、大きかったのは2つ。
1つ目、同じ言語を使えるだけで、結局大改修が必要になってしまうということ。元のプログラムがWindowsフォームアプリケーションなので、ライブラリも動き方も、環境自体が大きく変化してしまうんですね。そうなれば、当然、プログラムも大きな変化が必要になるのです。
2つ目、ホットスワップ的なことをしたいこと。つまり、プログラムが動き続けている間に、プログラムの一部を差し替えてしまえるようにするのです。.NETアプリケーションは、基本的に、いったんシステムを全部止めてから、完成したものに全部差し替えるという作業が必要になります。タスクAが動いている間にタスクBを最新版に更新なんてことは、無理ではないにしても大変なのです。

そこで、目を付けたのが、PHPです。
元々サーバー上で動かすことを前提としていて、WindowsでもLinuxでも同じように動かすことができて、私自身、.NETに負けないぐらい使い慣れています。主にWebサーバーで動かすものなので、ユーザーインターフェースもWebアプリとして作れば済みます。
プログラムは大改修どころかフルスクラッチになってしまいますが、これを機に元のプログラムで良くないと思っていた設計も見直すつもりです。動作中のプログラムの一部差し換えは、PHPファイルをただ上書きするだけで済みますね。

と、いうことで、VPS版のTGWSAdminは、PHPで実装されたWebアプリとして提供され、各タスクはPHPファイルを適時呼び出すことで実現される、という形で実現しようと思います。

カービィハンターズZとUri.EscapeDataString

ゲーム記の新方式への移行が完了。
そしてカービィハンターズZのページを公開。
ゲーム記のほうは管理画面がまだまだできていませんが、管理画面で頑張らなくてもあんまり問題ない設計にはなっているので、そのへんは急がずぼちぼちやっていこうかと思います。

ゲーム記の件が落ち着いたので、以前TGWSAdminで問題になっていたデータ送信の問題の対処についての話を書き始めました。
実はサンプルコードはとっくの昔に作ってGitHubにアップしてるんですけどね。
mifumi323/EscapeLongDataStringSample
ただ、これに関しては、ちょっと言いたいことがあるので、プログラムだけでなく、解説とかも入れていこうかと思います。

VPSについて。
一応OSをインストールして、セキュリティの設定をするところまではしたけど…うーん、ここから先、サーバー構築とかしなきゃいけないのよね…。
そこらのやっすい共有レンタルサーバー並みの環境を構築するだけでも、不慣れな私には結構な作業ですし、じゃあそこまでしてその先に求めるものは何なの?って話で。
共有じゃLet's Encrypt使えねーなめんどくせーなVPSならできんじゃねぐらいの気持ちで始めてみたのですが、ちょっと、手間の天秤計算すると割に合わなさそう…。
当初は、今のこのサイトを移転するのを視野に入れて考えていたのですが、今は、TGWSAdminの自宅PC以上の安定稼働のためにVPSを使うのがいいんじゃないかという気がしてきています。