Report

イベントのレポートです。 >> 写真へ >> アンケートの声へ

第30回 集計はどうでしょう
・開催日時:2007/12/22 18:00-19:30
・開催場所:Apple Store Ginza 3F シアタールーム
概要:
データベースに日々入力されていくデータを縦横無尽に活用するための集計の方法論を、スクリプトやデータ構造の作り方などから考えます。
レポート:
このところFIleMaker関連のイベントが立て込んでいる。12/4から3都市ハシゴ開催のFileMaker Day #2があり、12/15にはFileMakerユーザーズグループFM-Tokyoのオフ会が、12/12にはApple Store渋谷で (有)ファクトリー主催の「Factory's FileMaker a go-go! #15」、そして今日22日にFunNight #30が再びApple Store銀座で。直近30日以内に僕が参加しただけで3回、sevensdoorメンバー本人たちは都合5回のイベントをこなしている。いったい彼らは仕事をいつやっているのか、心配になってきたのは僕だけではないだろう。ネラレンジャーはおそらく寝ていない。

第30回 FileMaker Fun Night!「集計はどうでしょう」
お題は...
しっかり覚えるFileMaker 〜ちゃんと覚えるアクセス権〜
【特集:集計はどうでしょう】
恒例Tips対決!
FMスーパーテクニック 〜Values系関数を役立てよう〜

●しっかり覚えるFileMaker 〜ちゃんと覚えるアクセス権〜 <今泉さん>
とっかかりを覚えてしまえば何とかなるけど、最初の敷居が高いのがアクセス権。アカウント?グループ?アクセス権セット?...まあいいか構造考えるのが先だよなって結局ゲストにフルアクセスのファイルを作ったことがあるのは僕です。今回、丁度いい機会なので筋道たてて覚え直してみようかなと。

アカウント:使えるのは誰かを規定する
アクセス権セット:使える人達が何をやっても良いか、それぞれについて規定する

今回は上記のうち「アクセス権セット」に関するお話。

「アカウントとアクセス権の定義」ダイアログ上で新規にアクセス権セットを作成し始めたとき、最初にできるのは「何もできない」真っ白なアクセス権セット。
データアクセスとデザインは全項目「すべてアクセスなし」になっているし、拡張アクセス権やその他のアクセス権にもチェックマークは1つもなく、唯一「アイドル状態の時FileMaker Serverから接続を解除」だけにチェックが付いている状態からのスタートになります。
ここで、「レコード」「レイアウト」「値一覧」「スクリプト」の4つのプルダウンから「すべてのテーブルでの...」といったプリセットを選ぶことももちろん可能ですが、キモは何と言ってもカスタム設定でしょう。

ここでデモ。

例えば「カスタムアクセス権」を選び、その中からテーブルを指定して、制限の内容を設定する手順になりますが、制限の対象はかなり細かく設定できます。あるフィールドだけを、特定の条件に合致する場合だけアクセス禁止にするといった設定も可能なので、使い道が幾つも考えられますね。
フィールド値の変更権限が与えられていない場合でもそのフィールドにアクセスできるようにしてあるのは、右クリックによるソートや検索を生かしておくためとのこと。それもそうですなあ。誰でも一度はやらかしそうなパターンです。

こうやってアクセス権セットのバリエーションを作成しておき、個々のユーザに対して適切なセットをアサインするという使い方をするわけです。
アクセス権セットは機能を制限する方向で働きますから、そこに問題があるとユーザは仕事ができなくなります。また、そのアクセス権が適用されていないと正しく制限されているか検証もできません。用意したアクセス権セットそれぞれについて、再ログインをしながら入念に検証することが必要になりますね。

ここで、拡張アクセス権のお話。
ネット上での共有とか、web公開などを行なう為には「拡張アクセス権」の設定が必要。
通常のアクセス権セットと同じダイアログに格納されてはいますが、設定項目としては全く別のものなので注意が必要です。

以下はTips的になりますが...
・無印FileMakerProではカスタムメニューが使えませんが、アクセス権経由なら確かに近い効果を得ることができる。
・アクセス権で「エクスポート禁止」に設定すると、「エクスポートする」だけでなく、他のファイルから「インポートされる」ことも禁止されるので注意。
・アイドル時のFMSからの自動切断は、メンテナンスの際、繋ぎっぱなしのクライアントを排除するために利用する。
・パスワードの自動更新要求は、親項目のチェックを外すことでグレーアウトしていても、自身にチェックが付いている限り有効なので注意。


