2008-07-18

カラーレーザープリンタの奇怪

かれこれ5、6年前に約2万円で購入し、八面六臂の活躍をしたBJ S600 がそろそろポシャりそうなので、価格に手頃感がでてきたカラーレーザープリンタを購入しようかなと思い、調べて見ました。 すると、なんか奇奇怪怪な世界。

というのは、Brother MFC-9420cnという機種の本体(カラー3色と黒1色の計4本のトナー付、以下、トナー4本、と言う)の価格が、トナー4本より安い。 よくよく説明を見ると、購入時付属のトナーはスターターうんたらという減量されたものらしい。 「これじゃ、客はわかんないよ」と思いつつ、他のメーカーの低価格機も価格.comで調べてみると、トナー4本(6000枚程度印刷)で本体の半分~全額ちょっと欠ける位の価格になってしまう。 さらに、トナー以外の消耗品として、ドラムとか感光体うんたらとか、メンテナンスキットとか、うんたらベルトとか、メーカー毎に異なる様々なものがあり、しかも耐久期間もまちまち。 確かに公称のページ当たりの印刷コスト項目はあるのだけれども、これにドラムやらその他の消耗品の価格が反映されているのだろうかと不安になってくる。 で、当初どれが一番お買い得なのか?と思って作ったプリンタ比較表も、なんかあまり役に立ちそうもないような気がしてくる(この表に興味のある方は→これ)。 本体に対してトナーの価格が高く、奇怪な消耗品が数々あると迷路に入り込んだ気分。 トナーだけ買い換えて、ドラムやその他の高い消耗品の購入を迫られる段になったら、(エコは差し置いて)新機種に買い換えるのが一番経済的なような気もしてくる。 そもそも「レーザープリンタはインクジェットよりランニングコストが低い」と巷に言われる大前提も疑わしく思えて…

どうしようかなぁ?と迷っているところに、目に飛び込んできたのが、HP Officejet Pro K8600dn というインクジェット機。 Web記事によると、A4カラー1枚の印刷コストが6.3円、カラー印刷時35枚/分の高速、その他のスペックを比較してみても、レーザープリンタに勝るとも劣らない。 レーザープリンタと違って、よくわからない消耗品もない、少なくとも書いてはいない。

HP Officejet Pro K8600dn



ということで、K8600dnを購入することになりました。 吉と出るか、凶と出るかお楽しみ。 


(土屋)

2008-07-11

【応用その4】FX.php を使ってアンケートフォームを MySQL 対応にしてみる

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。

 FX.php は MySQL データベースへの接続にも対応しているため、アンケートフォーム作成の延長として、今回は既存のコードに MySQL データベースへのデータ書込機能を実装してみることにします。

 * 操作にあたっては、MySQL Server がインストールされていることが前提となりますので、予め MySQL Server のインストールと、文字化け対策のためにデフォルト文字セット(utf8)が有効になるように設定しておいてください。

 まずは、データベースを準備します。付属の create_table.php の $rootPass に MySQL の root パスワードを設定して同スクリプトを保存し、local の web サーバで実行してみてください。Comment データベース、cgi テーブル、webuser とそのパスワードが生成されます。作成するテーブル列は、create_table.php を参照してください。
 
 以下、次の順に Comment.php へコードを追加していきます。
1.使用するデータベース種別を MySQL にします。
データベース種別

2.接続先の MySQL サーバポート番号を指定します。デフォルトは 3306 です。
MySQL ポート番号

3. あとは既存の FX.php 接続とほぼ同じですが、最後のデータ書き込みのところで、FMNew() の代わりに PerformSQLQuery() 関数を使います。引数は第一パラメータに SQL クエリ文を指定し、残りはデフォルト値を指定します。

 PerformSQLQuery($query,true,false,'object');

 この部分をコードで表したものが次のとおりです。(列名)と値を使って $query SQL クエリ文をセットし、次の PerformSQLQuery で指定して実行します。
query

 FX.php & MySQL の組み合わせで実行可能になっているコードを Comment_mysql.php に用意してありますので、併せて確認してみてください。

参考リンク:
MySQL オフィシャルサイト

2008-07-09

【応用その3】アンケートフォームにセッションを追加してみる(リロード対策)

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。

 PHP 経由で FileMaker データベースにデータ書込を行う手法として、簡易アンケートフォームの作り方をベースに説明を進めてきました。
 すでにお気付きの方もいらっしゃるとは思いますが、実はこのままでは実際の運用には不向きな部分があります。

 それは、最後のお礼ページです。
 このページが表示される直前に FileMaker データベースへのデータ書込とメール送信を同時に行うわけですが、Web ブラウザのリロードボタンを押してページをロードするたびに同処理が実行されてしまうため、ゴミデータとゴミメールが増えてしまう可能性があります。
 実際問題として、お礼のページをリロードしてしまうユーザも結構多かったりするので、リロード操作が行われてもデータ送信、メール送信は一回だけ実行するような仕組みが必要となります。

 これを効率よく処理する方法として、PHP のセッションをここで組み込んでみることにします。
 PHP のセッションはスーパーグローバル配列と呼ばれ、読み込まれたページにかかわらず値を保持しておくことができるものです。FileMaker のグローバル変数に共通している部分もあるので、そう捉えると理解しやすいと思います。

 ユーザによるページリロード対策は、データ書込とメール送信が行われたかどうかを判断し、それが No なら書込・メール送信を許可、Yes なら不可にすればよいわけです。これをフラグを使って表現するとさらに明確になります。仮にフラグ名 を done フラグとしましょう。

 未書込の状態 --- done フラグはオフ (FALSE、偽)
 書込済の状態 --- done フラグはオン (TRUE、真)

 done フラグがオフ(FALSE)のときに書き込みを実行し、その操作が終わったら done フラグをオン(TRUE) にします。

 この値をセッションに入れておくことで、ページが何度リロードされても呼び出しはセッションから行うため、一度オンになったフラグはオフになることはありません。

 この処理を PHP で記述すると次のようになります。
1. セッションの開始と有効期限を決めます。
セッション開始
 セッションの有効期限のデフォルトは 180 分ですが、簡易アンケートで特に詳細な確認が必要なわけではないため、ここでは有効期限を 5 分にしています。5 分経過するとセッションは破棄されて無効となり、その後にページをリロードすると、白紙のページが表示されるようになります。
 session_start() 関数でセッションを開始するわけですが、この関数は、セッションが存在しない場合は、新たにセッションを作成します。これに対し、セッションがすでに存在している場合はそのセッションを再度呼び出します。つまり、このアンケートフォームで言えば、最初にアンケート入力フォームのロードを行った時点でセッションの作成を行い、それ以降、ページがロードされたり次のステップに進むたびに session_start() 関数から同一のセッションを呼び出すわけです。

2. 次に、done フラグの初期化を行います。
セッション初期化
 初回ページロード時に一度だけ done フラグに FALSE (データベースへの書込とメール送信が行われていない状態)をセットします。

3. お礼のページを出すときに、done フラグが FALSE であることを確認し、それに該当すれば FileMaker データベースへのデータ書込とメール送信を行い、その後に done フラグに TRUE (データベースへの書込とメール送信が完了した状態)をセットします。
 以下、赤線を引いた部分に注目してください(コードが長いため、中略を入れてあります)。
done フラグのセット

 これでセッションの実装が終わりました。サンプルコードを使って動作を確認してみてください。

2008-07-08

SonicWall Total Securityによる回線速度低下

 SonicWall Total Security(以下、SonicWall)を導入し、セキュリティ関連の設定をした後に、回線速度のチェックをすると、導入前に比べて回線速度が低下していることに愕然とするかもしれません。しかし、外部から渡ってきたパケットの精査が SonicWall の機能であり、その精査に費やされる処理時間のことを考慮すれば、回線速度が低下するのは当然と言えば当然なのでしょう。

 以下、SonicWall のセキュリティ機能で、速度低下が著しいものとそうでないものを調べてみました。

  • 導入すると極端に速度が落ちるもの
    アンチスパイウェア
    侵入防御 (IPS)

  • 若干速度が落ちるもの
    電子メールフィルタ
    ゲートウェイ アンチウィルス

  • さほど速度が低下しないもの
    コンテンツフィルタ


 もちろん、セキュリティ対策としてできるだけ多くのサービスを有効にしておくのが望ましいと思いますが、社内で利用しているネットワークサービスが使用に耐えられなくなるほど回線速度が落ちてしまうのでは、あまり実用的ではないでしょう。
 社内のネットワーク運用に最も適したサービス設定を行い、セキュリティをどうしても向上させる必要があるのなら、回線そのものの品質をアップグレードさせるのが現実的な運用方法と言えるかもしれません。

2008-07-04

