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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

1638閲覧

手段はwebアプリしかないのか

u-sukesan

総合スコア156

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

2クリップ

投稿2017/06/29 02:37

編集2017/06/29 02:56

PCローカルにてDBをmysqlとし、ローカルで動く業務管理アプリを作成しようと思っています。

必要に応じてネットワーク上のサーバー内のmysqlと同期させる仕組みにしようと思っているのですが
東方、PHP,jquery,html,javascriptがメイン言語なので、ファイル群をローカルに置き、ブラウザベースで動くアプリしか思いつかないのですが、他に方法はありますでしょうか?

説明下手な上、ざっくりとした質問で申し訳ございません。

補足

お店にパソコンは1台:お店あたりの利用人数は複数人になると思われます。
お店は複数店舗になると思われます。
速度とネットワークに繋がっていなくても動作するようにするためローカルで動くものを検討しました。
イメージ説明

m.ts10806👍を押しています

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

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

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

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

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

m.ts10806

2017/06/29 02:39

PCローカルというのは誰か個人のPCという意味でしょうか?利用人数・その他社内サーバーなどの環境は?
u-sukesan

2017/06/29 02:44

お店にパソコンは1台:お店あたりの利用人数は複数人になります。 お店は複数店舗になります。速度とネットワークに繋がっていなくても動作するようにするためローカルで動くものを検討しました。
m.ts10806

2017/06/29 02:50 編集

複数店舗間はネットワークなしでもアクセスは無理では。社内LANで全てつながってるとか社内サーバーがあって全端末がそこにアクセスできるとかならまだいいのですが。
akabee

2017/06/29 02:51

店舗から常時ネットワークに繋げることは難しいという前提があるのですか?複数DBを別管理して、それをあるタイミング(例えば夜間など)で同期させるという運用は非常に煩雑なので、たとえ常時アクセスが難しくても、ローカルはあくまで作業環境とし、必要なタイミングでサーバー側に対しデータ取得・反映依頼をかけるという前提で検討することをお勧めします。
u-sukesan

2017/06/29 02:58

@akabee 基本その想定をしています。が常時接続をしデータのやり取りをするとアプリ側のレスポンスが遅くなることを恐れています
akabee

2017/06/29 03:05

「必要なタイミングでサーバー側に対しデータ取得・反映依頼をかけるという前提」ではあるということですか?店舗でどんなデータをサーバーに対して反映させたりするのか分かりませんが、わざわざローカルでmysqlなど利用しなくても、例えば作業開始時(朝など)にWEBアプリからデータ(例えばcsv形式)をダウンロードし、それをローカルの作業ファイル(Excelなど)で開いて入力してもらっておいて、必要なタイミング(業務終了時など)でWEBアプリに対しアップロードする、というようなことはできないのですか。
u-sukesan

2017/06/29 03:16

「必要なタイミングでサーバー側に対しデータ取得・反映依頼をかけるという前提」ではあるということですか?という認識で間違いありません。また可能ではあると思いますが、店舗での入力項目が多岐に渡るためエクセルなどで入力してもらうには不便かと。webアプリとして常にサーバーサイドで動くようにすれば問題ないのですが、「通信環境に伴うレスポンスの悪さや」や「ネットワークが繋がらない時」を考慮した設計を考えた時にローカルにもmysqlという設計を検討しました
akabee

2017/06/29 04:05 編集

「エクセルなどで入力してもらうには不便」 → 不便か実現不可能かだったら不便なりにも可能な限り便利さを追い求めるほうが良いでしょう。mysqlのマージなど検討されているようですが、例えばマージ処理にびっくりするぐらい時間がかかってシステム都合でなかなか業務の締め処理ができず帰れない、というようなことになるぐらいなら、ユーザーサイドもExcelのほうが便利だということになるはずです。u-sukesanさんのの検討内容どおりやってやれないことはないと思いますが、やった場合のリスクが非常に高いと予想します。私はszk.さんの回答に同意します。
u-sukesan

2017/06/29 04:08

確かにリスクが高そうですね。やったことがある方法以外のもっと良い方法がないかを検討していましたので、リスクも理解していませんでしたが理解できました。ご指摘ありがとうございます。
akabee

2017/06/29 04:19