●【特集:集計はどうでしょう】 <竹内さん>
データベースゆえ、集計は必ず付いてきます。レコード数が膨大になるにつれ集計部分の設計の優劣がパフォーマンスに如実に現れ...と、このあたり悔しい思いをしたヒトも多いのではないかと思われ。実は僕もその中の一人として、集計ネタにも多いに興味ありです。

集計って何ですか。
リレーション要素を除外すれば、「計算」がヨコ計で「集計」はタテ計にあたる。

ここで、同じ集計結果をもたらす2つの手法の特徴について。

集計:
・表示が比較的早い。
・構造を作る手間が少なくて済む。
・プレビューモードにしないと表示できない場合が多い。
・良くも悪くもタテ計のみ。

Sum()
・レコードが多いと計算に時間がかかる。
・計算対象のTOが必要。
・グループ毎の集計にもTOが必要になる。
・ブラウズモードで表示できる。
・クロス集計を含むどんな集計でもできる。
 (タテ、ヨコ、グループを跨いだり、タテのものをヨコにしたり...)
 
「集計」に適する使い道とは
・単純な累計
・複雑なレイアウトではないもの

ここで集計のデモ。
小計において「金額+税」といった計算を行なおうとすると、結局GetSummary()が必要になってしまう話などが披露されました。
フィールドの属するパートは上端の位置で決定される、という使用を逆手に取って、数pxほどの極細のパートに上端だけ引っ掛けるというレイアウトTipsは僕も使ったことがありますが、思わぬ副作用が出やすいのでお薦めしない、と言っていました。

一方、Sum()に適する使い道は
・縦横無尽の計算
・タテが商品、ヨコが月次の表など

普通にやると強力に遅いです。マスタに計算フィールドを置きたくない、などそれなりの事情とか、それなりに相応しい目的のために敢えて利用するのであればよろしいのではないかと。

今度はSum()のデモ
縦横無尽の計算の一例として前年売上対比表が紹介されました。


●恒例Tips対決!
・不要かも?というフィールドやTOなど、「delete」という名にしておき、検証後に捨てるワザ(茂田さん)
・文字入力部、control+hで1文字ずつ消える(これはver8.5)。ver9ではcontrol+aで行頭へ...あれ、動かず→v3限定のワザだったらしい。(竹内さん)
・adminでログインするとレイアウトやフィールド名を表示するフィールドを配置しておき、検証作業中に問題があったらスクリーンショットを取る。(今泉さん)
・表形式が窮屈でフィールド名が読めないとき、目的のフィールドにレイアウトモードで背景色を付けてしまう。(shinさん)
・検証用に、リレーション先の名前をポップアップヘルプに入れておく。(shinさん)


●FMスーパーテクニック〜Values系関数を役立てよう〜 <茂田さん>
最近のバージョンで特に機能が充実したうちの一つかなと思ってます。昔なら奇想天外な手法、いわば往年のスーパーテクでゲットしていた値を、関数イッパツで取得できる。実に便利になったもんです。以外と使い方も簡単なのでどんどん利用しましょう。

Valuesとは
・改行区切りでデータを扱うもの。
・多対多リレーションのキーとして使うデータ(改行区切り)を扱ったり、チェックボックスの値からデータを取り出したり、またはそもそもが改行区切りになっているデータから取り出したり...

LeftValues()RightValues()
・上から、または下から指定行数ぶんのデータを取り出る。
・最終業の末端に改行がない場合も、そこから取り出してきた値には、末尾に改行が付いてくる。
・連続した改行があると空改行が返るので注意。

GetValue()
・値一覧の行位置を指定して、その1行だけの値を返す。

MiddleValues()
・指定行から指定行数ぶんの値を返す。

ValueCount()
・値の数を返す。

PatternCount()
・指定文字列が含まれる回数を返す。
・「1」を検出させると「11」にもヒットするので、そういう場合は「¶1¶」という文字列を検出させること。
 (行頭にも改行が必要。ただし計算式内だけで解決できる→ PatternCount("¶" & フィールド名 & "¶" ; "検索文字列")のようにする)

ValueListNames()
・指定のファイルに含まれる値一覧の名前を返す。