SonicWall Global VPN Client のインストールが失敗したり、クラッシュしてしまうときのちょっとした改善案

 SonicWall には仮想プライベートネットワーク機能(VPN: Virtual Private Network, 以降 VPN)が搭載されているので、SonicWall を購入して VPN ライセンスを購入することによって、VPN 公開ができるようになります。
 この SonicWall VPN にアクセスするためには、クライアントとなるコンピュータに SonicWall Global VPN Client (以降 SWGVC)をインストールと接続設定を行う必要があります。

 インストーラを実行して指示に従えば終わりというパターンが通常で、アプリケーションを使うほとんどのユーザがそのような感覚でインストーラを実行していると思います。
 しかし、最近の FileMaker Server 9 のインストールトラブルのように、物によってはスムーズにインストールできないものもあるので、すぐできて当然という安易な姿勢で臨むと泣きを見る羽目になることもあったりします。

 SWGVC もなかなか癖のあるソフトウェアと言え、マシン環境によってはすんなりインストールできたり、インストール初っ端から躓いたり、設定の段階で躓いたりと結構トラブルに見舞われため、ここでその経験談をまとめてみることにします。

  1. 最初のインストールで躓くとき
     SWGVC をインストールした直後に起動しようとすると、SWGVC のレジストリ登録に失敗したというメッセージが出て失敗することがあります。こうなると、起動は絶対にできないので、一度 SWGVC をアンインストールし、さらにレジストリ情報を消去するプログラム SWVPNClientClean.exe を実行してから完全にインストール情報を消去した上で、SWGVC を再インストールする必要があります。

  2. SonicWall にアクセスできないとき
     ピア IP アドレス(SonicWall の IP アドレス)を正しく設定し、接続ユーザ名とパスワードを正しく指定したにもかかわらず、ステータスが接続中だったり、IP アドレス取得中のままになってしまうことがあります。ログを見ると、"The peer is not responding to phase 1 ISAKMP requests." が残っていることがあります。
     この場合は、SWGVC の Peers タブより、LAN Settings にクライアントネットワーク側のルータ IP アドレスを入力したり、NAT Traversal を 「Disabled」、Interface Selection を「LAN Only」に変更することによって改善することがあります。
    SWGVC
    参考リンク:
    SonicWall VPN Client Doesn't Work Behind NAT Firewall(英文)
    Sonicwall - The peer is not responding to phase 1 ISAKMP requests(英文)
    NAT Firewall on router blocking sonicwall VPN?(英文)
    NAT Firewall on router blocking sonicwall VPN...(英文)

  3. 接続が確立された直後に SWGVC がクラッシュするとき
     これが一番厄介だと思います。今のところ Windows XP Service Pack 2 で発生する可能性が高いことは経験からわかってきたのですが、すべての同様の環境で発生するとも言い切れず、このような現象が発生するコンピュータでは、SWGVC のインストール、アンインストールを繰り返したところで症状が改善することはまずないでしょう。
     しかし先日、客先でどうしてもこのような現象が発生する SWGVC を動かす必要があり、苦し紛れですが Windows 互換モードで実行することにより事なきを得ました。以下、方法を簡単に説明します。
     1) 今までどおり SWGVC を実行させてVPN 接続を行い、Connected が出た直後に SWGVC がクラッシュすることを確認します。
     2) SWGVC のプログラムアイコンを右クリックして「プロパティ」を選択し、表示されるダイアログより「互換性」タブをクリックします。そこで「互換モードで実行する」にチェックを付けて、以前の OS のリストの中からできるだけ最新のものを選択して実行してみます。
    Windows 互換モード
     この方法で、今のところ Windows 98/Windows ME の互換モードで実行に成功しています。今までいろいろ試してみたが、クラッシュしてどうにもならないという方はダメ元で試してみる価値はあると思います。

【応用その2】FX.php を使ったアンケートフォーム作成 --- 従来のファイルメーカー Pro データベースで Web アプリケーション作成

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。
 
 さて前回の FX.php 解説に引き続き、今回は FX.php を使って従来の FileMaker データベースにアクセスする方法について触れてみることにします。今回もまた、今まで使ってきたアンケートフォームにちょっと修正を入れるだけです。アンケートフォーム作成のおさらいが必要な方は、こちらを先にご覧ください。

 FileMaker API for PHP を利用するためには、FileMaker Pro 9 と FileMaker Server 9 がインストールされていることが条件となるため、従来に比べるとコスト的に敷居が高くなってきています。安定したデータサーバ運用を目指すのなら、もちろんこれらを導入するのが確実ですが、FileMaker Pro 5.x/6 で機能的に十分に満足している方には、ちょっと手が出にくいパッケージであることも確かでしょう。

 そこで、FX.php と FileMaker Pro 5.x/6 の Web コンパニオンプラグインを組み合わせてもデータベースへの書き込みを実現できるため、既存のシステムをそのまま Web 公開データベースとして活かすことも可能となります。
 ただし、通常版は 10 アクセスユーザ数(10 IP アドレス)という制限が伴うため、現実的な運用にあたっては FileMaker Pro 5.x/6 Unlimited が必要になることは注記しておきたいと思います。

 それでは実際に既存のサンプルコードを修正していくことにしましょう。
 処理は前回の FX.php 接続とほぼ同じですが、今回はそれに加え、文字コードの変換が必要となります。
 FileMaker Pro 9 では内部コードを UTF-8 で処理しているため、ソースが UTF-8 で記述されていれば問題はなかったのですが、FileMaker Pro 5.x/6 では内部コードを Shift-JIS で扱うため、このままデータを送るとエラーが起こったり、文字化けが発生してしまいます。

 そこで、今までの処理に文字コード処理を追加します。

  1. FX を使用することを宣言する(FX インスタンスを作成する)。

  2. 使用するデータベース名とレイアウト名を指定する。

  3. 使用するユーザ名とパスワードを指定する。

  4. データ送信時の文字コードを Shift-JIS に変換する。

  5. 追加するフィールドと、そのデータを指定する。

  6. レコード追加を実行する。



 上記を FX.php の記述規則に従って置き換えると、次のようになります。

 赤線を引いた部分と、赤で囲った部分が前回と異なってはいますが、その他はすべて同じです。
 指定の通り、FX インスタンス作成時に、使用するデータソース(データベース)が FileMaker Pro5.x/6 であることを知らせます。
 そして、データ送信前に文字コードセットを UTF-8 から Shift-JIS(SJIS) に置き換えます。

 ただし、FMP7/8/8.5/9 に対してこの文字コード変換を行うとデータ書き込みに失敗してしまうため、必要に応じて、データソースが FMPro5/6 のときだけ文字コード変換を行うという条件を追加する必要があります。
 この条件を追加するとこのようになります。

 変数 $databaseType には、コードの最初の方で予め "FMPro9" もしくは "FMPro5/6" のいずれかを設定しておきます。こうしておくことによって、使用するデータソースに応じて処理を切り替えられるので便利です。
 ソースの詳細は、サンプルコードをご覧になってみてください。

 先に PHP ソースについて解説しましたが、最後に FileMaker Pro 5.x/6 データベースファイルの作成と設定方法について説明します。

1. データベースファイルを作成します。FileMaker Pro 5.x/6 を起動し、Comment.fp5 というファイルを作成し、以下のフィールドを作成します。

 [RecID]、[作成日]、[作成アカウント]、[修正日]、[修正アカウント]は管理用のフィールドですが、作成しておくと便利でしょう。

2. レイアウト名を cgi に変更します。
3. 「アプリケーション環境設定」ダイアログを出し、プラグイン一覧より、Web コンパニオンにチェックを付けて「設定」ダイアログを開きます。

 セキュリティに「ファイルメーカー Pro アクセス権」を指定し、TCP/IP ポート番号に 80、もしくは 591 を指定します。

4. ファイルの共有設定で、以下のようにチェックを付けることによって Web コンパニオンを公開します。


5. パスワードを指定します。図のように、web というパスワードを作成し、web で公開させる最低限のアクセス権を決めます。

 この他にフルアクセスを許可するパスワードが必要となりますので、ここでは Admin を作成してあります。

 以上で準備が整いました。
 FMPro5/6 用の設定を施した comment_fp5.php というファイルをサンプルに用意してありますので、参照してみてください。

参考: FX.php vs FileMaker API Benchmarks Discussion(英文)

2008-07-03

【応用その1】FX.php を使ったアンケートフォーム作成

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FX.php の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ


 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。

 さて、前回まで 4 回にわたって FileMaker API for PHP によるアンケートフォームの作成方法を解説してきましたが、今回はさらに FX.php による FileMaker データベースアクセス機能も実装してみることにします。

 FX.phpiViking.org によって無償で提供されている FileMaker アクセスクラス群で、FileMaker Pro 5~ 9 に幅広く対応しているため、FileMaker API for PHP が実現できない環境のユーザでも FX.php を使うことによって php からのアクセスが可能となります。

 インストール方法も簡単で、ダウンロードして解凍した FX フォルダを Web サーバの適当な場所に配置するだけです。

 それでは実際にやってみましょう。
 Comment.fp7 を開き、「アカウントとアクセス権の管理」ダイアログを出し、そこからすでに登録済の Webuser を選択して「アクセス権セット...」を選択して以下のダイアログを開きます。

 FX.php は xml によるデータアクセスを行いますので、反転部分のように、「XML Web 公開でのアクセス- FMS のみ(fmxml)」にチェックを付けて保存します。

 これで FileMaker の FX.php 向け Web 公開の準備が整いました。

 さて、次は FX.php 向けのコードを追加していきます。
 まずは、コードの最初の方で FX.php をロードします。今ある Comment.php から FX.php が辿れるように設定してください。

 require_once '../../FX/FX.php';

 そしていつものように、日本語で手順を考えてみます。

  1. FX を使用することを宣言する(FX インスタンスを作成する)。

  2. 使用するデータベース名とレイアウト名を指定する。

  3. 使用するユーザ名とパスワードを指定する。

  4. 追加するフィールドと、そのデータを指定する。

  5. レコード追加を実行する。

 
 こうして見てみると、前回のデータベース書込手順とほとんど変わらないことがわかりますね。
 あとは上記の内容を FX.php 向けに書き換えていくだけです。

 一行目のデータベース接続にサーバ名、ポート番号、データソース名(FMpro9)を明示的に指定する必要がありますが、その他メソッド名に差異はあるものの、前回の FileMaker API for PHP のコードとさほど形式が変わらないことがおわかりいただけるでしょう。

 サンプルコードの方に FX.php と FileMaker API for PHP の切り替え操作も盛り込んでありますので、併せて確認してみてください。


※サンプルコード
サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

2008-07-02

FileMaker API for PHP を使ったアンケートフォーム作成 (4/4)

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ

ブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し。ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。
 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 さて、今回がアンケートフォーム作成の最終回となります。
 ステップ 1 から渡ってきたユーザ入力データをここでデータベースに登録し、続いてその内容をメール送信します。

 コードの記述に入る前に、FileMaker データベースを用意する必要があります。
 以下の手順に従ってください。

1. FileMaker Pro 9 よりComment.fp7 という名前のファイルを新規作成します。
2. 以下の図を参考にしながらフィールドを作成します。

 アンケート入力ページで実際に使用するのは、[氏名]、[email]、[回答]、[その他回答]、[意見など]の5 つだけですが、残りのフィールドはデータベースを管理する際に作っておくと便利ですので、最初の段階で用意しておきます。
