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

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

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

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

2回答

3351閲覧

WebにおけるAPIの種類?

退会済みユーザー

退会済みユーザー

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

3クリップ

投稿2016/12/31 08:26

一言でWebAPIといっても、様々なAPIがあるのでしょうか?
私の中では、WebAPIというのは、(SOAPやRESTといった礼儀はあるのですが)、呼び出して返り値を得るためのものと思っていたのですが、「PlayFramework徹底入門」という本を読んでいると、次のような記述がありました。
"世の中にあるWebサービスの中には、APIが公開されているものが数多く存在します。このAPIを利用したマッシュアップサービスというものも数多く運営されています。ただ、こうした公開APIを持っていないサービスでも、スマートフォン連携型のサービスではAPIを当たり前のように持ち合わせています。というものスマートフォンアプリが必要とするのは、情報のやり取りそれ自体であり、ブラウザを使った HTMLベースの画面遷移ではないからです。”

この文からは、スマートフォンアプリが必要とするAPIは持っているけど、公開APIは持っていないようなサイトが存在する、と言えると思うのですが、この認識で正しいでしょうか?
どうせAPIを作るなら、公開もできて、スマートフォンにも対応している方が良い風に思えるのですが、そうでもないのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

APIを作成しても公開するとは限りません。
以下のような理由があるからです。
(1)サーバの運営者側に負担増
公開することでアクセス数が増えて、サーバへの負荷がかかります。
その負荷に耐えられるようにするためにサーバインフラを増強する費用が発生するかもしれません。
(2)不正利用予防
非公開のAPIを解析することによって、運営側が意図しないゲームの攻略をされてしまうことがあります。
例えばPokemonGoはAPIを公開していませんが、いろいろな人が非公開のAPIをハックした結果、モンスターの出現個所を表示するツールなども非公式で出ています。
また意図しないAPIの利用によって脆弱性を突かれる可能性もあります。

投稿2016/12/31 09:21

nakasho_dev

総合スコア2655

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

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

退会済みユーザー

退会済みユーザー

2017/01/01 01:43

Pokemon GOについてですが、非公開のAPIを一体どのように解析するのでしょうか? また、スマートフォンアプリは使用できるけど、公開されていない、すなわちWebアプリは使えないようなAPIというものはあるのでしょうか?
nakasho_dev

2017/01/01 19:11

中間者攻撃という手法を利用して自分の端末の通信をハッキングすると、どのようなAPIをたたいているか理解できると思います。 http://qiita.com/hitoshi_ichikawa_i3/items/cd2f6b0477482a358929 Webブラウザで動作するアプリの場合は、Webブラウザの開発者向けツールを使用することで、ある程度解析は可能です。 スマートフォンアプリで叩いているものが一般的なWebAPIであれば、Webブラウザからでも使用できます。公開していないから知らないだけで知れば叩けてしまうものになります。 ただし、一般的なWebAPIではなくWebブラウザが一般的に対応していない通信プロトコルをアプリとサーバで使用している場合は、Webブラウザから利用することは困難になるかもしれません。 今回、Webアプリという表現をWebブラウザに変えさせていただきました。 Webアプリという表現のままですと、以下のいずれかでぶれてしまうので。  (1)JavaScript等でブラウザ上で動作しているプログラム。  (2)ブラウザに渡す表示内容をサーバ上で構築するプログラム。
退会済みユーザー

退会済みユーザー

2017/01/02 03:14

回答ありがとうございます。 よくわかりました。
guest

0

サーバー側でロジック処理して実行し、その結果をフロント側に返すと思うのですが
スマートフォンアプリの場合、そこの連携がAPIで行われているという意味かと思います。
内部で処理した内容(※)を返して表示するために使うAPIであって、
広く世の中に公開するようなAPIを実装しているわけでは無いかと思います。

※例えばスマホゲーでユーザーAが持っている金額を取得したい場合に、
フロント側からRESTで(ユーザー情報やセキュリティ情報を)リクエストして、金額という返り値を取得する流れになる筈です。
このAPIはあくまでスマホゲーの中で完結するインターフェースであって、一般ユーザーが使うAPIではない。

APIにも色々な種類がある、ということを学ぶと良いかなと思いました。(偉そうにすみません……!)

投稿2016/12/31 08:58

編集2016/12/31 08:59
tsuyoring

総合スコア93

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

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

退会済みユーザー

退会済みユーザー

2017/01/01 01:47

回答ありがとうございます。例として、スマホゲームの中で使用されるAPIを出されていますが、そのアプリはスマートフォンアプリでは使えるけど、通常のWebアプリでは使えない、という例でよろしいでしょうか? また、その実装ってどうするのでしょうか?
tsuyoring

2017/01/01 01:59

はい、その認識であっています。 通常のWebアプリというか、どこからでもリクエストをすることはできるかとは思いますが。 それが正しい値を返すとか、処理が進むとかとは別問題かなと。 実装はサーバーサイドのプログラミングによるので、一概には言えないです。何を知りたい感じですか?
退会済みユーザー

退会済みユーザー

2017/01/01 03:50

スマートフォンのアプリからはアクセスできるけど、通常のWebアプリからはアクセスできない、というのは一体何を元にして実現するのか、ちょっと想像できないのです。スマートフォンアプリのためのサーバもWebアプリのためのサーバも結局同じサーバじゃないですか。リクエストのヘッダから判断するのかなと思うのですが、それらを区別するようなキーはあるのでしょうか?
tsuyoring

2017/01/01 04:16

おそらくご認識通りかなと思います。 「アクセス」自体はできると思います。 私が知っているのはREST通信でJSONをリクエストするようなケースですが、、、 たとえばYahooのページにアクセスするときにアドレスを入力してアクセスするのと同じように、 あるアドレスが用意されていて、そこに対してHTTPのリクエストを投げるイメージになります。 HTTPSのように証明書がないとアクセスできない、みたいなことができるのは不明ですが、 ヘッダ・キーについてはそれぞれのサーバーサイドでの実装で決まるかなと思います。 たとえばJSON形式であれば、下記のように { "id": 1233457, "password": "sdv54adasds5as7v5sa4v1as4fc5sa", "wanted": "image_url" } idとpasswordを送信し、画像ファイルを受信する、といった動きを決められます。 が、どういった名称でリクエストするのか?フォーマットや値はそのサービスによって自在に決められます。 そのため、billさんの質問「区別するようなキーはあるのか?」に対しては、 「そういったキーを自分で作ることはできる」という回答になります。 JSONについては下記も参考に。  http://qiita.com/tkawa/items/2841e155e5b51c09ed40
退会済みユーザー

退会済みユーザー

2017/01/01 06:46

回答ありがとうございます。 すいません、よくわかりませんでした。 例えばRESTfulなアプリケーションでは、基本的にURIにアクセスする時に送るのは、httpリクエストであって、JSON形式のデータではないと思うのですが、tsuyoringさんの回答では、JSON形式でサーバに対して、識別するためのデータを送るということで、間違いないでしょうか? そういうWebAPIもあるということなのでしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問