やってやれないことはないと思うんですけどね。システム屋としてはあくまでまずはきちんと動いて運用管理できるものを作るということが最低限の責任になるでしょうから、当初の内容どおりですとなかなか怖いです。ちなみに「恐れているのはネットワークが繋がらない状態になった場合」とのことですが、例えば地震などで回線が繋がらないような場合を想定されているのでしょうか?そういう場合はシステムに頼らずに電話などでサーバー側の担当者とやり取りしてもらってなんとかすることになるんじゃないでしょうか。そこまで大きな災害でなくとも、緊急時にデータが取れなければサーバー管理者等に直接電話で問い合わせればいいんじゃないでしょうか。頻繁にそういったことが発生するような脆弱なネットワークだと困りますが。
u-sukesan

2017/06/29 04:31

ありがとうございます。「恐れているのはネットワークが繋がらない状態になった場合」というのは、まだ、頭の中でイメージしている設計段階ですが、例えば各拠点で注文を受けた商品の詳細情報や値段はネットワーク上のmysqlに保管して商品codeを持ち、各拠点が同じ情報で注文登録できるようにしたい(在庫などは考慮しません)。とした場合、注文があるたびに商品情報を取得しにネットワークに接続する必要があるため、繋がらなかった場合に機能しないことを恐れています。しかし、先ほどakabeeさんのご指摘で思ったのは、朝一で立ち上げた時に、この商品情報だけダウンロードする形で、ローカルに持って商品選択時はダウンロードしたCSVなどから取得し、販売情報は通信しwebサーバに保存という方法はありですね。あと「恐れているのはネットワークが繋がらない状態になった場合」、としては、業務を止められない業態などで、この販売情報がputできなかった場合です。紙ベースの伝票をきっているわけではないのでその時にネットワークエラーに書き込みできなかった場合などを想定しています
akabee

2017/06/29 05:04

「注文があるたびに商品情報を取得しにネットワークに接続する必要があるため、繋がらなかった場合に機能しないことを恐れています。」 → 商品情報に限りませんが、それが「朝時点の情報でも問題ない」と割り切れるものであれば朝一にダウンロードしたデータを使うという判断もアリでしょう。その場合は、店舗で働く人たちに「これは朝一時点のデータである」という認識、商品情報を修正する人も「これは翌日反映される」という認識は必要です。在庫情報等は「今この時点であるかどうか」(なければ注文確定できない)ということが非常に重要ですのでリアルタイムである/ないを問い合わせる必要はあるでしょうが、目まぐるしく日中に変わることがそうそうないデータであれば、毎日朝に各店舗に最新データが配信されることを前提とした運用にすることも可能ですね。「恐れているのはネットワークが繋がらない状態になった場合」についても関連しますが、要するに「リアルタイムで把握できないと困るデータは何か」ということをまずは取捨選択することが必要そうです。各店舗で、他の店舗の状況も含めた集約情報がリアルタイムで把握できなければならない情報なんてそう無いのでは?必要なものだけ必要なときにWEBサーバーにアクセスしてリアルタイム把握し、他のものは1回/日、1回/週で済ませ、どうしてもネットワークに障害が出てしまってリアルタイム把握すべきものが把握できなかったら、一時的にシステムを使わずに業務をしてもらい、後で復旧してからシステムに入力などしてもらう。実際にどれだけネットワークエラーが発生するかはテスト段階で試験的に場所の離れた3店舗ぐらいに導入してもらって確認する(ほぼ発生することは無いと思いますが安心材料を作るためそういう言い方をする)。というような段取りを考える必要があると思います。
u-sukesan

2017/06/29 05:15

ありがとうございます。そうですね、おそらくその方向性がしっくりきそうです。
guest

回答4

0

ベストアンサー

必要に応じてネットワーク上のサーバー内のmysqlと同期させる仕組み

は非常に複雑な処理が必要です。
以前、質問されているようなコピーで出来るようなものではありません。
前提条件が違いすぎます。

おそらくwindows環境ですよね。
作業環境用のサーバをローカルPCに立ち上げるのは、
versionや競合するソフトがあるため、
非常に面倒なことになると思います。
起動できないこともあるかもしれません。

どのくらいの規模かわかりませんが、
teratailで確認するスキルレベルなら
エクセル管理でいいのではと思ったりします。
VBA使えばDBに登録もAPI叩くこともできますし。

もしくはちゃんとしたIT会社に頼むか。。。

レスポンスやネットワークを非常に気にされていますが、
サーバへの同期タイミングでネットワーク障害やレスポンス遅延したほうが、
復旧に時間がかかるかと。
ローカルPCで別の作業しながらサーバを立ち上げるのであれば、
それはそこそこのスペックのPCが必要になり、
結果的にレスポンスが悪いシステムになるかと思います。

あと、
バグがあった時の更新プログラム/DB定義の配信/データの移行、
古いプログラムで作られたDBはたぶん同期できないでしょう、
考えることは山ほどあります。

