PHP,RUBY,Perl,JSPで実現可?

このQ&Aのポイント
  • PHP、Ruby、Perl、JSPなどのサーバーサイド言語を使用して、データベースから値を取得し、グラフを作成してウェブ上で表示することは可能です。
  • サーバーサイドの言語を使用することで、定期的に計測値を取得し、グラフを画像化してHTMLに組み込み、FTPでサーバーにアップする手間を省くことができます。
  • サーバーサイドの言語を学ぶことで、自分自身でグラフを描くことが可能になります。また、サーバー上にデータベースを置くことで、計測値をサーバー側に保存し、それを基にグラフを描画することもできます。
回答を見る
  • ベストアンサー

PHP,RUBY,Perl,JSPで実現可?

はじめまして。 このカテゴリーでいいのかどうか分かりませんが、 サーバーサイドで実現できないかどうか、質問させてください。 現在、ひとつの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とか... 正直言って現時点ではちんぷんかんぷんなため、 とりとめのない質問のようになってしまい申し訳ありません。 どうぞよいお知恵をかしてください。 よろしくお願いいたします。

  • PHP
  • 回答数5
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.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は全然出てきません。 ご参考に

tyaeyama
質問者

お礼

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

tyaeyama
質問者

補足

ki073 さん、たびたび回答をいただき、ありがとうございます。 私は、データの加工やその他社内アプリの作成をすることがあって、 ソフトハウスなどのプロのプログラマーさんには及ばないですが、 プログラミングの入門的な知識は一応ありまして、 C++, .NET系VB, JAVA, それにSQLは多少は使えます。 ところが、今回教えていただいたコーディングでは、 ぱっと見ただけでは何をやっているのかさっぱり分かりませんでした。 やはり、勉強しないといけませんね。 もしかすると間違っているかも知れませんが、 この教えていただいた例の場合ですと、 サーバー側のデータベース(MySQL)へのデータの登録は、 クライアントからGUI画面を使っておこなうということでしょうか。 クライアントからは人の手を介さず自動でサーバーに対してデータを送りたいのです...。 それで、 ・クライアント側にはデータ(CSVとかSQLか?)を送信するプログラム (プログラム言語は何でもかまわないのです。) ・サーバー側では受信したデータを元にMySQLに値を登録するRubyのプログラム の2種類のプログラムが必要なのでは、と思った次第でした。 でも、そもそもこういったサーバー&クライアントの仕組みが全然理解できてないせいで、 的外れな勘違いをしているのかも知れません。

その他の回答 (4)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.4

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

tyaeyama
質問者

お礼

回答いただき、ありがとうございました。 お礼が遅くなって申し訳ありません。 メールはやはり利用予定者の評判が芳しくなかったです。 この回答は、質問の(4)の方法に近いものだと思っていますが、 命令まで教えていただき参考になりました。 現状の私の知識ではこれが最も実現可能だと思っています。 しかし、会社の方では、当面現状のままの運用でいこうということになりました。 でも、MySQLとRubyなどを使ったウェブでの閲覧の仕組みを勉強してみようと思います。 どうもありがとうございました。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

多少の時間遅れがあってもよいのであれば、メールを使ったシステムはいかがでしょうか? 利用者側から見ると、登録しておけば定期的にデータが送られてくる、しょっちゅうメールが届くのが鬱陶しいのなら、リクエストメールを送ればデータが送られてくるなどができます。 それ専用のメールアドレスを作っておき(既存のメールサーバでよい)、リクエストメール受付用にします。 メールのクライアントやデータベースに接続するライブラリを使えば、メール送受信やデータの取得が比較的簡単にできます。データのグラフ化も、gnuplotやRなどにデータを送り込めばpdfなどでグラフの作成ができます。(Rubyの場合しかわかりませんが、他のプログラム言語でも可能なはずです) もう必要がなく使っていませんが、機器の管理に似た簡単なものを作ったことがあります。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

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から吐き出したデータを見える場所に置けるかどうかが肝だと思います。

tyaeyama
質問者

補足

