タグ: Google

  • GASからCloud SQL(MySQL)にSSL接続するコード

    Google Apps Scripsから、Google Cloud SQLのMySQLにSSL(TLS)で通信を暗号化して接続するコードのサンプル。このとき、Cloud SQLのMySQLは、MySQL 5.7よりも古くないと接続できない。

    DBへの接続は、JDBCを使用する。このとき、JDBCの読み込みは必要なく、GASのエディタ上で直接記述してよい。このサンプルでは、SSL(TLS)を使用するバージョン。接続にPEMファイルを使うため、あらかじめGoogle Cloud SQL側で発行しておく必要がある。

    記載するPEMファイルの中身は、末尾に改行コードを表す”\n”をいれて、さらにコード上の改行を明示的にするために”\”を入れる必要があった。なので、PEMファイルの中身の末尾が”\n\”になっている。

    接続のチェックのため、コンソールログに、いろいろと書き出すようにしている。Logの部分はなくても、問題なし。

    サンプルコード。

    function myFunction() {
      dbConnection();
    }
    
    // --------------------------------
    // SSLで接続する
    // --------------------------------
    function dbConnectionSSL(){
    
      Logger.log('start dbConnection function.');
    
      // 接続先設定
      var connectionIp = 'xxx.xxx.xxx.xxx'; // 接続のMysqlのIPアドレス(ホスト名も可)
      var userName = 'user'; // 接続で使うユーザ名
      var passwd = 'pass'; // 接続で使うパスワード
      var databaseName = 'dbname'; // データベース名
    
      var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName + '?useSSL=true';
    
      // SSL用の証明書を変数に入れる
      var clientKey = '\
    -----BEGIN RSA PRIVATE KEY-----\n\
    MIIEowIBAAKCAQEAyDuIOE1t/ABFSMIz/2Ni4vIoaNvBkDLaeJdl6KmeK9iexl2D2d\n\
    ~~~中略~~~
    P8B5s7xmSbH4Yv/OeKrw8F6xAmoQmWVlnw686I0QqNHexlwIe3lss2LDEI3d\n\
    -----END RSA PRIVATE KEY-----';
    
      var clientCert = '\
    -----BEGIN CERTIFICATE-----\n\
    MIIDVzCCAj+gAwIBAgIEJD9I+TANBgkqhkiG9w0BAQsFADB7MS0wKwYDVQQuEyRl\n\
    ~~~中略~~~
    QNwLDry8Tk3DwnD07+dkQf+FFFu943GFUlY9d4Rv75S+Vwm2Ci2azIRR2Q==\n\
    -----END CERTIFICATE-----';
    
      var serverCa = '\
    -----BEGIN CERTIFICATE-----\n\
    MIIDfzCCAmegAwIBAgIBADANBgkqhkiG9w0BAB3MS0wKwDELW39xwSDyQ3ZjVm\n\
    ~~~中略~~~
    bfgDM8ARAAqMqECaXYC8+xHviva4ON6weeD/wsdessDP9K3ws3mGKbbjlLmc=\n\
    -----END CERTIFICATE-----';
    
      Logger.log('start mysql con');
      Logger.log(addr);
    
      var connectionInfo = {
        user: userName,
        password: passwd,
        _serverSslCertificate: serverCa,
        _clientSslCertificate: clientCert,
        _clientSslKey: clientKey
      }
      Logger.log(connectionInfo);
    
      var connection = Jdbc.getConnection(addr, connectionInfo);
      Logger.log(connection.getCatalog());
    
      // コネクションを閉じる
      connection.close();
      Logger.log('end');
    }

  • Google WorkspaceのGoogle Driveの不適切コンテンツの検査が開始された

    Googleが企業向けGoogle WorkspaceのGoogle Drive上(共有ドライブも)にあるコンテンツのポリシー監査を行い、不適切コンテンツが制限される

    https://workspaceupdates-ja.googleblog.com/2021/12/google_21.html

    これにより、制限が適用されたファイルの名前の横にはフラグが表示され、共有ができなくなるほか、一般公開(共有)も停止されるようなった。一般公開(共有)が停止されると、リンクを知っているユーザーもそのファイルにアクセスできなくなる。この状態になったファイルのオーナーには、違反の詳細と、審査をリクエストする方法が記載されたメールが届く。不適切コンテンツではない場合は、審査のリクエストを行って、ファイルの回復処理が必要とのこと。

    Googleのポリシーを見ると、Google Drive上にあるファイルで、下記のようなものが対象になる。(https://support.google.com/docs/answer/148505)

    • 児童の性的虐待と搾取
    • 危険行為、違法行為
    • ハラスメント、いじめ、脅迫
    • 悪意のある表現
    • なりすましと不実表示
    • マルウェアおよび同様の悪質なコンテンツ

    などなど。

    Googleなので、機械的に検査されていくはずなので、日本語の場合、ヘイト的な内容の解釈によっては検査にかかる可能性は否定できない。

    この手の規制は、コンテンツプロバイダの仕事なのでやることはわかるのだが、公開されているウェブの書き込み内容でもなく、企業向けのストレージも対象なのは恐ろしい。クラウドサービス(クラウドストレージ)を利用する以上は、諦めて従うしかないのだが。そのうち、オンプレミス回帰や重要なデータは、オフラインで手渡しのような形に戻るのではないかと考えてしまう。

  • GASからCloud SQL(MySQL)に接続するコード

    Google Apps Scripsから、Google Cloud SQLのMySQLに接続するコードのサンプル。このとき、Cloud SQLのMySQLは、MySQL 5.7よりも古くないと接続できない。

    DBへの接続は、JDBCを使用する。このとき、JDBCの読み込みは必要なく、GASのエディタ上で直接記述してよい。このサンプルでは、SSL(TLS)を使わないバージョン。通信経路が暗号化されないので、注意が必要。

    接続のチェックのため、コンソールログに、いろいろと書き出すようにしている。Logの部分はなくても、問題なし。

    function myFunction() {
      dbConnection();
    }
    // --------------------------------
    // SSL 接続なしで接続する
    // --------------------------------
    function dbConnection(){
      Logger.log('start dbConnection function.');
      // 接続先設定
      var connectionIp = 'xxx.xxx.xxx.xxx'; // 接続のMysqlのIPアドレス(ホスト名があれば、ホスト名も可)
      var userName = 'user'; // 接続で使うユーザ名
      var passwd = 'password'; // 接続で使うパスワード 変数名をpasswdにしているのは、コネクションInfoの作成時にキーワードと変数が同じになるのを避けるため。
      var databaseName = 'dbname'; // データベース名
      var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName;
      Logger.log('start mysql con');
      Logger.log(addr);
      var connectionInfo = {
        user: userName,
        password: passwd
      }
      var connection = Jdbc.getConnection(addr, connectionInfo);
      // 接続できたことを確かめるために、ログにDB名を出力。
      Logger.log(connection.getCatalog());
      // コネクションを閉じる
      connection.close();
      Logger.log('end');
    }
  • Google Meetの映像の露出の自動調整の話

    Google Meetの標準機能として、映像の露出(明るさ)を自動調整する機能が加わった。いろいろと試してみたので、その話。

    • 背景のぼかしやバーチャル背景を使っているときであれば、少しのCPU負荷とGPU負荷で使用できるので、そんなに負担なし。
    • 背景のぼかしやバーチャル背景を使っていないときに、露出(明るさ)の自動調整を行うと、背景ぼかしと同じくらいのCPUとGPUの負荷がかかる。処理的には同じことをやっている。
    • 暗いところでカメラを使っても、ちゃんと顔を明るくしてくれる。その場合はノイズが映像にのる。
    • 普通の部屋で使う分には、補正されてきれいに顔が映るので便利だと思う。

    バーチャル背景を常に使っているのであれば、便利な機能なので使わないという選択はないと思う。これをブラウザ上でやるのだから、すごい。

  • Google Meet拡張の「こえもじ」を使ってみた

    Google Meetのサードパーティー製拡張ツールの「こえもじ」を使ってみた。(正確にはブラウザのChromeへの拡張機能)

    • 「こえもじ」を入れているPC(Chrome)でしゃべった声が文字起こしされて、Google Meetのチャットに送信される。
    • プラグインを入れていないPC(Chrome)でしゃった声は文字起こしされない。
    • つまりどれか1台に入れておくのではなく、Google Meetに参加するすべてのPCのChromeにプラグインを入れておかないと、文字起こしされないものがある。
    • 「こえもじ」で文字起こしなどをオフにするときは、Chromeのプラグインマークをクリックして、「こえもじ」を選択する。「流れるチャット」「字幕送信」のチェックを外すことで、文字起こしや画面へのチャット文字の表示がなくなる。
    • 「チャット履歴ダウンロード」については、オフにできない。これもオフにするときはプラグイン自体を無効にする。
    • 文字起こしの精度は、結構高いように感じる。変な用語は変換できないかったりするが、まぁ、それは他の文字起こしソフトでもあること。
    • ローカルPCのリソースを使っているので、長く発言すると文字起こしの時間がかかる。

    議事録ツールかわりに使おうとすると、Google Meetに参加するユーザのChromeに「こえもじ」を入れて、「字幕送信」をオンにしておく必要がある。ちょっと敷居が高い。しかし、発言を文字起こしでチャットに送信すると発言者の名前が付くので、発言者も明確になるので、うまく使えれば便利だ。

    ■こえもじ

    https://www.densan-s.co.jp/wp/wp-content/uploads/2021/09/koemoji20210903-1.pdf

  • Googleカレンダーで有効になった勤務場所のメインオフィスの設定

    Googleカレンダーで有効になった勤務場所のメインオフィスの設定は、Google Workspaceの管理者が設定する必要がある。その設定方法。

    1. Google Workspaceの管理画面を開く

    2. 「ディレクトリ」→「ビルディングとリソース」→「リソースの管理」を開く

    3. 「ビルディングを管理」をクリックする

    4. 「新しいビルディングの追加」もしくは、既存のビルディングを編集する

    5. ビルディングの追加や編集が終わったら、「ディレクトリ」の「ユーザー」を開く。

    6. メインオフィスを設定するユーザを開く。

    7. 「ユーザー情報」のパネルを展開する。

    8. 「従業員情報」を編集する。

    9. 「ビルディングID」に上で追加したID(ビル名)を入力する(選択はできないので、コピペなどで間違えないように入れる)。ここのビルディングIDがビルディングの管理のIDと一致しないとユーザに表示されない。

    10. 入力が終わったら、保存する。

    11. ユーザサイドで確認してもらう。ただし、反映されるまでに時間がかかる。

  • Ideapad DuetでGoogle Meetのバーチャル背景が使えない

    ChromebookのLenovo Ideapad Duetで、Google Meetをすると、背景のぼかしやバーチャル背景を使えない。たぶん、CPUの性能のためなんだろうけれど、不便。設定にも出てこない。映りなどに問題はないので、ここは残念だ。

    それから、Chromeでも、Google Meetアプリでも同じくできない。PWAアプリだから、差があっても困るけれど。

  • Google MeetでのIE11サポートが終了した

    Google Workspaceだと、だいぶ前にIE11(Internet Explorer 11)のサポートが終了していたが、Google MeetだけはIE11のサポートが続いていた。そんなGoogle MeetもついにIE11のサポートが昨日終了した。アメリカ時間だと、日本の今日になるわけだが、IE11でGoogle Meetはやらないので、どうなったかはわからない。

    https://workspaceupdates.googleblog.com/2021/08/support-for-google-meet-on-ie11-ending-august-17.html

    長かったIE11も終わりが近づいているな。

  • Google Meetでデスクトップアプリ(PWA)が提供されたので使ってみた

    Google Meetでデスクトップアプリ(PWA)が提供されたので、早速インストールして、使ってみた。環境は、Windows 10。

    Google Workspace Updates: Use the new Google Meet web app for better meetings on desktop devices (googleblog.com)
    https://workspaceupdates.googleblog.com/2021/07/use-new-google-meet-web-app-for-better.html

    Google Meetのデスクトップアプリのインストールは、会議の終了後にデスクトップアプリのインストールを求められたときに行う。もしくは、Google Meetのページを開いて(会議に参加前)、アドレスバーに表示されたダウンロードマーク(下図)をクリックするとインストールできる。

    PWAアプリなので、裏ではGoogle Chromeが動いている。そのため、メモリはたくさん使う。ツールとしての使い勝手は変わらない(ウェブと同じ)。

    残念なのは、GoogleカレンダーのGoogle Meetのリンクをクリックすると、デスクトップアプリが起動するわけではなく、ブラウザのMeetが起動してしまった。そのため、Google カレンダーからGoogle Meetを起動している場合には、デスクトップアプリをインストールしていても意味がない。Google Chat上で作成されたMeetの会議もクリックすると、ChromeのGoogle Meetが開くので、こちらも厳しい。

    機能としては問題はないGoogle Meetのデスクトップアプリ(PWA)だが、Meetを行う動線を考えると使う機会がほぼない。

  • 急にGoogle Cloudが課金されていてビックリした話

    7月の後半から、Google Cloud上で作ったウェブアプリのプロジェクトで課金されていた。もともと無料枠を使っていたので、課金されるはずは・・・ない、と思っていた。実際、今までは課金されていなかった。

    原因を調べたところ、2021年7月24日で、Google App Engineの無料枠に制限するリミット機能が廃止されたようである。これの影響で、1日あたりの無料枠を超えても、エラーにならず課金されていた。

    https://cloud.google.com/appengine/docs/deprecations?hl=ja

    なんというか無料枠でできることだけ、と思っていたら、利用量が増えると課金されるようになったので、非常に使いにくい。性能とかよりも、料金優先の運用を行いたかったのだが。

    いろいろと原因というか課金されていたプロジェクトを調べていたところ、課金されているプロジェクトは、現在使われておらず、かつ紛らわしいプロジェクト名で生きているプロジェクトのように見えていた。AppEngineのインスタンスを起動させ続けるために、定期的にCronでセッションを維持しており、誰もつかっていないのに、使われているかのようにAppEngineのインスタンスが継続されていた。これにより、無料枠を超えていた模様。無料枠の上限がなくなったため、課金されて気が付いた、というわけだ。

    参考: https://www.serversus.work/topics/cn8fierxx2rm2skcxjfm/

    今回の無料枠の上限撤廃を契機に、Google Cloud上にある使っていないプロジェクトは整理してシャットダウンしておいたほうがよい。