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

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

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

複数の計算が同時に実行される手法

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

2523閲覧

kotlin 複数間androidの通信処理 サーバ 並列処理と通常処理のちがい

syosinsyaprogra

総合スコア67

並列処理

複数の計算が同時に実行される手法

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

1クリップ

投稿2019/02/25 16:36

複数のandroid間でのデータ通信と処理をしたいのですが、一つのandroidをホームにして、他の複数のandroidからのデータを受付、それら端末へのデータの送信を考えています。
かつ、そのホームandroidでも普通にアプリケーションを実行したいです。
普通にホームのアプリケーションにて、複数間通信のapiなどでandroid同士を繋いだ状態で、if等でデータを受信したら、データを加工して、送るというシンプルに記述しただけで、複数のandroidとのデータ通信は可能なのですか?
シンプルに記述すれば、それは並列的な処理ではない気がするので、間違ってるのかな?と思い質問しました。
仮にサーバーのように個別に対応したり、並列的に処理したりするにはどのようにするのでしょう?

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

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

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

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

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

guest

回答1

0

ベストアンサー

syosinsyaprogra さんの"シンプル" のイメージがどのようなものなのかが分かりかねます.
必要な処理を最低限のコードで行えばシンプルなのでしたら, 並列処理をするシンプルなコードは当然あるものと思います.


android では, 並列処理は主に複数のスレッドで行います. (サービスというのもありますが.)
サーバでしたら, 接続の受付スレッドと, 接続してきた各クライアント毎の処理スレッドを用いますのが基本構造かと思います.

投稿2019/02/25 17:15

編集2019/02/25 17:21
jimbe

総合スコア12543

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

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

syosinsyaprogra

2019/02/25 22:35

コメントありがとうございます。 すみませんわかりにくくて。 シンプルな記述とは、仮に何かのデータ通信が起きたときに呼び出すメソッド等あるなら、それをonCreated内にかくというものです。 そうではなく、多くのデータ通信を同時的にさばかないとだめということですか。 アプリケーション内でサーバを構築することは可能なのですか? よろしければ、ライブラリや検索の糧にしたいので、関連する用語等教えていただければ、すごく嬉しいです。
jimbe

2019/02/26 02:18

**同時に捌かない** サーバというのも存在します. クライアントが接続したら数文字だけ返すような機能で同時接続数が大抵1クライアントと想定されるようなサーバであれば, マルチスレッドにするのはオーバースペックですので, シンプルに "受け付けて, 文字を返して切断して, 次を待つ" とすると考えられます. 各スレッド間の構造的な **定義** は onCreate で行うことが多いかと思います. 「何かのデータ通信が起きたときに呼び出すメソッド」の呼ぶ側と呼ばれる側双方を作成することになります. 定義(=onCreate 内での記述)と動作(="多くのデータ通信を同時的にさば"く)は対義語ではございません. 動作が "同時的" だからと言っても記述は同時には行えませんので. アプリケーションとして所謂 Web サーバ的なサーバは可能です. ソケット通信(Socket と ServerSocket)についてお調べになっては如何でしょうか. > firebaseが基本ですかね? ご質問の内容から察しますに, "シンプル" な記述のサーバを書かれてみたほうが良いかと思います. firebase 等は, サーバの各種機能の実装に苦労したことのある方々にとって簡単になるというレベルのものです.
syosinsyaprogra

2019/02/26 18:26

丁寧なコメントありがとうございます。android10台から常にデータを、受け付けて、同時接続数が1であっても、android1とandroid2がホームandroidに、同時に接続しようとしたとして、android1の処理が終わったあと、android2の処理に移るという実装は可能ってことですか? サービスの効率上、同時に返さないと遅延が起こるときにマルチスレッドにするだけで、そうではないならオーバースペックということですか? 僕の中のイメージでは同時に接続しようとして、片方だけ処理されたら、もう片方の処理を忘れるような気がしてしまって。
jimbe

2019/02/27 00:12 編集

アプリケーションのレベルでは順次の処理として記述・実行されておりましても, その裏のシステムのレベルでは複数の処理が実行されております. ネットワークを含め各種インターフェースでの入出力は, まずシステムが受け付けてからアプリケーションに引き渡されますが, その際にもしアプリケーションが受け取る準備が出来ていなければ(受け取るメソッドを呼び出していなければ)それぞれの仕様に従いまして保留・破棄されます. ネットワークにおきましては, 通常1分程度の保留があります(インターフェースやその設定にも依ります). その間に受け取るメソッドを呼び出して受け取れば, 処理は可能です. 複数の接続から1つを受け取っての処理を行うと即他の接続が全て破棄されることは, まず無いと思います. ですが, 仰る通りサービス的にあまりユーザーを待たせてはプログラムとしては良い評価にはなりませんので, 想定される接続数や処理時間からの性能と, 開発にかかる手間とのバランスで仕様が決まることになります.
syosinsyaprogra

2019/02/27 17:50

おおおお!!!素晴らしい回答だとすごく納得感が素晴らしいです。 ありがとうございます!!教えていただいた情報でもう一度リサーチかけて、プログラムしていきます!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問