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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

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

Q&A

解決済

5回答

3476閲覧

Webアプリからローカルアプリに情報を送りたい

motmot

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

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

0グッド

1クリップ

投稿2021/04/01 15:23

前提・実現したいこと

前提として具体的なソースを提示してほしいというわけではなく、考え方を教えて頂きたいです。

PHPでWebアプリを作成しています。
その中であるボタンをクリックした際にどうにかしてWindowsのローカルアプリ(これからC#で作ろと思っています)にユーザー名などのいくつかの情報を送りたいです。
送られた情報はWindowsアプリ側で取得して、その情報を印刷するといったことがゴールとなっています。

イメージとしてはSlackとかでメッセージを送ると、その人のSlack(Windowsアプリ)に通知が行くといったものが近いのかなと考えているのですが
この機能を実装するにあたって何が必要かが全く分かっていません。
どういった処理をすると実装できそうか、何か思いつく方がいたら教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

Windows PHP8.0.1

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

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

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

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

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

Hey_CH

2021/04/01 15:40

とりあえず、「PHP exe 実行」みたいな感じで検索してみては?
CHERRY

2021/04/01 21:00

Web サイトのボタンを押すのと、Windows アプリは同一のPC でしょうか? 別でしょうか?
退会済みユーザー

退会済みユーザー

2021/04/02 00:43 編集

HTTP 通信はクライアントからの要求に対してサーバーが応答を返すというのが基本です。なので、その基本に沿っている (すなわちボタンはクライアントにある ⇒ クライアントがボタンクリックしてサーバーに要求を出す ⇒ サーバーからクライアントに応答が返される) のであれば普通に容易に可能です。そういう話でいいのですか?
motmot

2021/04/02 09:44

ご回答ありがとうございます。 Webサイトのボタンを押すのとWindowsアプリは同一のPCになります。
退会済みユーザー

退会済みユーザー

2021/04/03 06:37

質問者さん、回答がいくつかついてますので、それ他に対するフィードバックを返してください。役に立った/立たなかったぐらいはすぐにフィードバックできるのでは? 役に立たなかったらどこがダメだったのかを書いてもらえると質問者さんの期待する回答が得られるかも。とにかく無言は NG です。
motmot

2021/04/03 06:53

>SurferOnWwwさん 失礼しました。 皆さん色々なことを教えてくださったのでまだ他にも何か示してくれる方がいるかもと思いそのままにしてしまいました。
guest

回答5

0

ベストアンサー

A APIでjsonのやり取り

Web側
DBに保存して

idname
1test

jsonを返すAPIを作る。
http://example.com/api/user/1

json

1{ 2 "id": 1, 3 "name": "test" 4}

PC側
APIから取得。

複数人で使うならWeb,PC両方にログイン機能が必要。

Twitterとアプリがこれなので一番一般的。

B カスタムURLスキーマ

Web側からはリダイレクト。
example://example/?id=1&name=test
example://example/1/test
カスタムURLスキーマをどう処理するかはPC側次第。

投稿2021/04/02 00:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

要件がふわっとしているので答えにくい質問だと思うのですが、やろうとしていることはけっこう難しい事だと思います。iPhoneとかのPush通知的なことに近いと思いますが、このようなことをWindowsのアプリで自前で実装しようとすると大変骨が折れる作業になりますし、そもそも完全に同じようなことをするのは無理があると思います。

パッと思いつくのはWebSocketでしょうか。ただし、サーバ側はPHPだと実装しにくいかもしれません。Node.jsとかの方がライブラリもドキュメントも揃っていると思います。ただし、これも様々な制限があり、要件に合うかどうかは分かりません。

サーバサイドをPHPでやるならYuseki4さんが書かれているようにポーリングでやる方法はあるかと思います(FTPである必要はないと思いますが)。ただし、こちらも即時性を求めるとなるとポーリングの間隔を狭めないといけませんし、サーバの負荷的な面も含めて課題が出てくると思います。

https://ja.wikipedia.org/wiki/Push技術

↑のWikipediaで出てくる単語で色々調べてみれば、何かしらのヒントがあるかもしれません。ただし、どれも実装はそこそこ面倒もしくは難しいと思いますので、その辺は覚悟してください。

投稿2021/04/01 16:55

編集2021/04/01 16:56
AbeTakashi

総合スコア4853

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

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

0

PHP側:ボタンを押したらファイルを作成する。そして必要な情報をファイルに含める。
phpで、fopenやfwriteを調べれば、ファイルの作成方法はわかると思います。

Windowアプリ側:1秒間に1回、PHPを動作させているサーバーにFTP接続して、ファイルがあったら
それをダウンロードする。(PHP側で生成したファイルをダウンロードする)
そして、そのファイルを解析する。

ただ、やり方は、本当にいろいろあると思います。他の人もいろいろ回答してくれると良いですね!

投稿2021/04/01 15:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

イメージ説明

・ローカルアプリ上でWebサーバーを立てる。
・ブラウザでボタンを押した際に、Webアプリに通信するとともに、ブラウザからローカルアプリのWebサーバーに通信する。

この方式の場合、ブラウザからローカルアプリに対してPUSH通信を行うことができ
ローカルアプリがWebアプリにポーリングする方式と比べて、リアルタイムに動作させることができます。

採用事例:
ヤマトB2クラウド、インテルのドライバー & サポート・アシスタントなど
未確認ですが、スペインの政府系システムにも採用されているそうです。

詳細は以下リンク先を御覧ください。

Webアプリの限界を超える方法

投稿2021/04/06 02:00

編集2021/04/06 13:49
tekka

総合スコア514

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

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

0

Webサイトのボタンを押すのとWindowsアプリは同一のPCになります。

以下の記事のようなことで良いのですか? 記事はサーバー側は ASP.NET Web API ですが、そこは同等の機能を質問者さんの Web アプリで実装可能と思います(でなければ、こういう話は出てこないのでは?)。

HttpClient で ASP.NET Web API にアクセス
http://surferonwww.info/BlogEngine/post/2019/09/29/call-aspnet-web-api-from-httpclien.aspx

違う場合は、どこがどのように違うかを書いてください。

投稿2021/04/02 11:09

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問