【Raspberry Pi】子供への通知はGoogle Homeさんに任せた

Google Home with Raspberry Pi

はじめに

毎朝、子供に「やれ準備は終わったか」だの「そろそろ出発の時間だぞ」など言ってるのが疲れるので、Google Homeさんにお願いすることにした。彼女ならスマートスピーカーの名の通り、スマートにお知らせしてくれることだろう。きっと。

先日、Raspberry Pi Zero Wも手に入れたし、node.js使って定刻通知をする仕組みを作ってみる。

用意したもの

  • Google Home
  • 彼女がいないと今回の話は始まらない。頑張ってくれたまへ。

  • Raspberry Pi Zero W
  • 主役その2。今回のシステムは常時稼働が条件なので、省エネ型のZeroをチョイスした。

実現方法

メッセージファイルはスプレッドシートを使うことにした。どこからでも手軽に書き換えられるし、夫婦で共有管理もできるので便利である。

  1. 特定の時間になったらスプレッドシートから該当メッセージを読み込む
  2. 取得したメッセージをGoogle Homeにしゃべらせる

これだけである。実に簡単だ。

[amazonjs asin=”B0746H9881″ locale=”JP” title=”Raspberry Pi Zero W Starter Kit”]
“【Raspberry Pi】子供への通知はGoogle Homeさんに任せた” の続きを読む

【Raspberry Pi】Raspberry Pi(ラズパイ)はじめてみた

はじめに

Raspberry Piってなんぞやっていうのはもう出尽くしたので(どうしても知りたい人はWikipedia読む)、なんで今さらってところだけ…

年度が代わり、子供も小学校に入ることだし、一緒になにかできることないかなぁと思ったのがきっかけ
その中で、自分も楽しめるやつがいいなってことで始めるのです。

(っていうのが建前で、これを口実に買い揃えられればいいじゃんってことすよ)

買ったもの

ラズパイ本体(Raspberry Pi3 Model B)

Raspberry Pi 3からWi-Fiが最初からついているのでそれを買う。Wi-Fi結構大事でサーバ用途として一度セットアップが終われば、コンセント1つで家中どこにでも設置できるのは大きい。

ホコリ対策でケースも必要になるだろうからセットになっているやつを買ってみた。
白と黒は難燃素材ってかいてあったんだけど、ここはコンピュータ感が欲しいのでクリアタイプを選ぶ

[amazonjs asin=”B01CSFZ4JG” locale=”JP” title=”Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab”]

“【Raspberry Pi】Raspberry Pi(ラズパイ)はじめてみた” の続きを読む

Search Consoleでプロパティセットを利用している時のAPI設定について

複数のプロパティをまとめたセット使ってますか?

Googleの公式ブログで言われているプロパティセット
個人のブログでサブドメ毎にクエリ集計を行ってたり、httpsに移行したときにプロパティが分裂してしまったりした時、それらをまとめて検索アナリティクスで見られるようにするものだ。

(多分)一般的なプログラム

Search Console APIを使って検索クエリ等のデータを取得する際にはいろいろと下準備があるのだが、そこは割愛するが
実際に値を取得する部分だけみると、大体こんな感じのコードになると思う
[javascript highlight=”18″]
var params = {
searchType: "web",
startDate: date,
endDate: date,
dimensions: ["query"],
startRow: offset,
rowLimit: limit
}
var opt = {
"method" : "POST",
"payload" :JSON.stringify(params),
"contentType": "application/json",
"headers" : {
"Authorization": "Bearer " + accessToken
},
"muteHttpExceptions" : true
};
var res = UrlFetchApp.fetch("https://www.googleapis.com/webmasters/v3/sites/"+ encodeURIComponent(site_url) +"/searchAnalytics/query", opt);
[/javascript]
肝は最終行site_urlのところ。ここにサイトのURLを入れることになるのだが、プロパティセットの場合はそれがない
そこで検索アナリティクスの画面を開いた時のここを見て欲しい(アドレスバー赤枠内)

SearchConsoleプロパティセットのサイトURL

URLにはこんな感じでsiteUrlパラメータが設定されているが、ここからsc-set%3A(%3Aは:コロンのURLエンコード)を除いた部分がプロパティセットのsiteUrlとなる

実値を入れたプログラムイメージはこうなる
[javascript]
var res = UrlFetchApp.fetch("https://www.googleapis.com/webmasters/v3/sites/3AF_VIxxxxxxxxxxxxx/searchAnalytics/query", opt);
[/javascript]

これでプロパティセットのデータにアクセスできるようになったぞ

