Re: [android-group-japan: 19706] Androidから外部MySQLデータベースに接続する方法

10,426 views
Skip to first unread message

Makoto Yamazaki

unread,
Sep 3, 2012, 2:37:05 AM9/3/12
to android-g...@googlegroups.com
zaki です。

外部のデータベースにアクセスするアプリの作りとしては php、Java、python などで
Web技術をベースにしたAPI を用意してそこに HTTP などで接続するものが一般的かなと
思います。
ただ、将来 Android 以外からのアクセスが無さそうである程度限定された環境での動作を
前提とするなら JDBC でつなぐのもありかなという気はします(開発工数自体はこっちのほうが
少なくできるでしょうし)。

JDBC ドライバが Android 3.0以降で動かないということはなかったように思うのですが、
具体的にはどのような症状が出るのでしょうか。
もし UI スレッドで JDBC ドライバを使用しているのであれば、アプリの作りの問題なので
正しく(通信をUIスレッドから分離するように)実装すれば動くんじゃないかなと思います。

2012/9/3 okacom mori <okaco...@gmail.com>:
> はじめまして、okacom-moriと申します。
> 最近Androidアプリ開発を始めた初心者です
>
> ■開発環境
>  Win7 Ultimate 32bit sp1
>  Eclipse Juno Pleiades All in One
>  AndroidSDK4.0.3
>  AVD4.0.3
>
> ■内容
>  Androidから外部MySQLデータベースに接続する方法を探しています。
>
>  現在、MySQLデータベースを操作アプリを作成する為に調査しております。
>  Webで調べた結果、以下の2つの方法を見つけました。
>
>  (1)JDBCモジュールを使用して接続する方法
>    ⇒Androidのバージョンが3.0以降では正常に動作しない為、ダメ。
>
>  (2)AndroidからMySQLを操作するPHPを呼ぶ方法
>    HttpURLConnectionを使用してのJAVA側から送信されたURLにGET形式で検索語を送信し、
>    PHP→MYSQL接続→データ取得→JAVAという形
>
>  この2つ以外にも、MySQLデータベースに接続する方法はあるのでしょうか?
>  また、それぞれ長所短所はあると思いますが一般的な接続方法はどれなのでしょうか?
>
>
> 宜しくお願い致します。
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/KcQ50FHHmicJ
> にアクセスしてください。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。



--
YAMAZAKI Makoto

ishihata

unread,
Sep 3, 2012, 3:43:36 AM9/3/12
to android-g...@googlegroups.com
こんにちは。石畑と申します。

JDBC ドライバについては、新しいバージョンを使うと
エラーが出てしまうと思うのですが、
古いバージョンはいちおう使えると思います。
以前、Android 3.0 タブレット+Connector/J 3.0.17 で動かしたことがあります。

JDBC を使うか、それとも HTTP ベースで通信するかの選択は、
どういったシステムを想定するかによると思います。
完全にローカルな閉じたネットワークで動かすシステムで、
信頼できる人だけが使うということなら、
JDBC で直に繋いでしまうのもありだと思います。
逆に、一般に公開して不特定多数が利用するシステムにするなら
HTTP ベースにするのが妥当だと思います。

2012年9月3日月曜日 14時39分54秒 UTC+9 okacom mori:

okacom mori

unread,
Sep 3, 2012, 3:43:59 AM9/3/12
to android-g...@googlegroups.com
okacom-moriです。

HTTPでやるのが一般的なんですね、でも確かに工数も大事な問題です。
後、JDBCですが通信処理の部分をUIスレッドから分離したら出来ました。
私の誤読だと思いますが、どこかの記事で読んでそういうものだと思い込んでいました。

大変助かりました、有難うございました。

2012年9月3日月曜日 15時37分53秒 UTC+9 zaki:
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com

l.b.

unread,
Sep 3, 2012, 4:14:00 AM9/3/12
to android-g...@googlegroups.com

 村上です。

 技術的な話ではないですが、一つ気になったので。
 MySQLのJDBCドライバとしてConnector/Jを使用する場合、ライセンスがGPLであるため、
