FileMaker用Rubyライブラリ「Rfm」が素晴らしい件

やっとFileMaker Server 10 Advancedの導入が決まったので、社内DB整備を再開。
が、インスタントWeb機能は実務ではちょっと厳しい感じ。さらっと触っただけだがUIが弱すぎると思った。FileMaker Proの操作を理解してないと使えないWeb画面ってありえない・・・
作り込めばいいのかもしれないが、節子それインスタントWebやない、カスタムWebや。


そんなことならRuby/Railsでやったほうが楽だろう、ってことで「Rfm」を試してみました。

FileMaker API for Ruby

RubyFileMakerのデータをエレガントかつ迅速に扱い、RubyスクリプトRailsアプリケーションから直感的な構文でFileMaker Serverに直接接続できます。それがRfmです。

Rfmをgemで導入し、早速サンプルコードを作成。実行環境は Windows XP + Ruby 1.8.6。

$KCODE='u'
require 'rubygems'
require 'rfm'
require 'kconv'

# 接続情報定義
FM_CONFIG = {
   :host => "hostname", :port => 8081, # 80番以外の場合に指定
   :account_name => "username", :password => "password",
   :database => "databasename"
}
# 捜査対象定義
TARGET_LAYOUT = "sections"
UPDATE_FIELD = "name"

# FileMaker Server に接続して、操作するレイアウトを取り出す
target_fm = Rfm::Server.new(FM_CONFIG)
target_db = target_fm[FM_CONFIG[:database]]
target_layout = target_db[TARGET_LAYOUT]

puts "==================================================".tosjis

# 対象レイアウトからデータを読み出して表示
puts "#{TARGET_LAYOUT}の表示 (変更前)".tosjis
puts "--------------------------------------------------".tosjis
@records = target_layout.all(:sort_field => "id")
@records.each { |r|
   puts r[UPDATE_FIELD].tosjis
}

# 先頭行の値を変更
target_record = @records[0]
puts "\n"
puts "値の書き換え中...".tosjis
puts "--------------------------------------------------".tosjis
puts "\n"
target_layout.edit(target_record.record_id, {UPDATE_FIELD => "Rubyからのデータ更新, #{Time.now}"})

# 値変更後の対象レイアウトを読み出して表示
puts "#{TARGET_LAYOUT}の表示 (変更後)".tosjis
puts "--------------------------------------------------".tosjis
@records = target_layout.all(:sort_field => "id")
@records.each { |rec|
   puts rec[UPDATE_FIELD].tosjis
}

puts "==================================================".tosjis
puts "おわり".tosjis

そして実行。

C:\>ruby rfm_test.rb
==================================================
sectionsテーブルの表示 (変更前)
--------------------------------------------------
総務課
庶務課
雑務課

値の書き換え中...
--------------------------------------------------

sectionsテーブルの表示 (変更後)
--------------------------------------------------
Rubyからのデータ更新, Thu Mar 05 17:48:59 +0900 2009
庶務課
雑務課
==================================================
おわり

あんまり話題になっていないような気がするけれども、これは結構、いやかなり素晴らしいんじゃないかしら。
FileMaker使ってるような中小企業で「FileMakerだけじゃ足りないなあ、弱った」って場合にPHP以外の選択肢としてRubyがある、というのは相当に幸せ。*1
なにより「頑張れば頑張るほどスパゲティになって誰も引き継ぎできずに担当者脂肪」のFileMakerスクリプトへ全面依存せずに、

  • シンプルなデータIOはFileMaker ProやインスタントWebで。
  • 複雑な処理はRuby/Rails(またはPHP)で。

と使い分けられるのは、どうせ業務特化機能を山ほど作らなきゃならんことを考えれば確実に楽。


ActiveRecordに統合されていない点も、実はポイント高いような。
本職だったときActiveRecordは救世主だった。けど仕事の片手間だと結構辛い*2。機能もどんどん追加されていくし。Rfmくらい簡単だと忘れようがないので助かる。


実はシステム周りをSQL Server中心に作らなきゃいけないかなあ、と欝になっていたのだけど、Rfmのおかげで「FileMaker中心で走っても問題なし!」とだいぶ気が楽になった。


これで少し白髪が減れってくれればなあ。

*1:わたしがPHPあんまり知らないだけ、というのはおいといて

*2:細かい部分を色々忘れちゃって