WEB画面が動的に変化するページを作成する方法があれば教えて下さい。

※下記システムは例です。

WEBサーバ側では、下記のようなデータを持ったHTMLファイルTENKIを持っており、
ブラウザ側で"表"として表示します。
東京 天気 温度 湿度
大阪 天気 温度 湿度
福岡 天気 温度 湿度

また、サーバ側では、WEBサーバ(Apache)と別にアプリケーションBを起動させておき、
東京、大阪、福岡の天気、温度、湿度を収集しています。
(アプリケーションBは自分で作成したCのプログラム。)


アプリケーションBが収集したデータを基に、ユーザ操作なしに
WEBブラウザでの表示を変化させたいと考えています。
(例:東京 晴マーク→雨マーク)

今のところ、アプリケーションBでTENKIを書き換え、
JavaScriptを使って、一定時間でTENKIをリロードさせることを
考えています。

しかし、「アプリケーションBでTENKIを書き換え」が、
かなり面倒そうです。

別の方法があれば、教えて下さい。
(以前、同じような質問をしておりますが、
前提条件をもっと明確にして、再質問しております。)

以上、よろしくお願いします。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2007/06/23 22:04:31
  • 終了:2007/06/30 00:41:36

回答(4件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/06/23 22:42:33

ポイント20pt

データベースを使えばいいと思いますよ。

サーバ側でPHPやPerlを使ってデータベースから最新の情報を取得して動的にページを生成します。

アプリケーションBはデータを収集して、データベースにデータを追加する動作をさせればいいです。

データベースに過去のデータも集めることで、過去の天気にアクセスしたり、平均気温を出したりいろいろ利用できますし。

ダミー

id:futurista

回答有難うございます。

>> データベースを使えばいいと思いますよ。

どのようなデータベースを想定しているのでしょうか?

>> サーバ側でPHPやPerlを使ってデータベースから最新の情報を取得して動的にページを生成します。

CGIは、どのタイミングで動作すればよいのでしょうか?

WEBページをリロードする時に、CGIも同時に実行されるのでしょうか?

(初歩的な質問でしたら、すいません。)

2007/06/25 18:30:00
id:lunlumo No.2

lunlumo回答回数107ベストアンサー獲得回数142007/06/24 23:08:58

ポイント47pt

 一番手軽な方法はSSIでしょうか。includeでプログラム側で書き出したファイルを読み込むか,execを使ってプログラムを実行してやれば,HTMLファイルに実行結果だけを取り込めます。

http://www.tohoho-web.com/wwwssi.htm

 HTMLを書き出す方向であれば,テンプレートエンジンを使うと比較的楽にHTMLファイルを書き出せます。

http://bayside.upper.jp/pukiwiki/index.php?ClearSilver

 ちなみに,一定間隔で再読み込みを掛けるだけであれば,JavaScriptを使わなくてもMETAタグで実現できます。

http://www.tagindex.com/html_tag/page/meta_05.html

id:futurista

回答有難うございます。

>> SSI

>> テンプレートエンジン

使えそうですが、実際に上記の技術を使うと、どんなページが

出来上がるのかイメージがわきません。

上記の技術を使っているWEBページ等があれば教えて頂けませんか?

>> http://www.tagindex.com/html_tag/page/meta_05.html

これは自ページを指定することで、リロードするわけですね。

了解です。

2007/06/25 18:31:04
id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/06/25 08:40:25

ポイント47pt

setTimeoutで関数を呼び出すところは同じですが、Ajaxを使ってページの一部のみ書き換えるようにしたほうがいいと思います。なぜならページ全体をリロードさせると、画面が一瞬消えてユーザーに不快感を与えるし、変更のないところまでリロードするため余分な時間がかかるからです。

天気情報を返すプログラムはCGIで作っておいて、GETリクエストで呼び出して、そのリターンで書き換えるようなイメージです。上に書いたのと同じ理由で、現在表示している情報から変化のあった部分だけ書き換えるようにしたらもっと効率がいいと思います。

参考

http://allabout.co.jp/internet/javascript/closeup/CU20050515A/in...

id:futurista

回答有難うございます。

>> setTimeoutで関数を呼び出すところは同じですが、Ajaxを使って

>> ページの一部のみ書き換えるようにしたほうがいいと思います。

>> なぜならページ全体をリロードさせると、画面が一瞬消えてユーザーに

>> 不快感を与えるし、変更のないところまでリロードするため余分な

>> 時間がかかるからです。

確かにそうですね。

ちょっと別件かも知れませんすが、

Ajaxって、クライアント側に特に何かを設定、インストールしておく

必要があるってわけではないですよね。

一応、クライアント側には、WEBブラウザしかインストールしない予定ですので。

2007/06/25 18:31:32
id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692007/06/25 22:24:04

ポイント47pt

このwebサーバがレンタルならば使えるデータベースに制約がありますが、PHPとMYSQLならば比較的楽に作れると思います。

その場合私ならCは詳しくないのでC#かPHPでMYSQLを更新するプログラム(アプリケーションB)を書きますけど。

CGIとは違いますが、PHPが動作するタイミングは表示したときとsetTimeoutで自動更新されるときです。その都度PHPでMYSQLからデータを取得して動的にページを生成することでデータは変化します。

そのときにAJAXを使うことでページ全体をリロードしないので見やすくなる効果が狙えます。というか勝手にページ全体がリロードするのはあまりよくないですね。

AJAXはJavaScriptだけで実現する技術ですのでクライアントはそのままです。(サーバ側でクロスプラウザは考慮する必要があるが)

ページにアクセスするたびにデータベースからデータを取得するとオーバーヘッドのような感じがしますが、例えば東京だけの1週間の天気の移り変わりとか、去年の今日の天気ですとか、ページを見る人によってほしい情報が違うので、たくさんの要求を処理するにはシンプルな方法だと思います。

ただ、自分が利用するためだけなら書き出されたHTMLを表示するだけでもいいかもしれません。

機会があればデータベースにも挑戦してみることをすすめます。

ダミー

  • id:Yota
    回答3ですが、ブラウザにプラグインなどは必要ありません。
    でもセキュリティ上WEBクライアントがJavaScript(IEではJScript)を実行させないというなら話は別です。
    noscriptというタグの間にメッセージを書いて「JavaScriptがきらいな人は残念ながらさようなら」とやるしかありません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません