ドリリウム

釣り、コーヒー、バイク、車、家具作り、DIY、アクアリウム

MENU

AndroidアプリでSQL Server等のDBへ接続したい

2017.11.7 / 2018.4.12 加筆修正

検索からこの記事へ訪れる方が多かったので加筆修正しました。 

 

この記事の内容は

Androidアプリを作る時に、どうやってDBへ接続するの?

です。

 

僕はAndroidを含むスマートフォンアプリを全く開発した経験がありません。

しかし、仕事で簡単なスマートフォンアプリを作る必要に迫られました。データを参照する程度のとても簡単なものなのですが、DB接続でいきなり詰まりました。普段は.NETやJavaなどを使ってWindowsアプリケーションを開発しています。 .NETやJavaからのDB接続はもはやあまりに当たり前で、そもそも大抵の会社では独自の実装を持っており、あまりDB接続について意識することはありません。

そんな僕がなんとかDB接続をすることができましたのでその方法をまとめています。

AdroidアプリからDB接続はできません

さて、まずは

  • Androidアプリ DB接続
  • Android DB

などと検索するも、情報がありません。

というか、基本的にはできないそうです。

JavaでDB接続する時にはJDBCドライバーを使いますが、独自のVM上で動くAndroidアプリには対応していないケースが多いらしいのです。案の定、僕の使いたいSQL Serverはダメでした。Microsoftが公開しているすべてのバージョンのJDBCドライバーで試したけどダメ。(運良く動くケースもあるらしい?です。)

 

それではどうやってDBを使うのかというと、WebAPIを使う方法が一般的なようです。

Web APIってなに?

Web APIという名前からなんとなく想像はつきますね?きっとWebのAPIです。

検索してみると、こうした解説サイトがいくらでも出てくるわけですが、ふわっとしか理解できません。どうにも具体的な定義や形がないものと思われます。

qiita.com

thinkit.co.jp

 

そこで、実際の作り方を調べてみることで具体的なイメージを掴もうと思います。

以下の2サイトは一例ですが、Web APIの作り方が掲載されています。なんとなくさらっと流し読むとイメージがより掴みやすいかと思います。

ここまで読んで、僕はなんとなく理解できた気がします。

Web APIとは

※僕の勝手な理解です

Web APIとは、WebページやWebアプリと同じようなものです。

WebページやWebアプリと同じようにJavaやPHP、ASP.NETなどで作成します。同様に、Webサーバーに設置します。しかし、WebページやWebアプリと決定的に違う点として、Web APIはブラウザに表示させたり、人が見ることがありません。画像やおしゃれに配置されたテキストは不要というわけです。APIというワードからわかる通り、Web APIも人ではなくアプリケーションのためにあります。今回でいえば、Androidアプリからデータを入出力できるWebページがWeb APIということになります。

ここでいう入出力とはHTTP通信です。

入力はHTTPリクエストで、出力はHTTPレスポンスです。

  1. AndroidアプリはWebAPIにHTTPリクエストでDBに対する検索条件を渡す
  2. WebAPIはHTTPリクエストで受け取った検索条件でDBを検索する
  3. WebAPIはDBの検索結果を必要に応じて成形してAndroidアプリにHTTPレスポンスで返す

f:id:katamichinijikan:20180412093918p:plain

 

WebAPIの作成にはWeb開発の知識が必要

ここまでの説明で分かる通り、WebAPIの開発はAndroidの開発とは少し違います。

Webアプリを作られたことがあれば簡単にイメージがつかめ、着手できると思いますが、そうではない場合にはWebアプリの作り方や仕組みから知る必要があります。

 

そもそもHTTP通信ってなに? → AndroidでのHTTP通信 - Qiita

 

 

AndroidアプリでHTTP通信する方法はネットにいくらでも情報があります。

しかし、Web APIに関しては先述の通りWebアプリ開発の領域です。また、あまりにも多種多様な形態があるようで、まさしくこれだ!という情報が見つかりません。Web APIからAndroidアプリでデータを取得する時のデータの形式は、JSONだとかXMLが一般的なようです。そこらへんはWebの基本的な仕組みがわかっていないとダメみたいで、結局本を買いました。

イラスト図解式 この一冊で全部わかるWeb技術の基本 

 

どんなWebAPIがあるの?

更にWebAPIのイメージを掴むため、実際に使われているWebAPIについても調べました。本当に多種多様、たくさんのWebAPIがあります。

今回の僕のように、社内やお客さん向けの開発であれば、社内やお客さんの社内でのみ利用されます。しかし、誰でも使える便利なWebAPIを作って公開している人や会社もあります。GoogleマップのAPIなんかが有名ですが、例えば以下のようなWebAPIもあります。

以下のページでは色々なWebAPIへのリンクがまとめられています。

こんなものもあるのか、とイメージがより持てるかと思います。

hacklog.jp

AndroidアプリからDBに接続する3ステップ

つまり、何をどうすれば良いかというと、以下の3ステップが必要です。

ステップ1

DBの操作ができるWebAPIを作成します。

ステップ2

AndroidアプリにWebAPIへのHTTP通信を行う機能を実装します。

ステップ3

WebAPIとHTTP通信を行い、AndroidアプリからWeb APIを操作することで、Web APIを通してDBを操作します。

 

ある意味アナログ?力業?とも取れますが、これが正攻法のようです。

素人なりに調べた結果が以上の通りで、実際に実装してもうまく動作させることができます。

基礎&応用力をしっかり育成!  Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

 

 

その他開発関係の記事はこちら。

プログラミング カテゴリーの記事一覧 - ドリリウム

Androidはこれっきりで、普段は.NETとかPHPが多いです。