2014年の自分とFileMakerについて振り返ってみる。
1,最も不本意だった事はほぼFileMakerを引退し、仕事としてはオマケ程度でしか使わない予定だったのに、結局メインになってしまっていた事。
2,前職の時に比べ自由に情報収集やサンプルを試す、ドキュメントを読むなどの機会が増えて知識は今までよりもより広く、深くなったと思う。
3,大阪や東京で行われたFileMakerのカンファレンスに出展側として参加した。
出展側だと話がスピーカーセッション聞けないので不便でした。
4,認定試験に受かり、去年取った12と合わせ、11,12,13の認定デベロッパーとなりました。
今年なるほどと思ったこと
・URLから挿入とWebAPIを組み合わせるといろいろ楽できる
・カスタム関数の最大再帰回数は最大実行数とイコールではない(呼び出し数>実行数)
・Webビューアの内容ではなく、オブジェクトそのもののpaddingを工夫すると存在はするが見えない状態にできる
・レコードコミットトリガをキャンセル制御するとフォーム画面での入力編集は楽だが、コミットキャンセル制御状態なので別レイアウトでこっそり関連レコード作成とかはできない。
今後の方向性について
・FileMaker Serverを外から制御出来るようなAPIを提供してほしい
・Web公開エンジンを複数構成に出来るようにしてほしい
・WebSocketでのデータやりとりが出来るようにしてほしい
・ESSでいいかげんPostgreSQLサポートしてほしい
・ESSで既存カラムに索引が付加出来るようにしてほしい
・ODBCの3バイト以上のUnicode文字のサポート
・Web公開エンジンやodbcドライバがLinux上で扱えるようにしてほしい
上記の事が実現しない場合、自分にとって高いし面倒臭いだけのアプリになるので使わないでWebアプリを作成するほうが合理的だし個人的にもやる気が高い。
誰か教えて欲しい。現在の最新のWebアプリやWindowsアプリ開発環境やビジネスモデルに対するFileMakerで開発する場合の優位性を。
2014年12月30日火曜日
2014年9月12日金曜日
初めてのインスタントWeb
なにこれツラい。。。
何このFileMaker7みたいの。
JavaScript無しでPHPとHTMLだけで作られた昔のWebサイトみたいなの何コレ。
これで使用に耐えるモノを工夫して作るのと、小さいWebアプリを作る工数って
差がないんじゃないかな。。。
INTER-Mediator使ったら...おっと、誰かが来たようだ。
2014年3月16日日曜日
FileMakerServer13のWebDirectがウ◯コ
WebDirectが絶望的に使えない
・重い処理のクライアントがあると、同じファイルを開いているブラウザでリロードが頻繁に起こる
・1台構成の場合、上記の問題が他のファイルを開いているブラウザでも起こる
・ポータルは表示分だけしか読まないのかスクロールするとその領域だけ再読み込みが走る
・複数タブパネルかつ入れ子とかすると重い
・ポータルはフィルタを使うなどしてトータル表示量を減らしたほうが良い
・幾つか再現できないレイアウトパーツもある
・長い処理を行っている最中に強制切断されるとサーバー側に残ったセッションがスクリプトを動かし続ける。途中でセッションタムアウトになると処理もそこで終了するので大変なことになる
・重いからとクリックしまくっているとサーバーエラーが発生して再接続が必要になる
こういう実用性の低い客寄せパンダ機能はやめてほしい。
・重い処理のクライアントがあると、同じファイルを開いているブラウザでリロードが頻繁に起こる
・1台構成の場合、上記の問題が他のファイルを開いているブラウザでも起こる
・ポータルは表示分だけしか読まないのかスクロールするとその領域だけ再読み込みが走る
・複数タブパネルかつ入れ子とかすると重い
・ポータルはフィルタを使うなどしてトータル表示量を減らしたほうが良い
・幾つか再現できないレイアウトパーツもある
・長い処理を行っている最中に強制切断されるとサーバー側に残ったセッションがスクリプトを動かし続ける。途中でセッションタムアウトになると処理もそこで終了するので大変なことになる
・重いからとクリックしまくっているとサーバーエラーが発生して再接続が必要になる
こういう実用性の低い客寄せパンダ機能はやめてほしい。
CWPのロケーションがおかしい時がある
スクリプトからsmtp送信の時の話
・IWPは問題ないがCWP(XML)だとOSのどこの情報を参照して決めているのか不明だがEC2インスタンスのサーバーだとイギリス標準時の送信日時になってしまう。多分OSセットアップ時の設定が残っていてそれを参照してしまう。
・IWPは問題ないがCWP(XML)だとOSのどこの情報を参照して決めているのか不明だがEC2インスタンスのサーバーだとイギリス標準時の送信日時になってしまう。多分OSセットアップ時の設定が残っていてそれを参照してしまう。
FileMakerServer13でハマった
FileMakerServer13で2台構成でセットアップしようとしたらハマった事
・FMSv13で2台構成の場合、ネットワークセグメントが違う場所にいるとワーカーが正しくマスターと通信できない
→パケットキャプチャ調べたら、ワーカーがマスターのプライベートIPで参照しようと
していて、駄目じゃんそれ......
・FMSv13のワーカーを入れる場合はクリーンインストール(前のFieMakerServerフォルダが無い状態)じゃないと正しくワーカーとして設定されない。エラーは出ないがDBと通信できない。
→最初別々に1台構成でテストしていて、後から2台構成に変えようとしたら、1台構成時の設定情報が削除されなかったのかワーカーとして正常に再インストールされなかった
ようです。
・FMSv13で2台構成の場合、ネットワークセグメントが違う場所にいるとワーカーが正しくマスターと通信できない
→パケットキャプチャ調べたら、ワーカーがマスターのプライベートIPで参照しようと
していて、駄目じゃんそれ......
・FMSv13のワーカーを入れる場合はクリーンインストール(前のFieMakerServerフォルダが無い状態)じゃないと正しくワーカーとして設定されない。エラーは出ないがDBと通信できない。
→最初別々に1台構成でテストしていて、後から2台構成に変えようとしたら、1台構成時の設定情報が削除されなかったのかワーカーとして正常に再インストールされなかった
ようです。
FMS11のAdminConsoleについて
FMSv11はまだ32bitアプリなので、32bitのJRE6が有効かつ優先的に使われる環境になっていないと起動できない。
なので、32bitのJRE7を入れると死ぬ。※64bitのJRE7とは共存できる。
AdminConsoleと関係ないんだけど、WinServerでWeb公開しようとする場合、必然的に
IISを使うことになるのだけれど、IISのisapiが有効になっていないとWeb公開設定が正常に動作しない。
※例えIIS+FastCGI+PHPでisapiを使わないとしても
なので、32bitのJRE7を入れると死ぬ。※64bitのJRE7とは共存できる。
AdminConsoleと関係ないんだけど、WinServerでWeb公開しようとする場合、必然的に
IISを使うことになるのだけれど、IISのisapiが有効になっていないとWeb公開設定が正常に動作しない。
※例えIIS+FastCGI+PHPでisapiを使わないとしても
FMSのプロセスについて
FMSのプロセスについて
・隠しプロセスfmibが存在するインクリメンタルバックアップのプロセス
・バージョンによってfmcwpとfmwpeのどちらかしかない場合があって嫌だ
→両方表示されるバージョンもある。
・サービスのFileMakerServerはfmshelperプロセスのようだ
・隠しプロセスfmibが存在するインクリメンタルバックアップのプロセス
・バージョンによってfmcwpとfmwpeのどちらかしかない場合があって嫌だ
→両方表示されるバージョンもある。
・サービスのFileMakerServerはfmshelperプロセスのようだ
fmsadminコマンド
fmsadminコマンドについて
・backupコマンドの世代BUの引数に0を指定すると任意のBUフォルダでBU取れる
・fmsadminでadmn_consoleのアカウントパスワード聞かれるコマンドがある、コマンドの引数として-u <user> -p <pass>と指定しておけば聞かれない
・fmsadminでコマンド実行を確認してくるタイプは引数に -y を入れておけば自動でyesになる
・FMSv13からファイル暗号化オプションが追加された。fmsadminのstatusで暗号化されているかどうか分かる
・fmsadmin のopenコマンドのレスポンスが12と13で少し違う。13の方が扱う人に
優しくなった。
・backupコマンドの世代BUの引数に0を指定すると任意のBUフォルダでBU取れる
・fmsadminでadmn_consoleのアカウントパスワード聞かれるコマンドがある、コマンドの引数として-u <user> -p <pass>と指定しておけば聞かれない
・fmsadminでコマンド実行を確認してくるタイプは引数に -y を入れておけば自動でyesになる
・FMSv13からファイル暗号化オプションが追加された。fmsadminのstatusで暗号化されているかどうか分かる
・fmsadmin のopenコマンドのレスポンスが12と13で少し違う。13の方が扱う人に
優しくなった。
FMS12のスケジュールスクリプトのやり方
FMSのサーバーサイドスケジュールのスクリプトシーケンスの方法
・エクスポートはFMSのDocumentsフォルダに
・バッチファイルはFMSのScriptsフォルダに
・シーケンスで動かすには最後0をリターンする必要がある
・Win環境でスクリプトファイル実行する場合はxx.batのファイルじゃないと駄目。
→batファイルから目的のスクリプトファイルを起動する。
FileMakerServer→バッチファイル→FileMakerServerというスケジュール作れないのが
なんだかなぁ。
・エクスポートはFMSのDocumentsフォルダに
・バッチファイルはFMSのScriptsフォルダに
・シーケンスで動かすには最後0をリターンする必要がある
・Win環境でスクリプトファイル実行する場合はxx.batのファイルじゃないと駄目。
→batファイルから目的のスクリプトファイルを起動する。
FileMakerServer→バッチファイル→FileMakerServerというスケジュール作れないのが
なんだかなぁ。
FileMakerServer12 のWPEプロセス異常終了
FileMakerServer12でインスタントウェブを使っている場合にWeb公開エンジンが
プロセス異常終了する場合がある。
WPEプロセスの異常終了とその対策
・IWPで高い負荷がかかったり、FMSv12のアップデートが当たっていないと、落ちるバグがある。
・基本的には最新にすれば良い(FMSv12.5)と思うんだけど、v4かv5でクリーンインストールのバージョンがあるからそれを使う。
・リンクが見つけられないんだけどv1くらいの時にWPEに関連するファイルを直接
上書きするタイプの手動パッチがあってそれで解決する。上記のクリーンインストール版で解決すると思いたい。
ただ、どうしたってプロセス終了しちゃう時があるので、どう対応するか
・エラーログを監視して異常のログが出たら再起動
→常にデータが増えているログファイルを別のプログラムから扱うリスクを避けたい
それと毎回頭から目的のエラー文字列を検索するのは頭が悪い
→という事でバッチプログラムでIWPのホーム画面アクセスしてレスポンスを見て
プロセス起動してるかどうか判断するようにしました。
たまにIISが調子が悪くなる事があるので別途IIS再起動の処理も追加が必要と感じている。
※まだ、やってない
プロセス異常終了する場合がある。
WPEプロセスの異常終了とその対策
・IWPで高い負荷がかかったり、FMSv12のアップデートが当たっていないと、落ちるバグがある。
・基本的には最新にすれば良い(FMSv12.5)と思うんだけど、v4かv5でクリーンインストールのバージョンがあるからそれを使う。
・リンクが見つけられないんだけどv1くらいの時にWPEに関連するファイルを直接
上書きするタイプの手動パッチがあってそれで解決する。上記のクリーンインストール版で解決すると思いたい。
ただ、どうしたってプロセス終了しちゃう時があるので、どう対応するか
・エラーログを監視して異常のログが出たら再起動
→常にデータが増えているログファイルを別のプログラムから扱うリスクを避けたい
それと毎回頭から目的のエラー文字列を検索するのは頭が悪い
→という事でバッチプログラムでIWPのホーム画面アクセスしてレスポンスを見て
プロセス起動してるかどうか判断するようにしました。
たまにIISが調子が悪くなる事があるので別途IIS再起動の処理も追加が必要と感じている。
※まだ、やってない
FileMakerの意味不明な機能
FileMakerのv12位からあるファイルアクセスの設定の使いどころが分からない。
・他ファイルからの参照を制限する。
・フルアクセスのアカウントを入力すると次回から参照できるようになる。
・初めてアクセスした時にフルアクセスアカウントの入力を求められるので、知っている 場合は制御できない。
・なので、参照を許可しないファイルからは存在しないように見せかける仕組みではない。
フルアクセスを知っている人も知らない人もいる環境でデバッグ目的で一時的に参照したいだけの時に参照したいファイルのフルアクセスのアカウントパスワード入力したら、
フルアクセス知らないし、参照させたくない人も見ることが出来るようになるし、誰のために存在する機能なのか、どういう使い方を想定している機能なのかが、全く不明。
・他ファイルからの参照を制限する。
・フルアクセスのアカウントを入力すると次回から参照できるようになる。
・初めてアクセスした時にフルアクセスアカウントの入力を求められるので、知っている 場合は制御できない。
・なので、参照を許可しないファイルからは存在しないように見せかける仕組みではない。
フルアクセスを知っている人も知らない人もいる環境でデバッグ目的で一時的に参照したいだけの時に参照したいファイルのフルアクセスのアカウントパスワード入力したら、
フルアクセス知らないし、参照させたくない人も見ることが出来るようになるし、誰のために存在する機能なのか、どういう使い方を想定している機能なのかが、全く不明。
2013年8月25日日曜日
FileMakerServer12とWindows2013について
Windows2013ServerにFileMakerServer12のインストールしてみた時の事。
DBサーバーとしてはインストールできます。
Web公開エンジンがインストール出来ません。設定でコケるます。
回避策としては、Web公開エンジンを他のサーバーに入れて複数台構成で
動かす事。
DBサーバーとしてはインストールできます。
Web公開エンジンがインストール出来ません。設定でコケるます。
回避策としては、Web公開エンジンを他のサーバーに入れて複数台構成で
動かす事。
fuelphp 使って FileMakerでwebアプリ作成中です
仕事でFileMakerでWebアプリ的な案件があり、外道な私はPHPそのままではなく、
フレームワークを使用して作成することにしたのですが、CakePHP&FMCakeMIX
ではなく、CodeIgniterの後継のような位置づけ?のfuelphpを採用しました。
もちろんFMCakeMIXのような便利なものはないので、自作です。というか自殺Death!
その際に作成したphpファイルをこっそりGithubにあげておきます。誰か洗練させてください。
https://github.com/sakadonohito/fuel-fms
フレームワークを使用して作成することにしたのですが、CakePHP&FMCakeMIX
ではなく、CodeIgniterの後継のような位置づけ?のfuelphpを採用しました。
もちろんFMCakeMIXのような便利なものはないので、自作です。というか自殺Death!
その際に作成したphpファイルをこっそりGithubにあげておきます。誰か洗練させてください。
https://github.com/sakadonohito/fuel-fms
2012年12月5日水曜日
FileMakerカンファレンス2日目行ってきた
FileMakerカンファレンス2日目(30日)に行って来ましたのでそのメモ的なもの
1,ExecuteSQLについて
基本的な使い方や注意点などを丁寧に説明してくれていました。
バインド変数といえば言いのか第1引数(query)内に「where fieldA=? or fieldB=?」とか
に対する第4引数の個数がマッチしなくても無視するだけとか凄いなって思った。
パフォーマンスに関してはやはりレコード総数の多いテーブルをjoinで使ったりしたり
selectの結果の対象レコード数が多い場合は重いらしい。まぁそうでしょう。
自分が使うとしたらGroupe by とか使いそう。あとは、例えば顧客管理に対する検索で
関連テーブルAとBの内容に対する割と複雑なandやor検索をSQLで処理して顧客管理の
idだけ取得して関連レコード移動使って従来の検索手段の代替にするとかかな。
2,バックアップストラテジー
FileMakerServer冗長化についてのセッションでした
メインサーバーの電源ぶっこぬいて待機系に移行するデモ失敗したのは残念でしたね。
3,命名規則についてのセッション
これは、思っていたのとちょっと(かなり?)違くて、え?ってなりました。
でも名前をドメイン(もしくはカテゴリ)_意味を表す名称_補足情報ていう名前にするのは
賛成かな。
4,医療現場(在宅医療)でのFileMakerの活用
このセッションではクライアント端末側はリモートデスクトップを利用したシンクラ
イアントな使い方の事例紹介でした。確かにこの方法はFileMakerServerとリモート
デスクトップサーバーとの間で処理してクライアント側には結果の差分更新分のみ
送信されるので外からのアクセスにおいてパフォーマンスとセキュリティ等良いバランス
がとれているように思えました。何より開発がFileMakerのみで済むのがいいですね。
5,医療現場(継続医療)でのFileMakerの活用
このセッションではカスタムWeb公開の事例でした。
パフォーマンスを維持するために検索結果等対象レコード数を極力必要最小限になるよう
工夫したり、Ajaxで随時更新にしてトラフィックを小さくする努力をされているようです。
自分は長らく既存ソリューションの延長上の開発しかしてないので、レイアウトがやぼったく
今回のカンファレンスで沢山見かけたWebっぽいレイアウトに非常に危機感を覚えました。
ヤバイ、取り残されてる!って感じ。勉強しなきゃ......
1,ExecuteSQLについて
基本的な使い方や注意点などを丁寧に説明してくれていました。
バインド変数といえば言いのか第1引数(query)内に「where fieldA=? or fieldB=?」とか
に対する第4引数の個数がマッチしなくても無視するだけとか凄いなって思った。
パフォーマンスに関してはやはりレコード総数の多いテーブルをjoinで使ったりしたり
selectの結果の対象レコード数が多い場合は重いらしい。まぁそうでしょう。
自分が使うとしたらGroupe by とか使いそう。あとは、例えば顧客管理に対する検索で
関連テーブルAとBの内容に対する割と複雑なandやor検索をSQLで処理して顧客管理の
idだけ取得して関連レコード移動使って従来の検索手段の代替にするとかかな。
2,バックアップストラテジー
FileMakerServer冗長化についてのセッションでした
メインサーバーの電源ぶっこぬいて待機系に移行するデモ失敗したのは残念でしたね。
3,命名規則についてのセッション
これは、思っていたのとちょっと(かなり?)違くて、え?ってなりました。
でも名前をドメイン(もしくはカテゴリ)_意味を表す名称_補足情報ていう名前にするのは
賛成かな。
4,医療現場(在宅医療)でのFileMakerの活用
このセッションではクライアント端末側はリモートデスクトップを利用したシンクラ
イアントな使い方の事例紹介でした。確かにこの方法はFileMakerServerとリモート
デスクトップサーバーとの間で処理してクライアント側には結果の差分更新分のみ
送信されるので外からのアクセスにおいてパフォーマンスとセキュリティ等良いバランス
がとれているように思えました。何より開発がFileMakerのみで済むのがいいですね。
5,医療現場(継続医療)でのFileMakerの活用
このセッションではカスタムWeb公開の事例でした。
パフォーマンスを維持するために検索結果等対象レコード数を極力必要最小限になるよう
工夫したり、Ajaxで随時更新にしてトラフィックを小さくする努力をされているようです。
自分は長らく既存ソリューションの延長上の開発しかしてないので、レイアウトがやぼったく
今回のカンファレンスで沢山見かけたWebっぽいレイアウトに非常に危機感を覚えました。
ヤバイ、取り残されてる!って感じ。勉強しなきゃ......
2012年11月29日木曜日
FileMakerカンファレンス1日目行ってきた
FileMakerカンファレンス1日目(29日)に行って来ましたのでそのメモ的なもの
1,オープニング・セッション
NDA事項が含まれるため記載できません。
2,FileMaker Ver12のオブジェクトフィールドについて
FileMaker Ver12からオブジェクトフィールドがぱうわーうっぷしました。
・実体データを指定したPATHに保存や暗号化して保存などがオプションで
選択できるようになって、FileMakerファイルの容量を軽く出来るようになった。
※従来の参照PATHのみ保存と似ているが違う。
・レイアウト上のオブジェクトフィールドの表示オプションでインタラクティブ~を
チェックしておくと保存しているPDFや音楽、動画ファイルを直接再生できる。
FileMaker社の方がスピーカーだったのですが、資料のページ送りが早くてメモ
しきれない、話がカミカミで聞き取りづらいなどちょっと残念でした。
3,FileMakerGoとWeb連携的な
iOS上で動くFileMakerランタイムアプリFileMakerGoでFileMakerソリューションを
開発する際にUIの一部をWebViewerを使ってHTML5やJavaScriptを利用して少し
インタラクティブにしましょう的な内容。
WebViewer上で入力した内容をソースを取得する関数やfmpプロトコルを使って
FileMakerにフィードバックすれば連携出来るよね!という内容。
4,FileMakerServerを活かすためのインフラ設定
FileMakerServer Ver12から64bit対応なので64bitでマルチコアなサーバーを
使うと良いですよという話。32bitOSだとキャッシュに割り当てられる上限が
800MBだが64bitOSだと積んでいるメモリの50%まで割り当てられる。
割り当てるメモリの容量はAdminConsoleの使用状況でキャッシュヒット率を
見て調整しましょう。
折角それぞれのセッションでメモ取ってたのに今は手元にないのでざっくり記憶を
元にブログ書いてる残念な自分......
1,オープニング・セッション
NDA事項が含まれるため記載できません。
2,FileMaker Ver12のオブジェクトフィールドについて
FileMaker Ver12からオブジェクトフィールドがぱうわーうっぷしました。
・実体データを指定したPATHに保存や暗号化して保存などがオプションで
選択できるようになって、FileMakerファイルの容量を軽く出来るようになった。
※従来の参照PATHのみ保存と似ているが違う。
・レイアウト上のオブジェクトフィールドの表示オプションでインタラクティブ~を
チェックしておくと保存しているPDFや音楽、動画ファイルを直接再生できる。
FileMaker社の方がスピーカーだったのですが、資料のページ送りが早くてメモ
しきれない、話がカミカミで聞き取りづらいなどちょっと残念でした。
3,FileMakerGoとWeb連携的な
iOS上で動くFileMakerランタイムアプリFileMakerGoでFileMakerソリューションを
開発する際にUIの一部をWebViewerを使ってHTML5やJavaScriptを利用して少し
インタラクティブにしましょう的な内容。
WebViewer上で入力した内容をソースを取得する関数やfmpプロトコルを使って
FileMakerにフィードバックすれば連携出来るよね!という内容。
4,FileMakerServerを活かすためのインフラ設定
FileMakerServer Ver12から64bit対応なので64bitでマルチコアなサーバーを
使うと良いですよという話。32bitOSだとキャッシュに割り当てられる上限が
800MBだが64bitOSだと積んでいるメモリの50%まで割り当てられる。
割り当てるメモリの容量はAdminConsoleの使用状況でキャッシュヒット率を
見て調整しましょう。
折角それぞれのセッションでメモ取ってたのに今は手元にないのでざっくり記憶を
元にブログ書いてる残念な自分......
2012年1月8日日曜日
FileMakerとRubyのSinatra
Sinatraのチュートリアルを少し触って、これなら簡単にFileMakerと接続出来るんじゃない?
と思ったのでやってみました。
gihyo.jp:第9回 SinatraとSequel・Hamlで掲示板アプリを作る
http://gihyo.jp/dev/serial/01/ruby/0009
が自分がチュートリアル(以下、見本)としてやってみみたもので、これのmodel部分をFileMakerに
置換えました。
※FileMakerやRuby、Sinatraそのものの細かい説明は省きます。
最終的な階層は以下(見本のファイルも混在してます)
---
---
FileMaker部分
・bbsテーブルの作成、カラムは見本のapp/model/comment.rb内で定義しているクラス
Commentsを真似て定義。但し、posted_dateはFileMaker側ではtimestamp型で作成時に自動で
現在のタイムスタンプが入るよう設定。
Ruby部分
・app/model/comment.rbにFileMakerとの接続クラス追加
---以下をcomment.rbに追加---
・hamlを編集(追加)
---app/view/fmbbs.haml
※HamlはPythonのようにインデントが文法になってるので注意!
・app/start.rbを編集
---app/start.rbを以下のように変更---
・rfm(lardawge-rfm)をインストールするの忘れずに!
$ sudo gem install lardawge-rfm
GitHub:https://github.com/lardawge/rfm
これでstart.rbのある位置をカレントにして
$ ruby -rubygems start.rb
これで
http://localhost:4567/fmbbs
で試せます。簡単ですね!
今回、自分がつまずいた所は、
1,rfm経由でFileMakerにレコード作成(多分編集も同じ)でtimestamp型のカラムに値を
設定するための方法が分からなかった。※DateTime型だとエラーになる、整形してもエラー
になる。なんでや!
→読み込みは出来るので、FileMaker側で作成時自動で値設定にした。
2,投稿済みデータの降順ソートがうまくいかない!
→lardawge-rfmでは降順の指定が"desc"ではなく、"descend"だった。
Railsでやるほどじゃないけどちょっと簡単にFileMakerとWebアプリつなぎたいとか、これで
どうでしょうか? 2012/10/24 編集:コード断片をGithubのGistからの読み込みに変えました。
と思ったのでやってみました。
gihyo.jp:第9回 SinatraとSequel・Hamlで掲示板アプリを作る
http://gihyo.jp/dev/serial/01/ruby/0009
が自分がチュートリアル(以下、見本)としてやってみみたもので、これのmodel部分をFileMakerに
置換えました。
※FileMakerやRuby、Sinatraそのものの細かい説明は省きます。
最終的な階層は以下(見本のファイルも混在してます)
---
app/
start.rb
model/
comment.rb
view /
layout.haml
index.haml
fmbbs.haml
style.sass
---
FileMaker部分
・bbsテーブルの作成、カラムは見本のapp/model/comment.rb内で定義しているクラス
Commentsを真似て定義。但し、posted_dateはFileMaker側ではtimestamp型で作成時に自動で
現在のタイムスタンプが入るよう設定。
Ruby部分
・app/model/comment.rbにFileMakerとの接続クラス追加
---以下をcomment.rbに追加---
・hamlを編集(追加)
---app/view/fmbbs.haml
※HamlはPythonのようにインデントが文法になってるので注意!
・app/start.rbを編集
---app/start.rbを以下のように変更---
・rfm(lardawge-rfm)をインストールするの忘れずに!
$ sudo gem install lardawge-rfm
GitHub:https://github.com/lardawge/rfm
これでstart.rbのある位置をカレントにして
$ ruby -rubygems start.rb
これで
http://localhost:4567/fmbbs
で試せます。簡単ですね!
今回、自分がつまずいた所は、
1,rfm経由でFileMakerにレコード作成(多分編集も同じ)でtimestamp型のカラムに値を
設定するための方法が分からなかった。※DateTime型だとエラーになる、整形してもエラー
になる。なんでや!
→読み込みは出来るので、FileMaker側で作成時自動で値設定にした。
2,投稿済みデータの降順ソートがうまくいかない!
→lardawge-rfmでは降順の指定が"desc"ではなく、"descend"だった。
Railsでやるほどじゃないけどちょっと簡単にFileMakerとWebアプリつなぎたいとか、これで
どうでしょうか? 2012/10/24 編集:コード断片をGithubのGistからの読み込みに変えました。
2011年9月26日月曜日
レイアウトの拝借について
新たに、FileMakerで何か作る時に割りと悩むのがレイアウト
ひな形があって、必ずそこから作るのなら別ですが、そうじゃない時や
思いつきでモックの用な感じで作る場合、無味乾燥な状態で作る事も
あるかと思います。そんな時にはスターターソリューションのレイアウトを
拝借すればよいでしょう。レイアウト→新規作成で出てくる変な色の
ものよりずっとマシです。
ただ、そのまま拝借しようとしても、既に作りこまれている部分もあったりして
そのまま利用はかえって手間になったりしますので、パーツだけコピーして使うとかが
良いと思います。
ひな形があって、必ずそこから作るのなら別ですが、そうじゃない時や
思いつきでモックの用な感じで作る場合、無味乾燥な状態で作る事も
あるかと思います。そんな時にはスターターソリューションのレイアウトを
拝借すればよいでしょう。レイアウト→新規作成で出てくる変な色の
ものよりずっとマシです。
ただ、そのまま拝借しようとしても、既に作りこまれている部分もあったりして
そのまま利用はかえって手間になったりしますので、パーツだけコピーして使うとかが
良いと思います。
2011年5月29日日曜日
FileMaker 小技 ※Ver11限定かも
最近見つけた?仕様のようなバグのような小技。
ちゃんと動く(動き続ける)保証はありません。
例として請求書を挙げます。
1,請求書、請求書明細、商品マスタをテーブル定義
2,請求書→請求書明細(請求書idで関連付け)
3,請求書明細→商品マスタ(商品コードで関連付け)
4,簡単な請求書レイアウト作成、この時請求書コンテキストでポータルで請求明細を
表示
さてここで、請求書明細を作成された順番ではなく、商品名で並べた順番で表示したいとする。
だが、商品名は商品マスタにあり、請求明細が持っているのは商品コードのみ。
どうするか?
1,ポータルのコンテキスト定義を商品マスタにする
2,商品マスタテーブルのカラムをポータルソートで指定できるので、商品名を指定
3,ポータルコンテキストを請求明細に戻す
以上。
もしも、仕様だとすると、親(請求書)→子(請求明細)→孫(商品マスタ)と繋がっているので
OKということなのだろうか?だとすると初めから選べるようにして欲しい。。
あんまSQLとか分からんですけど
select i.商品名,i.単価,d.数量,d.金額 from 請求明細 as d inner join 商品マスタ as i
on d.商品コード = i.商品コード where d.請求書_id = 1 order by i.商品名
※請求書idが「1」の請求書明細
みたいな感じ?
自習として、FileMakerとPythonやRuby、おまけでPHPと連携(Web公開)を
試しているので、まとまったらつまったところとかまとめよう。。。
ちゃんと動く(動き続ける)保証はありません。
例として請求書を挙げます。
1,請求書、請求書明細、商品マスタをテーブル定義
2,請求書→請求書明細(請求書idで関連付け)
3,請求書明細→商品マスタ(商品コードで関連付け)
4,簡単な請求書レイアウト作成、この時請求書コンテキストでポータルで請求明細を
表示
さてここで、請求書明細を作成された順番ではなく、商品名で並べた順番で表示したいとする。
だが、商品名は商品マスタにあり、請求明細が持っているのは商品コードのみ。
どうするか?
1,ポータルのコンテキスト定義を商品マスタにする
2,商品マスタテーブルのカラムをポータルソートで指定できるので、商品名を指定
3,ポータルコンテキストを請求明細に戻す
以上。
もしも、仕様だとすると、親(請求書)→子(請求明細)→孫(商品マスタ)と繋がっているので
OKということなのだろうか?だとすると初めから選べるようにして欲しい。。
あんまSQLとか分からんですけど
select i.商品名,i.単価,d.数量,d.金額 from 請求明細 as d inner join 商品マスタ as i
on d.商品コード = i.商品コード where d.請求書_id = 1 order by i.商品名
※請求書idが「1」の請求書明細
みたいな感じ?
自習として、FileMakerとPythonやRuby、おまけでPHPと連携(Web公開)を
試しているので、まとまったらつまったところとかまとめよう。。。
登録:
投稿 (Atom)