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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

JavaScript

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

API

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

Q&A

3回答

3797閲覧

WEBアプリケーションの構築でAPIを使用する?

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

JavaScript

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

API

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

0グッド

1クリップ

投稿2015/12/23 03:25

編集2015/12/28 00:47

SNSのシステムなどを構築しようと考えています。

cakephpなどのフレームワークで作成しようと思いますが、
いろんな方に相談した結果、サーバサイドのデータの通信はAPIを構築して行うのが、ゆくゆくスマフォアプリも利用するのに便利でかつ直接DBよりセキュリティ的に良いということでした。
(APIドキュメントはapiaryを想定。)

イメージ説明

私もまだまだ経験が浅いですが、一般的にアプリケーションはDBサイドはAPIで構築するのでしょうか。
その際のメリット・デメリットを経験のある方よりご教授頂きたいです。

よろしくお願いします。。

/以下追記です/

ご回答ありがとうございます。
質問が抽象的すぎても申し訳ありません、以下のようなイメージの構築を想定しております。
サーバサイドはcakephpなどを用いての構築です。
また、iPhone側にブラウザなどが増える想定です。

デスクトップアプリなど、WEB以外も視野に入れた場合API構築でないとDBから値を引き出せない認識ですが、それは間違えはないですか?

API仕様

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

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

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

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

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

guest

回答3

0

意図している答えになっているかどうか解りませんが、個人的な見解を書いておきます。

API はシステムに対する規格化 / 標準化した操作手段を提供することになるわけですが、API を準備する場合は、抽象的な概念レベルで『システムの在り方』や『構成要素とレイヤー』を把握し『外部へ提供する機能』を実現するために『必要な操作』を可能な限り明確化すべきです。ここが曖昧だと、似たようなモノや使いにくい機能が量産されることでしょう。

DB側のデータ操作などに対して API を構築するのは『システム内部の共通ライブラリ整備』という意味合いで、体系的な操作を準備することはよくあると思います。ただし、これは WebAPI ではない(このライブラリに対する wrapper を用意して WebAPI にするのはアリ)ですね。しかしながら、このレイヤーであれば DB自体の機能が使いやすいですし、サーバ間連携をしたいのであれば、API 関係なく DB上でデータ渡しをする構成で解決する方法なども考えられると思います。

WebAPI などの外部連携用インターフェイスの整備は一般的に AP(アプリケーション)側の話になると考えます。DB上に WebAPI を整備することは製品によっては(Oracle など HTTP に対する処理を実際 PL/SQL で15年以上前に私自身書いたことはあるので)技術的にできなくはないですが、今の時代に使うメリットはほぼ無いでしょう。

API がセキュリティ的に良いかどうかは設計次第です。例えば、必要だからといって DB に対して短絡的に書込操作ができる機能を提供した場合、認証や権限による制限などを併せて用意していなければ、外部から無制限に書込できてしまいます。これが許されるシステムの場合は問題ないわけですが、セキュリティ的に大きな穴だと判断されてしまうシステムもあるでしょう。また、データの取出など読取に関して際限なく引き出せると、通信などの負荷が全体的にかかるような事も考えられるため、場合によっては件数制限を加える必要があるかもしれません。このことから解るように、前提や設計が曖昧な状態で WebAPI を使っているから強固なシステムだ。などと単純に判断できるものでは無いと考えます。

WebAPI 自体は後から準備することも可能です。もし、外部のクライアントなり連携先システムとの同時開発が必要であれば、固定的なレスポンスなりを返す stub だけ用意して対処することも可能でしょうし、呼び出し側で工夫することも可能ですから、この辺は自分達にあった開発スキームを適用すれば良いでしょう。

あと、将来的な利用の想定だけして準備する。というのは余程の余力や経験、先見性がない限りしないほうが良いでしょう。実際の需要や必要な機能の差異は案外大きいものです。DB 操作用の WebAPI を準備したと仮定して、WebAPI は基本的に外部連携用のため、わざわざシステム内部から叩くと無駄な通信も発生しますからシステム自身で使うメリットもありません。整備するかどうかを判断する一つの指針として、明確な連携先と使い方/使われ方が想定できるかどうか?というのが使えるかもしれませんね。

以上、ご参考になれば幸いです。

投稿2015/12/23 05:26

ps13zier

総合スコア433

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

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

0

「DBサイドはAPIで構築する」という定義次第かとは思いますが、

仮に
「DBサイドはAPIで構築しない」とした場合に

  • iPhoneアプリ(もしくはほかのクライアント)からインターネット経由で直接DBにアクセスする

事を想定されているのであれば、少なくともSNSというアプリケーションでは

「アクセスする人がシステム管理責任者に限定されている」という状況以外では「あり得ない」です。

理由としては、クライアント側から投げられるクエリの正当性をチェックするような仕組みは一般的なDBには存在しておらず、クライアント側が危険なクエリを投入した場合でも一切チェックが出来ないためです。

「DBサイドはAPIで構築する」について、想定されている実装を出来るだけ具体的に提示頂ければより適切な回答が得られると思います。

投稿2015/12/23 05:21

tanat

総合スコア18713

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

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

0

MVCだったらModelからDBを触ればいいと思いますよ
触り方には

  • SQL文を書かないとはどういうことだ
  • ORMに任せればいいじゃん

など諸説あるようです

オンプレミスのネットワーク内のみならともかく、それ以外でクライアント側から直接DBを触るのは無い話ですね

投稿2015/12/23 03:41

編集2015/12/23 03:43
dojikko

総合スコア3939

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問