2008年3月17日月曜日

Firefox で検索フィールドのないサイトに「スマートキーワード」を設定する

1. スマートキーワードで検索

Firefox には「スマートキーワード」という検索機能がある。

Firefox サポート - チュートリアル - 様々な Web 検索機能 によると、

ロケーションバーから簡単に Web サイトを検索できるようにするもう一つの仕組みです。

スマートキーワードが設定してあるサイトでは、ロケーションバーに

キーワード 検索ワード

と入力することで検索を行うことができる。

 

楽天にスマートキーワードを設定して検索した場合

例えば、楽天市場 にスマートキーワードを設定しておけば、(ここでは rk)

rk オメガ スピードマスター

SnapCrab_No-1383

とロケーションバーに入力すれば、オメガ スピードマスターを楽天から検索できる。

SnapCrab_No-1386

 

2. スマートキーワードの設定方法

スマートキーワードの設定を「楽天市場」を例に取り上げて行う。

  1. 楽天の検索サイト内にある「検索するためのフィールド」で、右クリック > この検索にキーワードを設定 SnapCrab_No-1384
  2. ダイアログが表示されたら、
    1. 「名前」を適当につける。
    2. 「フォルダ」を適当に選択する。
    3. 「キーワード」には、短かい文字を英数でつける。SnapCrab_No-1382

キーワードは短い方が検索しやすくなる。ただし、他のスマートキーワードと重複しないように気をつけること。

 

3. 検索フィールドのないサイト内を検索

ただし、ウェブサイトには、必ずしも検索のためのインターフェイスがあるとは限らない。

