プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。
このカテゴリーでいいのかどうか分かりませんが、
サーバーサイドで実現できないかどうか、質問させてください。

現在、ひとつのLAN上に、計測器(X)とパソコン(P)が接続され、
PはXから定期的に計測値を取得してデータベースにに書き込んでおり、
Pでは最新値や経過時間による値の変化のグラフを表示しているのですが、
これをWEBからいつでも誰でも見られるようにできないかと言われています。
コンピュータに詳しくなく、よく分かりません。

ホームページなどは、契約したレンタルサーバー宛てにHTMLをFTP送信すれば表示されます。
(実際ウチの会社のHPもそうやって月に一度私がアップして更新しています。)、
同様に、定期的にグラフを画像(GIF等)化し、HTMLに組み込んでFTPでサーバーにアップするのも一つの手だと思いました。(※)
でも、毎回グラフを画像化するのに時間がかかったり、送信の付加も高そうです。

そんな中、最近サーバーサイドの言語もいろいろあって、利用できないかと思っているところです。
しかし、素人の私はサーバーサイドと言うものを、
・サーバー側にDBがあり、
・クライアントからのリクエストに応じてそのDBから値を取得して都度HTMLを作り、
・そのHTMLをクライアントに返す
というもの、と理解していまして、そこで質問なのですが、

1)
サーバーサイドというものについて、上の私の理解は合っていますでしょうか?

2)
1)での私の理解が合っているとすると、今回のケースのようにDBがこちら側にある場合、サーバーサイドでクライアントからの要求に応じてHTMLを作って送ることはそもそもできないのでしょうか?

3)
2)のことができないとすると、サーバー上にDBがあればできるのでしょうか?
つまり、サーバー上にDBを置き、PはXの値を自分のDBに登録するのではなく、サーバー上のDBに書くようにすればできるのでしょうか?
もしできるとしても、サーバー上のDBの値を更新する方法は分かりませんが...
でもなんとかなるならサーバー側でサーバーサイドの言語を使ってグラフが描けそうな気が...

4)
もし3)のことができないとすると、上の※の方法しかないのでしょうか?

5)
そもそも、今回の私のケースのような場合、一般的にどのような方法で実現できるでしょうか?
サーバーのレンタル代などのランニングコストのかからない方法だとありがたいのですが...

サーバーサイドでなんとかなりそうなら、
最近興味が出てきましたので頑張って勉強したいと思います。
Rubyとか、MySQLとか...

正直言って現時点ではちんぷんかんぷんなため、
とりとめのない質問のようになってしまい申し訳ありません。
どうぞよいお知恵をかしてください。

よろしくお願いいたします。

A 回答 (5件)

No.4です。

Ruby MySQLのことが出てきましたので、補足です。
質問者さんが職業としてのプログラマーを目指しているのではなく、お手軽にデータベースを使いたいのでしたら、Ruby on Railsに入っているactiverecordによるデータベースアクセスをお勧めします。
Ruby on Railsをインストールすればすぐに使えるようになります。もしかしたらsqlite3やMySQLを使うために追加ソフトが必要かも知れませんが、ネットで情報がたくさんあります。
sqliteが簡単なので例を示します。GUIで設定できるソフトがいろいろあるので、それで
データーベースファイル名 ondo.sqlite
テーブル名 temperatures
フィールド名 dateとか適当にいれて
データも表ソフトのような感じで仮に入れておきます。
Rubyのプログラムの全部を書くと
require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "ondo.sqlite"
)
class Temperature < ActiveRecord::Base
end

