Google Calendar API Client Javaを使ったアプリでサービスアカウントで認証するには

Google Calendar APIの認証はOAuth 2.0を利用しており、Webアプリケーション、クライアント・アプリケーションなどのシナリオをサポートしています。
(参照: Using OAuth 2.0 to Access Google APIs)

Google Appsを利用していて、企業向けのサービスや社内システムとGoogle Calendarを連携したい場合、システム単位でユーザーにアクセス許可を求めずに、ドメイン単位でGoogle Appsへのアクセスを設定したいところです。
このようなサーバー間およびバッチ(デーモン)アプリケーションのシナリオでは、JWT(Json Web Token)でサーバー用のアクセストークンを取得する方法が利用できます(2 Legged OAuthとも言う)。

サーバー間用のアクセストークンは、Google Appsのドメイン全体の委任を有効にしたサービス アカウントを作成し、サービス アカウントの秘密鍵を使って生成した署名を含むJWTをhttps://www.googleapis.com/oauth2/v4/tokenにPOSTすることで取得できます。
(参照: Using OAuth 2.0 for Server to Server Applications)

この記事は、サービス アカウントでGoogle Calendar APIへアクセスするシナリオでのJava API クライアント ライブラリの使い方について説明していきます。
簡単に流れは説明しましたが、クライアント ライブラリを利用するので、JWTの作成およびアクセストークンの取得についてはライブラリにおまかせです。
(参照: Calendar API Client Library for Java)

説明用のコードは、以下のJava API クライアントのサンプルのcalendar-cmdline-sampleを使います。
google/google-api-java-client-samples
このサンプルは、ユーザーに認可を求めるクライアント・アプリケーションです。
まずは元の動作を確認し、その後、サービスアカウント認証へ実装を変更していく流れで説明していきます。
“Google Calendar API Client Javaを使ったアプリでサービスアカウントで認証するには” の続きを読む

Office 365 REST APIを利用したRuby on Railsアプリの作成

Office 365は、Outlook(Exchagne)、OneDriveおよびVideoにREST APIが用意されています。
この記事では、Office 365 REST APIを利用してOutlookのリソースにアクセスする手順について確認した内容をまとめてみました。

API関連の情報ソース

APIを利用を始めるにあたって、以下のようなドキュメントを参考にしました。

REST API全体のリファレンスについては、Office 365 API reference、利用可能なOutlookのリソースについては、Resource reference for the Mail, Calendar, Contacts, and Task REST APIsで確認できます。

日本語版は、Office 365 API リファレンスがあります。

その他の参考情報としては

以下の公式ブログなどが参考になります。

“Office 365 REST APIを利用したRuby on Railsアプリの作成” の続きを読む

WordPress 子テーマに最小限必要なファイルとコード

WordPressに触れるのはときどきなので、小ネタですがメモしておきます。

コテーマの作り方の詳細は、子テーマ – WordPress Codex 日本語版を参照ください。

雛形として、最小限必要なのはディレクトリをwp-content/themesに追加し、style.cssfunctions.phpファイルを追加します。
wp-chile-theme-directories

styles.cssには、Templateに親テンプレートのディレクトリ名を指定し、
あとは、Theme NameのみでOKです。

// style.css
/*
Template: twentysixteen
Theme Name: My TentySixteen
*/

スタイルシートは、自動で読み込まれないので、functions.phpでスタイルシートの読み込みだけ追記します。

// functions.php
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}

Microsoft Bot Framework BotConnector BotをSlackから利用する

なぜかBotが最近盛り上がっていますが、先日MSのBuild2016にてMicrosoft Bot Frameworkが発表されました。

日本語の速報記事は、以下が参考になりました。

開発の概要は、公式ブログが参考になります。

Build2016 : Microsoft Bot Framework を使った Bot アプリ作成 | 青い空の向こうへ

Build2016の点では、BotFrameworkは、BotConnectorBotBduilerの2つが利用可能になっており、BotDirectoryはComming soon..のようです。

BotDirectoryは、Slack App Directoryのようなものですが、BotConnectorは、あくまでSlackやSkypeから見るとバックエンドのBotなので、BotDirectoryがユーザー体験としてどのような構成になるのかが気になるところです。