普通にWebサーバ作ったほうがいいでのはないでしょうか。

前置き長くなりましたが、

  • エクセル管理
  • 普通にWebサーバ

が、妥当な手段かと思います。

投稿2017/06/29 03:32

szk.

総合スコア1400

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

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

u-sukesan

2017/06/29 03:59

ありがとうございます。 普通にWebサーバの方向で検討します。 ちなみにメインサーバーへの読み書きを前提とした場合、 なんども書きますが恐れているのはネットワークが繋がらない状態になった場合ですが、 こいうったケースを考慮した設計をしようと思ったら繋がるまでの間、一時的にでもローカル上で何らかの形で入出力データを保管する必要があると思うのですが、どういった手段が好ましいでしょうか
momon-ga

2017/06/29 04:22

全部ローカルでDBで管理するのでは? メインサーバへの書き込み(バックアップとか支店横断の集計用?)は、あっても 読み取りは不要では? 方式は、s.tさんのコメントが良いと思います。 > お店を閉めたタイミングでファイルを送り、本社側で順番にそれを処理していく、
szk.

2017/06/29 04:26

昨今、ネットワークが不安定になる状態とはどのような状況でしょうか。 おそらく各店舗には有線/無線のネットワークがありますよね。 近くのコンビニのWiFi使うわけじゃないと思います。 プロバイダ側のネットワーク障害でも起きない限り、 1台のPCから送られる通信量でネットワークが遅いと感じることはないと思います。 WindowsUpdate中みたいな特異な条件は覗きます。 Web画面のデータを保存/保管することは考えません。 業務要件によりますが、 ネットワークに繋がっていないローカルPC上で何か作業したいのであれば、 csvファイルに出力・csvファイルの取込機能みたいなもので データを一時保存/修正することも可能かと。。。 面倒ですがExcelファイルにされると一般ユーザ的には助かると思います。 あとはu-sukesanさんが検討して (teratailで質問されてでもいいですが) 出来ないことは出来ないと言いきっちゃうほうがいいです。 要求なんてキリがありませんから、 「ここまではシステムでどうにかします。 その他は、このような運用でどうでしょう。」 という感じでしょうか。 ちなみに個人的な運用できるかの判断は * その対応にどのくらいの時間がかかるか * その対応がどのくらいの頻度で発生するか
u-sukesan

2017/06/29 04:46 編集

ありがとうございます。 ご指摘通り ネットワークに繋がっていないローカルPC上で何か作業したいのであれば、 csvファイルに出力・csvファイルの取込機能みたいなもので データを一時保存/修正することも可能かと。。。 が現実的だと思いました。 下記の件、ご指摘ありがとうございます。お恥ずかしい限りで、そのおかげで割の合わない仕事も多いのも事実です。しかし今スキル以上の要求かもしれないが、teratailなどで皆様のお力も借りながら、どうすればできるのか、誰にどこにどのように依頼すればできるのか、など検討した上でできるできないを判断したかったのと、どういったリスクや運用にどれくらい時間がかかるかも、「全くわからない」では判断に困るための質問でした。どうすればできるのかも知らないまま外注に出すと足元を見られることも多いので(T T) あとはu-sukesanさんが検討して (teratailで質問されてでもいいですが) 出来ないことは出来ないと言いきっちゃうほうがいいです。 要求なんてキリがありませんから、 「ここまではシステムでどうにかします。 その他は、このような運用でどうでしょう。」 という感じでしょうか。
guest

0

サーバーがあるのであれば、PHPはサーバー側かと思われます。
PHPをXAMPPなどでローカルで動かしておくと、ローカルでは動かない機能があったりします。

なので、サーバー側にPHPでAPIを用意しておき、
・特定のリクエストに対して特定のレスポンスを返すプログラムを用意
・htmlやjavascriptなどでAPIを叩いてデータの入出力を行う
でよいのではないでしょうか。

投稿2017/06/29 02:44

s.t.

総合スコア2021

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

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

u-sukesan

2017/06/29 03:03

イメージ図にも入れた通り サーバー側にPHPでAPIを用意しておき、 ・特定のリクエストに対して特定のレスポンスを返すプログラムを用意 していますが、 ・htmlやjavascriptなどでAPIを叩いてデータの入出力を行う と、ネットワーク状態によってはレスポンスが遅くなることが怖いため 基本ローカルDBで入出力を行い、あるタイミングで同期する手法を検討しました ちなみにクライアントサイドのファイルもネットワークサーバー上に置いているイメージでしょうか
s.t.

2017/06/29 04:04