例えば、「The Haskell 98 Language Report」(http://www.sampou.org/haskell/report-revised-j/index.html)には検索フィールドがない。そのため、Goolge のサイト内検索を利用して検索する必要がある。

検索したい言葉 site:www.sampou.org inurl:haskell/report-revised-j/

site: は、Google検索の秘訣――第5回 信用できる情報を収集したい によると、

「site:」コマンドを使った検索は、「ドメイン制約検索」とか「ドメイン指定検索」と呼ばれています。これは、Googleの検索オプション画面では、「ドメイン」の検索オプションに相当します。

inurl: は、Google検索の秘訣――第7回 教えてもらったあのサイト、何だっけ? によると、

  • 「inurl:」コマンド

WebページのURL文字列に限定して検索します。

サイト内検索を毎回入力するのは面倒なので、スマートキーワードを設定しておきたい。

 

新しくブックマークを作成し、スマートキーワードを付ける

「The Haskell 98 Language Report」の場合、新しくブックマークを作成し、上記のサイト内検索をしたときの URL を参考にして、以下の URL を入力する。

http://www.google.co.jp/search?q=%s+site%3Awww.sampou.org+inurl%3Ahaskell%2Freport-revised-j%2F

%s がスマートキーワードで単語を検索したときに、検索対象の単語が渡される変数を表わす。

 

関連記事

2008年3月13日木曜日

Access でテキストボックスを日付入力に適した型にする

フォームデザインにおいて、テストボックスのプロパティ > データ > 定型入力 を選択し、定型入力ウィザードを起動する。

080313-008

 

日付の定型入力を選択して、完了ボタンを押す。

080313-010

 

結果、テストボックスに入力しようとすると定型入力の状態になる。

080313-012

 

参考サイト

2008年3月10日月曜日

Access で複数のサブフォーム間でのフォーカスの移動

サブフォーム間を移動するためのショートカットキー

サブフォーム間を移動するためのショートカットは、 Ctrl + Tab 。サブフォーム内で Tab キーを押し続けると、サブフォーム内に限定されたレコード間のフォーカスの移動が行われる。帳表の形式である場合、通常の入力において、サブフォーム内の新しいレコードを追加するための動作が生じる。

 

1 対 1 のサブフォーム

あるフォームに、複数のサブフォームを存在させることがある。その中に、親となるフォームに対して、 1 対 1 の関係にあるサブフォームがあるとする。この場合、データの入力において、タブキーを押し続けると、上記と同様に、サブフォーム内で新しいレコードを追加しようとする動作が生じる。 親フォームに対して 1 対 1 の関係のサブフォームなので、そのまま追加すると、主キーの制約違反の通知がされる。

1 対 1 の関係である場合、最後のフィールドの入力が終ったら、レコード追加の動作が生じるのではなくて、できれば、次の入力フィールドへ移ってほしい。例えば、入力中のサブフォームから、別のサブフォームのフィールドへフォーカスが移ってほしい場合、入力が終ったフィールドの「フォーカス喪失時」のイベントにおいて、以下のようなコードを記述することによって、タブキーによるスムーズなデータの入力を実現できる。

Forms!フォーム名!サブフォーム名.SetFocus

フォーカスされた方のサブフォームでは、「フォーカス取得時」のイベントで対応する。

RTM は IE コンポーネントを使った軽いブラウザで - KIKI

Firefox は RTM を使うのには向かない。理由は二つ。

  • IME が「直接入力」の状態になっていないと、項目を追加するためのショートカットキー (t) を使えない。
  • セレクトボックスで、マウスホイールによるスクロールができない。

前者は致命的。項目の追加は素早く行いたい。そういうときに、IME の状態を考慮しなくてはいけないのは面倒。また、項目を入力する度に、直接入力と日本語入力を切替えるのは非常に手間。

(追記(2008.6.19) : Firefox 3 になったら、IME の切替えをしなくても入力できるようになった。^^ )

後者は、作成しているリストの数が少なければ問題なし。しかし、自分はリストをたくさん作る運用をしているので、これまた適さない。 ^^;

上記二つは、IE において問題なく使うことができる。日本語入力ができる状態で t のキーを押せば、すぐに日本語を入力することができるし、また、セレクトボックスでマウスホイールを使うこともできる。しかし、普段使っているのは、Firefox 。 RTM のためだけに IE を起動するのもどうかと。自分のパソコンは、そんなに性能がいいわけではないので、IE の起動には少し時間がかかる。

RTM は常に起動しておきたい。気がついたことがあったら、忘れないうちにメモをしておきたいからだ。いつも起動している Firefox で管理できればそれに越したことはないけれど、今回は諦めた。しかし、何もかも Firefox でということに固執することはない。Firefox 以外のブラウザとは独立したブラウザで入力すれば、ひらめいたときに、タスクバーを見ればアプリをすぐに探し出すことができるメリットもある。

さて、問題は IE をどうするか。軽くて、IE 系のブラウザを探すことにした。

KIKI

ブラウザ KIKI 、特質はコンパクトさと起動の速さとツリー管理 によると、

いつも感じるのですが、この KIKI というブラウザは好感がもてます。 ...

立ち上がりは、他のどのブラウザよりも速いのではないでしょうか。1秒とかかりません。 レイアウトもいいですね。すっきりしています。

080310-001ウェブブラウザ KIKI のホームページ からダウンロードして試してみた。確かに、起動が目茶早い。 (@_@;) 瞬間に立ち上がる。これなら RTM 用のセカンドブラウザとして利用しても抵抗がない。

設定

起動時に、 RTM のページが表示されるようにした。

お気に入りに、「start」 (任意の名称) という名前のフォルダを作成し、 RTM のページを登録。

メニューより、ツール > KIKIオプション > 基本設定。起動をするときの動作 > 「起動時に開くページ」を「お気に入りフォルダ」にして、「お気に入りフォルダ」に、新たにお気に入りに作成した「start」を指定した。複数のページを指定できるようだったので、Prism で起動していた Google カレンダーも試しに KIKI で起動するようにしてみた。

その他

KIKI をいつも起動しておくようにしていると、 Firefox で見ているサイトを IE で開きたいときに便利なプラグインが必要ないことに気がついた。IE View、IE Tab を利用していたが、Firefox で見ているサイトを KIKI で見たい場合は、シンプルにアドレスバーに表示される favicon をつかんで、KIKI に D&D 。頻繁に切替えるわけではないので、これで十分だ。

080310-002

2008年3月9日日曜日

FileMaker と Access の入力フォームにおける操作モデルの違い

FileMaker、Access ともにデータを入力するためのフォームをお手軽に作成できる。 FileMaker に慣れていると、 Access のフォームにおいて、微妙な挙動の違いに気がつく。

 

FileMaker の入力フォーム

FileMaker は、フォームの入力に際して、「新規レコード」を作成しなくてはいけない。(フォームを作成して、はじめてフォームが表示されるときには、「新規レコード」が一つ作成された状態になっている。)

20080309fm1

 

そのため、「レコード削除」をして、すべてのデータを削除した状態でフォームに入力しようとすると、「新規レコード」を作成するように促される。

080309-003

 

つまり、「フォームにおける入力する場」と、「レコードの存否」が対応している。

 

Access のフォーム

これに対して、Access のフォームは FileMaker の動作とは異なる。以下のフォームは、対応するテーブルにデータが全く入力されていない状態である。

080309-007

 

メニューを見ても、レコードの削除はできない。よって、テーブルにデータはない。

080309-008

 

ここで FileMaker との違いが浮き彫りになる。 FileMaker と同じつもりで、「新規レコードを作成する」に相当する「新しいレコード」を選択しよう思っても選択できない。

080309-009

 

しかし、不思議なことに、フォームにデータを入力しようとすると、データを入力することが可能だ。そして、入力をしたと同時に、上記の「レコードの削除」と「新しいレコード」の選択ができるようになる。

つまり、Access においては、FileMaker の「フォームにおける入力する場」が、フォームを開くと同時に自動的に生成されていると類推することができる。ただし、その「場」は全く性質が異なる。フィールドへ入力しただけでは、テーブルにデータは反映されない。意識的に「レコードの保存」を行うか、または、「次のレコードへ移動する」か、「フォームを閉じる」とテーブルに反映される。 FileMaker のように、新規レコードを作成したときにレコードが保存されるのに比べると複雑に感じる。

Access では、フォームに入力しただけでは、データは登録されない。「フォームに入力する場」はあるけれど、テーブルからは独立しているようなものと言えばよいのかな。

 
オートナンバー型

例えば、オートナンバー型のフィールドがあった場合、オートナンバー型以外のフィールドへの入力がされたときになって、はじめてオートナンバーが生成される。

 

面倒になること

例えば、以下のように、あるフォームに新しいレコードを作成するときに、同時にそのデータに対応する他のデータを作成したいということがあったとする。

  1. レコードを作成する
  2. 特定のルールによって、上記に対応するデータを作成する

FileMaker においては、新規レコードを作成する処理において、同時にデータを作成する処理を加えればよいはずである。これに対して、Access ではデータを生成するタイミングに気をつけなくてはならない。

 

例えば、新規ボタンを押さなければ、フィールドに入力できないように VBA でコントロールする。新規ボタンを押したときに、レコードを保存し、それと同時に対応するデータを作成。そして、作成したデータを再度フォームに読み込むという手続きをとる必要がある。

手順をまとめると...

  1. ユーザがフォームを表示させる。
  2. システムは、フォームのフィールドを操作できないようにする。
  3. ユーザは、「新規ボタン」を押す。
  4. システムは、フォームに対応したレコードをテーブルに保存する。同時に、そのレコードに対応した他のテーブルのデータを生成し、テーブルに保存する。フォームの内容をリフレッシュすることによって、ユーザにデータを提示。その後、フォームのフィールドを操作できるようにする。
  5. ユーザはデータを入力する。

 

新規レコードの作成においては、フォームの .NewRecord で、テーブルに反映されてないフォームの内容であることを確認した場合、フィールドのロックを解除してデータの生成。そうでない場合は、「新しいレコード」を作成してからロックを解除して、データの生成をする。

 

うーん 、なんかややこしい。方法が間違ってるのかな... ^^;