3. 「アカウントとアクセス権」ダイアログを開き、webuser というユーザを追加します。
 パスワードを入力(サンプルデータベースでは web となっています)し、[アクセス権セット]では、「新規アクセス権セット...」を選択します。以下のように入力していきます。

 ここで最も重要なのは、ダイアログの一番下に表示されている[PHP Web 公開でのアクセス - FMS のみ (fmphp)]にチェックが付いていることです。これによって、FileMaker Server 9 への PHP によるアクセスを有効にします。
 また、[レコード]の欄で「カスタムアクセス権...」を選択することによって、レコードへのアクセス範囲を設定することもできます(任意)。
4. デフォルトのレイアウト名が Comment になっていますので、cgi に変更します。
5. ここまで終わったら、このデータベースファイルを FMS9 の Databases フォルダに入れて公開します。

 これでデータベースの準備が整いましたので、今度はアンケート入力の PHP コードの方に Comment データベース書き込みの処理を追加していきます。

まずは、コードの最初の方で FileMaker.php をロードします。

 require_once 'FileMaker.php';

 API for PHP による FileMaker データベースへのデータ書き込み手順を日本語で書くと、次のようになります。

  1. FileMaker を使用することを宣言する(FileMaker インスタンスを作成する)。

  2. 使用するデータベース名、レイアウト名、ユーザ名、パスワードを指定する。

  3. レコード追加をこれから行うことを宣言する。

  4. 追加するフィールドと、そのデータを指定する。

  5. レコード追加を実行する。


 このように日本語で書いてみると、操作は思ったより単純であることがわかりますね。
 あとは上記の内容を PHP の記述規則に従って置き換えるだけです。

 日本語で何をやっているかが理解できれば、この PHP ソースも容易に理解できるでしょう。
 $databaseName、$layoutName、$userName、$passWord というように変数を用意しておくことで、後でデータベース名や、ユーザ名、パスワードが変更になったときにも柔軟に対応できるようになっています。
 一番最後の行の $newrec->execute(); で実際に FileMaker データベースの方にレコードを新規追加します。

 最後にメール送信機能を追加します。
 すでにご存じのように、メールは差出人(From)、宛先(To)、件名(Subject)、本文(Body)、ヘッダ情報で成り立っています。これと同様の指定をコーディングの中でも行います。後でいつでも変更できるように、以下のように変数に入れておくと便利です。
 


 宛先(To)はアンケートに回答してくれた人のメールアドレスになりますので、ここでは指定しません。
 アンケート回答者にメールを送信すると同時にそのコピーをサーバ管理者に送るようにするには、上記のように $bcc 変数を用意して、そこにコピーを送るメールアドレスを設定しておきます。

 それでは実際にメールを送信するための手順を日本語で書いてみます。

  1. メールヘッダを組み立てる。

  2. アンケートに対するユーザ回答を使って本文を組み立てる。

  3. メール送信時に発生する文字化け対策を施す。

  4. 上記の内容を使ってメールを送信する。


 上記を PHP で置き換えると、次のようになります。


 $_POST の中にユーザ入力の内容が納められていますので、その中から該当するものを取り出しながら本文を組み立て、mb_sendmail() 関数の To の部分に回答者のメールアドレス $_POST['email']を設定します。

 上記を踏まえながら、サンプルコードを確認し、Comment.fp7 データベースをお使いの FMS9 環境に配置して、動作を確認してみてください。

 これで、FileMaker API for PHP による FileMaker データベースへの書き込み操作がひととおりできるようになりました。

 あとは、ステップ 1 のときと同様に、渡ってきたデータをお礼ページに表示するだけです。
 詳細は、サンプルコードを参照してみてください。

*サンプルデータベースの Admin パスワードは「admin」、webuser パスワードは「web」となっております。必要に応じて変更してお使いください。

●まとめ
 FileMaker データベースへのデータ書込の理解
 メール送信の理解

SonicWALL (4) --- IPS

前回「SonicWALL (2) --- IPS」で書いた警告メールの続きです。


IPS Detection Alert: IM Skype -- Application Activity, SID: 2800, 優先順位: 低 - 192.168.*.*, 4787, LAN - 204.9.163.158, 80, WAN, 163-158.static.quiettouch.com -
Skype を使用していると普通に送られてくる警告メール。 Skypeの利用を許可している環境では問題無い、Skypeに何らかの穴が見つからない限りですが。 ViewPointでは攻撃としては認識されていない。詳細解説


IPS Detection Alert: POLICY Google SSL Connections, SID: 3075, 優先順位: 低 - 209.85.171.97, 443, WAN, cg-in-f97.google.com - 192.168.*.*, 1774, LAN, **** -
Google Talkがクライアントと行うSSL通信をブロックしている。ViewPointでは攻撃として認識されない。 詳細解説


IPS Detection Alert: DNS BIND Version UDP Request, SID: 143, 優先順位: 低 - 149.20.52.206, 64457, WAN - 192.168.*.*, 53, LAN, **** -
DNSバージョンをチェックするクエリ。通常は無視していいが、自社のネットワーク情報を知られる可能性もある。 詳細解説


IPS Detection Alert: IM AIM -- Login, SID: 102, 優先順位: 低 - 192.168.*.*, 1253, LAN, **** - 64.12.161.185, 5190, WAN -
IPS Detection Alert: IM AIM -- Instant Message Sent, SID: 103, 優先順位: 低 - 192.168.*.*, 3749, LAN, **** - 205.188.12.130, 5190, WAN -
AIMを使用したログイン、またはメッセージ送信の発生を通知する。AIMの利用を許可している場合は無視。 詳細解説 詳細解説 


IPS Detection Alert: MULTIMEDIA Flash Video (FLV) Download 3, SID: 78, 優先順位: 低 - *.*.*.*, 80, WAN - 192.168.*.*, 4752, LAN, **** -
Flash Video (FLV)はYouTube等で使用されるビデオフォーマット、これをダウンロードしたときに通知される。 詳細解説


IP spoof dropped - 192.168.*.*, 4388, LAN - 205.188.179.233, 5190, WAN - MAC address: 00:90:cc:c3:06:49
以下、SonicWallのマニュアルから引用
「IP Spoof は、ハッカーが他のコンピュータのアドレスを使って、TCP/IP パケットを送ろうとする、侵入の企てです。保護されたネットワークに、そのネットワーク上のマシンの IP アドレスを使ってアクセスするために利用されます。SonicWALL では、これを侵入の企てとして認識し、それらのパケットを破棄します。SonicWALL の構成が間違っていると、IP Spoof の警告がログされることがよくあります。IP Spoof の警告
を見つけた場合には、LAN、WAN および DMZ 上の IP アドレスがすべて正しいことを確認してください。LAN 上の IP アドレスが LAN のサブネットに入らない場合にもIP Spoof の警告が出ることがあります。」


IPS Detection Alert: SMTP Reply-To Pipe Passthrough, SID: 1888, 優先順位: 低 - 194.150.164.130, 29174, WAN - 192.168.*.*, 25, LAN, -
旧Sendmailのバグを利用してコマンドを実行させる攻撃の可能性。SonicWallはこの攻撃を排除する。 詳細解説

以上

2008-07-01

FileMaker API for PHP を使ったアンケートフォーム作成 (3/4)

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 前回はアンケートページ操作の枠組みとなる、アンケート入力ページ、確認ページ、そしてお礼ページの切替方法について説明しました。いよいよ本格的なコード記述に入っていきます。PHP のコーディング規則については割愛しておりますので、不明な点があれば PHP のマニュアルを参照してください。

 皆さんご存じのとおり、Web ページの構成はざっと以下のようになっています。



 前回の説明では、本文部分の表示切替について説明したわけですが、実際は、本文を表示する前にヘッダを表示し、本文の表示が終わったところでフッタを表示することによって、Web ページを構成する必要があります。第一回目で、ヘッダとフッタは部品化できると申し上げたとおり、ヘッダとフッタをそれぞれ独立した文字列として変数にセットしておくことで、実際のページ表示を行うときに呼び出して使うことができます。
 以下はその部分を取り出したものですが、HTML による Web ページ作成経験がある方なら、この部分は容易に想像できるでしょう。

 ●ヘッダ部品のソース


ヘッダ中にある $pagetitle は、ページのタイトルを表示するための変数です。入力ページ、確認ページ、お礼ページでタイトルを切り替えることができるため、このようにしておくと便利です。

 ●フッタ部品のソース


 このように部品を用意しておけば、極端な話、PHP コードの中で以下のように記述するだけで一つの Web ページが出来上がります。


echo $header;
echo $footer;


 次に、上記のヘッダとフッタの間に入れる本文部分を検討していきます。

1. ステップ 0 (ユーザ入力ページ)

 ここでは、入力用のフォームを作っていきます。
 フォーム部品(エレメント)は次の 5 つです。

 氏名 -- テキストボックス (myname というエレメント名)
 email -- テキストボックス (email というエレメント名)
 アンケート回答 -- ラジオボタン (answer というエレメント名)
 その他回答 -- テキストボックス (otheranswer というエレメント名)
 ご意見など -- テキストエリア (memo というエレメント名)

 以下は上記を踏まえてフォームを起こすためのコードを PHP で記述したものです。



 上記赤で囲った部分がアンケート回答の選択肢を示すラジオボタンです。これですと、アンケート回答の選択肢が増えるたびにラジオボタン行を増やす必要があるため、将来的に非効率といえば非効率です。というわけで、このラジオボタンの部分を可変対応にしてみましょう。

 そこで選択肢のリスト作って変数に入れてみます。ここでは $answeroptions という変数にリストを配列としてセットしているところです。



 そして、ラジオボタンを表示したいところでこの変数($answeroptions)を呼び出して、各項目を取り出します。その加工を行っているのがこの部分です。



