2021年11月25日木曜日

Bitnamiで作られた蔵書管理システムに挑む

5年ほど前のこと。勤務していた学校で、学校図書館の蔵書管理システムを、当時から数年前に保護者だった方が無償で作ってくださったものを使っていました。このシステムについては、メンテナンスができる人が他におらず、その保護者だったの方にお願いをする以外にないのこと。システムの作成からかなりの年数が経っており、保護者だった方との連絡もしばらくしていないということでした。

ざっくりと状況を確認してみると、パソコン(スタンドアローン)で蔵書や利用者、貸出・返却の管理をするためのシステムで、ベースになっているものがありそうでした。このシステムに利用者番号をバーコードに書き出す機能があって、それをプリントアウトして切り貼りしてクラスに分けて利用しているとか。これはあまりにも非効率的です。利用者情報をCSVで書き出せる機能もあるというから、それを使ってExcelでクラス分けをして、Wordでバーコード化して差し込み印刷したら良いのではと提案してみました。これは、結局私がやることになりましたが、この程度なら難しいことはありません。
#時間はかかるけど。

問題は、利用者番号のバーコード化がどのコードで行われているかを解析しないといけなかったこと。これは、USB接続のバーコードリーダーを使って蔵書管理システムから出てきたバーコードを別のパソコンで読み取って解析しました。すると、利用者番号は「コード39」でバーコード化されていることがわかりました。そこで、CSVで書き出したデータをExcelで開き、利用者番号をアスタリスク「*」で囲むようにした列「="*"&(利用者番号のセル)&"*"」を追加して、Excelの書類として保存しました。これを、Wordの差し込み印刷設定の中にある「バーコード挿入」機能を使ってバーコードに変換します。これはとても便利な機能だし、使い方も簡単です。

これでバーコードのクラス分けが簡単にできるようなりました。喜びも束の間で問題が発生。この蔵書管理システム自体が突然動かなくなってしまったのです。

この蔵書管理システムは、Windows上でWebアプリケーションのような形で動いているらしいことはわかっていましたが、詳しいことは全くわかりませんでした。とにかく、このシステムの正体を探るべくパソコン内を調査開始。すると、「Ruby on Rails」と「MySQL」を使っていることがわかってきました。この組み合わせで簡単に動かすことができるものを調べていくと「Bitnami」のサービスを使っているのだということがわかりました。

ここまでわかったところで、つてを辿ってこのシステムを作成した卒業生の保護者と連絡を取り、いろいろとヒントを貰いました。最終的には、再インストールしか復旧の方法はないかもしれないというところまで話が進みましたが、諦めるのはまだ早いと思いさらに調査を続けました。

挑むこと数日間。問題は、「rubystackMySQL」が動いていないことだったというところまで突き止めることができました。Windowsのサービスのリストを見ると「rubystackMySQL」が「自動」的に起動することになっているのに、起動即終了という状態になってしまっていました。さて、これを動かすにはどうしたら良いか。さらに調べていくとイベントビューアーのWindowsログに以下のようなエラーが残されていました。
#「日付」と「時刻」は伏せました。

エラー     (日付) (時刻)     MySQL   100     なし
        Binlog has bad magic number;  It's not a binary log file that can be used by this version of MySQL
エラー     (日付) (時刻)     MySQL   100     なし
        Can't init tc log
エラー     (日付) (時刻)     MySQL   100     なし
        Aborting
情報      (日付) (時刻)     MySQL   100     なし
        C:\Program Files (x86)\BitNami RubyStack\mysql\bin\mysqld.exe: Shutdown complete

このパターンは、「【MySQL】Binlog has bad magic number のエラーで起動しない」と同じではないかと思い、上記Webサイトを参考にして、以下のファイルを削除しました。

  • C:\Program Files(x86)\BitNami RubyStack\mysql\data\mysql-bin.000547(止まった時の最後のログファイル)
  • C:\Program Files(x86)\BitNami RubyStack\mysql\data\mysql-bin.index(止まった時と同時に更新が止まっていた)

これで再起動すると、蔵書管理システムが正常な時と同じように表示するようになりました。いくつか動作確認をして、学校図書館の司書さんにもいじってもらいましたが全く問題なし。無事に復旧させることができたという話でした。学校図書館に限らずこういうシステムを組むときにはメンテナンス性を考えるのはとても重要なことだと思います。今はGIGAの関係でGoogleが提供するシステムを利用することが推奨されていますが、自由度という面では課題が残ります。今後のスタンダードが何になるかわからないところですが、個人的にはXAMPPのようなものが普及していくことを期待しています。
PukiWikiとか、NetCommonsXOOPS…)とか、いろいろあるけどね。

0 件のコメント: