MySQL からのデータを使用する

AppSheet は、Google Cloud SQLAmazon RDSOracle MySQL Cloud Service、またはその他の MySQL をサポートするクラウド ホスティング プロバイダなどの、クラウドでホストされている MySQL データベースからアプリを構築できます。

次のセクションで説明するように、MySQL のデータを使用します。

MySQL データソースを追加する

MySQL データソースを追加する前に、サポートされている MySQL バージョンをご覧ください。

注: AppSheet サーバーがデータにアクセスするには、MySQL データベースのネットワークと MySQL データベース自体の両方が、AppSheet サーバーからデータベースへの受信接続を受け入れる必要があります。詳細については、IP アドレスとファイアウォール情報を管理するをご覧ください。

MySQL データソースを追加するには:

  1. [My Account] > [Sources] に移動します。
    現在使用できるすべてのデータソースを確認できます。
  2. [+ New Data Source] をクリックします。

  3. データソース名を入力し、データソースのリストの [Cloud Database] をクリックします。

    [Add a new data source] ダイアログで [Cloud Database] を選択する
  4. データベースの接続情報を構成します。 
    • [Type]: [MySQL] を選択します。
    • [Server]: MySQL データベース サーバーのホスト名または IP アドレスを入力します。
    • [Database]: データベース名を入力します。
    • [Username]: データベース ユーザーのユーザー名を入力します。
    • [Password]: データベース ユーザーのパスワードを入力します。
    • [SSL]: 接続に必要な SSL モードを選択します。詳細については、Configure SSL をご覧ください。
  5. [Test] をクリックして接続の詳細をテストします。
  6. テストが成功したら、[Authorize Access] をクリックして、AppSheet アカウントにデータソースを保存します。

SSL を設定する

AppSheet は、セキュア ソケット レイヤ(SSL)を使用して MySQL インスタンスに接続できます。MySQL データソースを追加するときに、次のいずれかを選択します。

SSL モード

説明

なし

SSL 接続は必要ありませんが、クラウド プロバイダによっては引き続き可能な限り SSL の確立を試みます。

必須

MySQL インスタンスとの間のデータは、SSL プロトコルを使用して暗号化する必要があります。

接続を確立するために必要なのは、(MySQL インスタンスが所有する)サーバー証明書だけです。クライアント証明書(通常はアプリケーション クライアントに保存されています)は任意です。

: MySQL インスタンスが X.509 を使用するように設定されている場合、接続を機能させるために接続モードを SSL に変更する必要があります。Google Cloud でホストされているインスタンスでは、[SSL] タブで [Allow unsecured connections] をクリックすることで、X.509 モードをオフにできます。これにより、クライアント証明書の要件が緩和されます。

VerifyCa

MySQL インスタンスとの間のデータは、SSL プロトコルを使用して暗号化する必要があります。

クライアント証明書を使用して、サーバーを認証します。また、指定された CA 証明書を使用してサーバーの CA を確認します。このモードは、ホスト名の不一致を許容します。

次のコンテンツをアップロードするよう求められます。

  • クライアント証明書
  • クライアント証明書の秘密鍵
  • サーバー CA 証明書

: このモードは、ホスト名がないが、接続用の IP アドレスを公開しているデータベース サーバー(Google Cloud SQL など)の場合に役立ちます。

VerifyFull

MySQL インスタンスとの間のデータは、SSL プロトコルを使用して暗号化する必要があります。

このモードは VerifyCa と同じですが、CA 証明書を使用したサーバーホスト名にも一致します。

次のコンテンツをアップロードするよう求められます。

  • クライアント証明書
  • クライアント証明書の秘密鍵
  • サーバー CA 証明書

SSL 接続を使用する場合、MySQL インスタンスは VeriSignGeoTrust などの広く認知されている認証局によって生成されたサーバー証明書を使用することを強くおすすめします。これにより、証明書が関連するすべての暗号化基準とフォーマット基準を確実に満たすことになります。Google Cloud や Amazon RDS など、一部のクラウド ストレージ プロバイダも、ホストしている MySQL インスタンス用にサーバー証明書を生成しています。現在、TinyCA によって生成されたサーバー証明書と自己署名証明書はサポートされていません。

また、SHA-2 ハッシュ アルゴリズムを使ってサーバー証明書に署名することもおすすめします。これは、SHA-1 アルゴリズムはもはや完全に安全とはみなされず、Microsoft、Amazon、Google を含む多くのクラウド プロバイダが SHA-2 や SHA-3 への移行を進めているからです。

アプリで MySQL データソースを使用する

MySQL データソースをアカウントに追加すると、MySQL テーブルやビューを任意のアプリに追加できます。アプリで [Add Table] を選択した場合、特定のデータソースとそのデータソースからのテーブルやビューを選択できます。

アプリに追加されると、AppSheet はすべてのデータソースを同様に扱います。実際に、MySQL データソースからのデータを同じアプリの他のソースからのデータと結合することは一般的です。

Amazon RDS で MySQL を使用する

MySQL インスタンスが Amazon RDS でホストされている場合、[Publicly Accessible] 設定を [Yes] に設定する必要があります。サーバーが AppSheet からのトラフィックを確実に受け入れるようにするには、Amazon RDS のセキュリティ グループ設定に移動し、EC2 Management Console に入り、[Edit inbound rules] を選択して、AppSheet の IP アドレスからのすべてのトラフィックを受け入れるルールを作成します。これについては、IP アドレスとファイアウォール情報を管理するをご覧ください。

サポートされている MySQL バージョン

AppSheet と連携する MySQL の場合、MySQL バージョン 5.7.6 以降を使用することをおすすめします。

また、MySQL はオープンソースであるため、MariaDBPercona など、MySQL の多数のバリエーションがあります。MySQL のバリエーションを使用する場合、AppSheet ではデータベースが機能することを保証できません。

: MySQL データソースを操作する際、Unknown column error が表示された場合、その問題はバージョンに関連している可能性が高いと考えられます。

アプリで作成されたファイルの保存方法

たとえば、アプリが写真をキャプチャする必要がある場合、写真は通常、クラウド ストレージ内のデータのソースに隣接しているフォルダに保存されています。他のクラウド ストレージ プロバイダとは異なり、データベース サーバーにはファイル システムがなく、ファイル(画像やドキュメント)の保存時には AppSheet の動作の変更が必要です。

MySQL テーブルでは、画像ファイルとドキュメント ファイルは、アプリ作成者のプライマリ AppSheet アカウントに関連付けられたメインのクラウド ファイル システム(通常は Google ドライブ、Dropbox、Office 365、Box)に保存されます。ファイルは、アカウントのデフォルトのフォルダパスのサブフォルダ(通常、/appsheet/data)に保存されます。

アカウント ページの [Settings] タブで、デフォルトのフォルダパスの表示や変更ができます。

必要な列の設定方法

MySQL スキーマの NOT NULL(たとえば、NN)を指定する各データベース列は、AppSheet テーブルで [Required?] を [ON] に設定します。MySQL 列で NOT NULL を指定することで、MySQL データベースと AppSheet アプリの両方で列に値が含まれます。

アプリエディタでテーブルのコラムを再生成するたびに、AppSheet は、MySQL 列の現在の NOT NULL 設定に基づいて、AppSheet フィールドの [Required?] プロパティを設定します。

IDENTITY 列を使用する

データベースのテーブルでは、IDENTITY 列をキーとして使用するのが一般的です。IDENTITY 列の値はデータベースによって自動的に挿入される自動インクリメントの数です。

AppSheet でこの方法で IDENTITY 列を使用すると、問題が発生する可能性があります。デフォルトでは、MySQL はアプリケーションに IDENTITY 列の値を定義させません。AppSheet では、新しい行はオフライン時にアプリで作成でき、後で同期されるため、アプリは IDENTITY Key-Value を割り当てられるようにする必要があります。

データベース スキーマでは、IDENTITY 列キーの使用は避けることをおすすめします。代わりに、8 以上の長さの NVARCHARNVARCHAR(8) など)の列を使用します。このキーの AppSheet の列の定義で、UNIQUEID() を使用した初期値を入力します。この方法を使用すると、アプリによって一意のキー値が割り当てられ、バックエンドのデータベースに挿入できるようになります。

データベースが IDENTITY 列を使用しなければならない場合、大きい初期シードを使用して作成することをおすすめします。たとえば、AUTO_INCREMENT = 100000 を設定します。このキーの AppSheet の列の定義で、RANDBETWEEN(10000, 99999) の初期値を指定します。これで、アプリから作成されたレコードには 10000 から 99999 の範囲でランダムに配置される 5 桁の値が含まれるようになり、データベースに対して直接作成されたレコードの値はより高くなります。

データベースのスキーマを変更できず、IDENTITY 列がすでにデフォルトの初期シード(1)で使用されている場合は、前述の方法と同じ手順を行うことをおすすめします。ただし、まず以下のように IDENTITY シードを手動で増やすことができます。

ALTER TABLE テーブル名 AUTO_INCREMENT = 100000;

これにより、必要な範囲に IDENTITY 列が「再シード」されるはずです。AppSheet アプリは RANDBETWEEN() 関数で指定された範囲の値を AppSheet 列定義の初期値に挿入します。

特殊文字を使用する

MySQL 文字セットは、特定の MySQL データベースまたはテーブルで読み取りおよび処理できる文字を定義します。MySQL データベースのデフォルトの文字セットは、ほとんどのラテン文字で動作するはずです。しかし、スペイン語や中国語など多くの言語には、デフォルトの文字セットに含まれていない特殊文字があります。これらの特殊文字を使用するには、適切な文字セットを使用するように MySQL データベースまたはテーブルを構成する必要があります。

たとえば、スペイン語の特殊文字(ñ など)を使用するようにデータベース全体を設定するには、次のコマンドを使用します。

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;

また、1 つのテーブルだけを設定するには、次のコマンドを使用します。

ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
 

MySQL で使用可能な文字セットについての詳細は、MySQL デベロッパー ドキュメントをご覧ください。

https://dev.mysql.com/doc/refman/5.7/ja/charset.html

 

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。
true
検索
検索をクリア
検索を終了
Google アプリ
メインメニュー