これでデフォルトのページの部品ができあがりました。しかし、これでは各エレメントの value が空欄のため、前回何らかのユーザ入力が行われていたとしても値はページには反映されません。そこで、前回ユーザ入力があった場合にはその値を当該の項目に表示する処理を追加します。
 この処理を施すと、次のようになります。赤線部分に注目してください。



 そしてさらに、必須項目である[氏名]欄と[email]欄が正しく入力されているかどうかをチェックして、値が不正の場合には赤字でメッセージを表示するようにします。
 その処理を施したものが以下のソースです。赤線部分に注目してください。



 入力項目の処理はこれで終わりですが、後は今のステップ番号を次の操作のためにどこかに用意しておく必要があります。
 ここでは以下のような隠しエレメントを用意して、そこにステップ番号を入れることにします。エレメントの名前は後で参照しやすいように page_flg としておきます。今回はステップ 0 (ユーザ入力フォーム)なので、設定しておく値は 0 ですね。



 後は送信ボタンとリセットボタンを用意するだけです。
 上記を踏まえて、もう一度サンプルコードを見てみてください。

2. ステップ 1 (確認ページ)
 このステップは、ステップ 0 に比べると比較的処理が容易です。ここでは、ステップ 0 で入力された値 ($_POST にまとめて入っています)を取り出してページに表示し、ユーザにこの内容でデータベースに送信しても良いか尋ねて、ステップ 2 に入力値を渡すだけです。

 まずは入力された値を表示します。この部分は、確認ページとお礼ページの両方で同じものを表示しますので、使い回すことができます。


 次に、ステップ 2 (お礼ページ)に渡すためのユーザ入力値を隠しエレメントとしてフォームに用意します。
 以下、赤線を引いた箇所が現在のステップ番号を渡しているところです。



 実際にサンプルコードのソースを開いてみて、この部分を確認してみてください。

 残すはステップ 2 です。ステップ 2 では、データベース操作およびメール送信について触れますので、次回詳しく説明いたします。

●まとめ
 入力フォームの記述方法とユーザ入力値の表示方法の理解

FileMaker API for PHP を使ったアンケートフォーム作成 (2/4)

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 さて、前回の説明ではアンケートページの流れと、流用可能部分の洗い出しを行いました。

 以降、PHP を使って話を進めていきますが、実際にコードを書く前に、まずは日本語で分岐処理を考えてみましょう。この作業がしっかりできれば、あとはそれを PHP の規則に従って置き換えるだけです。このやり方ならあらゆるプログラミング言語にも応用が利くので便利です。

 ページがロードされたときに、最初にしなければならないのは、このページが初回ロード(デフォルトページ)なのか、確認用ページなのか、それともお礼ページなのかを把握することです。そこで前回解説した 3 つのステップが登場するわけです。


 0 -- 初回ロード時(デフォルト)ユーザによるアンケート入力用ページ
 1 -- 確認ページ
2 -- お礼ページ

 ここで注目すべきことは、ユーザが正しい入力を行わなければ、いつまでたってもステップ 1 には進めないということです。今回のアンケートフォームでは、このために[氏名]欄と[email]欄を入力必須としています。この二つの項目正しい入力がなければ、誰が送ったのか後で判断できませんし、メールも送信できなくなってしまいます。また、ゴミデータを増やす原因にもなりますので、最低限[氏名]と[email]には入力をしてもらいたいところです。

 つまり、ステップ 0 ではユーザ入力ページを表示させつつ、正しい入力が行われているかどうかという判断も行います。

 ページがロードされた場合に、[氏名]欄と[email]欄に正しいデータ入力が行われていたときは、必要最低限の情報が揃ったことになりますので、ステップ 1 に進みます。

 さらにページがロードされた場合に、前回のユーザ操作で“確定”ボタンが押されていたことを確認できたときは、ステップ 2 に進んでデータを FileMaker データベースに書き込み、さらにメールを送信して終了します。

 実際にコード記述を行う際には、ステップにプログラム内で管理しやすい固有の名前を付けます。ここでは page_flg としてみます。page_flg が 0 ならステップ 0 というわけです。PHP では変数を取る場合は先頭に $ を付けますので $page_flg という名前になります。

 それではここまでを日本語で表現してみます。見やすさのために、各項目内はインデントを行います。ステップの名前は page_flg となっていますので、覚えておいてください。



   
 上記のように、ページがロードされた直後の処理が最も重要であることがわかりますね。page_flg の番号が特定できれば、あとはそれに応じたフォームを表示するだけです。
 さて、次はこれらの分岐を PHP に置き換えてみます。処理の詳細はまだ記述しませんので、コメント行として日本語で表します。先ほど申し上げたとおり、page_flg は PHP では $page_flg と記述します。



 分岐の方法や入力されたフォームの値($_POST に入っています)の説明は PHP のマニュアルをご覧いただくとして、こうして見てみると、処理の流れが意外と単純であることがわかりますね。ちなみに、Mailck()という名前の付いているものは、入力されたメールアドレスが適切な形式であるかどうかをチェックするために私が用意したユーザ定義関数の名前です。

 この枠組みができれば、あとはページヘッダ、フッタ、そしてフォームの詳細を追加していくだけです。
また、前回の説明にあったように、確認ページとお礼ページのコードは流用できる部分があるため、$page_flg の分岐を以下のように変更します。



 コードがさらにすっきりましたね。

 ここで、サンプルコードをダウンロードして、該当箇所を検索し、コードがどのようになっているかを調べてみてください。
 フォーム内容が記述されているため、PHP に不慣れな方には複雑に見えるとは思いますが、この枠組みが理解できていれば、今回のアンケートフォームの操作は 70% 理解できたと言っても過言ではないでしょう。

●まとめ
 ページ操作の枠組みとその記述方法(日本語、PHP)の理解

2008-06-30

FileMaker API for PHP を使ったアンケートフォーム作成 (1/4)

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ


ブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し。ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。
 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)
 さて、前回の投稿FileMaker Server 9 のインストールを終えましたので、これから数回にわたって FMS9 に装備されている FileMaker API for PHP を使うことによって FileMaker データベースにデータ書き込みを行う方法について説明します。
 ここでは最も手っ取り早く操作を理解することを目標に掲げていますが、今後は機会を見て同操作の Fx.php への展開、MySQL への展開、セッション管理などについても書いていきたいと思っております。

 FileMaker API for PHP は、PHP スクリプトから FileMaker データベースにアクセスすることによって、データベース操作を実現するクラスをまとめた API で、従来の CDML やインスタント Web 公開では機能的に限界のあったデータベース操作がさらに高度で柔軟なものになっています。
 操作にあたってはどうしても HTML と PHP を記述するための知識が必要になるわけですが、今回は理解の最短コースを目指し、最も単純な操作方法をコード付きで紹介します。

 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 こんなページを想像してみましょう。

  1. アンケート入力ページが出てくる。

  2. 上記で正しい入力が行われると、確認ページが出てくる。

  3. 確定ボタンを押すと、入力されたデータが FileMaker データベースに書き込まれるとともに、その内容がメールで投稿者およびサーバ管理者に送信される。


 この動作を実現させたものがこちらのアンケート入力ページです。

入力→確認→データ書込(必要に応じてメール送信)、この三段構えを応用すると、商品申込ページや、住所録作成なども比較的簡単にできるようになります。

さて難しいことは抜きにして、まずは入力ページの部品を見てみましょう。



 ユーザ入力欄は以下の 5 つだけです。

  1. 氏名 -- 入力必須

  2. emailアドレス -- 入力必須

  3. アンケート回答 -- 選択必須。一番上の選択肢が最初に選択されている状態

  4. その他回答入力欄 -- 任意

  5. 要望など入力欄 -- 任意


 HTML による Web ページ作成経験のある方なら、ページ構成は容易に想像できるでしょう。
 PHP では、ある程度ページ部品を使いまわすことができますので、入力、確認、お礼のページで使いまわせそうな部分を抜き出していきます。

 ヘッダ --- 流用可能
 ボディ(本文) --- 一部流用可能
 フッタ --- 流用可能

 ボディが一部流用可能となっている理由は、入力ページではユーザ入力を許可し、確認ページとお礼のページではテキストのみが表示されるという理由で表示動作が異なるためです。それでも確認ページとお礼のページに表示させる内容は使い回せそうですね。

 それではこのアンケートページのブラウザ表示後のソースを見ながら流用できそうな部分にマークを付けてみます。



 図中の赤で囲んだ部分が入力、確認、お礼ページで共通している部分となりますので、PHP コードの中では一度記述すればよいことになります。

 次に、ページ動作の流れを決めます。

  1. 初回ページロード時は入力画面表示。

  2. 必須項目に正しく入力が行われたら、確認ページを表示

  3. 確認ページでユーザが“確定”ボタンを押したら、お礼のページを表示


ページの表示切替を容易に行うため、各ステップを 0 (デフォルト)、1 (確認)、2(お礼)のように決めます。つまり、ステップ 0 では、いくらページをロードしても入力画面が表示され、1 なら確認画面、2 ならお礼の画面という具合です。表示イメージは弊社サーバでテスト公開しているアンケート入力ページで確認していただくことにして、それぞれのステップのフォーム部分のコードを見てみましょう。

【ステップ 0 のソース】


【ステップ 1 のソース】


【ステップ 2 のソース】


ステップ 1 と ステップ 2 を比べてみてください。多少の差異は認められるものの、赤で囲んだ部分が殆んど同じであることがおわかりいただけるでしょう。ということで、この部分も PHP で使いまわすことができます。


●まとめ

  1. アンケート入力→確認→お礼ページの流れを把握

  2. 上記のそれそれのステップに 0, 1, 2 という番号を付ける

  3. ページのヘッダ、フッタ、本文で流用できそうな部分を洗い出す


流用できる部分の洗い出しは、設計段階でとても重要な作業となります。
次回より、上記を踏まえた上で、実際に php を使ってコーディングをしていきます。

2008-06-23

アンチウィルスソフト --- 果てしないセキュリティ

