プログラミングノート

プログラミングの備忘録です

PHP Data Object(PDO)拡張モジュールの導入とPDOインスタンスの作成 第1回

 PHP Data Objects (PDO) は、PHPの拡張モジュールで、 データベースにアクセスするための インターフェイスです。

 今回は、PDOを導入し、さらにPDOを利用するためにPDOインスタンスを作成します。

 

PDOの便利なところ

 

データベース固有の PDOドライバを使用します。それぞれのデータベースのPDOドライバの詳細は、PHP: PDO ドライバ - Manual をご覧ください。

 

1.PDOを導入

PHPに同梱されているデータベース固有のDLLを使うため、php.iniを編集してPHPを再起動します。

  1. データベース固有のDLLを指定するため、php.iniで、「extension=php_pdo_xxxxxx.dll」を指定します。(xxxxxxはデータベースにより異なります)
  2. php.iniを保存し、その後、PHPを再起動します。

 php.iniで、行頭の「;」に引き続きDLLがすでに記述されている場合があります。行頭の「;」はコメントマークですので、行頭の「;」を削除します。

(例)MySQLの場合「;extension=php_pdo_mysql.dll」と記述されているので、行頭の「;」を削除するだけです。

 

  • DLLファイルは、php.iniの extension_dir で指定したディレクトリに格納されている必要があります。
  • PHP 5.3 より前のバージョンでは、「extension=php_pdo.dll」を指定する必要があるそうです。さらに、データベース固有のDLLは、上記の指定に引き続いて指定する必要があるそうです。

 

2.PDO インスタンスの作成

 PDOを利用するため、はじめにPDOインスタンスを作成します。

 データベースのDNS、ユーザー、パスワードをPDOクラスのコンストラクタに渡して、PDOインスタンスを作成します。

 PDOインスタンスの作成方法を2種類書きます。データベースのDNS、ユーザー、パスワードは、ご利用環境に合わせてください。

 

1.PHPスクリプトDNSを指定する場合

PHPスクリプト

$dsn = 'mysql:dbname=testdb;host=testhost';
$user = 'testuser';
$password = 'testpass';
$dbh = new PDO($dsn, $user, $password);

 

2.php.iniのエイリアスDNSを指定する場合

php.iniの[PDO]に下の行を追加し保存しました。
pdo.dsn.testdsn="mysql:dbname=testdb;host=testhost"

 

PHPスクリプト

※ $dsnの値は「pdo.dns.xxxxxx="mysql:dbname・・・"」の「xxxxxx」部分となります。

$dsn = 'testdsn';
$user = 'testuser';
$password = 'testpass';
$dbh = new PDO($dsn, $user, $password);

 

php.iniを変更した場合は、phpの再起動が必要です。

$dnsの値を誤って指定すると「invalid data source name」エラーが発生しました。

 

 

 プリペアステートメントの使用については、

PHP Data Object (PDO)でプリペアステートメントを使う 第2回 - プログラミングノート をご覧ください。

 

トランザクションの利用については、PHP Data Object (PDO)でトランザクションを利用する 第3回 - プログラミングノート をご覧ください。

 

 

記事一覧

第1回 PHP Data Object(PDO)拡張モジュールの導入とPDOインスタンスの作成

第2回 PHP Data Object (PDO)でプリペアステートメントを使う

第3回 PHP Data Object(PDO)でトランザクションを利用する

 

参照

PHP: PDO - Manual

MySQL Community Server を Windows8.1 パソコンにインストール

 MySQL Community ServerWindows8.1(64bit)パソコンにインストールしたいと思います。MySQL Community Serverは世界で最も人気のあるオープン・ソース・データベースだそうです。

 MySQL Community Server is the world's most popular open source database.MySQL :: MySQL Community Downloads より引用)

 

手順

1.MySQLのダウンロード

2.MySQLのインストール

3.Windows環境変数に実行ファイル格納ディレクトリのパスを登録

4.MySQLの動作確認

 

