WindowsでBBS.pmを構築してみる


はじめに

ここではBBS.pmが動作する環境をWindowsで構築してみます。

作業は以下のステップで行います。


Perlのインストール

BBS.pmの動作にはPerlが必要ですのでPerlをインストールします。

Windowsで使用できるPerlはActivePerlとStrawberryPerlの2種類です。

ActivePerlは無料で使用することは可能ですが開発元であるActiveState社の商品のため、条件によっては対価を支払う必要があるようです。またインストールはPowerShellからインストーラコマンドをダウンロードして行うような仕組みで少し煩わしいかもしれません。

StrawberryPerlは無料で制約なく自由に使えます。msiによるインストーラの他、USBメモリなどにインストールできるようなポータブル版のZipファイルも提供されています。

使用経験のある方を選択していただくとして、全くの未経験でお試し程度で使用するようでしたらStrawberryPerlをおすすめします。

チュートリアルはこの先、StrawberryPerlを用いて説明します。


ダウンロード・インストール

まず、StrawberryPerlのページにアクセスします。

ページ右下にある ZIP,Portable, special editions をクリックします。

20210830 003438

パッケージリストのページが表示されますので、 Portableの項目から動作マシンのアーキテクチャと最新バージョンのパッケージに該当するリンクをクリックするとZipファイルのダウンロードが開始します。

20210830 003334

ダウンロードが完了したら任意のフォルダを作成し、Zipファイル内の全てのファイルをフォルダ構造ごとコピーします。


パス設定

Perlを使用できるようにするためにはライブラリパスと実行パスの設定が必要ですが、StrawberryPerlではパス設定用のバッチファイルが同梱されているので、 コマンドプロンプトを開いてバッチファイルのあるパスに移動し、バッチファイルを実行することでPerlが使用できるようになります。

例えばPerlをコピーしたフォルダが C:\Perl なら

C:\> cd C:\Perl
C:\Perl> portableshell.bat

とすることでパスが設定されます。


BBS.pmのインストール

ダウンロードのページにアクセスします。

リリース一覧のページから最新バージョンのリンクをクリックします。

20210831 032958

パッケージダウンロードのページの下部あるリンクをクリックするとダウンロードが開始します。

20210831 033354

ダウンロードが完了したら任意のフォルダを作成し、Zipファイル内のファイルをフォルダ構造ごと全てコピーします。


テスト用サーバの動作テスト

BBS.pmのパッケージにはテスト用アプリケーションが同梱されています。

テスト用アプリケーションのメインプログラムはtest-appフォルダにあるので実行する前にアプリケーションのパスに切り替えてからプログラムを実行します。

例えば、BBS.pmパッケージをコピーしたフォルダが C:\bbs_pm なら

C:\> cd C:\bbs_pm\test-app
C:\bbs_pm\test-app> perl chat.pl

とすることでアプリケーションが実行されます。

テスト用アプリケーションはメインプログラムを実行するとTCPのポート8888番で着信待機します。

telnetクライアントでTCPのポート8888番に接続すればサーバに接続することができます。

telnetクライアントをいくつか実行して接続し、いずれかのtelnetクライアントからキーを入力すると入力したキーコードが全てのノードに送られてtelnetクライアントの画面に表示されます。

telnetクライアントを閉じるとノードが切断されます。

プログラム実行中にCtrl+Cを押すかアプリケーションパスに作成されている.lockファイルを削除するとサーバを停止することができます。


Windowsの注意事項

PerlのソースファイルはUTF-8で書くのが一般的ですが、Windowsで用いられる文字コードはシフトJIS(CP932)のため、プログラムをWindows上で実行すると文字コードが一致しないためコンソールの表示が乱れます。

WindowsでPerlを扱う場合は通常、次のようなコードをプログラムの先頭に追加しておきます。

binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

これにより、コンソールに出力される文字はシフトJISに変換されて、正しく表示されるようになります。

ちなみにソースファイルをシフトJIS(CP932)で書くことはできますが、Windows以外で実行すると不具合が生じることがあります。

また、インストールしたBBS.pmのモジュールパスへ問い合わせが行えるよう、次のコードをメインプログラムに追加します。

例えば、C:\bbs_pm\なら

use lib 'C:/bbs_pm';

とすることで、

use BBS;

したときに、インストールしたBBS.pmのモジュールがロードされるようになります。


最後に

Perlの実行パスが正しく設定され、BBS.pmアプリケーションのメインプログラムでロードするBBS.pmのパスが正しく設定されていれば、どのフォルダに配置しても問題ありません。

例えば、メインプログラムのフォルダ内にBBS.pmのパッケージを配置して、すっきりさせることもできますし、さまざまなアプリケーションを混在させたいのであれば、BBS.pmのパッケージ内にアプリケーションごとのフォルダを用意して管理することもできます。

さらにPerlのパッケージを同梱して、USBドライブに構築すれば、持ち運び可能なアプリケーションサーバを作ることも可能です。

Task Runner