SonicWALL Total Security のようなUTM(統合脅威管理機器)をLAN⇔WAN間に設置すると、ファイアウォール、IPS、アンチウィルス・アンチスパイウェア、コンテンツフィルタリング、暗号化等の機能により、LAN⇔WAN間のすべての通信を管理・監視しネットワークセキュリティを向上させることができます。 では、UTMを配置すればセキュリティは確保できるのでしょうか? 残念ながらそうとは言えません。 ハードディスクのデータをUSBメモリにコピーして持ち出した、機密データを印刷して紛失した、ノートPCを紛失した、サーバ室に許可無く入室した等、セキュリティはシステム管理者だけの問題ではなく、社員など個々人のモラルの問題でもあり、あらゆるリスクを予め想定して対応するのは不可能と言っていでしょう。 

自宅の家の鍵を二重三重にし、窓ガラスも強化ガラスを入れ、セコムを頼み、家人が十分気をつけていたとしても、有能で悪意ある確信犯がいれば、その凶行を防ぐのは至難です。 セキュリティも同様です。 どこまでセキュリティに費用と労力をかけるか、実に悩ましいところですが、システム的にはやはりホスト(PCやサーバ)レベルでのウィルス等のマルウェア対策が必要と思います。 以前にも総論的に書きましたが、数十台を超えるPCのセキュリティを各ユーザのスキルとモラルに委ねるのは危険で、業務的にも効率的とは言えず、なるべく統合的、集中的なセキュリティ管理が望まれます。その統合集中的管理が可能なアンチウィルスソリューションの一つに Panda WebAdmin があります。

Panda WebAdmin のメリット

1. 比較的廉価
2. Windows 2000/2003 Server で利用可(但し、Vistaは未対応)
3. 動作が軽い --- 他のアプリケーションに悪影響を与えない、与えにくい
4. 管理PCからクライアント/サーバを統合集中管理
  • 管理PCから各PC/サーバへPanda WebAdminクライアントを(Push式)インストール
  • 各PC/サーバのウィルス感染状況を表示
  • 各PC/サーバのウィルス定義ファイルの更新状況を表示
  • 外出先のモバイルPCも管理可
【各PCのウィルス定義更新状況を表示するWebAdmin】

5.それなりのウィルス検出精度
6.システムに障害を及ぼす“トンデモ”アップデートがあまり無い

以上

2008-06-20

SonicWALL (3) ---ログ分析ツールViewPointインストールで泣く

前回書いたようにSonicWALLには通信を監視し、「問題あり」とみなした通信内容を警告メールとしてネットワーク管理者に送付することができます。 ただ、この警告メールが大量に届くため、管理者がこれを逐一読むのはまず無理です。 そこでSonicWALL Total Security には、ViewPoint というログ分析ツールが無料で付属してきます。 この ViewPoint ですが、ある一定の環境下は簡単にインストールできます。 しかし一定以外の環境では、多分、嵌ります。 一定以外の環境とは? 私が思うに SQL-Server インスタンスが複数動いている環境はマズイのではないかと。 

以前、 SQL-Server インスタンスが既に2つ存在するWindows 2003 に ViewPoint 4.0 をインストールしようとしたのですが、途中までいくとMSDE(Microsoft SQL-Server Desktop Engine、ViewPointのログ保存用データベース)へのログインの画面で認証に失敗し、続行できなくなりました。 表示されたエラーメッセージには、「後で\ViewPoint4\bin\postInstall.batを実行してインストールを続行できます」みたいなことが出ているので、インストールを一旦中断。 ただ、 その後に postInstall.bat を実行しても、全く同じ状況でMSDEの認証で弾かれてしまいます。 で、サポートに電話したのですが、「そのような事例はあるのですが、解決方法は記されていません」の一言。 「おい、おい、 それで終わりかい?」(心の声)
その時は忙しかったので、既存のSQL-ServerインスタンスがないXP機に ViewPoint 4.0 を入れてしまいました。 こちらは全く問題無くインストール終了。

で、最近改めて件のWindows 2003機へ ViewPoint のインストールをトライしてみました。 前回失敗したときにアンインストールをしたみたいだったので、インストーラの VPS_JP.exe を再度実行。 「もしや今度はすんなりと完了するのでは…」という儚い望みはあっさり裏切らせ、前回と同じメッセージ。 しかたんくインストーラを終了して、上記の postInstall.bat を実行してもやっぱり駄目。 ここまでは前回と同様なので、トラブルシュートする腹を決めました。 まず「サービス」を起動してSQL-Serverインスタンス(サーバ名\SNWL)が存在することを確認。 また、インストール時に指定したディレクトリにMSDEが存在することも確認。では、ViewPoint4\MSDE\Data\MSSQL$SNWL\Data\ 内に存在する 筈のViewPoint 用の.mdfと.ldfファイルは…と思って探しても無い。 あるのは、master/msdb/model/tempの4つのシステムファイルだけ。 SQL-Server Management Studio Express を起動して見ても、やはりこの4ファイル以外は無し。 先に成功したXP内のDataディレクトリには sgmsdb.mdf 他のViewPoint用ファイルがあるのに。
ここにきて、データベースのインストールに失敗していることが判明。 そこでググってみると、灯台下暗し「SonicWALL ViewPoint ユーザーズ ガイド」にたどり着く。 このガイドは ViewPoint 2.5 用でエラーのメッセージの出方も違うけど、第六感的にはぴったし。 P.157以降に解決策というのが書いてあります。 以下、上記マニュアルを引用。

******************** 引用始 ********************
ViewPoint が MSDE データベースの場所を見つけることができない
問題
SonicWALL ViewPoint 2.0 のインストールで、MSDE データベースが見つからない場合、次のようなアップグレード失敗を通知するメッセージが表示され、インストールはフェーズ 2 で失敗します。
[DBNETLIB]SQL Server does not exist or access denied. [DBNETLIB]ConnectionOpen (Connect()).
Java doesn't recognize the MSDE database using the URL "127.0.0.1\SNWL". This is an issue on some Windows 2000 servers.
解決策
次の手順を実行し、インストールを続行します。
1. 「キャンセル」 を選択して、フェーズ 2 のインストールを終了します。
2. コマンド プロンプトから、「SQL Server Network Utility」 (SVRNETCN.EXE) を実行します。 一般的に、このプログラムは、C:\Program Files\Microsoft SQL Server\80\Tools\Binn フォルダ内にあります。
3. 複数の SQL サーバ インスタンスがシステム上で稼動している場合は、「Instance(s) on this server」 リスト ボックスに複数のインスタンスが表示されます。 リスト ボックスから、サーバ名\SNWL の項目を選択します。
4. 「Protocols」 リストから 「TCP/IP」を選択し、「Properties」を選択します。
5. ポート番号を記録します。
6. メニューを終了します。
7. c:\sgmsConfig.xml ファイルと \Tomcat\webapps\sgms\WEB-INF\web.xml ファイルに以下の修正を行います。
dbURL の値を、"127.0.0.1/SNWL" から "localhost:ポート番号" へ変更。
dbhost の値を、 "127.0.0.1\SNWL" から "127.0.0.1" へ変更。
技術的ヒントとトラブルシューティング 157
8. \SQL\bldMSDB.bat に、以下の修正を行います。
User の値を sa に変更
Password の値を <フェーズ 1で選択したデータベースのパスワード> に変更。
9. コマンド プロンプトで、\SQL フォルダへ移動し, bldMSDB.bat プログラムを実行して MSDE データベースをインストールします。
10. \Temp へ移動し、次のプログラムを実行して 「SNWL ViewPoint Summarizer」 サービスと 「SNWL ViewPoint Syslogd」 サービスをインストールします。
schedInstall.bat
vpInstall.bat
11. \Tomcat\bin へ移動し、次のプログラムを実行して 「SNWL ViewPoint Web Server」 サービスをインストールします。
tomcat.bat install
12. Windows システムを再起動

******************** 引用終 ********************

上記ステップの8までは問題なく実行できたんですが、ステップ9 bldMSDB.bat が失敗してしまう。 SQL-Serverの認証方法がWindows認証になっているのが問題か?、と思い、認証を混合モードに変更してもやはり駄目。 仕方が無いので、bldMSDB.bat を開いてみると、その中で大量の.sqlファイル群を実行していて、しかも最初の行(sgmsdb.sqlの実行)から失敗している。 で、sgmsdb.sql では何をしてるかというと、

      USE master;

どうもここから失敗している。 コマンドプロンプトを開いて、

      osql -U sa -P password -S 127.0.0.1\snwl

とやると失敗してしてしまう。 そこで、

      
osql -U sa -P password -S computer_name\snwl

とすると成功(computer_nameはWindows のコンピュータ名)。 そこで、どうやらこのループバックアドレス(127.0.0.1)がおかしいらしいと見当をつけて、以下を実行。

  1. 上記ステップ8にある「127.0.0.1」と「localhost」を「computer_name」に変更。
  2. bldMSDB.bat をメモ帳で開き、すべての「127.0.0.1」を「computer_name」に置換。
上記を実行すると、上記マニュアルのステップ9~12はスムーズに終了し、Windows 2003起動してデスクトップに作成された SonicWALL ViewPoint 4.0 を実行すると、ブラウザに ViewPointの認証画面が表示されるようになり、デフォルトのID:admin、Password:password と入力することにより、ログインできました。 めでたし、めでたし。

2008-06-16

FMS9 のインストールで四苦八苦