1.MySQLのダウンロード

 MySQLには、「commercial」(商業用)と「GPL」(GNU一般公衆ライセンス) の2種類があります。「GPL」(GNU一般公衆ライセンス)のMySQL Community Editionをインストールします。

 

  1. MySQL :: MySQL Community Downloads をクリックします。
  2. MySQL Community Downloads画面の下側にあるMySQL Community Server (GPL)の「Download」リンクをクリックします。
  3. Download MySQL Community Server画面の下側(下の画像1)にあるGenerally Available(GA) Releasesの「Select Platform:」で「Microsoft Windowsを選択し、「Recommended DownLoad:」にある「Windows (x86, 32-bit), MySQL Installer MSI」の「Download」ボタンをクリックします。
  4. Download MySQL Installer画面の下側(下の画像2)にあるWindows (x86, 32-bit), MSI Installer(mysql-installer-community-5.7.17.0.msi)」の「Download」リンクをクリックします。
  5. Begin Your Download画面(下の画像3)にはOracle Web AccountのログインボタンとOracle Web Accountの登録ボタンがあります。Oracle Web Accountの登録やログインをせずにダウンロードをする場合は「No thanks, just start my download.」リンクをクリックします。
  6. msiファイルを開くウィンドウが表示されますので、「ファイルを保存する」をクリックします。

 

画像1 Download MySQL Community Server画面のGenerally Available(GA) Releases表示

f:id:white-lilium:20170130121650j:plain

 

画像2 Download MySQL Installer画面のGenerally Available(GA) Releases表示

f:id:white-lilium:20170130122507j:plain

 

画像3 Begin Your Download画面の表示

f:id:white-lilium:20170130123510j:plain

 

 

 2.MySQLのインストール

最初に、ダウンロードしたmsiファイルをWクリックしインストールを開始します。表示される画面に沿ってインストール手順を書きます。

 

1.License Agreement

 ライセンスに同意する場合、画面下側の「I accept the license terms」にチェックを入れ、「Next」ボタンを押します。

 

2.Choosing a Setup Type

 「Developer Default」「Server only」「Client onry」「Full」「Custom」から選択します。右側のSetup Type Descriptionにセットアップタイプの詳細が表示されます。

 

3.Select Products and Features

左側「Available Products」と右側「Products/Features To Be Installed」間でプロダクトを移動させることにより、プロダクトをインストール対象から追加したり除くことができます。

 

4.Check Requirement

システムがインストールしようとしているプロダクトの必要条件を満たしているかチェックし、必要条件を満たしていない場合のみ表示されます。

どのプロダクトにどのソフトが必要か一覧で表示されます。また、手動でインストールしないといけない場合はソフト名の右横に「manual」と表示されます。ソフト名の右横が空白のソフトは「Execute」ボタンを押すと自動インストールできます。

自動インストールをする時、同意画面が表示されます。同意にチェックを入れ、「Install」ボタンをクリックします。

f:id:white-lilium:20170131101834j:plain

 

5.Installation

インストール対象のプロダクトを確認し「Execute」ボタンをクリックします。インストールが完了したプロダクトには、緑チェックがつきます。すべて完了したら「Next」ボタンを押します。

 

6.Product Configration

ウィザードで構成可能なプロダクトが一覧表示されます。一覧で上に表示されているプロダクトから順に設定します。「Next」ボタンを押します。私の場合「MySQ Server」と「Samples and Examples」が一覧に表示されました。

 

6-1.MySQL Server の構成

6-1-1.Type and Networking

Server Configuration Type(サーバ設定タイプ)で、Config Typeを「Development Machine」「Server Machine」「Dedicated Machine」から選択してください。

Connectivity(サーバへの接続方法)で、接続方法を入力します。

Advanced Configurationで、私は「Show Advanced Options」にチェックを入れませんでした。

入力後「Next」ボタンを押しました。

 

f:id:white-lilium:20170131110837j:plain

 

6-1-2.Accounts and Roles

Root Account Password で、Rootアカウントのパスワードを入力します。

MysSQL User Accountsで、MySQLユーザアカウントを作成できます。(インストール後に作成することもできます。)

入力後「Next」ボタンを押します。

 

6-1-3.Windows Service

Windowsサービスとして構成する場合は「Configure MySQL Service as a Windows Service」にチェックを入れます。

Windwos Service DetailsのWindows Service Nameでは、サービス名を入力します。

システム起動時にMySQLを起動させる場合は「Start the MySQL Server at System Startup」にチェックを入れます。

Run Windows Services as ... では、Windows サービスをどのユーザーアカウントで実行するのか選ぶことができます。

入力後「Next」ボタンを押します。

f:id:white-lilium:20170131111651j:plain

 

6-1-4.Pluging and Extensions

何も入力せずに「Next」ボタンを押しました。

 

6-1-5.Apply Server Configuration

構成を適応するための項目が一覧表示されますので、項目を確認して「Execute」ボタンを押します。完了した項目には緑チェックがつきます。すべて完了したら「finish」ボタンを押します。

