FEH の攻略ページを作る際に各キャラクターのステータス等の統計情報を取ることが増えてきました。直近だと標準偏差等は自前で PHP 関数を作って求めていたのですが、処理速度やメンテナンス性を考慮して、PHP の PECL 拡張モジュールの中で統計関数が入っている stats モジュールを使用することにしました。ということで、さくらインターネットでこの拡張モジュールを動作するようにするまでのメモを残しておきます。作業環境は Windows 環境を前提とします。
ゴール
以下の php コードが動作することを目標とします。
<?php
$array = array();
$array[] = 1;
$array[] = 2;
$array[] = 3;
$array[] = 4;
$array[] = 5;
print(stats_standard_deviation($array));
?>
標準機能のままで php を実行すると以下のエラーになります。
PHP Fatal error: Uncaught Error: Call to undefined function stats_standard_deviation()
これが通って標準偏差が出力されたら目標達成とします。
Tera Term のダウンロード、インストール
さくらインターネットのサーバーにコンソールからSSHでログインするために Tera Term を利用します。以下のリンクからダウンロードできます。
https://ja.osdn.net/projects/ttssh2/releases/
teraterm-4.100.exe がインストーラー形式の exe で、teraterm-4.100.zip はインストール不要なポータブルパッケージとなっていますので、どちらでも構いません。
さくらインターネットにSSHログイン
インストールした Tera Term でさくらインターネットのサーバーにSSHログインします。以下がログイン完了までの手順です。
- ttermpro.exe を実行して Tera Term を起動します
- Tera Term 起動後、以下のダイアログでホスト名を入力して OK をクリックします
- 以下の警告が出ますが、Continue をクリックして進みます
- さくらインターネットのユーザー名とパスワードを入力して、OK を押します
- 以下のような画面になったらログイン完了です
stats 拡張モジュールのインストール
インストールに関しては以下のページを参考にさせていただきました。
https://pgmemo.tokyo/data/archives/1047.html
以下が stats をインストールするまでの手順です。
- ホームディレクトリに php_module_src という作業ディレクトリ(名前は何でもいい)を作成して、そこに移動します
mkdir ~/php_module_src cd ~/php_module_src
- パッケージのソースをダウンロードします
wget https://pecl.php.net/get/stats-2.0.3.tgz
ダウンロード可能なstatsパッケージバージョンは以下のページで確認できます https://pecl.php.net/package/stats - パッケージを解凍します。
tar zvxf stats-2.0.3.tgz
- 解凍したディレクトリに移動します
cd stats-2.0.3
- 以下のコマンドを実行してパッケージをビルドし、stats.so を作成します
phpize ./configure make make test
- ビルド成果物を任意のディレクトリにコピーします。ここでは参考ページに合わせてホームディレクトリ以下に php_modules という名前のフォルダを作成します
mkdir ~/php_modules/ cp ./modules/stats.so ~/php_modules/
php.ini に拡張モジュールを使用するための設定を記述
さくらインターネットサーバコントロールパネルから php.ini を編集して、stats を PHP で利用できるように設定します。
- コントロールパネルにログインし、アプリケーション設定の「PHP設定の編集」に入ります
- 以下を php.ini に記述して保存します
extension_dir = /home/(ユーザー名)/php_modules/ extension = stats.so
テストコードの実行
これで stats が利用可能になっているので、最後にテストコードで確認を行います。test.php としてテスト用の PHP コードをサーバーにアップロードして、test.php を表示して標準偏差が表示されることを確認します。
1.4142135623731
無事に標準偏差が表示されるようになりました。同様の手順で他の拡張モジュールもインストールできるので、何か使いたいモジュールが出てきたらがんがん使っていこうと思います。