FileMaker Server 9 で API for PHP が公開されたということで(今まではベータ版での公開だった)、当方の環境にも Filemaker Server 9 (以降 FMS9) をインストールしてみました。

 しかし、一口にインストールとは言っても、アプリケーションの構成が複雑な環境ではなかなか一筋縄ではいかなかったりします。
 今回は FMS9 をインストールしてから希望どおりの結果が得られるまで丸二日を費やすことになってしまいました。

 以下、当方での FMS9 インストールトラブルの記録です。

  1.  FMS7 との競合。FMS7 がインストールされている環境には FMS9 を追加インストールできない。そこで、FMS7 のアンインストールを試みたが、FMS7 インストール構成ファイルの一部が壊れていた模様で、コントロールパネルの「アプリケーションの追加と削除」からは削除ができなくなってしまっていた。
     そこで、Microsoft 社のサイトから Windows Installer CleanUp ユーティリティというツールをダウンロードして、FMS7 のインストール情報を削除してから、ハードディスクに残っている実体ファイル群を削除する目的でもう一度 FMS7 をインストールし、そしてもう一度アンインストール。

  2.  FMS9 インストール。インストーラのガイドにしたがって無事にインストールは終了したが、FMS9 開始ページを起動して設定を始めてみると Web 公開用に接続を試みた IIS が認識されていないことが判明。サービスでは、IIS は正常に動作していたので、どうやら FMS9 とIIS の対話がうまくできていないようだ。
     そこで、コントロールパネルから一度 IIS を外して、もう一度インストールしたら、今度は FMS9 側から認識されるようになった。

  3. ところが、実際にサーバのトップページにアクセスしてみると、ページが見つからないという白紙のページが表示された。IIS マネージャの設定をどう直しても状況は改善しなかったので、試しに FMS9 をアンインストールしたところ、ページが表示されるようになった。
  4.  FMS9 は Java を使うので、インストールされている Java を調べたところ、すでに古いものが 3 つインストールされていた。それらをすべて削除してから IIS 再インストール、FMS9 のインストール、そして FMS9 インストール直後に推奨される Java のインストールに従って、FMS9 に入っている Java をインストールしたところ、FMS9 と IIS の対話がうまくいくようになり、ページも無事に表示されるようになった。


 今回のインストール作業から得られたことは、FMS9 をインストールするには、FMS9 を操作するのに適切な Java と IIS が入っていないとうまく動作しないので、どう設定をいじっても歯が立たない場合は、一度この三点を全部削除して、順にインストールしていくことで解決する可能性が高くなるということです。

 ただ、IIS で複雑なサイトを構築している企業では、IIS をそうやすやすとアンインストールなんてできないと思ってしまうのですが...。

2008-06-14

SonicWALL (2) --- IPS

SonicWall Total Security シリーズには、IPS(Intrusion Prevention System、不正侵入防御システム)が付属してきます。 これは SonicWALL 上の通信を監視し、悪意または不正な行為を検知・遮断する機能です。 通常のファイヤウォールは各ポートの通信を許可・不許可するだけですが、IPSはファイアウォールが許可したポートの通信の内容までも、シグネチャーデータベースに照らして監視します。ネットワーク管理者は SonicWALL の IPS が検知した不正または不正の可能性を含む通信の概要を警告メールとして送信するように設定することができます。 実際メール送信するように設定すると、やたら多くの警告メールが届き、困惑することになります。

よくある警告メール
警告メールの中を見ると、不正またはその可能性がある通信の内容の概要と、その危険度を低、中、高で示されています。 以下、ありがちな警告メールとその説明。

IPS Detection Alert: ICMP Destination Unreachable (Port Unreachable), SID: 310, 優先順位: 低 - 89.178.40.145, 17127, WAN, 89-178-40-145.broadband.corbina.ru - 192.168.*.*, 59367, LAN, ****** -
 外部からのICMPパケットがSonicWallの内側のホストに届かなかった場合に発生。 危険度は「低」。あまり気にする必要はないが、DoS攻撃やネットワーク構成の探知が行なわれている可能性もある。頻発する場合は要注意。 詳細解説


IPS Detection Alert: PROXY-ACCESS SOCKS 5 outbound proxy access, SID: 1775, 優先順位: 低 - 192.168.*.*, 38248, LAN, ***** - 219.160.253.130, 8558, WAN -

 SOCKS Protocol version 5のプロキシサーバへアクセス。攻撃ではないので無視。詳細解説


IPS Detection Alert: ICMP Time-To-Live Exceeded in Transit, SID: 352, 優先順位: 低 - 192.35.246.1, 53, WAN - 192.168.*.*, 1091, LAN -

IPデータグラムが断片化されて相手先ホストに送信されたため、一つ以上の断片化されたデータが未着となっているため、SonicWALLがデータ待ちをしない状態となる。 通常は無視してよいが、DoS攻撃やネットワーク構成探知行為の可能性もある。 詳細解説


Possible port scan detected -  210.248.168.20, 443, WAN, kanri.shopserve.jp -  *.*.*.*, 6887, WAN, ****** - TCP scanned port list, 6755, 6769, 6833, 6845, 6861

Possible port scan detected - 203.77.186.119, 80, WAN, cds32.tyo.llnw.net - *.*.*.*, 1277, WAN, *.*.*.jp - TCP scanned port list, 1263, 1267, 1271, 1273, 1275
クラッカーが侵入準備のために行うポートスキャン、但し、管理目的のことが多い模様。
***.tyo.llnw.net からは非常に多くのアクセスがあるが、Microsoft Windows Update が使用しているミラーサイト(負荷分散サイト)との推定あり。



SonicALERTの全種別一覧
http://software.sonicwall.com/applications/ips/index.asp?ev=cat

2008-05-30

SonicWALL (1)

UTM (統合脅威管理=Unified Threat Management) という言葉ですが、日本ではいまひとつ馴染みが無いようです。 言葉としてもいまいちな感じ。 Integrated Secrurity Appliance とか、All-in-one Security Mnagement Device とか、Security という言葉を入れたほうがピンとくると思うのですが。 認知度が低いのはネーミングが悪いせいかどうかは兎も角、UTM製品名で検索をかけてもヒットするのは宣伝・広告ばかりで、日本のIT関連メディアやユーザサイドからの情報は、今のところ多くはありません。 したがって、運用に際してはには、英語のサイトに頼ることが多くなります。

さて、当方で使用しているのはSonicWALL Total Secure TZ-180というUTMです。 この製品はインターネットとLANの間に配置され、インターネットとLAN間の通信を監視し、設定した内容に従い、許容されていない通信パケットを破棄するとともに、VPNによりパケットの暗号化も行います。通信パケットの管理/暗号化は、ファイアウォール、VPN、ゲートウェイアンチウィルス、アンチスパイウェア、IPS、コンテンツフィルタリングにより行います。 また、ログ解析機能(ViewPoint)/警告メール送信機能も付属しています。

このうち、ゲートウェイアンチウィルス/アンチスパイウェアはhttp/ftp/smtp/POP3といったプロトコル(メーカーの謳い文句による50以上)を監視し、ウィルスやスパイウェアを発見すると除去します。 ただ、ゲートウェイアンチウィルスがあれば個々のPC/サーバにウィルス等のマルウェア対策が必要ないかというとそうではなく、個々のPC/サーバでもやはり対策が必要だと思います。 テロや外国人犯罪を防ぐのに飛行場や港湾といった水際の対策だけではなく、国内に侵入された場合にそなえ個人レベルの警戒も重要、というのと同義でしょう。厭な世の中ですが、破壊・犯罪を防ぐためには仕方がありません。

コンテンツフィルタリングは有害サイトへのアクセスを防ぎます。 一見すると子供向けの機能のようですが、有害サイトにはマルウェアが埋め込まれていることが多く、アクセスするだけで感染することもあります。 有害サイトへのアクセス遮断はマルウェアの侵入を防ぐ意味もあります。

ファイヤウォールとIPS(Intrusion-prevention system、侵入防止システム)の違いですが、一般のファイヤウォールはIPとポートへのアクセスを許可/拒否するように設定できますが、許可しているポートへの通信は、その通信パケットの中に悪意の命令が埋め込まれていても通してしまいます。 その結果、例えば、バッファオーバーフローを起こし、PCの動作異常や異常終了を引き起こしてしまったり、データベースのデータを改竄・消去されてしまったり(SQLインジェクション)ということも起こりえます。 これに対してIPSは、通常、IPやポートに依存せず、通信パケットのヘッダからデータをシグネチャ(攻撃パターン)データベースに照らして監視し、シグネチャに合致する通信パケットは侵入とみなし破棄します。 SonicWALLのシグネチャは24時間自動アップデートされ、新たな攻撃パターンをデータベースに記録します。

参考
Intrusion-prevention system(Wikipedia/英語版)

シグネチャを超えたプロアクティブな防御を――チェック・ポイントが戦略披露


土屋

2008-05-27

セキュリティは個人による管理から集中・統合管理へ(2)

前回、セキュリティは個人ではなく、管理者が集中的、統合的に管理すべき旨を書きました。 理由は個人の資質に依存するのは問題だし、人はミスをするから。 これとは別の理由もあります。

Windowsやインターネットが広く普及し始めてすでに15年以上経ち、いまやPCを使いこなすスキルがすべての人に必須のように言われていますが、はたしてそうでしょうか? 例えば、営業マンにPCスキルは必須でしょうか? 私はそうは思いません。 営業は本来、モノを売り、売上と利益を上げ、顧客からの信頼を築きながら次回の販売に繋げる、というのが本分の筈。 その営業マンが各種アプリケーションソフトの習得やファイヤウオールの設定に時間を費やしているようでは本末転倒です。 優秀な営業であればあるほどその人の時間を営業以外の雑務に費やさせるのは会社にとって損失です。 営業マンには心置きなく数値を追わせてあげましょう。 

営業やその他の部門の人材にそれぞれの本業に専念してもらうには、システムのセキュリティは管理者が代わりとなって、集中・統合管理する必要があります。 そのソリューションとして前回書いたUTM(Unified Threat Management)というものがあります。では、そもそもシステム管理者が対処すべき脅威にはどのようなものがあるのか、列記してみましょう。

1.マルウェア
悪意のプログラム。 最も一般的なコンピュータシステムの脅威。 ウイルス、ワーム、トロイの木馬、スパイウェア、アドウェアなどに分類される。 ハードディスク上のデータを破壊、PCの動作異常・パフォーマンス低下、広告宣伝の強制表示、各種情報の漏洩・改竄などを引き起こす。

2.不正アクセス
許可されていないユーザによるPC/サーバへのログイン、大量の命令をサーバに送り回線速度やサーバ機能を低下または麻痺させる(DoS、Denial of Services)

3.データ傍聴・改竄
インターネットにおけるデータ送受信時のデータ傍聴・改竄

4.その他の脅威
SPAM---不特定多数、無差別に送信される宣伝・勧誘メール
有害サイト---犯罪、ポルノ、暴力、ドラッグなどのWebサイト