Google Apps Scriptで使えるファイルロガー

だって、コンソールを開かないと見られないし、なによりバッチが途中でコケた時とか、なんの記録も残らないんだぜ。

ってことで、ログのテッパン「ファイル(Google ドキュメント)ロガー」を作ってみた。

ソースコード

主目的は【ログを都度出力にすることにより、処理ダウンによるログの欠落をなくす(検知する)】である。
若干パフォーマンスは落ちるものの、この方式でイク!

gallberry/GALogger

“Google Apps Scriptで使えるファイルロガー” の続きを読む

Google Apps Scriptでタイムアウトを検知する

Google Apps Scriptの制限について

Gooogle Appsの各種サービスを利用する上で考えて置かなければならないのが利用制限である。下記のURLに詳細が記載されているとおり、利用時にはいろいろな制限がある。

Google Apps Script ダッシュボード

今回はこの中の実行時間6分の壁について考えてみようと思う。

そもそも実行制限を超えると何が起こるか?

答えは簡単「何も起こらない」である。処理の書き方にもよるけど急に止まる。ロールバック処理を入れようがない。途中でファイル出力とかしてたら書きっぱなしである。
そのためトリガーをセットしてバックグラウンドで実行している時、タイムアウトが発生した場合、なにもわからないのである。

こんなのいかがでしょうか?

5分の壁を超える方法は色々な人が教えてくれているようなので、本稿ではそもそもタイム・アウトしてしまった時の処理について考えてみた。

まぁ、簡単に言うとこれだけである。

  1. タイムアウト検知用の処理を作成
  2. メイン処理開始時に上記処理を10分後(値は任意)に起動するようにトリガーを作成
  3. メイン処理終了時に先のトリガーを削除

Class ScriptApp

サンプルコード

[javascript highlight=”18,22″]
/**
* タイムアウト通知処理
*/
function sendTimeout() {
// ここにタイムアウト時に通知を行う手段を記載する
// メールで通知やSlackに投稿なんぞいかがでしょう
}

/**
* メイン処理
*/
function main() {
// タイムアウト検知用トリガーをセット(10分後)
var triggerTimeout = ScriptApp.newTrigger(‘sendTimeout’).timeBased().after(10 * 60 * 1000).create();

// メインの処理を記載します

// タイムアウト検知用トリガーを削除
ScriptApp.deleteTrigger(triggerTimeout);
}
[/javascript]

注意

タイムアウトが発生した場合、検知用トリガーが残りっぱなしになるので、こればっかりは運用で削除するしかありませんな・・・

WordPressのドメインを変更した時にやったこと

ってことで、こっそりドメイン変更行いました。

http://o-live.jp/
http://o-live.xyz/

この.xyzドメインはは2014年から新しく登録が始まったもので、意味は特に無し。誰もが使っていい.net的なやつです。
もう後が無いって感じがシティ・ハンターって感じでなんかいいすね。
(ドメイン維持費が安いってのも本音としてはあるわけで)

…ということで新ドメインに切り替えることになったわけだが、まぁいろいろやることありますわ。
簡単に済むものから、時間のかかるものまで
でもまぁさすがにもう当分変えることはないだろうから、とりあえずやったことを書いとこうっちゅう話やな

“WordPressのドメインを変更した時にやったこと” の続きを読む

Google日本語入力のサジェスト機能で恥ずかしい思いをしないためのTips

Google日本語入力

Google 日本語入力の甘い罠

Google 日本語入力を常用している。
使えば使うほど、自分の思考を理解してくれて驚くべき早さで文章が打てるようになる。
プライベートでも仕事でも、自分にとっては手放せないツールになっている。

だが、しかし…
プライベートと仕事でガシガシ使っていると時々とんでもないサジェストをかましてくれる場合がある
みんなもあるよね?うん、あって欲しい
“Google日本語入力のサジェスト機能で恥ずかしい思いをしないためのTips” の続きを読む

さくらのレンタルサーバでgitを使う

バージョン管理はgitでしょ
ということでさくらのレンタルサーバにgitを導入した時のログ

gitのインストール

まずは最新版の確認します
git-coreでソースが配布されているので最新版を確認する
どうやら1.8.2.3が最新らしい(2013/05/16 現在)

が、のちのインストールでエラーが出たので、1.7系最新を使うことにしました。

[bash]
$ cd $HOME/local/src
$ wget http://git-core.googlecode.com/files/git-1.7.12.3.tar.gz
[/bash]
“さくらのレンタルサーバでgitを使う” の続きを読む