質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

Q&A

解決済

2回答

6823閲覧

Webアプリケーションとして数値計算サイトの構築方法

donadona

総合スコア19

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

1グッド

4クリップ

投稿2018/10/29 23:31

表題を達成するために、何を勉強したらよい(近道)かを教えていただきたいと思います。

前提・実現したいこと

Fortranで作成した数値計算プログラムがあります。(cなど他の言語への移植も可能)
(偏微分方程式で比較的計算負荷が大きいですが、それでもワークステーションで10分程度で終わります。)

登録会員が会員サイトにログインして、データの作成、計算条件の入力、計算の実行、結果の図化、ダウンロードをできるようにしたいと思っています。

その場合、どのような言語をするのが良いでしょうか。
当方、ウエブアプリケーションの作成経験はありませんが、Fortran, Java, Pythonは使えます。
最近、javascriptも勉強しているので、たぶん調べながらプログラミングは可能です。

少し勉強した中で以下のような方法が考えられました。

1) メインの計算をサーバー側で実行する案

サーバー上にexe(またはdll)を配置しておいて、「計算実行」ボタンを押したら外部プログラムとして実行させる。
データの入出力やデータ作成は、Javascriptで行う。

2) ローカルサイドで実行する

2-A) Java Appletに数値計算プログラムを移植してPC上で実行する(まだ詳しくわかっていません)。
2-B) Numerical.jsなどのライブラリを使ってJavascriptのプログラムとしてブラウザで実行する。

メリット・デメリット

1) の場合
サーバーで計算するので計算速度が安定している。
コンパイル済みの実行プログラムなので速い。
アクセスが集中した場合に影響が出る(これは今のところ考えなくても良いかもしれません)
他に制約条件や問題点があるでしょうか?
また、外部実行を管理するプログラムは何で作成するのが良いでしょうか?(Javascriptで足りますか?)

2-A) Java Appletは今後サポートされないという話を聞きましたので、やめておいたほうが良いでしょうか。

2-B) スクリプトなので計算が遅い?
また、ソースコードが配信されてしまうので、プログラム内容が流出してしまう?

このような認識で良いでしょうか?

新しい言語を学習するのは楽しみでもあるので、他に良い方法がありましたら、ご提案いただけると助かります。

takotakot👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

近道

webアプリにしないで、windowsなりlinuxなりのネイティブ・アプリケーションとしてソフトウェアを配布すれば良いと思います。


Javaアプレットはさすがにオワコン。論外。

Fortran・ワークステーションで10分かかるもの(しかも数値計算……)を、JavaScriptでその辺のパソコンで、というのはちょっとした悪夢です。よほど頑張って最適化しても一時間はかかるんじゃないでしょうか。なのでこれも論外。

サーバサイドで計算をするとしたら、サーバをこちらで用意しないといけないので、コストがでかいです。まあ、1回の計算が10分なら、一日144リクエストまではワークステーション1台で裁ける訳ですが……(待ち時間はともかく)(すでにプログラムがキリキリに最適化されていてCPU使用率100%でぶん回っているとする)。

Webアプリケーションにするならサーバが引き受けるしかなさそうです。そうする(サーバ側で計算する)こと自体はコストを度外視すれば可能です。


ところで、

登録会員が会員サイトにログインして

の機能をどうやって作るつもりなのでしょうか……。

Webアプリケーションにするとしたらそこが一番の要で、他の入出力とか数値計算走らせるとかはぶっちゃけ枝葉と言っても良いくらいです(webに詳しい人に怒られそうなことを書いていますが)。

要するに、ユーザの認証、権限なんかの管理をどうするのか、という。

10分かかる重い処理を誰でも自由に触れたら大変だし(その気になればサーバを一瞬でパンクさせられます)、一人が同時に回せる処理数の上限とか一日の利用回数制限とかも決めておかないとたぶん大変なことになるし、もしビジネスとしてやるなら回した回数は記録して課金に反映するとか……。

あとは、重たい処理をサーバで回すとなると、ワークロード管理も相応に必要になるのかもしれません。

そのへんの「Webアプリとして成り立たせるために必要な機能」に関して、あまり考えていないんじゃ? という印象があります。

投稿2018/10/30 00:20

編集2018/10/30 01:28
hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donadona

2018/10/30 03:39

早急にご回答頂きましてありがとうございます。 ネイティブアプリケーションはなんとか作れるとは思いますが すでに製品があるのと、OSに依存するので今の所検討から外しています。 Windows版ソフトとして同種の計算ソフトが販売(70万円程度)されています。 ですが、ユーザー側からすると、年に数回程度しか使わないもので、そのために資産を購入するのはハードルが高いと思っています。 そこで、利用するときだけお金を払って手軽に使えるシステムを検討しています。 やはりメインの計算はサーバー側で行うべきなのですね。 サーバーを用意するのはお金がかかりますが、 できる見通しが立ったら、会社にプロジェクトを申請して取り組みたいところです。 (会社はアプリケーション作成が本業ではないのですが。今は勤務時間外に個人的な興味でトライしています。) また、ユーザ管理は、Pythonのフレームワーク(Django)の利用を考えていました。 と言っても経験がないので、いろいろ難しいのだとは思いますが、不可能なことでなければ挑戦してみたいと思います。 (それとも別のより良いやり方がありますでしょうか?) 解析の内容はマイナーな分野なので、そこまで利用者が重なるとは今は考えていませんが、 ビジネスとして提供するとなったら、管理関係もしっかりしないといけませんね。 よろしくお願いします。
hayataka2049