UTM製品はインターネットとLANの出入口に配置され、ファイアウォール、VPN、ゲートウェイアンチウィルス、アンチスパイウェア、IPS、コンテンツフィルタリングといった機能により、上記の脅威にそれ単体で対抗します。

2008-05-26

セキュリティは個人による管理から集中・統合管理へ(1)

コンピュータ、ネットワークを運用する際に悩ましいのがセキュリティ。 もし、あなたがルータのログを見たことが無いのであれば、一度みてみるといいかも。 きっと、得体の知れない国内外からのアクセスが一杯記録されています。

最近では、IT企業からの告知・宣伝や、マスコミから伝えられるコンピュータウィルスの被害ニュースもあって、セキュリティ対策が全く施されていないPCやネットワークは無くなりつつあるようです。 お客さんのPCを拝見しても、ノートンやウィルスバスターといったセキュリティソフトが入っています。 しかし、これだけで安心してよいのでしょうか? 個人向けのアンチウイルスやファイアウォールは個人で管理・運用することになりますが、PCに対する見識・知識、経験が異なる個人にセキュリティを任せて大丈夫?
「ウィルス定義が更新されていないPCがあった」とか、「新しいソフトをインストールする際に、アンチウィルスやファイヤウォールを解除し、そのまま放置してしまった」とか、経験ありませんか? 人にミスはつきもの、経験豊富なパワーユーザといえでも、設定し忘れ、戻し漏れといったミスは必ず発生すると言っていいです。 セキュリティは「人はミスをする」ということを前提としなけばなりません。 であれば、個人に“のみ”依存するセキュリティシステムは、ある程度の規模の企業・組織、おそらく、PC/サーバを15-20以上運用するような企業・組織においては、極めて危ういということになります。 では、どうすればよいか? 時代の流れは、個人管理から集中管理、統合管理へと向かっていると思われます。

それではその集中管理、統合管理を行うソリューションにはどんなものがあるのでしょうか? アンチウィルスのベンダーからは定義ファイルの更新状況や感染・駆除状況を管理マシンから集中的に管理できる製品が法人向けとしてリリースされてきています。 メールサーバにはメールに添付ウイルスがないか、スパムメールか否かを判断し、脅威と認識したメールは受信直後に隔離・削除する製品もあります(あります、というよりも、そのようなマルウェア駆除機能が今ではメールサーバの標準機能と言えるかもしれません)。 またUnified Threat Management(UTM、統合脅威管理)と呼ばれる機器は、インターネットとLANの出入口にあって、マルウェア、不正侵入、SPAMを水際で防ぎ、データの暗号化までも行ってくれます。 最近は高価だったUTMの価格も大分下がっており、中小企業でも大分導入しやすくなってきています。

【代表的なUTM】
SonicWALL
FortiGate
CheckPoint
NetScreen

【集中管理型アンチウイルス・ソフト】
Panda WebAdmin

土屋

2008-03-10

FlexSql売管 ― FileMaker と SQL Server 2005 による売上管理システム


FileMaker Pro 9 と Microsoft SQL Server 2005 (Microsoft SQL Server 2005 Express Edition) を統合させた売上管理システム 「FlexSql売管 R0.1」をリリースいたしました。

本ソフトウェアはフリーウェアですので、ご自由にお試しください。




◇FlexSql売管 情報ページ
http://www.tpc.jp/product/fsql/


※ SQL Server と FileMaker の関連記事(2014年6月追記)
一考の価値あり? ― FileMaker のMS SQL Server との連携。
FileMaker IWP と SQL-Server 2000 によるソフトハウス用ライセンス販売管理システム



2007-11-03

イベントによるスクリプト起動プラグイン って…(4)

 前回(3)を書いてから半年以上経ってしまった…

 この記事はzippScriptを使用した会計のサブシステムをお客さんに納品したのをきっかけに書き始めたんですが、その後 FileMaker 9 の RC が出たりして SQL Server やら MySQL をいじってるうちに書くのがめんどくさくなっちゃって… と言い訳タラタラ。

 プラグインは実はあんまり使いたくはないんですが、このお客さんの要望もあり、どうしてもイベントによるスクリプト起動のプラグインが必要ということになり、予算をかけず、安定稼働して、FMアップグレード時にも迅速に互換情報やらアップグレードを提供してくれそうなって基準で(1)で挙げたような製品をチェックしました。

 最終的には、無料で、互換情報を比較的提供してくれそうなzippScriptを選択しました。 複数クライアントで10時間連続起動しても落ちずに安定して動作する、みたいなテストもやってるわけですが、やはりテスト環境と実運用環境(最大50クライアントが利用)では違うわけで、一抹の不安が… 

 つい先日、お客さんの担当者(経理)から「不気味なくらい順調に動いている云々」のメールを頂いて、一安心。開発元は FM9 の互換情報もいち早く出してるし、このプラグイン選択はまぁ正解だったのかなと思っています。 

2007-05-18

FlexSkype

Skype コンタクトを FileMaker で管理し発信するソフトウェア FlexSkype をリリースいたしました。
本ソフトウェアはフリーウェアですので、ご自由にお試しください。




本製品にユーザサポートはございませんが、何かお気づきの点やご意見等ございましたら、当ブログエントリの方までご投稿ください。

◇FlexSkype 情報ページ
http://www.tpc.jp/product/fskype/

2007-03-28

自作 vCard の Skype 取込で苦戦

Skype には vCard によるコンタクトの取り込み、および書き出しをする機能が搭載されています。

vCard とは、氏名、email アドレス、電話番号、住所情報などを登録しておく電子名刺のようなもので、記述規則は決められているものの、vCard を採用しているアプリケーション同士でデータ移行が可能になります。たとえば OutLook と Skype 間でコンタクト(ユーザ)の移行ができます。

さて、今回はこの vCard を自作して Skype に取り込むテストをやってみたのですが、これがなかなかうまくいきません。日本語情報が無視されて電話番号のみがコンタクトリストに登録されてしまいます。
ちなみに準備した vCard はこのようなものです。

BEGIN:VCARD
VERSION:3.0
N:+810000000000
X-SKYPE-PSTNNUMBER:+810000000000
X-SKYPE-DISPLAYNAME:漢字太郎
END:VCARD

これを拡張子 .vcf を付けて保存して、Skype より vCard 形式でコンタクトのインポートを実行します。
保存データ形式は最初は Shift-JIS で行いましたが、N:+810000000000 で示す番号がコンタクト名に出てきてしまいます。つまり漢字太郎は Skype には無視されてしまいました。
そこで保存データ形式を EUC や UTF-8 に変えて取り込みましたが結果は同じ。

泣く泣く Skype フォーラムの方に相談しました。すると、できたという方の返信があり、親切にも成功したファイルも添付されていました。試してみると確かに漢字太郎がコンタクトリストに表示されます。

結果、UTF-8 形式で BOM(Byte Order Mark) という先行データを取り除いた状態で vCard を保存すれば取り込める模様です。

次に、FileMaker から vCard データ書出を行った場合に、Skype に取り込めるかテストしてみましたが、フィールド索引を UTF-8(UTF-16 の誤りでした。申し訳ありません。訂正:2008/10/30) にはしたものの、やはり漢字太郎は無視されてしまいました。デフォルトのままでは BOM が付いているのかもしれませんが、こちらはもう少し調査してから追記していきたいと思います。

参考:
vCard
BOM

●2008/10/30 追加
FileMaker Pro 7 以降の xml を使った書出機能を使うことによって、vCard の書出はできる模様です。
参考:
FileMaker Business Tracker
http://www.filemaker.co.jp/solutions/fbt.html
当方の環境で試してみたところ、日本語が化けているので、こちらももうちょっと調査したいと思います。

2007-03-07

FileMaker 製品のカスタマイズ

弊社製品のカスタマイズについて

弊社の全製品(FlexSales R1.0売上猫くん4.5FlexManager1.5)はパスワードを公開しており(*1)、お客様はご自身の責任によりカスタマイズが可能です(*2)。
 当方に寄せられる質問に「FileMaker の初心者(あるいは中級者)なんですが、カスタマイズってできるものなんですか?」というものがあります。

 カスタマイズを行おうとする方は、以下を参考にしてください。

まったくの初心者の方

まったくの初心者の方にはいかなるカスタマイズもお勧めできません。ちょっとした操作ミスで復旧不能になってしまうからです。
 それでもカスタマイズしたいという方は、まず、FileMaker に付属するチュートリアル、テンプレートやマニュアル等で FileMaker の勉強をしましょう。
 そして、付属のテンプレートが問題なく理解できるレベルになれば、初級者と呼んでも構わないのではないでしょうか。

初級者または中級者によるカスタマイズ

  • 初級中級の方は原則としてオブジェクトの追加のみ行い、変更、削除は行わない
ここで言うオブジェクトとは、テーブル、フィールド、リレーション、レイアウト、スクリプト、アクセス権限、ファイル参照といったシステム(製品)を構成する要素です。
 これらのオブジェクトを変更・削除すると既存機能に障害を生じさせる可能性があるため、初級・中級の方は変更・削除は行わないようにしてください。

 追加は既存機能に影響を与える可能性が低いため、多くの場合、問題がないと思われます。たとえば、あるテーブルにフィールドを追加し、そのフィールドをレイアウトに表示させる、というのがここで言う“追加”にあたります。
 なお、リレーションの追加はお勧めできません。

上級者の方へ

上級者の方であれば、既存オブジェクトに変更を加えるリスクは十分にご承知のことと思います。第三者が作成したスクリプトを変更するのは煩わしいですし、危険ですよね?
 小生などは、自分が書いたスクリプトでさえ2ヶ月もたつと「これ、俺が書いたの?」ってこともあり、過去の記憶を辿りながらこれを修正・変更するのは骨が折れます。
 また、「これ、不要だろ?」と思ったフィールドやサブスクリプトを整理のため削除して、ボタンが正しく動作しなくなった、なんてこともちらほらと。

 それでもこの仕事をしていると、運用開始後何年も後にいままで正常に動いていた仕様を大幅に変更しなければならない、というようなこともしばしばあります。そのような場合、人間の記憶や仕様書のみに頼るのは危険です。そこで、土屋企画ではシステム分析データベースを作成し、これにより変更対象となる特定のオブジェクトがどこで使用されているかを全て検索・リストアップして印刷できるようにしています(このシステム分析データベースについては、別の機会に書きたいと思います)。
 このリストをたよりに、そのオブジェクトが使用されている他のオブジェクトの変更の必要性や変更方法を検討します。