また、将来的に追加される機能としては、自然言語解析ベースの機械学習機能が利用できるようになるようです。
Build 2016 (Part 8) Microsoft Bot Frameworkの後半で紹介されています。なかなかおもしろいです。
この辺りについては、LUISとの統合がすでに用意されています。
LUISについては、ムービーが用意されているのでMicrosoft LUIS tutorialを参照してください。

以下、BotBduilerで作成したBotConnector用のBotをAzureにデプロイしてSlackから利用するところまでの
現在利用可能な機能を試してみたのでまとめてみます。

.NetのBotは公式ドキュメントのチュートリアルに沿って動作確認ができるので、Node.jsのSDKを利用して、Azure App ServiceにデプロイしてBotConnectorに設定、Slackと連携するところまで実装してみます。
“Microsoft Bot Framework BotConnector BotをSlackから利用する” の続きを読む

Azure WebアプリにNode.js expressアプリをGitからデプロイ

Azureにデプロイするアプリの開発は.Net以外でもVisual StudioのAzure統合ぶりがとても便利そうですが、Node.jsアプリの開発となると、私も含め普通はMacで開発している人がほとんどかと思います。
Build 2016で発表があったBotFrameworkを試していて、BotをAzure WebAppにデプロイするために、Azure向けのNode.jsアプリをMac OS X上で開発・デプロイする手順について調べてみたことをまとめてみます。

割りと驚いたのは、いつのまにかHerokuの様にgitと連携したデプロイができるようになっているんですね。非常にこれは便利です。
今回は、Bitbucketにpushしたらデプロイする手順を試しています。

Azureは、2,3年前にWebSitesを試して以来ですがとても進化してますね。
以前の記事は「Windows Azure WebサイトでFuelPHPアプリを動かす」の時は旧ポータルでした。

Node.jsの開発については、改めてまとめずとも公式ドキュメントにもちゃんと日本語で説明があります。
Azure App Service での Node.js Web アプリの作成

Hello Worldまでは、この説明のみで必要十分なので、npmでパッケージを管理する例としてexpressを利用する例についてもまとめてみました。
“Azure WebアプリにNode.js expressアプリをGitからデプロイ” の続きを読む

Larval 5アプリをGoogle AppEngineで動かすには

AppEngineでLaravelを動かすには、Cloud SQLに接続するためのunix_socketの設定や、runtimeディレクトリへの出力をCloud Strageへ向けるなどの対応が必要になります。
これらに対応した設定を生成してくれるパッケージがGaeSupportL5です。
GaeSupportL5がサポートするLaravelのバージョンは5.1です。

この記事では、Laravel5プロジェクトにGaeSupportL5をインストールし、AppEngine、Cloud SQLおよびCloud Strageリソースを設定し、デプロイ、動作確認することろまでをまとめています。

この記事で作成するLaravel 5.1のプロジェクトはGithubにアップしてありますので、全体のソースはこちらを参照ください。
Github: hrendoh/trial-gae-support-l5

Laravelプロジェクトの作成

GaeSupportL5は、5.2にはまだ対応していないので、5.1のプロジェクトを作成します。

$ composer create-project laravel/laravel laravel5-gae "5.1.*"
$ cd laravel5-gae

“Larval 5アプリをGoogle AppEngineで動かすには” の続きを読む

Google AppEngine PHPからCloud SQLへ接続する

PHPのGoogle AppEngine アプリケーションからGoogle Cloud SQLを利用する手順について調べてみたのでまとめてみました。

公式ドキュメントのチュートリアルUsing Google Cloud SQLに沿って試してみた内容になります。
このページの解説では、かなり他のページも参照しながらでないと進められませんでしたので、ここでは以下の流れを1記事で解説しています。

  1. Cloud SQLのインスタンスを作成
  2. ローカルPC(Max OS X)のMySQL Clientから接続してアプリ用のテーブルを作成
  3. AppEngineからCloud SQLデータベースへ接続

Cloud SQLは、パフォーマンスや機能が改善された第2世代が利用可能になっていますが、2016.03.30現在ベータでAppEngineからの利用はできませんので今回は第1世代を利用しました。

AppEngineのプロジェクト作成とPHPのHello Worldについては前回の記事「Google App Engine PHP開発の進め方」を参照ください。
以下は、この後からの手順になります。
“Google AppEngine PHPからCloud SQLへ接続する” の続きを読む

