日直地獄

小学校では事件が起きる

Google Nest Hub に常時 Googleカレンダーの内容を表示する方法

どのサイトを見ても出来ない、出来ないと書いてあるが、結論から言えば内容の表示は出来る。ただし、なかなかのピタゴラシステムで実現する必要がある。よって各サイトの「出来ない」というのも嘘ではない。

動作している様子。Googleカレンダーの予定が表示されている

常時カレンダーを表示したかっただけなのに…

私は予定関係のタスクが苦手である。上手く予定をこなするためには日常生活にGoogleカレンダーを取り入れなければならない!、それならばモニタに常に予定を表示すると良いはずと思い、中古のGoogle Nest Hubを購入した。カレンダー常時表示は普通のニーズだし、当然に出来るでしょうと思い可能かどうか調べることもしなかった。

しかし現実はそうではなかった。どのサイトを見ても出来ないと書いてある。そんな馬鹿な…、と呆れると同時に悲しい気持ちになった。デバイス自体リリースから結構時間が経過しているし、レイオフが続くGoogleがこんな細かな改善を入れてくれるはずがないと思ったからだ。

あ〜無駄金かムカつくな〜許せんな〜と思っていたが、私が見たいのはGoogleカレンダーではなくてGoogleカレンダーに登録した予定が見たいのだということに気づき、瞬時にGoogleカレンダー"の内容"を常時表示する作戦を思いついた。

必要なもの

  • Google Nest Hub
    • Google Nest Hub のGoogleフォトの特定のアルバムを常時表示する機能(標準機能)
  • Google Apps Script
  • Google Calendar API
  • Google Slides API
  • Google Photos Library API
  • Google Drive API

作戦立案詳細

Nest Hub は一定時間操作がなく待機状態になると必ずフォトフレームモードになる。ここは揺るがせない仕様なわけである。であればやるべきことは至極単純で、ここにGoogleカレンダーの予定を画像化したものを出せれば良い。また、任意の画像を表示させる機能として「指定のアルバムのみを表示する機能」が提供されていることもわかった。
となると次に調べるべきことは「APIから特定の画像をGoogleフォトのアルバムに追加することができるか」「カレンダーの予定を画像化できるか」である。それが分かれば実現可能性がぐんと上がる。

幸いにして画像化はSlides APIを使ったら可能であることがわかっていたし、Calendar APIのこともまあまあ知っていたので可能であると断定。前者についてもPhotos API で画像投稿とアルバムへの追加操作が可能だったので作り始めることにした。

処理過程

  1. Calendar APIを叩き、表示すべき予定に更新がないかチェックする
  2. 更新があれば Drive API を叩き、テンプレートスライドを2ファイルコピーする
  3. Slides APIでスライドの中身をカレンダーの予定に置換する
  4. スライドを画像化し、Googleフォトにアップロード、アルバムに紐づける
  5. Drive APIでスライドファイルを削除する
  6. 古い予定画像をアルバムから削除しゴミ箱アルバムに紐づける

以上の処理をGoogle Apps Scriptで定期的に実行する。

翻弄させられた仕様達

アルバムに画像が1枚しかないと勝手にアートギャラリーモードになる

1枚だけ画像を設定しているアルバムをフォトフレームに設定すると何故かその画像が全然表示されず名画などが表示させるアートギャラリーの画像が表示される。設定壊れてるのか?と思ったけど2枚以上画像があると意図通りに動作する事が分かった。

同じ画像は受けつけない Google PhotoAPI

Googleフォトは大変ありがたいことに同じ画像を複数枚アップロードしない仕組みになっている。これはAPI経由でも同じであった。しかし前述の通りアルバムには2枚画像を登録しなければならない。そのため、目に見えない小さな違いを画像に含ませるようにしてこの制限を回避した。

画像削除機能が提供されていない Google Photos API

新しい予定画像に更新したら古い予定画像は削除されてほしいが、Google Photos APIでは削除APIが提供されていない。そのため、古い画像はゴミ箱アルバムを作成しそちらに紐づけることで一括削除を容易に実行できるようにした。

感想

デバイスが届いた翌日には実装完了して動作しているので達成感はある。想定通り便利だし。が、Googleが普通に実装してくれ!と思う。

文部科学省が配布している科学情報のポスター「一家に1枚」をコンビニ印刷してラミネート加工する

「一家に1枚」は文部科学省が配布している大変クオリティ高い科学情報のポスターのこと。毎年1枚追加され現在は合計19枚あるそう。品質が高いので、どうしたって子供に提供したくなる。素晴らしい取り組みですね。
www.mext.go.jp
しかしこういうやつは、どう考えても風呂に持ち込めたいし貼れたい…。そういうことを考えてふとAmazonを検索したらA3対応のラミネーターが4000円以下で購入できることに気づいた。案外お安い。
現実的な価格でラミネータが購入できることがわかったので、あとはA3プリントできれば風呂持ち込み行けるな、と思って試しにコンビニで印刷したところ満足できる品質だった。
それぞれ問題ないことが確認できたので、実際にラミネーターを購入しラミネートして風呂に持ち込んでいる。1枚数百円で高品質な科学教材が作成できるのはとても嬉しい。
以下は作成に関する知見です。

文字が細かすぎる問題と、どのコンビニのプリンタを使うべきか

ポスターを見るとわかるけれど基本的に情報が詰められており細かい文字も多い。この細かい文字をコンビニのカラープリントでどれほど再現できるのかは大きな関心ごとである。調べてみるとコンビニのプリンタはSHARPとFUJIFILMの2系統あることがわかった。

  • ファミリーマート、ローソン: SHARP A3 普通紙 フルカラー80円
  • セブンイレブン: FUJIFILM A3 普通紙 フルカラー 100円

せっかくならキレイで読みやすいほうがいい。ということでいくつか印刷して比較してみた。*1

結論から言えばセブンイレブンのほうが細かい文字の表現を得意としているように思えた。ただし、ファミマとセブン1店舗ずつでしか試してないのでプリンターのメンテナンス状況にもよる可能性はある。

セブンイレブンで印刷した「海」
ファミリーマートで印刷した「日本列島7億年」
ファミリーマートで印刷した「細胞」

ただし、セブンイレブンのネットプリントでは元素周期表のPDFを読み込んでくれず一度JPEGで出力してJPEGを印刷するという手間がかかった。今のところ元素周期表以外ではこの現象は確認できていない。なお、ファミリーマートではPDFのままプリントできたのでセブンイレブン側が悪いのかなと思いつつよくわからない。
また、PDFを解像度を300PPIくらいのJPEGにエクスポートして印刷するのとPDFのまま印刷するのを比較したりもした。断然PDFの方がキレイということもわかった。400PPIでもまだPDFの方が優位だった(と思う)。

ラミネートして風呂に持ち込む

ラミネータはアイリスオーヤマのやつを買った。セールで3590円くらいだったので今は5000円くらいになっているかもしれない。

フィルムは店舗にこれしかなかったのでこれを買った。アイリスオーヤマのフィルムを買おうと思っていたが売っていなかった。純正でなくても全く問題ないことが確認できた。

使い方は全然難しくないし、生成物は普通に風呂に貼り付けられた。
ラミネート加工すると心なし資料の発色よく感じる。これは単に気持ちの問題かもしれない。

*1:なお、完全な比較をするなら同じデータをそれぞれのプリンターで出力する必要があるが、80〜100円を惜しんで厳密さはあきらめてる

ScanSnapという名の救世主、プリント管理の新時代

学校、保育園のプリント管理のためにScanSnapを導入した。捨てにくく山積みになる問題を解決したかった。実際、結構解決している感じがあってめでたい。タイトルはAIに考えてもらいました。
買ったのはこれ。

困りごと

世の中にはこの悩みはよくあって、プリント管理アプリは結構あるっぽい。が、スマホで撮影する前提みたいなところがあって(自分調べ)、上手く撮りにくく時間がかかる上に全部自分でやらないといけない(子供にやらせられない)のがめんどくさい。
調べてみると最近の ScanSnap はスキャンしたデータをGoogle Driveに直行させられるらしいということがわかった。これなら子供だけでデータ化を完結させられるし、データはGoogle Driveに溜まっていき安心*1。これじゃんと思って買った。我が家もDXでサクセスやで!

良いとこ・悪いとこ

  • 良いところ
    • 子供が勝手にスキャンしてくれる。思惑通りだった
    • 保育園は書類は自分でやる必要があるがスキャンは一瞬で終わるので全く苦じゃない。スマホの写真撮影だとこうはいかない
      • 両面スキャンが可能なのも圧倒的に優位
    • A3はサイズの問題でスキャンできないので折って両面スキャンする必要がある。A3で3カラムなプリントだと折り目のところに文章が来てしまうが、折り目のところに文章があると判断したら勝手にページを繋げて1ページにしてくれる!まじで賢いし出力されたデータを見てめちゃくちゃビックリした
    • ScanSnapがOCRもしてくれているらしく、書類を Google Driveで検索可能
      • 先日妻に「生活発表会っていつだっけ?」と聞かれてGoogle Driveで検索してみたらちゃんと検索できた。最高!
    • データをいただけない保育園の写真のデータ取り込みも素早く完結できるという副次的効果も
      • ScanSnap側で写真か書類かでフォルダを仕分けしてくれるので、書類と写真が混ざらない
  • 悪いところ
    • セットアップがちょっと難しかった

プリントのチェック管理

プリントをスキャンした後は、ちゃんとチェックしたかを管理したくなるわけですが、これは流石にスキャンスナップやGoogle Driveでは管理できない。外部ツールでなんとかする必要があるが、AppSheetで作ったら良いかと思って作った*2。AppSheetを使うのは以前ダンボール管理アプリを作って以来だったのでほぼ何も覚えてなかったが、だいたい3時間位でできた。

父と母がそれぞれチェックできる。また、それぞれでチェックしていない書類をフィルタして見たりできる

AppSheetにはGoogle Drive連携があり、フォルダに存在するファイルを出力することができてそこまでは一瞬でできる。しかしながら、そのスキーマには値が書き込めないVirtualColumnしか作れないらしく、チェックの状態は別のテーブルとリレーションさせる必要があり、そのへんがかなり面倒だった。

*1:プリント管理アプリとGoogleのサービス終了リスクを天秤にかけたら流石にDriveの方がリスク低いだろうという判断になる

*2:AppSheetが打ち捨てられないかはさておき…

  • ゴジラ-1.0見てきた。人間ドラマ部分が案外長い。ドラマにはハマらなかったが、気に障るほどではなかった
    • 舞台に現代を選ばなかったのは良かったと思う。なぜなら俺が邦画でのSNSの使われ方の描写が苦手だから
  • 都市のモニュメントを壊すのはゴジラしてて笑ってしまった。確かに壊すのは過去の都市だって良いわけだもんな
  • ゴジラの暴虐な描写はかなりしっかりしていて、正しく厄災という感じで良かった。かなり楽しめた
    • 対ゴジラ作戦はトンチキだと思ってこれ本当に実現するのか?と一瞬頭をよぎったがまあどうでもいいか、と早い段階で割り切れた。映像が面白いし、まあゴジラだし…