クライアントサイドのファイルもサーバー上がよいと思います。 ajaxが動かないとか、ローカルだと色々な制約が発生します。
s.t.

2017/06/29 04:06

ちなみに僕がいまアルバイトしている飲食店2店舗では、WPFを使ったりWindowsFormを使って本社とやり取りしています。 お店を閉めたタイミングでファイルを送り、本社側で順番にそれを処理していく、というものでした。
u-sukesan

2017/06/29 04:09

なるほど参考になります。 ありがとうございます。
guest

0

APIがあれば自作アプリが直接参照することも可能です

投稿2017/06/29 02:43

yambejp

総合スコア114585

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

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

u-sukesan

2017/06/29 03:17

ここでいう自作アプリとはいわゆるC#やVBAのようなネイティブアプリを指しますでしょうか
yambejp

2017/06/29 03:31 編集

そうですね、むしろそれがやりたいことではないのでしょうか? ODBCやJDBCなどでもいいですし状況がゆるせばportが解放されていれば 直接参照だって可能だとは思います。 遅延同期をするとなると、サーバーの情報は信用できなくなりますが 運用でカバーできるものでしょうか? 在庫があると思って、売っちゃったけど、同期したらすでに売れていて在庫がなかったとか
u-sukesan

2017/06/29 03:44

そうですね、それがやりたいのですが、なにぶんweb系言語メインできましたので手を出せずにいた部分です^ ^ですのでweb系言語でできる開発方法を探っていました 下記の件はそうですね。 ですので別スレでも質問したのですが、mysqlのマージする方法を検討していました。 が、とりあえずは、ローカルDBとねっとわーくDBのやり方で運用する場合は、ローカルを正をしてネットワーク上にコピーする方法を考えていました。 直接参照で遅延同期をするとなると、サーバーの情報は信用できなくなりますが 運用でカバーできるものでしょうか? 在庫があると思って、売っちゃったけど、同期したらすでに売れていて在庫がなかったとか
yambejp

2017/06/29 03:53

トランザクションが絡むような処理ならやはりサーバーの分散は危険です マスターデータやユーザー履歴など即時性の低いものは同期処理でよいとして メインの在庫データなどは常にメインサーバーへの読み書きを前提にしたほうが 良いと思います
u-sukesan

2017/06/29 03:58

ありがとうございます。 ちなみにメインサーバーへの読み書きを前提とした場合、 恐れているのはネットワークが繋がらない状態になった場合ですが、 こいうったケースを考慮した設計をしようと思ったら一時的にでもローカル上で何らかの形で入出力データを保管する必要があると思うのですが、どういった手段が好ましいでしょうか
yambejp

2017/06/29 04:09

> 恐れているのはネットワークが繋がらない状態 むしろ、ネットワークがつながらない時点で、在庫データが参照できないわけで これを利用した販売はしてはいけません。 たとえば拠点ごとの在庫データは各拠点が情報を持てばいいのでそのデータを参照し、 全社的なデータは参照不可に付き「予約・問い合わせ中」として拠点に保存しておく などのリスクヘッジはできると思います。
u-sukesan

2017/06/29 04:20

頭の中だけのイメージ設計段階ですが、拠点間で在庫データなどの情報を共有することはないと思います。 常時ネットワークに接続する必要性として、商品情報(在庫情報は含まない)などは拠点間で同じデータを共有したいと思っていますので商品選択時にネットワークに接続できないと困るという感じです。 イメージとしては在庫管理はなしで各拠点で販売した商品や売上情報を本部にて集計したいというのが主な働きです。 これを書きながら、商品情報のみCSVなどで初回にダウンロードするなどしてローカルにおく方法もありですね
yambejp

2017/06/29 04:28

なるほど、在庫データなど支店間の食い合い(競合)が発生するわけではないのですね? であれば随時もしくはタイミングを図った同期処理でよいと思います
u-sukesan

2017/06/29 04:34

そうですね。 ありがとうございます。方向性が見えました
guest

0

PCネイティブだと、JavaとかC#、場合によってはVBA(MS-ACCESSかなぁ)とかが多いだろうなと、
思いつつ。

「PHP コンソールアプリ」で、ぐぐると、いろいろできそうです。

http://symfony.com/components/Console

いわゆる黒い画面なので、いつの時代だよ!と思われそうですが、Web以外にもあるよということで。

投稿2017/06/29 03:02

momon-ga

総合スコア4820

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

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

u-sukesan

2017/06/29 03:06

ありがとうございます。 クライアントには画面のデザイン性も要求されていますが 一応調べてみます^ ^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問