Production Configurationに戻ります。設定をしたプロダクトのStatusが「Configuration Complate」に変わります。「Next」ボタンを押します。

設定を完了していないプロダクトが残っていれば、そのプロダクトの設定に進みます。

 

6-2.Samples and Examplesの構成

6-2-1.Connect To Server

互換性を持つサーバーが表示されます。サーバーを選択しそのサーバーの証明情報(root特権が必要)を入力します。

確認のため「check」ボタンを押します。「Connection successful」と表示されたら「Next」ボタンを押します。

 

6-2-2.Apply Server Configuration

構成を適応するための項目が一覧表示されますので、項目を確認して「Execute」ボタンを押します。完了した項目には緑チェックがつきます。すべて完了したら「finish」ボタンを押します。

Production Configurationに戻ります。設定をしたプロダクトのStatusが「Configuration Complate」に変わります。「Next」ボタンを押します。

 

7.Installation Complete

インストールの完了メッセージが表示されます。「Finish」ボタンを押します。

 

 

3.Windows環境変数に実行ファイル格納ディレクトリのパスを登録

Windows環境変数に、MySQL実行ファイル格納ディレクトリへのパスを登録しておくと、Windowsが実行ファイルを探し出すことができます。コマンド入力時に実行ファイルの場所へ移動する必要がありません。

 

  1. Windows8.1の場合)コントロールパネル>システムとセキュリティ>システムを開きます。
  2. 画面左側にある「システムの詳細設定」をクリックします。
  3. 「システムのプロパティ」画面の下方にある「環境変数」ボタンをクリックします。
  4. 環境変数」画面の下方にある「システム環境変数」から「Path」を選択し、「編集」ボタンをクリックします。
  5. 「システム変数の編集」画面で、変数値に、MySQLデフォルトディレクトリの中のbinフォルダへのパス(※)を入力します。別の変数値が登録されている場合は、最後に「;」を追加しその後に入力します。
  6. 「システム変数の編集」画面で「OK」ボタンを押します。
  7. 環境変数」画面で「OK」ボタンを押します。
  8. 「システムのプロパティ」画面で「OK」ボタンを押します。

 ※ MySQL Installer を使用してインストールした場合、MySQLデフォルトディレクトリは 「C:/Program Files/MySQL/MySQL Server 5.7」(バージョン番号はインストールしたバージョンにより異なります)になります。

システム環境変数Pathの編集にはご注意ください。

 

4.MySQL動作確認

MySQL Notifierをインストールした場合のMySQL起動

システムトレイにあるインジケーターにあるMySQL Notifier(イルカのマーク)をクリックすると、起動状況を確認できます。MySQLが停止している場合「MySQL57 - stopped」の右横の三角をクリックしてメニューを開き「start」をクリックすると、MySQLを起動できます。

 

Windowsサービスに設定した場合のMySQL起動

コントロール パネル>システムとセキュリティ>管理ツール>サービスを開きます。MySQL57(インストール時に入力したサービス名)をクリックします。サービスの状態を確認したり変更することができます。

 

  1.  コマンドプロンプトを開きます。
  2. 「mysqlshow -u root -p」コマンドを入力してEnterボタンを押します。(Windows環境変数MySQL実行ファイル格納ディレクトリのパスを登録していない場合は、MySQL実行ファイル格納ディレクトリへ移動してからコマンドを実行します。)
  3. 「Enter password」が表示されたらパスワードを入力します。
  4. データべース一覧が表示されれば、問題ありません。

 

MySQL Installer を使用してインストールした場合は、インストール時に入力したパスワードで root ユーザーが自動的に作成されます。この場合は「-u root 「-p オプションを使う必要があります。

 

 

 参照

MySQL 5.7 リファレンスマニュアル 日本語版が見当たりませんでしたので、MySQL 5.6 リファレンスマニュアル 日本語版も参照しました。

Google APIへの問い合わせ状況と割り当てを確認する方法 第6回

 今回は、APIへの問い合わせ状況(過去のアクティビティ)とAPIへの問い合わせ制限の上限(割り当て)を確認する方法についてです。

 アプリケーションとAPIでやり取りをする場合、APIへの問い合わせ量に制限があります。使用するAPIにより制限内容が異なります。

 Google Calendar APIの場合、APIへの問い合わせ制限は、「1日あたりの問い合わせ回数」と「1ユーザー100秒ごとの問い合わせ回数」です。

 もし、アプリケーションの運用中に状況が変化しAPIへの問い合わせ回数が増加した場合、APIへの問い合わせ状況を確認する必要があります。

 

 最初に、Google APIsのメニューについて書きます。次に、 APIへの問い合わせ状況とAPIへの問い合わせ制限の上限(割り当て)を確認する方法を書きます。

 