レスポンスが遅くなって申し訳ありません。 大変参考になりました。 会社の方では、結局今までの運用を続け、特に何もしないことになってしまいました。 が、個人的にサーバーサイドのプログラムに興味があり、 試しに作ってみようかと考えています。 サーバーサイドでDBをアクセスして動的にHTMLを作るということについては、 その言語がPHPであれ、Rubyであれ、Java+JSPであれ、なんとなくイメージできます。 実際作るとなると勉強はしないといけませんが、なんとかなりそうです。 イメージできないのは、データの受け渡しの部分です。 ローカル上のDBの内容を、レンタルサーバー上のDB(MySQLを使ってみようかな)に反映させないといけないですよね? これにはローカル側用とサーバー側用にそれぞれプログラムを作る必要があるのでしょうか。 (ローカル側) 定期的にローカルDBを読んでサーバーにその情報を送るプログラム。 CSV形式などでデータを送る?それとも、SQL文にして送る? (サーバー側) ローカルから受けとった情報をサーバーDBに書き込むプログラム。 CSV形式で受けとったなら、SQLを作ってサーバーDBに書き込む SQL文を受けとったなら、それを実行する みたいな...。 それとも全く違う仕組み? などなど...どんな仕組みで実現できるか素人頭で考えると、次々疑問が沸いてきます。 もう少し勉強してからでないとマトモな質問もできないかな、とかも思いますが...。 もしよろしければ、この部分について、簡単に教えていただけたら嬉しいです。

回答No.1

1)だいたい合っているかと。 2)その計測器の中身はWWW(world wide web)に公開しても問題がなく(つまり、赤の他人に見せていいのかどうかという意味。)、技術的に可能であればOKでしょう。 (でも社内ネットワークに繋がってるから駄目なんじゃないかなぁ。LAN上のファイルにアクセスされたらやばいかと思う。) 3)ここで言うDBというのはMysqlとかでしょうか?MysqlであればPHPとかPerlとかからアクセスできるはず。 DBの値がとれればグラフに利用できるかもしれませんね。 4) 3)が無理だとそうなりそうですね。 5) DBの種類と、データの格納のされ方とかに依存するので、取り出せるデータがなんなのか、というのがはっきりしないと、何が実現可能なのかが判断できないかと思います。 データさえ取り出せれば、グラフの生成は自動化できるかも知れないですね。

tyaeyama
質問者

お礼

回答いただき、ありがとうございました。 お礼が遅くなって申し訳ありません。 結局この件は簡単にできそうにないなら保留ということになり、 当面は社内ネットワーク上からのみ閲覧するという現状での運用のままとなりました。 でも、個人的にはなんとかしたいと思っていまして、 MySQLとRubyなどを使ったウェブでの閲覧の仕組みを作りたいと思っています。 未経験で分からないことが多いので、またここでお世話になるかも知れません。 その際よろしければまたご教授いただけましたら嬉しいです。 ありがとうございました。