p Temperature.find_each{|a| p a}
以上で、データベースに接続して全部のデータが出力されます。プログラムを知っている人にとってはものすごく不思議な感じですが、activerecordがうまく処理してくれます。
ActiveRecord::Base.establish_connection(
の中をMySQL用に変えればそのままMySQLで使えるようになります。SQLは全然出てきません。
ご参考に

この回答への補足

ki073 さん、たびたび回答をいただき、ありがとうございます。

私は、データの加工やその他社内アプリの作成をすることがあって、
ソフトハウスなどのプロのプログラマーさんには及ばないですが、
プログラミングの入門的な知識は一応ありまして、
C++, .NET系VB, JAVA, それにSQLは多少は使えます。

ところが、今回教えていただいたコーディングでは、
ぱっと見ただけでは何をやっているのかさっぱり分かりませんでした。
やはり、勉強しないといけませんね。

もしかすると間違っているかも知れませんが、
この教えていただいた例の場合ですと、
サーバー側のデータベース(MySQL)へのデータの登録は、
クライアントからGUI画面を使っておこなうということでしょうか。
クライアントからは人の手を介さず自動でサーバーに対してデータを送りたいのです...。

それで、
・クライアント側にはデータ(CSVとかSQLか?)を送信するプログラム
(プログラム言語は何でもかまわないのです。)
・サーバー側では受信したデータを元にMySQLに値を登録するRubyのプログラム
の2種類のプログラムが必要なのでは、と思った次第でした。
でも、そもそもこういったサーバー&クライアントの仕組みが全然理解できてないせいで、
的外れな勘違いをしているのかも知れません。

補足日時:2012/02/05 23:10
    • good
    • 0
この回答へのお礼

ありがとうございました。
クライアントから人の手を介さず自動でサーバーに対してデータを送るのはどうすればよいか、
ローカル側、サーバー側それぞれ、おおまかにどういった処理になるのか、
など、またあらためて質問させていただきたいと思います。
もし見かけましたら、またご教授ください。
まずは、少し勉強ですね。

お礼日時:2012/02/09 12:17

No.3の続きです。


不特定多数への公開でしたらwebサーバを使う方が便利でしょうか。
メールを送るのではなく、できたグラフ画像をwebサーバに定期的にアップする方法です。
spawnやexpect命令を使えば、サーバにログインしftpなどでアップロードすることも自動的でできます。
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございました。
お礼が遅くなって申し訳ありません。

メールはやはり利用予定者の評判が芳しくなかったです。

この回答は、質問の(4)の方法に近いものだと思っていますが、
命令まで教えていただき参考になりました。
現状の私の知識ではこれが最も実現可能だと思っています。
しかし、会社の方では、当面現状のままの運用でいこうということになりました。

でも、MySQLとRubyなどを使ったウェブでの閲覧の仕組みを勉強してみようと思います。

どうもありがとうございました。

お礼日時:2012/02/04 14:04

多少の時間遅れがあってもよいのであれば、メールを使ったシステムはいかがでしょうか?



利用者側から見ると、登録しておけば定期的にデータが送られてくる、しょっちゅうメールが届くのが鬱陶しいのなら、リクエストメールを送ればデータが送られてくるなどができます。

それ専用のメールアドレスを作っておき(既存のメールサーバでよい)、リクエストメール受付用にします。

メールのクライアントやデータベースに接続するライブラリを使えば、メール送受信やデータの取得が比較的簡単にできます。データのグラフ化も、gnuplotやRなどにデータを送り込めばpdfなどでグラフの作成ができます。(Rubyの場合しかわかりませんが、他のプログラム言語でも可能なはずです)

もう必要がなく使っていませんが、機器の管理に似た簡単なものを作ったことがあります。
    • good
    • 0

1)その認識でOKだと思います。


サーバ側でなんらかの処理を入れてHTMLを返します。
2)公開サーバから見えないところに(社内LAN等)計測データDBがある場合、直接は出来ません。(おそらく現状)

レンタルサーバを既に借りているのであれば、そのレンタルサーバのDBに計測データDBを書き込むプログラムを作り、そのプログラムに対して計測データDBの値を送信します。
(その送信を定期的に行なうようなプログラム計測データDBを参照できるマシンに入れます)
レンタルサーバ上のDBへ書き込めるかはそのXとPの仕様次第だと思います。出来ない場合は上のようなプログラムを作って転送します。