Google APIsのメニュー

Google APIs」タイトルの左横にあるメニューボタン(画像1の赤枠で囲んだ部分)をクリックすると、メニュー(画像2)が表示されます。

 

<画像1>Google APIsのメニューボタンの位置

f:id:white-lilium:20170124165425j:plain

 

<画像2>Google APIsのメニュー

f:id:white-lilium:20170124165700j:plain

②をクリックすると、「API Manager」画面を表示します。

③をクリックすると、「IAMと管理」画面を表示します。

 

 

 APIへの問い合わせ状況とAPIへの問い合わせ制限の上限(割り当て)を確認する方法

  1. API コンソール(https://console.developers.google.com/)にアクセスし、Googleアカウントを入力してログインします。
  2. APIコンソールにログイン後、「Google APIs」の下に「API Manager」と表示されます。
  3. (「API Manager」が表示されない場合のみ)Google APIs」のメニューボタン(上記の画像1の①)をクリックしてメニュー開き、「API Manager」(上記の画像2の②)をクリックします。
  4. Google APIs」の右横にあるプロジェクトリストからプロジェクトを選択します。
  5. API Manager画面の左メニューにある「ダッシュボード」をクリックします。
  6. ダッシュボード画面の「有効なAPI」の下方に、有効なAPI一覧(下記の画像3の赤枠で囲んだ部分)がありますので、API名(リンク)を選択してクリックします。
  7. 選択したAPIの画面が表示されます。API名の下にある「割り当て」タブをクリックします。
  • 割り当て画面の「過去のアクティビティ」で、APIへの問い合わせ状況(画像4の①)が表示されます。Google Drive APIの場合、「Queries per day(1日当たりの問い合わせ回数)」が表示されました。

  • 割り当て画面の「過去のアクティビティ」の右横に、APIへの問い合わせ制限の上限(割り当て)(画像4の②)が表示されます。

 

 割り当て画面に表示されているAPIへの問い合わせ制限の上限(割り当て)の右横には「増加をリクエスト」アイコン(鉛筆マーク)があります。割り当て増加のリクエストに関しましては、APIのドキュメントをご確認ください。

 

 API画面で概要タブをクリックすると、概要画面が表示されます。概要画面の「このAPIについて」にある「ドキュメント」リンクをクリックすると、表示中のAPIのドキュメントを見ることができます。

 

 

<画像3>API Managerのダッシュボードの表示

f:id:white-lilium:20170125102427j:plain

 

 

<画像4>APIの割り当ての表示

f:id:white-lilium:20170125103730j:plain

 

 

 

 APIへの問い合わせ制限の上限(割り当て)は、API コンソールの「IAMと管理」でも確認することができます。

  1.  「Google APIs」のメニューボタン(上記の画像1の①)をクリックしてメニュー開き、「IAMと管理」(上記の画像2の③)をクリックします。
  2. IAMと管理画面の左メニューで「割り当て」をクリックします。
  3. 割り当て画面には「割り当てのタイプ」「サービス」「指標」「リージョン」の選択リストがあり、選択した内容でフィルタされ、有効なサービスの割り当てが表示されます。

 

補足

 APIへ問い合わせできるようにする前に、使用するAPIのドキュメントをご確認ください。また、使用するAPIへの問い合わせ制限の上限(割り当て)も確認する方がいいと思います。

 

Google の Cloud Platform Console ヘルプより

Google API の料金について詳しくは、使用するAPIのドキュメントをご覧ください。Google Cloud Platformの料金とGoogle Cloud Platformの無料試用について詳しくは料金体系をご覧ください。」

請求先アカウントの作成、変更、閉鎖 - Cloud Platform Console ヘルプ より引用)

 

 

記事一覧

第1回 Google APIを使用するための設定(プロジェクトの作成・使用するAPIの設定)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

