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

お気持ちのみですが合計で100ポイント程。Webページ製作の知識がある方にお伺いします。

あるWebページで送信されたデータに応じて、表示するページを動的に生成して返したいのですが、次のアルゴリズムで可能ですか?

即ち、Aが1.htmlからリクエスト送信→1.htmlは1秒に3回くらい2.htmlというページを再読み込みしようとするがそのようなページは存在しない→同時に、1.htmlはパソコンBに向けてメール送信→パソコンBはメールの内容を反映した2.htmlというファイルを作って、FTPでアップロード→Aは無事動的に生成された2.htmlを得る

みたいな。どうしてもサーバーで動くプログラムを作りたくないので、メールとFTPだけで処理したいんです(笑)よろしくお願いします。

●質問者: ReoReo7
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:FTP HTML Web アップロード アルゴリズム
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● 勇者よっしー
●19ポイント

AやBはサーバですか?

だとしたら、Aはメールを送る時点で「サーバで動くアプリケーション」ですよね。

htmlを表示するのは、httpdというプログラムがサーバで動くことで可能になるのです。

これだとhttpdに手を入れて、メールを送受信する仕組みを作ったり、Bのメールサーバも普通のものではなく、メールを受信して即ページを生成する複雑なプログラムにせざるを得ません。

可能は可能ですが、普通にwebサーバを作る100倍以上の手間がかかります。

◎質問者からの返答

ありがとうございます!!

AもBもクライアントマシンです。

書き忘れていましたが、Aが1.htmlというアドレスにあるメール投稿フォームに何か入力してボタンをクリックするということです!すると、1.htmlは2.htmlへの遷移を1秒に3回くらいトライします。一方で、Bが1.htmlを通じて送信されたメールを解析して、2.htmlを作り、FTPでアップロードします!

FTPのソフトでレンタルサーバーに接続することを想定しています。

httpdですか・・・javascriptじゃダメですか?

Bの「メールを受信して即ページを生成する」のは大丈夫そうなんですが。。。

やっぱりきついですかね?


2 ● deflation
●19ポイント

サーバで動くプログラムを作りたくないということであれば、クライアント側でVBScript(Windows限定)またはAdobeFlexを使うことで対応可能です。


VBScriptであれば、以下のようなフローで実現できます。

  1. ページの存在可否をHTTPリクエストで判断する。参考:VBSでHTTPリクエストを投げて、レスポンスを受け取る
  2. CDOを使ってメール送信する。参考:Windows標準機能とWSHを使ってメールを送信する
  3. FTPアップロードする。参考:vbs で ftp memo
◎質問者からの返答

ありがとうございます。

整理できていなかったのですが、クライアント側には、「ブラウザを使ってテキスト入力、ボタンを押下」以外にアプリ使用はNGにしたいと思っています。アプリインストールをしても良いのですが、最終的にはWindows以外のパソコンでもクライアントにしたいと思っていますので、なるべくブラウザだけで実現したいと考えています。

(尚、4の回答にやりたいことを整理しました。)


3 ● 勇者よっしー
●18ポイント

すいません、AもBもクライアントとなると、AとB以外のCがいますか?

つまり、CがサーバXにあるhtmlを読み込む。Aはそれを感知して、Bとメール&FTPで連携して、Cが読み込んでる間に割り込んでページを送る、という事ですか?

AがCの動作を感知する方法が全くありません。CがサーバXにアクセスする前にAに要求を送るとなると、Aはサーバにならざるを得ないのですが、Aはクライアントと明記されています。

また、Bはメールを受信しているので、明らかにメールサーバです。

Aも、FTPサーバですよね?

クライアントだと言い切ってますが、サーバだらけに見えます。

Bをクライアントとするとなると、中間にメールサーバがきっといるんでしょう。結局サーバの開発は必須っぽいです。

AがCのPC上で動く常駐ソフトだったと仮定しても、PCから勝手にメール送ったりFTPサーバになったりと、プライベート上の問題が多すぎますし、ものすごい負荷がかかる上にやはり開発量も並の量じゃないと思います。

◎質問者からの返答

ありがとうございます。やっぱりサーバーだらけになりますかね。。

メールサーバーは無料のものを利用して、サーバーはレンタルサーバーで結果の表示は非常に簡素なもの(テキスト行1行+ビープ音でも鳴れば十分)で済ませないのですが、結果データの作成にはどうしてもクライアントというか、サーバー言語でできない処理をVBAにさせたい、という希望があります。

やはり開発量も膨大になりますかね・・・レスポンス作成が最も大変なのですが、この部分の膨大な処理はVBAでほとんど実現しつつあるのですが・・・これをサーバー言語に翻訳してサーバーに移植した方が早いですか?

(尚、4の回答にやりたいことを少し整理しました。)


4 ● きあ
●18ポイント

こっちの質問はわかりやすいかも。


送る側:

テキストボックスに入力。

ボタンを押下。

特定のアドレスにFTPで送る。


読み取る側:

自動的にブラウザを更新。


をお互いが行えばいいんですよね。


「ひまわり」とか「なでしこ」っていう日本語のプログラミング言語があります。

ちょこっといじってみたのですが、ブラウザもFTPも両方あるんで調べてみてください。

ローカルにアプリ入れる形にはなりますが、実現できます。


ほかの質問も見てみたのですが

>あるWebページで送信されたデータに応じて

この段階でCGI組まなきゃだめです。

それに、ブラウザは勝手に動かないので、更新ボタンを押す必要があります。

どちらかというと「取りに行く」ためのものです。


できること、できないことをしっかり整理することで、どの技術を使えばいいかって固まってきますよ。

それぞれの質問みてるとごちゃごちゃになってるように思えます。

でも頑張ったらできるので頑張ってください。

