Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Androidクライアントからデータベースサーバーへのアクセス

Androidを使ったクライアント/サーバー・データベースシステム 第1回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/12/10 14:00

 現在リリースされているJDBCドライバのほとんどは、OracleのJava環境での動作が想定されており、AndroidのDalvik環境での動作は考慮されていません。実際、動作しないドライバが数多く存在し、Androidでデータベースクライアントを作るのにJDBCを使えばよいとは簡単にはいえない状況です。本稿では具体的なサンプルコードをもとに、それらの状況解決の一助を提供します。

目次

データベースベンダーが提供するJDBCドライバは、Androidでは動作するかどうかは分からない

 まず、いきなり本連載の目的と結論から書きます。

 「Androidアプリケーションの開発言語はJavaなのだから、JDBCドライバを使ってデータベースにアクセスすればAndroid端末をクライアントとしてデータベースサーバーにアクセスできるはずだ」と想像している開発者も多いかもしれません。

 しかし、話はそれほど単純ではありません。各データベースベンダーの提供するJDBCドライバの多くは、現状ではAndroid上のJavaで動作しなかったり、あるいは動作したように見えた場合でも、どのような制限や障害が発生するかは予測できません。

 Android上で動作するJavaプログラムは、Oracleが提供する正規のJREで動作するのではなく、Googleが提供するDalvik(ダルビック)仮想マシンと呼ばれるJava互換環境で動作します。そしてJDBCドライバもJREを利用するJavaプログラムの一種であることには変わりがないからです。

 現在リリースされているJDBCドライバのほとんどすべては、Oracleの提供するJava環境で動作するように書かれており、Delvik環境での動作は考慮されていません。そして実際、動作しないドライバが数多く存在します。そのため、Androidでデータベースクライアントを作るのにJDBCを使えばよいとは簡単にはいえない状況です。

JDBC Driver over HTTP for Android

 このような状況下で私たちは、Androidを使ったクライアントサーバーシステムをすぐに構築できるように「JDBC Driver over HTTP for Android」を開発しました(図1)。本連載の次回で紹介するこのJDBCドライバは、Webサーバーを経由してAndroidクライアントからデータベースサーバーにアクセスする、RESTを使ったデータベース接続のためのミドルウェアです。Webサーバーからデータベースサーバーへのアクセスは、データベースベンダーが提供するJDBCドライバを利用します。

 本記事用に開発されたこのJDBC Driver over HTTP for Androidは、完全な機能を持ったJDBCドライバではありませんが、データベースサーバーへのアクセス機能を持ち、ソースコードごと無償で提供されます。そしてJDBCと下位互換のAPIを持ちます。

 つまり、当面、このドライバ用にAndroidデータベースアプリケーションを開発しておき、ベンダーから正式にAndroidに対応したJDBCドライバがリリースされたら、それに切り替えるというプランが可能です。このドライバ用に開発したプログラムを、無修正で、今後提供されると思われるAndroid用のJDBCドライバに切り替えられるとまでは言いませんが、メソッドは共通なので、大きな手間はかからないはずです。

 また、例えば3G回線を使ってAndroidスマートフォンからアクセスするような場合、Webサーバーは公開しても、データベースサーバーは公開したくないという企業も多いでしょう。そのような場合にも、このJDBC Driver over HTTP for Androidは有効だと思います。

 ただし、あくまで下位互換なので、他のJDBCドライバ用に作ったアプリケーションが、このドライバで動くことは期待しないようにしてください。

 そのため、アプリケーション開発には、このドライバの実装レベルを考慮したプログラミングが必要です。つまり、どのメソッドが実装されているのかを把握して開発する必要があるので、それについても、以降、この連載で説明します。

DBGrid for Android

 Android端末をクライアントとしてデータベースアプリケーションを作る場合のもう一つの問題点は、データ連結可能なグリッドコンポーネントがないことです。これがないと1行を編集するアプリケーションは簡単に作れますが、複数行を一覧で見ながら編集するようなアプリケーションを作ることは困難です。

 この問題を解決するために、私たちは本連載用にDBGrid for Andoroidを開発しました。これも次号で紹介し、ソースコードを提供します。ただ、これはコンポーネントとして実装していないので、各種のデータベースアプリケーションに適用するためには、ソースコードを改変する必要があります。そのため、本連載でプログラムの実装内容の説明、および目的別のソースコードの改変の例を紹介する予定です。

有効に利用するにはソースコードの理解が必要

 これらのプログラムは記事のサンプルプログラムという性質上、エラーハンドラーはほとんど記述されていません。そのため、実際に使用するためにはソースコードの理解が必須となります。

 特にデータグリッドはプログラムを作るためにソースコードの改変が必要になります。そのため、本記事は、とても初心者向きの内容とはいえません。しかし、ある程度以上の上級者で、Android端末をつかったクライアント/サーバーデータベースアプリケーションの開発をすぐにでも始めたいという人には、有益なものだと確信しています。

ライセンスについて

 これらのプログラムのライセンスにも触れておかないといけないでしょう。これら、私たちが開発したプログラムを利用した開発者は、プログラムのソースコードを自由に改変し、コンパイルしたものをエンドユーザー向けに自由に配布することができます。ただし、開発者向けのプロダクトを再配布することはできません。この条件は、有償のコンポーネントを購入したユーザーの権利と同等と考えてくれればよいです。

 これが本連載の目的と結論です。ここまで読めば、本連載をこれ以降、読むべきか読まなくてもよいのか判断できるのではないでしょうか。

 次のページでは話を戻して、現在リリースされている各ベンダー製のJDBCドライバの問題点について説明します。

図1-1 JDBC Driver over HTTP for Androidを用いてデーベースにアクセスして、DBGrid for Androidでデータ表示/編集を可能にしたプログラムの実行画面。Android端末で動作するJavaプログラムが、Webサーバー経由でデータベースにアクセスしている。WebサーバーではJavaサーブレットがデータを中継している。Webサーバーからデータベースサーバーへのアクセスは、データベースベンダーが提供するJDBCドライバを使用するので、データベースサーバーは選ばない
図1-1 JDBC Driver over HTTP for Androidを用いてデーベースにアクセスして、DBGrid for Androidでデータ表示/編集を可能にしたプログラムの実行画面。Android端末で動作するJavaプログラムが、Webサーバー経由でデータベースにアクセスしている。WebサーバーではJavaサーブレットがデータを中継している。Webサーバーからデータベースサーバーへのアクセスは、データベースベンダーが提供するJDBCドライバを使用するので、データベースサーバーは選ばない

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 秋月 巌(アキヅキ イワオ)

    秋月ソリューション事務所 秋月巌 ソフトウェア開発者、及び、テクニカルライター 執筆記事一覧 秋月ソリューション事務所Webサイト

バックナンバー

連載:Androidを使ったクライアント/サーバー・データベースシステム
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5