人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WEB画面が動的に変化するページを作成する方法があれば教えて下さい。
※下記システムは例です。

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

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


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

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

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

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

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


●質問者: futurista
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apache HTML JavaScript Web アプリケーション
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● SALINGER
●20ポイント

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

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

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

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

ダミー

◎質問者からの返答

回答有難うございます。

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

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

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

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

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

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


2 ● lunlumo
●47ポイント

一番手軽な方法は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

◎質問者からの返答

回答有難うございます。

>> SSI

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

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

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

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

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

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

了解です。


3 ● Yota
●47ポイント

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

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

参考

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

◎質問者からの返答

回答有難うございます。

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

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

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

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

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

確かにそうですね。

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

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

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

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


4 ● SALINGER
●47ポイント

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

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

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

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

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

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

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

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

ダミー

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