関連するQ&A

  • 社内イントラ:cgi&PHP&jsp?

    お世話になっております。 現在社内イントラを構築中です。 しかし、既存で走っているものに対して 構築しているので、よくよく考えつつ方針を 決めていきたいと思っております。 現在使用している言語はサーバサイドスクリプトとしてはcgi(perl)、 クライアントサイドではjavascript、dhtml等です。 webサーバはIISを利用していて、 小規模のイントラなのでdbはmysqlを採用する事にしようと思っています。 既存のcgiのcsvログや大きいデータは順次 dbに移し替えていく予定です。 しかし、使用言語を統一した方がいいと言う私の意見に、 上司はあまり聞く耳を持ちません。 「やれるものが勝手にやったらいいじゃないか」的な考えで、 その内標題の様な状況になりそうです。 システムが煩雑になる、サーバに不可がかかる、 その他に先方が納得してくれそうな理由を教えてください。 個人的にそんなイントラはとても嫌です。

  • 特定のWEB上の情報を収集して、自動的にDBに保存する方法

    特定のWEB上の情報を収集して、自動的にDBに保存する方法を教えてください。 たとえば(あくまで例えばですが)、株価情報を株価情報のサイトから取得して、その情報を自前のサーバーのデータベースにいれる、というようなことをしたい考えているとします。 cronを使えば、定期的に何かを実行させることができる、というところまではわかったのですが、それ以上のことがわかりません。 おそらく、株価の情報サイトからHTMLのデータをひろってきて、そこから目的の値を抽出するのでしょうが、 1、どうやって(どのようなプログラム言語を使って)特定のサイトからHTMLのデータをひろってくるのか 2、どうやって(どのようなプログラム言語を使って)HTMLのデータから目的の値を抽出するか 3、どうやって(どのようなプログラム言語を使って)抽出した値をDB(mySQL)に保存するか この3つが特にわからない(知りたい)のです。 ちなみに今私が知っている言語は、mySQL,PHP,Cくらいです。 また、これを実現しようとしている環境についてですが、OSはUnix系で、レンタルサーバーであるものとします。つまり、データのロードも抽出もDB更新もすべてレンタルサーバー上で行いたいと思っています。

  • ブラウザ上で高度な操作を実現するには

    いつも。、お世話になっております。 現在、ASP.NetでWebアプリケーションを開発しています。そのシステムの一機能で、ブラウザ上で高度な操作を実現しなければならないものがあります。 高度な操作とは、ブラウザ上にグラフ(棒グラフ)を表示して、マウスで、そのグラフをドラック&ドロップして、グラフを動かすというものです。 (動かした内容で再度データベースに更新をします) これを実現するため 1,ダイナミックHTMLを用いる方法 2,JavaAppletを用いる方法 3,ノータッチ・デプロイメントの機能を用いてこの機能のみWindowsフォームで実現する方法 4,Flashを用いる方法 の4つの方法を考えました。しかし、 1,ダイナミックHTMLを用いる方法だと、グラフの表示、変更をしたときに、座標計算が他の方法よりも、面倒になると思います。 2,JavaAppletを用いる方法は、開発者が以前にJavaで開発している経験があるので、上司や営業は推していますが、ASP.Netと連携することができるのかという、問題があります。 3,ノータッチ・デプロイメントの機能を用いる方法ですが、これはクライアント側に.NetFrameworkをインストールする必要があるという理由と、ブラウザで動かないという理由で、却下されそうです。 4.Flashを用いる方法は現在Flashについて知っている技術者がいないということで、採用するには難しいと思います。 このようにどれも、採用に踏み切るにはどれも、問題点があります。 採用するとなると、どの方法が最も良いと思いますか?また、他に良い案があれば教えていただけないでしょうか? 宜しくお願い致します。

  • PHPで値を保持する方法

    PHPで、リクエストをまたいで値を保持する方法を教えてください。というかサーバー起動時に1回処理をし、その情報を使い続ける方法といった方が適切かもしれません。「リクエストをまたいで」といってしまうと、反射的に「セッションに保存」といいたくなると思いますが、そういう話ではありません。 画面上に検索条件でSELECTリストを表示します。この情報を今は、画面表示のたびに毎回DBにアクセスしデータを取得しています。 しかしサーバーが起動している間程度の期間ではめったに変更することはない値なので、リクエストのたびにDBにとりに行くのがあまりにも無駄なので、これをやめたいと思っています。かといって年に何回かは変更があってもおかしくない値なので、そのたびにプログラムを変更するのではなく、あくまでもDBのデータの変更だけで済ませたいと思っています。 つまり、リクエストのたびにDBにとりに行くのではなく、PHPのプログラムファイルにハードコーディングするのでもなく、Webサーバーが起動したときに1回だけDBから読み込み、変数に保持しておき何度も使いまわしたいと思っています。 で、ためしにclassのstatic変数に値を設定してみたのですが、リクエストのたびに値が初期化されてしまいました。$GLOBALSに値を設定してもリクエストのたびに値が初期化されてしまいました。 Javaなどの言語では、当たり前に行う処理ですがPHPで実現する方法が分かりません。 PHPで、リクエストをまたいで値を保持する方法を教えてください。 もしかするとPHPでは、値を保持することはできないのでしょうか? もしそうだとすると、PHPでは同じ値をDBから何度も取得するケースではどのように対処しているのでしょうか?(DBのキャッシュ機能頼み?そもそもPHPは小規模しか扱わないから気にしない?) この点について教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザ上で稼動するアプリを作りたい

    ゲームや業務ソフトといった様々なブラウザ上で動くソフトを開発したいと思っております。 基本、HTMLで画面を作成して動的処理をするプログラム言語でコーディングしていく方法でやりたいのですが、どういう言語が必要でしょうか? 簡単な業務ソフトならばJavascriptで作れそうですが、ゲームとなるとサーバー上で処理をするのでサーバーサイド系の言語、データベースや、クライアント系の言語もいると思いますが……

  • Winsockの通信処理にてファイル転送方法?

    環境:Windows2000とUNIXサーバ 開発:VisualStadioVer6.0 言語:C言語 やりたいこと:    クライアントからサーバにファイル送信を行う。 ただし、FTP通信を使わないで、別ポートにて、Winsockの send等でFTPもどきのファイル送信を行いたい。 ソケット通信はデータ送信なのは知っているのですが、 どうしても実現したいので、知ってる方は教えてください。

  • PHPとHTMLの違い(運営・管理?)

    最近、web制作ディレクションを始めました(以前は紙媒体のディレクションをしていました)。 簡単なHTML、GoLiveを使ってのweb制作は分かりますが、PHP等のプログラミングがよく分かりません(PHPがサーバーサイドの言語であること、HTMLに組み込めること、DBと連携できること、扱いが簡単なことは調べました)。 現在、人材派遣を行う企業サイトのリニューアルを進めているのですが、 ・現行のページがHTML+PHPで作られている ・営業担当者が、負担無く情報を書き換えられる というクライアントの考えから一部(仕事情報)ページをHTML+PHPで制作して欲しいと依頼されました。 ですが、先にも書きましたが、PHPに関する知識が乏しく、なぜHTML+PHPなのかが、今イチ良く分かりません。更新後、HTMLを使って制作したページ(目的のもののみ)をダウンロードし、文字情報を書き換えてアップするのと、PHPで制作したページを書き換えるのと、大きく違いがあるのでしょうか? クライアントのイメージとしては、ブログやこの教えてgooのように、ブラウザ上で書き込みが出来るように(?)したいのだと思いますが、そういったPHPのプログラムは初心者には難しいでしょうか? 初心者の質問で、分かりにくい点もあるかと思いますが、ご教授下さい。よろしくお願いします。

  • jspとはなにか?

    jspがよくわかりません。 サイトにはjspはサーバ側でなんらかの処理をしてhtmlを返すと書いていました。 そしてサンプルとして以下のようなコードがのっていました。 1: <html> 2: <head><title>Hello World!</title></head> 3: <body> 4: <h1>Hello World!</h1> 5: <p> 6: <% 7: String hello = "Hello World!";//ここはJSPの処理 8: out.println(hello); 9: %> 10: </p> 11: </body> 12: </html> ためしにこのソースでhtmlを作ってダブルクリックした(つまり、Tomcat等のサーバをつかわなかった)ところ、画面にhello Worldが表示されました。しかし私はこの現象がよく理解できません。 jspはサーバ側でうまいこと解釈して、そこから作成されたhtmlをクライアントに送ってくる仕組みなのなら、jspを直接ブラウザに読み込ませてもブラウザが理解できるとおもえません。 なぜこのようなことができるのでしょうか?

    • ベストアンサー
    • Java
  • WordPressで

    以下の事を実装したいと考えてます。 どのようにすれば実現できるでしょうか。 【クライアント側】  ・単にXMLをサーバーサイドに渡す。  ・画面はWordPressを使って作るわけではない。 【サーバーサイド】  ・WordPressを利用する。  ・WordPressを利用してクライアント側から受け取ったXMLをDBに登録したり、 DBのデータをXMLでクライアント側に返してあげる 自分なりの考えなのですが、 クライアント側からのXMLを受け取る固定ページでも作り、 その後、WordPressを利用してDBに登録するのでしょうか。 今回はWordPressの固定ページでは画面は必要ない。 XMLを受けったり返したり出来さえすればいい。 ご教授いただけますと幸いです。 宜しくお願い致します。

  • CとPerlどれくらい違うか?

    すでにPerlで書いてあるCGIを C言語で書き直そうか検討中です。 そこで質問なのですが・・・ (1)「CのCGIは速い」とよく書いてありますが、 どれくらい速くて、どれくらいサーバの負担を軽減できるのでしょうか。 (2)実際に計測する方法はありますか?

    • ベストアンサー
    • CGI