アプリ自体にGPLの制約が出てくるかと思います。
 (商用で契約していない限り)

 これを避けるためにWebサーバ側で実装してAPIを用意し、アプリからはHTTPでWebAPIを
使うということも多いのでは無いでしょうか。

 今回のアプリの提供範囲が不明なため、あくまでご参考まで。

okacom mori

unread,
Sep 3, 2012, 5:04:09 AM9/3/12
to android-g...@googlegroups.com
お世話になります、moriと申します。

Androdのバージョンアップに伴って、通信処理をUIスレッドからの分離が
必ず必要になったという事だと思っていたのですが
JDBCのバージョンによっても動作が変わる事があるという事ですね、気を付けます。

Android:4.0.3
JDBC:mysql-connector-java-5.1.21
の環境ではとりあえず動いていると思います。

後、セキュリティ面を考えるならHTTPの方が良いのですね。

有難う御座いました。

okacom mori

unread,
Sep 3, 2012, 5:22:48 AM9/3/12
to android-g...@googlegroups.com
村上様

お世話になります、moriと申します。

------------------------------------------------------------------------------------------------------------
GPLのソフトウェアは、一般的には無料でインターネットからダウンロードして
利用できますが、動作の保障はなく、利用者の責任においての利用となります。

GPLのソフトウェアを全部または一部利用して新たなソフトウェアを作成した場
合、新たに作成したソフトウェアに対してもGPLラインセンスが適用されます。
------------------------------------------------------------------------------------------------------------

JDBCドライバには動作保障が無く、さらに出来上がったものを無料で公開しなければいけないという事ですね。
それは知りませんでした、商用で使用する場合には注意が必要ですね、勉強になりました。


有難うございました。

Andropenguin S

unread,
Sep 3, 2012, 5:48:42 AM9/3/12
to android-g...@googlegroups.com
andropenguinです。

GPLのソフトは、プロセス間通信を利用すれば、自作アプリにGPLの影響が
及ぶことはないと私は解釈しています。GPLなアプリと、自作アプリの別
パッケージにすればいいです。通信はAIDLを使って行います。方法は、
私のウェブサイトで恐縮ですが、

http://sarl-tokyo.com/files/presentations/index.html

http://sarl-tokyo.com/abc.html

で紹介しています。CやC++で実装されたソフトを使う場合は、
JNI(NDK)を使えばAndroidアプリにできます。
今回話題にのっているJDBCで応用できるかは検討しないとダメですが。
ただし、2パッケージにすると、一般庶民のユーザはインストールを
嫌がるようですけど(^^);。

--
twitter: @osaroid


2012年9月3日 18:22 okacom mori <okaco...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/fuSSZbld3_QJ
> にアクセスしてください。
>
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com

okacom mori

unread,
Sep 3, 2012, 9:25:00 PM9/3/12
to android-g...@googlegroups.com
andropenguin 様

お世話になります、moriと申します。

資料を拝見しました

今回の場合、検討する必要がありますが
(1) JDBCをプロセス間通信できる形に再作成する(GPLソフト)
(2) (1)を使用するAndroidアプリを作成する(非GPLソフト)
(3) (1)と(2)を別パッケージにする
という方法もあるという事ですね。

成程、こんな方法もあるのですね、勉強になりました。

有難う御座いました。

Andropenguin S

unread,
Sep 3, 2012, 9:48:25 PM9/3/12
to android-g...@googlegroups.com
andropenguinです。

補足すると、JDBCを内蔵するソフト(GPLソフト)はActivity(画面)を
持たないServiceアプリにした方がいいでしょう。ただし、端末の
設定-アプリケーションのリストから、そのアプリをタップして、画面が
出ないと騒ぐユーザも一部いるので、Activityを持たせて、ライセンスの
都合でServiceとして動作するアプリであると表示するのがいいかもしれません。
また、aidlファイルは外部に公開して、非GPLアプリ内で、
使用(内包)するので、GPLと共存できるPublic Domainにするといいです。
aidlファイルは他のライセンスでもGPLと共存できるかもしれませんが、
GPLのFAQを読んで研究してみてください。

