SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Androidを使ったクライアント/サーバー・データベースシステム

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

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


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルファイル (840.0 B)

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

データベースベンダーが提供する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ドライバを使用するので、データベースサーバーは選ばない

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ベンダーが提供するJDBCドライバを使ってデータベースにアクセスするサンプルプログラム

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Androidを使ったクライアント/サーバー・データベースシステム連載記事一覧
この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5598 2010/12/14 16:46
" ); }

おすすめ

アクセスランキング

  1. 1
    NVIDIA、コンパクトな生成AIスーパーコンピューターを発表 NEW
  2. 2
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    「CUDA」 ~マンガでプログラミング用語解説
  5. 5
    Linuxディストリビューション「Fedora Asahi Remix 41」リリース NEW
  1. 6
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  2. 7
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 8
    Amazon Bedrock、ナレッジベースにおけるRAG評価とモデル評価におけるLLM-as-a-judgeをサポート NEW
  4. 9
    Next.js 14までの進化を振り返る──App Routerを強化する新機能を解説! NEW
  5. 10
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは

アクセスランキング

  1. 1
    NVIDIA、コンパクトな生成AIスーパーコンピューターを発表 NEW
  2. 2
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    「CUDA」 ~マンガでプログラミング用語解説
  5. 5
    Linuxディストリビューション「Fedora Asahi Remix 41」リリース NEW
  6. 6
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  7. 7
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  8. 8
    Amazon Bedrock、ナレッジベースにおけるRAG評価とモデル評価におけるLLM-as-a-judgeをサポート NEW
  9. 9
    Next.js 14までの進化を振り返る──App Routerを強化する新機能を解説! NEW
  10. 10
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    NVIDIA、コンパクトな生成AIスーパーコンピューターを発表 NEW
  2. 2
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    「CUDA」 ~マンガでプログラミング用語解説
  5. 5
    Linuxディストリビューション「Fedora Asahi Remix 41」リリース NEW
  1. 6
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  2. 7
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 8
    Amazon Bedrock、ナレッジベースにおけるRAG評価とモデル評価におけるLLM-as-a-judgeをサポート NEW
  4. 9
    Next.js 14までの進化を振り返る──App Routerを強化する新機能を解説! NEW
  5. 10
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは

アクセスランキング

  1. 1
    NVIDIA、コンパクトな生成AIスーパーコンピューターを発表 NEW
  2. 2
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  3. 3
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 4
    「CUDA」 ~マンガでプログラミング用語解説
  5. 5
    Linuxディストリビューション「Fedora Asahi Remix 41」リリース NEW
  6. 6
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  7. 7
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  8. 8
    Amazon Bedrock、ナレッジベースにおけるRAG評価とモデル評価におけるLLM-as-a-judgeをサポート NEW
  9. 9
    Next.js 14までの進化を振り返る──App Routerを強化する新機能を解説! NEW
  10. 10
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表