RESTfm についての補足と他のライブラリについて

# RESTfm についての補足
これまでの CRUD の説明で RESTfm について実践的な操作の説明はほぼできたと思いますが、細かい注意点などを記載していきます。

# Bulk Operations でのエラー

## 207 エラー（失敗による）
`Bulk Operations`を行ったとき、ある操作は成功してもある操作が失敗した場合は`207`のエラーが返ってきます。

- [Multistatus errors](http://restfm.com/restfm-manual/web-api-reference-documentation/uri-restfmdatabasebulklayout-bulk-operations/multistatus-errors)

## 207 エラー（重複による）
`Bulk Operations`ではそれぞれ指定するレコードが一意でなければいけませんが、検索条件により複数のレコードがヒットしてしまった場合も`207`のエラーが返ってきます。そして複数のレコードがヒットした検索条件については`42409`のステータスが返ってきます。

- [Multistatus errors](http://restfm.com/restfm-manual/web-api-reference-documentation/uri-restfmdatabasebulklayout-bulk-operations/multistatus-errors)

# 一意にならなければいけない検索条件が複数にヒットした場合のエラー（Bulk Operations 以外）
`/RESTfm/{database}/layout/{layout}/{recordID}`で指定する場合のような、レコードを一意に定めるべく検索条件を設定する場合に、その検索条件で複数のレコードがヒットしてしまった場合は`X-RESTfm-Status`に`409`のエラーが返ってきます。

- [Alternative {recordID} format - {unique-key-recordID}](http://restfm.com/restfm-manual/web-api-reference-documentation/alternative-recordid-format-unique-key-recordid)

# 繰り返しフィールド
繰り返しフィールドにも対応しています。

- [http://restfm.com/restfm-manual/web-api-reference-documentation/repeating-fields](http://restfm.com/restfm-manual/web-api-reference-documentation/repeating-fields)

# 「URL から挿入」（スクリプトステップ）
FileMaker Pro / GO のスクリプトステップ中、「URL から挿入」を使用する場合の注意点です。

- [FileMaker Pro/Go - Insert From URL with httppost](http://restfm.com/restfm-manual/web-api-reference-documentation/submitting-data/filemaker-progo-insert-url-httppost)

# メソッドオーバーライド
`RFMmethod`というパラメータを指定することでメソッドオーバーライドが可能です。ただしデータの送信における制限がありますので、全てが有効というわけではありません。また、操作によっては重大な結果をもたらすため、使用には注意が必要です。

詳細は公式ドキュメントをどうぞ。

- [Method override](http://restfm.com/restfm-manual/web-api-reference-documentation/method-override)

# RESTfm のトップページの日本語訳
改めて RESTfm の概略を理解するため、[RESTfm のトップページ](http://restfm.com/)を訳しました。

-------------------------------------
-------------------------------------
-------------------------------------

# RESTfm

## RESTfm とは？
- RESTfm は [RESTful](https://ja.wikipedia.org/wiki/REST) なサービスを提供する PHP のフレームワークです。REST のアーキテクチャ上で HTTP 経由の API を用いて簡単に FileMaker Server のデータを扱うことができます
- RESTfm ではいわゆる [CRUD](https://ja.wikipedia.org/wiki/CRUD)（Create, Read, Update, Delete）の操作を HTTP のメソッドを用いて行うことができます
- 認証方法は FileMaker のアカウントをそのまま用いる方法に加え、API キーを用いる方法も利用できます
- RESTfm は FileMaker Server の PHP Web パブリッシング 機能を用いることで利用できます

## RESTfm はオープンソースです！
RESTfm のソースコードおよびリリース版は全て GitHub に公開されています。
https://github.com/GoyaPtyLtd/RESTfm

## RESTfm で何ができるの？
- RESTfm により REST アーキテクチャ上で FileMaker Server のデータを扱うことができます
- **REST** というのは多くの Webサービス で採用されているアーキテクチャです
- RESTfm を使えば余計な開発をすることがなく、他の多くの Webサービス と同様の手法で FileMaker Server のデータにアクセスすることができます

## RESTfm の利点
RESTfm を用いた利点をいくつか紹介しましょう。

### Web を通じて FileMaker Pro から FileMaker Server にアクセスができる
FileMaker Server には 「URL からの [XML データのインポート機能](http://www.filemaker.com/jp/11help/html/import_export.16.19.html)」が存在します。この機能と RESTfm を用いれば、XML データを扱うことなく FileMaker Server から FileMaker Pro に直接データをインポートすることができます。RESTfmは FileMaker 独自の FMPXMLRESULT フォーマットをサポートしており、巨大なテキストを自前で処理する必要はありません。

さらに、FileMaker Pro 12 以降から実装された「[URL から挿入](https://www.filemaker.com/help/15/fmp/ja/index.html#page/FMP_Help/insert-from-url.html)機能」にも対応しています。この機能は、FileMaker Server にあるデータの「更新」、「削除」、「作成」が行えるというものです。

上記の機能は FileMaker Pro から直接 FileMaker Server に接続すれば利用できる機能です。しかしながら、RESTfm を使えば FileMaker のファイルを開く必要がないため、同じことを実現するための時間が大幅に短縮されるでしょう。RESTfm ならば一瞬で終わります。

FileMaker から直接利用するよりセキュリティ面でも有利なため、この RESTfm の機能により CRUD がはかどることでしょう。

加えて、私たちが開発している [BaseElements plugin](http://www.goya.com.au/baseelements/plugin) のようなプラグインを用いれば、FileMaker Pro からの HTTP や XML に則った操作も容易にできることでしょう。

### Web を通じて iPad や iPhone の FileMaker GO から FileMaker Server にアクセスができる
上記と同様の方法は FileMaker GO にも適用できます。プラグインを用いる必要はありません。iOS が搭載されているデバイスがあれば、Web を通じて CRUD が実現できるのです。Web 経由で操作が行われるので、その Web にアクセスする経路さえ確保されていれば FileMaker Server へのネットワーク接続は必要ありません。

FileMaker Server へ常時接続の必要がない場合は、忙しいさなかに FileMaker Server へデータを送るために RESTfm を用いることは利便性が高い方法になります。自らの設定と都合に合わせてアクセスすればいいだけの話なのですから。

新しい成果をセールスマネージャに知らせるためにも、RESTfm と iOS のデバイスを用いて自由に FileMaker Server に対して CRUD 操作を行ったり、スクリプトの実行をしたりしましょう。

### 他のシステムとの連携
今や多くの Webサービス が RESTful な API と連携をすることができます。RESTfm を用いることで FileMaker Server のデータをそれらのサービスに組み込むことができます。例えば Drupal の [Web service client](https://www.drupal.org/project/wsclient) や [Wakanda](https://wakanda.github.io/) などで FileMaker Server のデータを利用することができます。

RESTful な Webサービス へのアクセス手段は、ほぼ全てのプラットフォーム（Java や .NET や Oracle や PHP や Netbeans など）で実装されており、RESTfm が利用できるかどうかについて悩む必要はありません。

-------------------------------------
-------------------------------------
-------------------------------------

# RESTfm 以外のライブラリ
RESTfm以外には以下のようなライブラリがあります（他にもあるでしょう）。興味があれば調べてみてください。

- [FMLuna](http://timdietrich.me/fmluna/)
- [fms-js](https://github.com/geistinteractive/fms-js)
- [INTER-Mediator](https://inter-mediator.com/ja/)
- [PyFileMaker](https://code.google.com/archive/p/pyfilemaker/)