FileMakerを使用したWebアプリケーションに限らず、どのようなデータベース・Webアプリケーションでも、運用後の定期的なメンテナンスが必要だ。FileMaker Serverスケジュールのメンテナンス、FileMakerファイルの入れ替え、公開/停止などなど……。1回目はコマンドライン(ターミナル)からFileMaker Serverを管理するツール、fmsadminの使い方を、2回目はssh(1)のポートフォワーディングを利用したFileMakerのメンテナンス方法を紹介した。今回はポートフォワーディングを利用したFileMakerのメンテナンス作業にあたり、注意すべき点を紹介しよう。
ポートフォワーディングを使ったFileMakerメンテナンスの注意点
ポートフォワーディングを使ったFileMakerメンテナンスをおこなうにあたり、いくつか注意すべき点がある。
1. sshの接続制限について
2. ポートフォワーディング経由で接続した場合、FileMaker Pro上ではおこなわない方が良い操作
3. (2の続きで)FileMakerでより高速な操作をおこなうには
1 sshの接続制限について
FileMakerメンテナンスの注意点というよりも、sshを使うにあたっての注意点。とくに設定をおこなっていない場合、ユーザ名とパスワードの組み合わせで認証をおこなう。
どのマシンからもssh接続を受け入れてしまう環境の場合、ブルートフォースアタックによってサーバマシンを乗っ取られてしまう可能性も考えられる。これらを防ぐためにも、FileMaker ServerがインストールされているMacサーバ側では
- 公開鍵認証の設定をおこなう (PubkeyAuthentication yes)
- パスワード認証の無効化 (PermitEmptyPasswords no)
- パスワードが空欄のユーザはログインできないように (PermitEmptyPasswords no)
- rootユーザはログインできないように (PermitRootLogin no)
- 特定のIPアドレスのみ接続を受け入れるように
といった対策をおこなっておこう。公開鍵認証の設定をおこなうようにしても、パスワード認証ができるようになっていては意味がない。それぞれの設定の意味を理解した上で、適切な対策を講じておきたい。
2 ポートフォワーディング経由で接続した場合、FileMaker Pro上ではおこなわない方が良い操作
複数台のマシンを経由し、ポートフォワーディングで接続したFileMaker Pro上では、いくつかおこなわない方が良い操作がある。
- レコードのソート
- フィールド内容の全置換
- フィールド内容の再ルックアップ
- レコードのエクスポート
- 索引を作成できない、非保存計算フィールド上での検索
- 複数レコードにまたがるループ処理
環境によってはこれらの処理をおこなうと、フリーズしたのかと思うくらいの時間がかかってしまう。レコード数が多ければ多いほど、このパフォーマンス低下は著しいものとなる。ポートフォワーディング経由でFileMakerファイルを開いているときは、これらの操作や、スクリプトステップがふくまれているスクリプトを実行しないように注意すること。
3 (2の続きで)FileMakerでより高速な操作をおこなうには
2で挙げた操作の一部は、FileMaker Serverのスケジュール機能をうまく活用することで高速な処理が実現できるようになる。たとえば「対象レコード数10,000件中、"フィールド内容の全置換"をおこないたい」場合。単純にレコードメニューから"フィールド内容の全置換"を選択して全置換を実行するよりも、フィールド内容の全置換をおこなうスクリプトを作成し、それをFileMaker Serverのスケジュール機能を使って実行したほうがはるかに短時間で処理を完了させることが可能だ。
処理のたびにいちいちスクリプトを作成しなくとも、あらかじめスケジュールで実行する用のスクリプトを作成しておき、FileMaker Serverのスケジュールとして登録しておくことで、さらに作業の効率化が望める。一連の流れは次のとおり。
事前準備
1. あらかじめFileMaker Proに、スケジュールから実行する用のスクリプトを作成しておく。この時スクリプトの中はまだ空欄でも良い
2. FileMaker Serverのスケジュールで、1で作成したスクリプトを実行するように登録。このスケジュールは有効にしない
FileMaker Serverのスケジュールで、1で作成したスクリプトを実行するように登録。スケジュールは有効にする必要なし。スケジュール名にファイル名をふくめておくと、fmsadminでのスケジュール確認時に便利だ |
メンテナンス時
3. 1で作成したスクリプト内に、サーバ互換のあるスクリプトステップで実行したい処理を記述
4. ssh接続中のターミナル上で、fmsadminを使って2で登録したスケジュールを実行
ssh接続中のターミナル上で、fmsadminを使って2で登録したスケジュールを実行。fmsadmin list schedulesで実行したいスケジュールIDを確認し、fmsadmin run scheduleでスクリプトを実行している |
事前に準備をしておくことでFileMaker Pro上では数十分から数時間かかるような処理が、この方法でおこなうと数秒から数分で処理が完了することもある。リモートでFileMakerファイルをメンテナンスする際は、注意点と対策とセットでぜひ覚えておきたいところだ。