2018/10/30 05:16

サーバは従量課金のクラウドで良いのでは? 技術的にはできますし、考えている方向性も基本的には間違っていないと思いますが、いかんせん経験のない質問者様がいきなり取り組むにはハードです。 --- 後の懸念は、実際の開発と、ビジネスとしての成否ですね。 まず開発ですが、その「Webアプリケーション」は会社で内製できるのでしょうか? ある程度の実績がなければ、外製も検討してください。 まだ検討段階でも、できるだけ詳しい人の話を聞いてください。 ビジネスとしては、見積もってみてくださいとしか言いようがありません。根拠はないので適当に読み流して頂いて構いませんが、年間利用者(UU)100人くらいはないと成立しない気がしています。
donadona

2018/10/30 11:40

会社のサーバーもありますので、最初は小さく始められるかと思っています。 SEの人はいますが、会社の核となる事業ではないので、多少相談に乗ってもらえる程度だと思います。 また、そうそう儲かる話でもないので、外注する予算はありません。 逆に、完璧ではなくとも、試作品を作って見せることで、会社側にもその気になってもらえるようにするのが目標です。 ありがとうございました。 今後もよろしくお願いします。
guest

0

Webアプリケーションとして数値計算サイトの構築方法

ユーザーはブラウザを使ってインターネット経由 Web サイトにアクセスして「数値計算」に必要なデータを渡して計算を依頼するというイメージですか?

普通に考えると Web アプリでユーザーが要求を出してから 10 分も経ってから応答を返すというのは現実的ではないと思います。

Web アプリは要求とデータを受け付けて、受け付けたことの確認を応答として返すだけにし、計算結果は別の手段(メールとか)で渡すことを考えてはいかがですか?

質問者さんの環境で可能かどうか分かりませんが、上述のように Web アプリと数値計算の役割を分ければ、Web アプリは、ユーザーからの要求とデータを受け付けて、

Fortranで作成した数値計算プログラムがあります。

にデータを渡すだけで、既存の「数値計算プログラム」はそのまま生かせるし、Web アプリで数値計算する必要はなくなるので普通に PHP とか ASP.NET とかでよさそうだと思います。

hayataka2049 さんが指摘されているログイン等の機能も、Laravel とか ASP.NET MVC などフレームワークに備わっているものを利用すれば比較的容易にできると思います。

投稿2018/10/30 02:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donadona

2018/10/30 03:51

早急にご回答頂きましてありがとうございます。 > ユーザーはブラウザを使ってインターネット経由 Web サイトにアクセスして「数値計算」に必要なデータを渡して計算を依頼するというイメージですか? システムはおっしゃる通りのものかと思います。 補助機能として、入力データの作成や、計算結果の図化および各種フォーマットへの変換なども追加できれば良いと思います。 > Web アプリは要求とデータを受け付けて、受け付けたことの確認を応答として返すだけにし、計算結果は別の手段(メールとか)で渡すことを考えてはいかがですか? なるほど。 確かに、写真などを送信して暫く待つと加工して返ってくるサイトなどがありますね。 目的としてはそれで達成できます。 ちょっと欲張って、計算の進捗状況をブラウザ上に図で表示することなどをイメージしていました。 ユーザーが、自分でソフトを動かして解析をしているという感覚が得られるので。 データを送って、結果が返ってくるのを待つだけだと、他人に丸投げしているように感じてしまうかもしれないので。中身は同じことなのですし、本質的なことではありませんが。 コントロールは、PHPなどのフレームワークで行うということですね。 私はPythonに慣れているので、Pythonのフレームワークを使おうと思っておりました。 ただ、利用者が少ないので日本語での情報があまりないのが難点です。 でも方向性は大きく違っていなかったので良かったです。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/10/30 05:50 編集

> ちょっと欲張って、計算の進捗状況をブラウザ上に図で表示することなどをイメージしていました。 Web アプリは基本的にステートレスです。なので、Web アプリにそういう機能を実装するにはかなりの困難が伴います・・・が、それはやっていくにつれて理解できると思いますので、次のステップとして考えるとして(最悪、諦めることも視野に入れて)、基本的な実装だけまずトライしてみてはいかがですか?
donadona

2018/10/30 11:29

アドバイスありがとうございました。 まずは核となる部分を構築して、少しずつ改良するような形を目指したいと思います。
退会済みユーザー

退会済みユーザー

2018/11/05 23:27

困難なことはないですよ。単純に待ち行列を作って、計算ジョブをキューに入れるだけです。コントローラはジョブ投入API, ステータス確認API, 結果取得APIをウェブで作って、計算はLINPACKのクラスタを別途用意するとか。
退会済みユーザー

退会済みユーザー

2018/11/05 23:50

Kenji.Noguchiさん> あなたにとっては容易なのかもしれませんね。 では、ここにコメントするのではなく、解答欄に詳しく書いてあげるようにしてはいかがでしょう? 私は、上の質問者さんとのやりとりから私が推定した質問者さんの現在の知識を考えて、質問者さんに対してレスしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問