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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

972閲覧

ネイティブアプリのデータ連携について

lplplp

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2019/04/12 09:03

編集2019/04/12 09:28

いつもお世話になっております。

会社で顧客向けのネイティブアプリを作ることになったのですが、
アプリ側からサーバー上のDBにアクセスするのには、
①phpなどのプログラムで作られたapiを呼び出してデータの受け渡しを行う方法が一般的なのでしょうか?

今のDBは違うサービスでも利用しているので顧客が増加し、何度もリクエストを投げることにより
障害が起きてしまったりする恐れがあるので、
②アプリ用のDBを作成し、そこに定期的にデータをインポートしてデータの連携を行う
という方法も考えられるのですが、
この方法は間違っているのでしょうか?

どのサイトを見ても①の方法しか書いていなかったので質問させていただきます。
よろしくお願い致します。

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

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

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

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

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

m.ts10806

2019/04/12 09:19

もう少しわかりやすく「前者」と「後者」を切り分けて記載いただけますか?
lplplp

2019/04/12 09:29

わかりづらくて申し訳ございません。修正しました。
m.ts10806

2019/04/12 09:34

んー、でもこれ「用件・仕様次第」なところがあってどれも一長一短ですね。 データのリアルタイム性が求められるかとか、使用する人数とか形態とか時間とか。 どちらも試してみては?という間接的な回答になりますが、如何でしょうか。 あまり内部事情を知らない他人が口をおいそれと無責任に出せる領域ではなさそうです
lplplp

2019/04/14 03:20

ご回答ありがとうございます。 要件次第で変わってくるということなのですね。 とても参考になりました。ありがとうございます!
guest

回答2

0

ベストアンサー

①はよくやる方法です。
ただ、例えば、とあるニュースやお知らせなど、表示させる内容が不変で、誰もが同じ内容を見るものであれば、先に、XMLやJSONのテキストファイル、アプリ内でWeb表示するのであればHTMLを吐き出しておいて、アプリがそれを取得する、などの方法もあります。

②に関しては、
「アプリからデーターの書き込みがない」
「リアルタイムの情報でなくても良い」
のであれば、相当なアクセス数が予測される場合はこの方法がとられることがあります。
ただ、だいたいこの方法をとる場合、インポートしてDBに集計結果を保存するなど、そのモノのデーターがアプリ用のDBに必要ないことがほとんどでした。
この場合でも、PHPなどを介してデーターのやり取りをすることがほとんどです。

この話が出ているということは、アプリ用のDBを別のサーバーに設けることを検討していると思います。
(同じサーバーで新しくDB作っても、分散という意味ではあまり意味がないと思うので・・・。)
元のDBと同じデーターが必要で新しくサーバーを用意するのであれば、DBを冗長化するのもひとつの考えだと思います。
ただ、既存のサービスとの責任の分界点ははっきりさせておいた方が良いです。
(それが嫌でDBを分ける。という考えもありますが・・・。)

投稿2019/04/13 04:24

編集2019/04/13 04:32
em334

総合スコア24

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

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

lplplp

2019/04/14 03:23

とても詳しく説明していただきありがとうございます。 参考にし、使用を固めていきたいと思います。
guest

0

レイヤーの違う事を比較しようとしている様に見えます。

前者のAPIはインターフェイスの話で、後者は同期タイミングと粒度の話です。

例えば、
オフライン作業に対応する為には後者の様な形でアプリ内にある程度データをためてからサーバに送信する必要がありますが、
そのタイミングでデータを受け取るのはAPIで有るケースが多いです。
この場合前者と後者が両立する状況ですね。

インターフェイスとデータ同期の粒度についてはそれぞれ別に要件を設定して、それぞれのレイヤーで実装を検討する必要があります。

その上で、質問1に回答すると

ネイティブアプリからRDBMSに直接接続して運用出来るケースはかなり限られるので、何らかのAPIを経由するのが一般的でしょう。
ファイルをインポートするようなケースであっても、インポートを担当するAPIを経由することになります。

理由は色々ありますが、
RDBMSの機能だけだとユーザーとその権限管理やバリデーションに限界があり、安全性と機能を担保するためのコストが高い
というところが大きいと思います。

投稿2019/04/12 10:16

編集2019/04/12 10:33
tanat

総合スコア18713

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

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

lplplp

2019/04/14 03:26

ご回答ありがとうございます。 とても勉強になりました!! 参考にし、仕様を固めていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問