Google カレンダーをHTMLページに埋め込み表示する 第2回

 GoogleカレンダーをHTMLページに埋め込んで表示します。Googleカレンダーを埋め込みますので、HTMLページでカレンダーを更新する必要がありません。

 ホームページに営業日カレンダーを表示する場合に役立ちます。

 また、複数のカレンダーをまとめて1つのHTMLページで見れるようにすることもできます。

 

 Googleカレンダーの「Googleカレンダー埋め込み支援ツール」機能を使います。

 Googleカレンダー埋め込み支援ツールでは、埋め込むカレンダーのプレビューが表示されますので、埋め込むカレンダーに表示する内容(ナビゲーションボタンなど)を選択します。

 選択した内容でHTMLページに埋め込むコードが作成されます。埋め込みコードをコピーをして、HTMLページのソースファイルに貼り付けます。

 

手順

  1. Googleカレンダー埋め込み支援ツールの表示
  2. 埋め込みコードの作成
  3. 埋め込みコードをコピー
  4. HTMLページのソースファイルに貼り付け
  5. ブラウザでHTMLページを表示し確認

 

1.Googleカレンダー埋め込み支援ツールを表示

  1.  Googleサービスにログイン後GoogleアプリからGoogleカレンダーを選択し、Googleカレンダーを表示します。(ログインURL:https://accounts.google.com/Login?hl=ja#identifier
  2. 画面左で、埋め込み対象のカレンダーの右横にある▼をクリックします。
  3. カレンダーの詳細画面が表示されますので、「このカレンダーを埋め込む」項目にある「色やサイズなどをカスタマイズします」リンクをクリックします。
  4. クリック後、Googleカレンダー埋め込み支援ツールが表示されます。

 

2.埋め込みコードの作成

  1. Googleカレンダー埋め込み支援ツールの画面左側に、埋め込むカレンダーに関する選択項目が表示されます。
  2. 項目を選択すると、選択を反映したプレビューが画面中央に表示されます。
  3. プレビューの表示をもとに埋め込みコードが自動作成されます。画面中央にある「下記のコードを貼り付けると、このカレンダーがウェブページに挿入されます」の下(下の図の②部分)に、埋め込みコードが表示されます。
 
 ①部分にある「表示するカレンダー」項目で埋め込むカレンダーを選択します。
複数のカレンダーを選択すると、複数のカレンダーをまとめて1つのHTMLページに表示することができます。

 

f:id:white-lilium:20170116142856j:plain

 
 

3.埋め込みコードをコピー

  1. 上の画像の②部分に表示されるコードをすべて選択します。
  2. Ctrlボタンと「c」キーを同時に押してコピーをします。
 

4.HTMLページのソースファイルに貼り付け

  1. カレンダーを埋め込むHTMLページのソースファイルを開きます。
  2. Ctrlボタンと「v」キーを同時に押して貼り付けます。
  3. ソースファイルの編集が終わりましたら保存します。
 

5.ブラウザでHTMLページを表示し確認

  1. HTMLファイルを右クリックしメニューリストを表示します。
  2. メニューリストから「プログラムから開く」を選択し、さらにブラウザを選択します。
  3. HTMLファイルがブラウザで表示されますで、埋め込んだカレンダーの表示を確認します。
 

記事一覧

第1回 Google カレンダーを施設予約カレンダーとして使用する

第2回 Google カレンダーをHTMLページに埋め込み表示する

Google カレンダーを施設予約カレンダーとして使用する 第1回

 いつもはGoogleカレンダーを予定管理に使っていますが、今回は施設予約管理カレンダーとして使ってみます。

 カレンダーの作成・設定変更と予定の登録についても書きます。

 「gmail.com」で終わるGoogleアカウントでログインし、Googleカレンダーを使います。

 

Google カレンダーの起動方法

  1. Googleサービスログイン画面(https://accounts.google.com/Login?hl=ja#identifier)にアクセスし、ログインします。
  2. 画面右上の「Google アプリ」(小さな■が9つ並んでいる)ボタンをクリックします。
  3. Google アプリ一覧に表示された「カレンダー」アイコンをクリックします。

 

カレンダーの新規作成

  1. 左メニューの「マイカレンダー」の右横にある「▼」をクリックします。「新しいカレンダーの作成」を選択します。
  2. カレンダー名を入力し、左上の「カレンダーを作成」ボタンを押します。

 

カレンダーの設定変更

  1.  マイカレンダーのリストに作成したカレンダーが追加されます。カレンダー名の右横にある「▼」をクリックします。「カレンダーの設定」を選択します。
  2. 選択したカレンダーの詳細画面が表示されます。カレンダーの詳細画面には、「カレンダーの情報」「このカレンダーを共有」「通知を編集」「ゴミ箱」の4つのタブがあります。
  3. カレンダーの設定を変更した場合は、必ずタブの下にある「保存」ボタンを押します。

 

カレンダー情報タブ
  • 「招待状の自動承諾」:「招待された日時が空いていれば自動承諾する。」にチェックを入れました。(施設予約用の場合、招待のたびカレンダーのオーナーが承諾する必要はないと考えました。「招待状の自動承諾」はカレンダーの用途に合わせて選択してください。)
  • 「カレンダーのアドレス」:表示されているカレンダーIDを控えました。(施設予約のため、予定入力時にカレンダーIDを入力します。)

 

このカレンダーを共有タブ
  • 「特定のユーザーと共有」の「ユーザー」:施設予約カレンダーを共有するユーザーのメールアドレスを入力し、「権限の設定」を選択し、「ユーザーの登録」ボタンを押しました。

 

カレンダー情報タブの「招待状の自動承諾」で「招待された日時が空いていれば自動承諾する。」を選択した場合は、カレンダーですべての予定の詳細を閲覧可能にする必要があります。

 

 

予定の登録(同時に施設を予約)

  1. 「マイカレンダー」から予定管理カレンダーを選択します。
  2. 日時を選択すると、簡易予定入力画面が表示されます。「編集」ボタンを押します。
  3. 予定編集画面で、予定のタイトルや日時を入力します。
  4. 予定編集画面の右側にある「ゲストを招待」に、施設予約カレンダーのカレンダーID(メールアドレス)を入力します。
  5. 予定の「保存」ボタンを押します。

 

  「ゲストを招待」に、Gmailの連絡先に登録されているメールアドレスを入力すると、入力候補が表示されます。

 

予定と施設予約を確認

予定管理カレンダーと施設予約カレンダーの両方に予定が追加されます。(それぞれのカレンダーで確認してください。)

 

施設予約カレンダーで、空いていれば招待状に自動承諾すると設定している場合

施設予約カレンダーで空きがある場合、予定の詳細に「(施設予約カレンダー)さんは参加します。」と表示され、施設予約カレンダーで空きがない場合、予定の詳細に「(施設予約カレンダー)さんは参加しません。」と表示されます。

後から登録しようとした予定を辞退します。

 

予定管理カレンダーで、招待状への返信を受信すると設定している場合

カレンダーの詳細画面にある「通知を編集」タブで、「予定の返信:ゲストリストを閲覧できる予定にゲストが返信した場合に通知を受け取る。」と設定している場合、施設予約カレンダーに空きがなければ、下のメールが送信されます。

タイトル:「辞退:(予定のタイトル)- (開始日時)~(終了日時)」
本文の一部:「(施設予約カレンダー)さんがこの予定を辞退しました。(略)」

 

 

予定を複製して予定の入力を楽に

 共有施設が複数ある場合、それぞれの施設ごとにカレンダーを用意する必要があります。どの施設がどのカレンダーIDなのか覚えておいて、予定を入力するときに使用する施設のカレンダーIDを入力しなければいけません。

 

 登録済みの予定を複製しタイトルや日時を編集することで、予定の入力が楽になります。

  1. 予定を選択して、予定詳細画面を表示します。
  2. 予定詳細画面の上にある「その他操作」プルダウンで「予定の複製」を選択します。
  3. タイトルや日時などを編集し「保存」ボタンを押します。

 

 

記事一覧

第1回 Google カレンダーを施設予約カレンダーとして使用する

第2回 Google カレンダーをHTMLページに埋め込み表示する

 

参照

カレンダーヘルプ 会議室や共有施設用のカレンダーの作成

https://support.google.com/calendar/answer/44105?hl=ja

 

Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント) 第5回

 サービスアカウントを使って、PHPウェブアプリケーションGoogle APIのやり取りをサーバー間で行います。

 ユーザーデータでなくアプリケーションのデータを使うアプリケーションで、サービスアカウントを使います。サービスアカウントは、アプリケーションごとに決まります。

 サービスアカウントを作成し、アプリケーションデフォルト証明書を使う場合を書きます。

 

事前準備

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

3. サービスアカウントの作成(認証情報の登録)

Google API Google APIを使用するための設定(認証情報の登録) 第2回 - プログラミングノートの「2.OAuth2.0」>「サービスアカウント」にて、
「サービスアカウント名」を入力し「役割」を選択しました。さらに「新しい秘密鍵の提供」にチェックを入れ、「キーのタイプ」に「JSON」を選択して、サービスアカウントを作成しました。

 

4.クライアントライブラリのインストール

Google APIをPHPウェブアプリケーションから呼び出す 第4回 - プログラミングノートの「事前準備」>「2.クライアントライブラリのインストール」にて、PHPクライアントライブラリをインストールしました。

 

  

アプリケーション・デフォルト証明書

  • アプリケーション・デフォルト証明書を使うと、より簡単にGoogle APIを呼ぶための認可を得ることができます。
  • 環境変数に証明書jsonファイルのパスを指定します。
  • アプリケーション・デフォルト証明書は、Google APIs Client Library for PHPのバージョン2.0以降に含まれます。

 

 

手順

1.環境変数GOOGLE_APPLICATION_CREDENTIALSの設定

2.PHPアプリケーションからGoogle APIの呼び出し

 

 

 手順に沿って詳しく書きます。

 1.環境変数GOOGLE_APPLICATION_CREDENTIALSの設定
  1. サービスアカウントキーを作成時にダウンロードしたjsonファイルを、ウェブアプリケーションからアクセスできて、他の人は見ることができない場所に配置します。
  2. 環境変数GOOGLE_APPLICATION_CREDENTIALSでjsonファイルのパスを指定します。

 

 2.PHPアプリケーションからGoogle APIの呼び出し
  1. クライアントオブジェクトを作成します。
  2. seApplicationDefaultCredentialsメソッドを呼び出します。
  3. アクセス範囲を指定します。
  4. クライアントオブジェクトを渡してサービスオブジェクトを作成します。

 

アクセス範囲はURLの形で指定します。アクセス範囲が異なるとURLが異なります。

(例)https: //www.googleapis.com/auth/drive.readonly

 

(※サンプルコード)
$client =new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https: //www.googleapis.com/auth/drive.readonly']);
$service = new Google_Service_Drive($client);
    

 

サービスオブジェクトのインタフェースを使う方法は、後日書きます。

 

 

OpenSSLの使用

 認証のためにOpenSSLを使用します。

 

 OpenSSLが使える状態でないと下のようなエラーメッセージがPHPより出力されます。

PHP Fatal error:  Uncaught Error: Call to undefined function Firebase\JWT\openssl_sign() in ・・・・・」

 

 PHP Version 7.1.0では、下の操作でOpenSSLを使うことができました。

 

 拡張モジュールを読み込むために、環境変数PathにPHPインストールディレクトリへのパスを設定します。

 

 phpinfoで「Configuration(大項目)」に拡張モジュール「openssl(中項目)」が表示され、さらに「openssl(中項目)」の中の「openssl support」がenabledになっている必要があります。

 

 

※サンプルコード

 上記すべてのサンプルコードは、Google Identity PlatformのGoogle Application Default Credentialsから引用しました。

 サンプルコードのライセンス:the Apace 2.0 License(http://www.apache.org/licenses/LICENSES-2.0


 

記事一覧

第1回 Google APIを使用するための設定(プロジェクトの作成・使用するAPIの設定)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

参照

Google Identity Platform 「Google Application Default Credentials」

https://developers.google.com/identity/protocols/application-default-credentials

Google APIをPHPウェブアプリケーションから呼び出す(OAuth2.0証明書) 第4回

 今回は、作成済みのOAuth2.0証明書を使用して、PHPウェブアプリケーションからGoogle APIを呼び出します。

 Google APIのドキュメントが親切に書かれていて、私でもGoogle APIを使うことができました。

 

事前準備

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

3. OAuth2.0証明書の作成(認証情報の登録)

Google API Google APIを使用するための設定(認証情報の登録) 第2回 - プログラミングノートの「OAuth2.0クライアントID」にて、
アプリケーションの種類に「ウェブアプリケーション」を指定して、OAuth2.0証明書を作成しました。

 

4.クライアントライブラリのインストール

クライアントライブラリをインストールするために「Composer」を使います。

まず、Composerをインストールします。

 1.php.iniで、openssl.dllを有効にします。

 2.Composerをインストールするディレクトリに移動します。

 3.コマンドプロンプトで下のコマンドを実行し、インストールします。

   php -r "eval('?>'.file_get_contents('https: //getcomposer.org/installer'));"

 4.コマンドプロンプトで下のコマンドを実行しcomposer.batをコピー作成します。

   echo @php "%~dp0composer.phar" %* >composer.bat

 5.Composerインストールディレクトリのパスを環境変数Pathに設定します。

 

次に、コマンドプロンプトで下のコマンドを実行し、クライアントライブラリをインストールします。

composer require google/apiclient:^2.0

 Composer実行ディレクトリがPHPインストールディレクトリと異なる場合、PHPインストールディレクトのパスを環境変数Pathに設定しておく必要があります。

 

最後に、インストールすると作成されるvendor/autoload.phpを、PHPファイルで読み込みます。

例)require_once '../ vendor/autoload.php';

 

 

手順

1.クライアントオブジェクトを作成
2.OAuth2.0サーバーへユーザーをリダイレクト
3.OAuth2.0サーバーからの返信を処理
4.Google APIを呼び出す

 

1.クライアントオブジェクトを作成

 

 クライアントオブジェクトを生成し、生成したクライアントオブジェクトに下の3点をセットします。

  1. OAuth2.0証明書を作成した時、ダウンロードしたjsonファイル
  2. アクセスをリクエストする範囲
  3. エンドポイント(OAuth2.0サーバ―からユーザーが転送されるページ)

 

(※サンプルコード)
Googleドライブへ読み取り専用でアクセス
$client = new Google_Client();
$client->setAuthConfig('client_secrets.json');
$client->addScope(Google_Service_Drive::Drive_METADATA_READONLY);
$client->setRedirectUri('http:// '.$_SERVER['HTTP_HOST'].'/oauth2callback.php');

 

<補足>

  • 「3. エンドポイント(OAuth2.0サーバ―からユーザーが転送されるページ)」は、認証画面で登録した「リダイレクトURI」です。
  • また、OAuth2.0証明書を作成した時ダウンロードしたjsonファイルには、「リダイレクトURI」が書かれていますので、認証情報の「リダイレクトURI」を修正した場合は、再度jsonファイルをダウンロードする必要があります。

 

 

2.OAuth2.0サーバーへユーザーをリダイレクト

(リダイレクト:自動的に別ページへ転送)

 

 ユーザーデータにアクセスする必要がある場合、ユーザーをOAuth2.0サーバへリダイレクトします。リダイレクト後、OAuth2.0サーバーはユーザーを認証します。さらに、OAuth2.0サーバーはユーザーにユーザーデータへのアクセスの同意を確認します。

 

 まずOAuth2.0サーバーへユーザーをリダイレクトするためのURLを作成し、次にユーザーをリダイレクトします。
 

(※サンプルコード)
$auth_url = $client->createAuthUrl();
header('Location:'.filter_var($auth_url, FILTER_SANITIZE_URL));

 

 

3.OAuth2.0サーバーからの返信を処理

 OAuth2.0からの返信は「1.クライアントオブジェクトを作成」でsetRedirectUriメソッドによりセットしたURIに届きます。
 ユーザーが同意した場合は、認可コードが送信され、ユーザーが同意しなかった場合は、エラーメッセージが送信されます。

▼同意してもらった場合
https:// oauth2.examle.com/auth?code=4/P7q・・・・7W91a-oMsCe

▼同意してもらわなかった場合
https:// ouath2.examle.com/auth?error=access_denied

 


 まず認可コードをアクセストークンと交換し、次にアクセストークンを取得します。

(※サンプルコード)
$client->authenticate($_GET['code']);
$access_token=$client->getAccessToken();

 

4.Google APIを呼び出す 

まず、アクセストークンをユーザーのセッションに保存するため、クライアントオブジェクトにアクセストークンをセットします。
 次に、使用するAPIのコンストラクタにクライアントオブジェクトを指定し、サービスオブジェクトを作ります。
 最後に、サービスオブジェクトのインタフェースを使って、APIサービスへ要求します。

 

(※サンプルコード)
$client->setAccessToken($access_token);
$drive_service = new Google_Service_Drive($client);

 

サービスオブジェクトのインタフェースを使う方法は、後日書きます。

 

 

※サンプルコード

 上記すべてのサンプルコードは、Google Identity PlatformのUsing OAuth 2.0 for Web Server Applicationsから引用しました。

 サンプルコードのライセンス:the Apace 2.0 License(htt://www.apache.org/licenses/LICENSES-2.0)


 

記事一覧

第1回 Google APIを使用するための設定(使用するAPIの選択)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

参照

Google Identity Platform 「Using OAuth 2.0 for Web Server Applications」

https://developers.google.com/identity/protocols/OAuth2WebServer

 

◇ Composer https://getcomposer.org/

 

GitHub - google/google-api-php-client: A PHP client library for accessing Google APIs