Google App Engine PHP開発の進め方

AppEngineは、構成選択肢がだいぶ増えておりPHPに加えて、Go、Node.js、Dockerなど様々なプラットフォームが利用可能になっています。
PHPについては、2015.6.16に正式サポートされるようになっています。
App Engine for PHP is generally available. Build scalable apps, faster.

PHPアプリを動かすプラットフォームを改めて検討することになりそうなので、App Engine SDK for PHPの使い方を調べています。
まずは、Hello Worldからですが、AppEngineは、現在Google Cloud Platformの1つのサービスとして利用可能になっています(しばらく触っていなかったのでその辺りも一から調べ直してます)。
昔のコンソール https://appengine.google.com もまだ利用可能なようですが、CGPプロジェクトを作成してAppEngineにデプロイする手順を確認しています。

手順は、Mac OS X El Capitanで確認しました。
SDKを利用するには、前提条件としてPython 2.7が必要です。El Capitanはデフォルトで利用可能なので、Pythonのセットアップと確認は省略しています。

Google App Engine SDK for PHPのインストール

Google App Engine SDK for PHPを開きMac OS XのGoogleAppEngineLauncher-1.9.35.dmg (2016.3.27現在)をダウンロードします。

「Installing on Mac OS X」にしたがってインストールしていきます。

GoogleAppEngineLauncherApplicationsフォルダにドラッグします。
GoogleAppEngineLauncherを開くと、Make command symlinksのプロンプトが開くので[OK]をクリックします。
“Google App Engine PHP開発の進め方” の続きを読む

Cloud SQL 第2世代にSQL Proxy経由でMySQLクライアントから接続するには

Cloud SQLは、2016.03.30現在ベータですが、パフォーマンスや機能が改善され価格も安い第2世代が利用可能になっています。

この記事では、第2世代から利用可能になった、Cloud SQL Proxyを利用し、ローカルPC (Mac OS X) のMySQL ClientからCloud SQLインスタンスへの接続を試した手順をまとめてみました。
外部ネットワークから接続する方法は、第1世代はIPを制限して接続を許可する方法のみでしたが、第2世代では、サーバーアカウントキーで認証してAPIを介して安全にデータベースへ接続できるようになっています。

第2世代は、AppEngineで利用できないなど制限がいくつかあります。
制限については、Google Cloud SQLとは?Cloud SQL Second Generation (ベータ)の制限で確認できます。

インスタンスの作成

Google Cloud SQLは、プロジェクトのメニュー[ストレージ]の[SQL]から利用できます。

Google Cloud SQL メニュー

初めて、利用する場合は、以下のように[インスタンスを作成]のボタンのみ表示されています。

Google Cloud SQL インスタンスの作成
※ 請求先アカウントを設定していないプロジェクトでは、左上に[課金を有効にする]ボタンが表示され、[インスタンスの作成]ボタンは表示されません。
お支払い情報を入力して請求先アカウントを設定する必要があります(無料試使用あり)。

[インスタンスを作成]ボタンをクリックしてインスタンスの作成を開始します。
“Cloud SQL 第2世代にSQL Proxy経由でMySQLクライアントから接続するには” の続きを読む

Zabbix 3.0 サーバーをUbuntu 14.04にインストール

前回の記事「Zabbix 2.4 サーバー/エージェントをUbuntu 14.04にインストール」の後、Zabbix 3.0がリリースされたので、改めてUbuntu 14.04にインストールする手順を確認してみました。

3.0で新たに追加された機能や主な変更点は、Zabbix 3.0 新機能にまとまっています。
スクリーンショットを見ただけでも、今風なデザインに刷新されており期待が持てそうです。

では、早速インストールの手順 3 Installation from packages From distribution packagesDebian / Ubuntu を追ってみます。

Zabbixサーバーのインストール

Zabbix 3.0は、インストールパッケージをRHEL、CentOS 7系とDebian 7,8、Ubuntu 14.04向けに用意されています。

今回は、Ubuntu 14.04向け、リポジトリにMySQLを利用するバージョンのパッケージをインストールします。
“Zabbix 3.0 サーバーをUbuntu 14.04にインストール” の続きを読む