講習

「土屋企画の製品をカスタマイズしたいが、製品の構造やカスタマイズの方法を知りたい」という方向けの講習を行っております。
 

注:

*1 FlexSales R1.0 にはパスワード公開版と非公開のバージョンがあります。詳細は→ここ
*2 カスタマイズは危険な作業です。カスタマイズ時は追記バックアップを行いましょう。

(土屋)

2007-03-01

Skypeのメモ

Skypeって…
インターネット電話のこと。 インターネットに接続されたPCにSkypeというソフトをインストールして使います。 SkypeをインストールしたPC間であれば、無料・無制限で通話ができます。


Skypeで電話と通話
SkypeOutを使用すると、Skypeから一般の固定電話や携帯に格安で電話を掛けることが可能です(これは有料)。  一分あたりの料金は以下の通り。

日本¥ 2.660(携帯¥ 17.5)、アメリカ¥ 2.380(携帯も同じ)、韓国¥ 2.405(携帯¥ 8.260)
  ↑  ↑  ↑   ↑  ↑  ↑  ↑  ↑  ↑
やっぱ、日本の電話、特に携帯の料金はオカシイんじゃないかと。
NTTの社長は「Skypeはインターネットにタダ乗りしてる」とか言ってるらしいですね・・・
料金表


Skype番号
「普通の電話・携帯からの電話をSkypeで受けるための電話番号」です。 SkypeInの電話番号に電話をする場合、コストが安くなるそうです。 掛けてくる人が実際どの程度得をするのか?ということですが、その電話から最寄のSkypeのアクセスポイント(AP)までに通常の電話料金がかかり、APからSkypeまでが無料ということなのかなぁ?と思います。


◇スカイプフォン
Skypeは基本的にはPCの前で使うものだと思うのですが、PCの前に限定されてしまうと不便です。 まあ、これは会社のビジネスフォンとかでも一緒なんですが、やはり無線のハンドセットで発信・受信・通話ができないと。 世の中にはおんなじことを考えて、商品にしてしまう人達がいるんですね。

スカイプフォンいろいろ
ヨドバシカメラで売ってるやつ←なぜかスカイプフォンの品揃えが充実している

無線LAN環境があればパソコン無しでSkypeできる無線ハンドセット
ロジテックLAN-WSPH01WH ---¥22,800

PCにUSBアダプタをつけて無線ハンドセットでSkype
comfixワイヤレスフォンSKP-001---¥11,800

一般電話とSkypeのデュアル電話機
パイオニアTF-FS55M-S ---¥14,300

普通の電話機をSkype電話として使うUSBアダプタ
DIGITAL COWBOYDC-NCTELU ---¥3,980

注:価格はヨドバシの価格。


ちなみに、うちではパイオニアのデュアル機をAmazonで買いました。 出不精のわたしにはAmazonはホントに便利。 早く来ないかなぁ…

(土屋)

2007-02-22

イベントによるスクリプト起動プラグイン って…(3)

プラグインの問題点

 一見便利なプラグインですが、サードパーティーが、ある意味無理矢理機能を拡張しているため、ユーザが意図する通りに動かない、動作が不安定ということはある程度覚悟しておく必要があります。


 小生が開発した環境では、フィールド定義の「入力値の自動化」の計算式で、以下のような現象が発生しました。
  1. ヘッダレコード(「レイアウト設定」で「レコードを表示:」で指定するテーブルのレコード)が未確定の場合、ポータル行のフィールド入力時にスクリプトが起動するように設定がなされていても、スクリプトは起動されない
  2. スクリプト起動を設定したフィールド入力中にレコードが切り替わると、不適切なレコードに対してスクリプトが実行されてしまう
  3. スクリプト起動を設定したフィールド入力中に他のボタンを実行すると、スクリプトが実行されない、または不適切なタイミングで実行される

 また、アクセス権設定の計算式により、カーソルがフィールドに入ったときにスクリプトを実行するように設定しましたが、ヘッダレコードで2つめ以降にカーソルが入ったレコードでは、スクリプトが実行されませんでした。


 上記は小生の環境で発生したもので、必ずしも他の環境で発生するとは限りませんが、いずれにしてもスクリプト起動プラグインを使用する場合は十分なテストを実行し、問題を発見して、回避策を自分で施さなければなりません。 

 また、FileMaker Pro のアップグレード時にプラグインは遅延無くアップグレードされるのか、プラグインを連続運用しても安定して動作するのか、運用開始後プラグインに問題があると判明した場合の回避策などを、重要なアプリケーションでは考えておく必要があると思います。

 今後、時間があれば土屋企画で施した対策を書いてみます。
 
 

2007-02-19

FileMaker プラグインを FileMaker Server から自動的にダウンロードさせる方法

FileMaker プラグインは、ファイルメーカー Pro 6 までは各クライアントコンピュータに手作業でインストールする必要がありましたが、FileMaker 7/FileMaker Server 7 からは、サーバにアクセスした時点でクライアント側のプラグインの有無をチェックし、必要に応じて自動的にクライアントにダウンロードして有効化できるようになりました。

つまり、このスクリプト自動ダウンロード機能を利用すれば、クライアント台数の多い企業ならプラグインのインストール作業が大幅に軽減されるだけでなく、インストール漏れが発生するというトラブルも発生しにくくなります。

今回は Windows 環境で FilMaker Server からプラグインをクライアントコンピュータに自動インストールする方法について説明します。

* プラグインの自動ダウンロードの詳細は、FileMaker 社の FileMaker Server 8 プラグインの更新ガイド (PDF) を参照してください。


◇ 準備するもの
1. AutoUpdate プラグイン
これは FileMaker Pro 7 以降をインストールしたときに標準でインストールされているプラグインです。このプラグインを使って FileMaker Server にアクセスし、バージョンチェックとダウンロードを行います。
あえてここでは何もする必要はありませんが、AutoUpdate プラグインのインストール状態は以下の画面からチェックできます。



2.FileMaker Server 7 または 8
インストールして、起動しておいてください。
3. お好みの FileMaker プラグイン
今回の例では無料プラグインの zippScript を例に挙げます。以下のリンクよりスクリプトを入手してください。
http://homepage.mac.com/jkornhaus/filemaker/Downloads.html


◇操作方法

1. zippScript をサーバ環境に配置します。下図のようにディレクトリを作成してくだい。
* スクリプト名を記述したディレクトリと、それに対応するバージョン名を入れたディレクトリをそれぞれ用意します。


2. FileMaker Pro 7~8.5 を開き、新規ファイルを作成して、プラグインダウンロード用のスクリプトを作ります。

(スクリプトファイルは準備中です。暫くお待ちください。)

3. ファイルオープン時に 2. のスクリプトが実行されるように設定しておけば、必要に応じて FileMaker Server からローカルコンピュータにプラグインがダウンロードされ、有効化されます。

イベントによるスクリプト起動プラグイン って・・・(2)

スクリプト起動プラグインを使ってみる

前回書いたようにスクリプトの起動は計算式で指定します。ここでは、フィールドオプションの「自動入力」の計算式を使用し、数値フィールド[価格]にユーザが入力した値が10000以上であれば警告メッセージを表示するスクリプトを起動するようにします。

「入力値の自動化」タブで計算式を書く
注:
  • 上式に[価格]があることに注意。
  • “OK”クリック後、「フィールドに既存の値が存在する場合は置き換えない」をチェック。

入力値の警告し、キャンセルならば値をクリアするスクリプト

 後はレイアウトにフィールドを配置し、[価格]フィールドに10000以上の値を入れると警告スクリプトによりメッセージが表示されます。


 ばら色に見えるプラグインですが、いくつかの問題があります。次回はその問題について書きます。

2007-02-15

イベントによるスクリプト起動プラグイン って・・・(1)

スクリプト起動のタイミングをイベント対応にしたい

FileMaker Pro(以下、FM)のスクリプトを起動するには、ボタンをクリックするか、またはスクリプトメニューから目的のスクリプトを起動するしかありません。
 VBやJavaScriptのように、フィールド値の変更等なんらかのイベントが発生したときにスクリプト(ルーチン)を起動できると便利なのですが、FileMaker にはその機能がありません。これを実現させるのが、サードパーティ製のプラグインと呼ばれるプログラムです。

スクリプト起動プラグインのインストール

スクリプト起動プラグインはさまざまなものがありますが、ここでは「zippScript」という製品の使用方法をご紹介します。

 まず使用するプラグインをダウンロードします。必要に応じて解凍し、zippScript.fmx という名称のファイルを FileMaker Pro\Extensions\ に入れ、FileMaker Pro を起動します。

 これでプラグインのインストールは完了です。 

スクリプト起動プラグイン製品
製品名 価格
zippScript freeware
DoScript freeware
Events 4.0 US$129
ScriptFire US$59
Activator US$89
EventScript freeware


◇イベントによりスクリプトを起動させる

では、スクリプトはどのようにすると起動できるのかというと、計算式でプラグインが提供する外部関数を実行して起動します。 スクリプトを起動する計算式は、フィールド定義の入力値の自動化/制限、計算フィールド、アクセス権設定、ポップアップヘルプの設定で指定可能です。 これにより、以下のイベント発生時にスクリプトが起動できることになります。

  1. カーソルがフィールドに入った

  2. レコードを表示/作成/削除した

  3. フィールド値が変更された

  4. 未保存の計算フィールドが表示された

  5. 特定のオブジェクトをマウスオーバーした
zippScript には、zippScript Example.fp7 というファイルが付属していて、これを分析するとイベントに基づくスクリプトの起動方法(スクリプト起動用外部関数の記述方法)が詳しくわかります。

次回

次回は zipScript 外部関数の使用方法と、プラグインの問題点を挙げたいと思います。

(土屋)