例:GetValue(ValueListItems(); 1)→指定の値一覧の最初の値...すなわち、入力値の自動化においてプルダウンに含まれる特定のポジションの値を入れさせるのに使える。


カンマ区切りへはSubstitute()関数で簡単に移行できるし、テキストを扱ううえで強力な関数ですね。
たとえば、他に独自の区切文字を定義して組み合わせれば、変数に入れ子の配列(表を表現できる)を入れて別テーブルに新規レコードを作成し、そこで配列をほどいて値をフィールドへ格納して行く...といった使い方もできますしね。


★難問・奇問続出、Neralendar11月分のFileMaker Quiz after FP7 について

問題:以下のスクリプトステップのうち、フィールドが1つも配置されていないレイアウト上では正しく実行できないものをすべて選択せよ。

 a. フィールド内容の全置換
 b. フィールド内容の再ルックアップ
 c. フィールド内容のエクスポート
 d. レコードのインポート
 e. 計算結果を挿入
 f. 次のシリアル値を設定

確実に不可能なものは「e」だけどなあ...

正解:「e」
って、結局「e」だけかい。
いろいろと気付かないところでも着実に機能が強化されてるんですねー。


Reported by 金丸康明



アンケートのご協力、どうもありがとうこざいました!
ご意見、ご要望やご感想はこらちからお寄せください。 >> ご意見箱

Special Links:
・IT戦隊ネラレンジャーのカレンダー「ネラレンダー」ご存知ない方はこちら

Special Thanks to:
 FileMakerまんが:たまみそさん(今回のまんがはこちら
 イベントレポート:金丸康明さん
会場の様子:>> Topへ

さて、2007年最後のFFN

アクセス権管理とは? この機会に改めて見直そう





さてみなさん、集計はどうでしょう?







Tips対決



ポイント!


Values計関数の個々の例


いよいよ、カレンダーQuiz最終回


イベント終了後の懇親会。次回はあなたもいかが?

来場のみなさんのご感想:>> Topへ
女性Value関数は苦手なので、助かりました。今日のTips対決は、次回に持ち越し(ネタを)のためか、ちょっとさみしい。けどおもしろかったです。今年も1年ありがとうございました。
男性忙しい12月、お疲れさまでした。来年もよろしくお願いします。
女性集計はどうでしょう ー と聞かれても、作らざるを得ないのですが、遅ーい!とクレームの元にもなってしまいがち〜。なので、あまりたくさんは作りたくないです。集計とSum()の差がわかったのがうれしかったです。
男性毎回ご苦労様です!!楽しみにしていますので今後ともがんばってください。
今回の集計はとても興味があり、参考になりました。Sum関数をもう一度勉強してみます。
男性毎回参加していきたいと考えています。
やはり、現地に来るのがいいですね。
男性FMDayの地方出張を北海道でもお願いします。
男性変な質問してすいませんでした。to 茂田さん
男性普段5.5なので、全く違うものを見ている気分でした。も少し勉強してまた来ます。
男性Values系関数はあまり使ったことなかったので、今度使ってみたいと思いました。PatternCountの話すごかったです。
今年もありがとう!来年も楽しみにしてます!
男性名前のつけ方のルールってどうしてますか?(フィールド名、レイアウト名、スクリプト名...等)
あとで見てもゴチャゴチャにならないようなルールを教えてください。
男性集計で気をつけた方が良い点が参考になった
女性おもしろかったです。勉強になりました。
男性残念ながら次の予定があり、最後まで参加できませんでした。九州で(是非、長崎で)行ってください。よろしくー
集計とグループ化等見てみたかったです。売上データが毎日10000件ぐらいのレポート作成などやっているので...昨年比など...
時間の関係で帰らないといけません。本当に残念。最後まで見たかったです。
イベントだけでなく、こういう内容のDVDがあっても良いと思います。
女性「講師が教える」というより、「話しかけるように説明する」といった口調、スタイルが、通常のよくある講習会とは違って聞き易くてよかった。
男性竹内さんのTips知りませんでした。バージョン9v3にアップデートします。
男性いつもお疲れさまです。あまりフクザツな集計はやらないので、勉強になりました。
女性次回のTipsは過去のも含めていっぱい紹介してくれるとうれしいです。
あ、やってくれるのですね。楽しみです。

Copyright © 2004-2010sevensdoor.com. All rights reserved.