◎質問者からの返答

ありがとうございます。お陰さまで少しずつやりたいことが見えてきたので、質問がシンプルになってきたのだと思います。

正確には

送る側(アプリインストール不可):

テキストボックスに入力。

ボタンを押下。

特定のアドレスにFTPで送る。

約0.1秒後?1分後にサーバーのデータが更新されるので、自動的にブラウザを更新してそれを表示。

読み取る側(アプリインストール可):

FTPでメールを受け取る

メールの内容に応じてデータ生成(0.1秒?1分)

送る側に結果通知(FTPでサーバーにデータまたはデータが格納されたhtmlをアップロードすることを想定)

です。送るデータは10桁の数字、0.1秒?1分後に帰ってくるデータは結果(成功 or 不成功)+メッセージ(成功しました+成功した音(flashを読み込ませる?) or 失敗しました。理由:あsdふぁdfふじこ)程度のイメージです。確かに何ができて何ができないのか、全然分かっていません。

いろいろとサポートして頂きまして大変参考になっております。ありがとうございます。


5 ● tezcello
●18ポイント

> どうしてもサーバーで動くプログラムを作りたくない

残念ながら、全く作らないのは不可能かもしれません。


> テキストボックスに入力。

> ボタンを押下。

> 特定のアドレスにFTPで送る。

FTPからダウンロードするのはリンクで簡単に出来ます。(id & password を記述すると丸見えになるので anonymous でやる必要があるでしょう)

でもアップロードは少々難しいと思います。

こんな記事もありますが、環境を選ぶようですね。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1226628...


まだ、「メールを送る」の方が汎用的で現実的だと思います。

サーバサイドのスクリプトを書いてやれば、テキストボックスの値を受け取ったり、FTPでのアップロードやメールの送信も可能です。(どのレンタルサーバでも出来るわけではありません。環境依存です。)


> 約0.1秒後?1分後にサーバーのデータが更新されるので、自動的にブラウザを更新してそれを表示。

サーバ側で何も処理をしないと、ファイルが見つからない時点で「ファイルが見つからない」というメッセージを返して終わってしまうでしょう。

> 遷移を1秒に3回くらいトライします

何度も繰り返して探すとか、時間制限内で待つとかの動作は動作は、勝手にしてくれる訳ではありません。プログラムでの処理が必要でしょう。

(時々見かける「サーバの応答を待っています」というような状態は、存在しないファイルを何回もスキャンしているのとは違います。)


> FTPでメールを受け取る

FTPではメールは送れません。

メールと同じ内容のデータを送る事は出来ますが、送り先はFTPサーバ限定ですし、データが届いた事を感知する仕掛けを仕込まないとダメですね。


> メールの内容に応じてデータ生成(0.1秒?1分)

メールサーバだけでは実現は不可能でしょう。ましてやメールクライアントでは。

「何らかの判断が必要=プログラムが必要」です。

> レスポンス作成が最も大変なのですが、この部分の膨大な処理はVBAでほとんど実現

実現できているのが、「メールを受信して必要なデータを作成する」であれば問題ありませんが、単に「必要なデータを作成する」部分のみであれば、メールの受信をきっかけにその部分を起動するような仕組みが必要です。


この辺りは、ローカルのWin機でやる事を念頭においての事(VBAなので)と思いますが、外部から「直接メールを受け取る」のは案外面倒ですよ?(ローカルにメールサーバ設置が不可避では?)


> サーバー言語に翻訳してサーバーに移植した方が早いですか?

そんな気がします。システム開発も、実行速度も。

単なるテキスト処理なら、サーバサイドの処理の方がかなり早いのでは?

「膨大な処理」が何なのか分かりませんが

> サーバー言語でできない処理をVBAにさせたい

サーバサイドで出来ない処理は、そんなに多くないと思いますけど?


一般的に使われるメールサーバなどでメール受信をきっかけにサーバサイドのプログラムを起動するのはそれ程難しい事ではないです。

.forward や .mailfilter でいろいろ情報が見つかるでしょう。(メールの転送の情報が圧倒的に多いので、探し難いですが)

しかし、それを許しているレンタルサーバはあまり多くないです。


色々考えると、やはりサーバサイドでプログラムを組み動的なページを返すのが理に適っているように感じます。

◎質問者からの返答

ありがとうございます。FTPでメールを受け取るのは無理なんですね。もちろん、ある程度のサーバーで動くプログラムは作っても良いのですが、メインの処理をVBAマシンで行いたい、という希望があります。

うまく説明できないところがあり、伝えられていないところがあると思うのですが、

登場マシンは3台あります。まず前提としては

クライアント⇔レンタルサーバー⇔VBAマシン

という接続で、

クライアント側(Windowsに限定しない、ブラウザーの操作のみ、その他のアプリインストール不可、結果を受け取ってページ遷移)

レンタルサーバー(ごく簡単なCGIやメールサーバーを設置するのは全然構わない、クライアント側からのデータ送信に答えてメール送信したり、VBAマシンからのデータ送信に答えてクライアント側へ、ページ遷移という形で結果を送信したりする)

VBAマシン(Windowsで動かす、レンタルサーバーから投げられたメールを確認する、レンタルサーバーに何らかの形でデータを返す、サーバーに移植するのは難しい特殊なアプリをインストールしてあってそれをVBAで動かす。)

という動作をしたいのです。レンタルサーバーにある、ある一つのページに同時にアクセスする可能性があるのは、最大1名だけという仮定で構いません。

同じ機能が実現できる/その方が0.5秒以上早いというのであれば、クライアント側から直接VBAマシンにアクセスしても良いです。その場合、何と言う知識を身につければとっかかりがつかめるかページ等を示して頂ければ幸いです。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



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