データさえ見えるところに書き込めればあとはデータベースからデータを取得してHTMLを返すものを作ればOKです。
挙げられているようにPHPやRuby,Perlであればレンタルサーバで利用可能だと思います。
(Java&JSPは使えるサーバ少ないです)

・Pより外部サーバDBへデータを転送するプログラム(定期的に呼び出すもの)
 データベースを参照できてネットワークアクセスできる言語なら何でも良いと思います。

・レンタルサーバ上でDBを読み込んで画像を生成したり画面を表示するプログラム
 PHP,RUby,Perl等

もしくは
・Pより表示するもの(グラフやHTML)の作成してアップロードを自動化するプログラム

方法はいろいろあると思いますが、外部DBにデータを転送してあげるのが簡単かもしれません。
ようするにX,Pから吐き出したデータを見える場所に置けるかどうかが肝だと思います。

この回答への補足

レスポンスが遅くなって申し訳ありません。
大変参考になりました。

会社の方では、結局今までの運用を続け、特に何もしないことになってしまいました。

が、個人的にサーバーサイドのプログラムに興味があり、
試しに作ってみようかと考えています。

サーバーサイドでDBをアクセスして動的にHTMLを作るということについては、
その言語がPHPであれ、Rubyであれ、Java+JSPであれ、なんとなくイメージできます。
実際作るとなると勉強はしないといけませんが、なんとかなりそうです。

イメージできないのは、データの受け渡しの部分です。
ローカル上のDBの内容を、レンタルサーバー上のDB(MySQLを使ってみようかな)に反映させないといけないですよね?
これにはローカル側用とサーバー側用にそれぞれプログラムを作る必要があるのでしょうか。
(ローカル側)
定期的にローカルDBを読んでサーバーにその情報を送るプログラム。
CSV形式などでデータを送る?それとも、SQL文にして送る?
(サーバー側)
ローカルから受けとった情報をサーバーDBに書き込むプログラム。
CSV形式で受けとったなら、SQLを作ってサーバーDBに書き込む
SQL文を受けとったなら、それを実行する
みたいな...。
それとも全く違う仕組み?
などなど...どんな仕組みで実現できるか素人頭で考えると、次々疑問が沸いてきます。
もう少し勉強してからでないとマトモな質問もできないかな、とかも思いますが...。

もしよろしければ、この部分について、簡単に教えていただけたら嬉しいです。

補足日時:2012/02/04 14:29
    • good
    • 0

1)だいたい合っているかと。



2)その計測器の中身はWWW(world wide web)に公開しても問題がなく(つまり、赤の他人に見せていいのかどうかという意味。)、技術的に可能であればOKでしょう。
(でも社内ネットワークに繋がってるから駄目なんじゃないかなぁ。LAN上のファイルにアクセスされたらやばいかと思う。)

3)ここで言うDBというのはMysqlとかでしょうか?MysqlであればPHPとかPerlとかからアクセスできるはず。
DBの値がとれればグラフに利用できるかもしれませんね。

4) 3)が無理だとそうなりそうですね。

5) DBの種類と、データの格納のされ方とかに依存するので、取り出せるデータがなんなのか、というのがはっきりしないと、何が実現可能なのかが判断できないかと思います。

データさえ取り出せれば、グラフの生成は自動化できるかも知れないですね。
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございました。
お礼が遅くなって申し訳ありません。

結局この件は簡単にできそうにないなら保留ということになり、
当面は社内ネットワーク上からのみ閲覧するという現状での運用のままとなりました。

でも、個人的にはなんとかしたいと思っていまして、
MySQLとRubyなどを使ったウェブでの閲覧の仕組みを作りたいと思っています。

未経験で分からないことが多いので、またここでお世話になるかも知れません。
その際よろしければまたご教授いただけましたら嬉しいです。

ありがとうございました。

お礼日時:2012/02/04 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!