--
twitter: @osaroid


2012年9月4日 10:25 okacom mori <okaco...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/72Ld7wbV_eoJ

okacom mori

unread,
Sep 3, 2012, 10:06:15 PM9/3/12
to android-g...@googlegroups.com
andropenguin 様

GNU GPLに関して良く聞かれる質問
http://www.gnu.org/licenses/gpl-faq.ja.html

こういうページがあるのですね。
まだGPLに関して理解が不十分だと思いますので
ここを読んで研究します。

有難うございました。

Koutarou Tanaka

unread,
Sep 4, 2012, 9:00:03 AM9/4/12
to android-g...@googlegroups.com
たなかと申します。

一応突っ込んでおきますが、GPLには「無料で公開しなければいけない」という条文はないです。
GPL v3のはじめの方には下記の通り明記されています。

"When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things."
( http://www.gnu.org/licenses/gpl.html より引用 )

GPLの言う「自由」とは価格のことではありませんし、ソースコード配布にあたって
手数料を取ることは問題ないと書かれています。
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/fuSSZbld3_QJ にアクセスしてください。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>

Andropenguin S

unread,
Sep 4, 2012, 9:17:35 AM9/4/12
to android-g...@googlegroups.com
andropenguinです。

私もそれは承知していますが、仮に有料で公開しても、他の誰かがそれを購入して
他所で無料で公開することを妨げることはできないので、有料での公開は
無意味でしょう。
ただ、iOSアプリの場合は、Appleの審査で類似のアプリは却下するという規程が
あるようなので、他のだれかがGPLで公開されているアプリのソースコードに
お金を払って、ソースコードを入手して、改造して自分のアプリとしてリリースする
ことは困難かもしれませんね。
Androidでは、審査なんてないので、類似アプリの公開は簡単にできそうですね。
あと、記憶が定かではないのですが、有料といっても、CDやDVDのメディア代、
その配送料程度しか料金は許されないのではないかと解釈しています。


2012年9月4日 22:00 Koutarou Tanaka <from.kyus...@gmail.com>:

--
twitter: @osaroid

Koutarou Tanaka

unread,
Sep 4, 2012, 2:21:24 PM9/4/12
to android-g...@googlegroups.com
たなかです。

[android-group-japan: 19719]のmoriさんの投稿に
> 出来上がったものを無料で公開しなければいけないという事ですね。
とありましたので、勘違いを防ぐために投稿しました。

ソースコードを秘匿したい場合、GPLでライセンスされているソースコードを利用するべきではありませんので、
今回の僕の投稿がディスカッションでの役に立つ訳ではありませんが
GPLでライセンスされているソフトウェアは無償で公開される必要があるという誤解を
そのままにしておくのは良くないと思ったためです。

メールを書いている最中に思い出した参考文書: "Selling Free Software"

手数料に関してですが、FSF曰く

「あなたはプログラムの複製を頒布するにあたり、望むだけの手数料を課 すことができます。ただし、もしあなたがバイナリをダウンロードによって頒 布するならば、あなたはソースのダウンロードに関しても「同等のアクセス」 を提供しなければなりませんので、ソースのダウンロードに課す手数料はバイ ナリをダウンロードするための手数料よりも高くなってはならないということ になります。 」

ということですので、andropenguinさんの解釈と大きくずれてはいないかと思いますが
バイナリ配布の手数料(例えばPlay Storeでの販売金額)と同額までなら許容されるとも
読めるような書き方だと思います。

-- 
Koutarou Tanaka
Sparrow を使って送信

日付:2012年9月4日火曜日、時刻:22:17、差出人:Andropenguin S:

okacom mori

unread,
Sep 5, 2012, 12:27:09 AM9/5/12
to android-g...@googlegroups.com
たなか 様
andropenguin 様

お世話になります、moriです。

私の勉強不足でお手を煩わせました。
GPLライセンスの理解をもっと深めていきたいと思います。

大変勉強になりました、有難うございました。
Reply all
Reply to author
Forward
0 new messages