まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:google

Google Apps(無料版)を使って所有するドメインのメール環境を続けてきましたが、無料期間が終了することになり、メールアカウントを残すにはメールサーバー環境を引っ越す必要が生じました。

先日、このブログで Zoho メールで独自ドメインメールを無料運用するための手順を紹介しました。これは1つの解決策ではありますが、5ユーザーまでとか、添付ファイルは最大25MBとか、これまでの環境からの移行としては少し制約の大きなものでもありました(無料、という非常に大きな魅力はありますけど)。
http://dotnsf.blog.jp/archives/1080247716.html

2022030501



ただこの Zoho メールを使う方法には隠れた制約がありました。手順内でも紹介しているのですが、独自ドメインメール環境を申請するためには、その独自ドメインではないメールアドレスを使ってアカウントを作成する必要があり、そのメールアドレスは他のドメインのメール環境には使えないのでした。つまりドメインを複数所有していて、その複数のドメインを全て Zoho メール(無料版)に移行するには同じ数のメールアドレスが必要でした。これは無料メールアカウントを複数発行すればできなくはないのですが、管理対象のメールアドレスが増えるだけでなく、どのメールアドレスをどのドメインの申請に使ったかを把握しておく必要も生じてしまい、色々面倒な運用になってしまいそうでした。


この状況を避けるべく、(無料ではないが)格安で独自ドメインのメール環境を用意してくれる環境を用意することにしました。その例として今回申し込んだのはさくらインターネット様の「さくらのメールボックス」サービスです:
https://rs.sakura.ad.jp/mail/

2022032500



サービス内容はこんな感じです:
・独自ドメインを20個まで利用可※
・メールアドレス数は無制限※
・容量は(全ユーザーの合計で)20GB
・1年間で 1048 円(2週間の無料お試し可)


※異なるドメインの同じ名前のユーザー(例えば admin@domain1.com と admin@domain2.net)のメールアドレスを別々に作ることはできず、いずれのアドレス宛のメールも同じメールボックスに届きます。


データ容量自体は全ユーザーの合計で 20GB と、Zoho メール(1ユーザーあたり 5GB で、5ユーザーまで)と比べても小さいのですが、独自ドメインを 20 個まで登録できることに加え、メールアドレスを無制限に持てるというアドバンテージがあります(ユーザーあたりのメール容量があまり大きくないケースであればこちらのほうが向いている可能性があります)。また価格も個人利用と考えても決して高くはなく、このくらいならお小遣いでなんとか・・・ というレベルだと思っています。

今回、これまで Google Apps でメール運用してきた所有ドメインの1つ(welove.bz)をさくらのメールボックス環境に移行してみたので、その手順を記録として残しました。他のドメイン※も同様に移行するつもりですが、その内容を以下に公開します。なお以下の作業は「 Google Apps からの移行」に特化した内容はほぼなくて(現在どこで運用してるとかしてないとかに関係なくて)、単に「さくらのメールボックスで独自ドメインのメールを運用するための設定」の紹介となります。


※ドメイン管理を移管する場合、「さくらのインターネット」へのドメイン移管ができるのは .com, .net, .org, .info, .biz, .tokyo, .mobi のみのようです。今回はドメインの移管をせずに DNS の設定だけで実施する方法を紹介します:
https://help.sakura.ad.jp/206205811/#trouble01



【「さくらのメールボックス」と契約】
契約手続きそのものを詳しく紹介するつもりはありませんが、何はともあれ「さくらのメールボックス」と契約する必要があります。上述のページから「2週間無料ではじめる」と書かれたリンクをクリックして契約内容を入力していきます。クレジットカードが必要ですが、特に難しいことはないと思います:
2022032501


契約が完了すると、さくらインターネットの会員メニューにログインできるようになり、「契約中のサービス一覧」に「さくらのメールボックス」が表示されるようになります。この時点ではまだ独自ドメインの設定はできていませんが、初期ドメインと呼ばれる *****.sakura.ne.jp という値が付与されます。この値は後で DNS 設定時に使うので覚えておきましょう。

この「コントロールパネルを開く」と書かれたボタンをクリックして独自ドメインを含むメールボックスの設定画面に移動します:
2022032502


サーバコントロールパネルというサーバーの設定変更画面にログインします。契約時に送付されたドメイン名とパスワードを入力して「ログイン」ボタンをクリックします:
2022032503


ログインに成功すると以下のような「サーバコントロールパネル ホーム」画面が表示されます。ここから独自ドメインを利用するための設定を行っていきます:
2022032504


以下では自分が所有していて、Google Apps で運用していた "welove.bz" というドメインのメール環境を移行する様子を紹介します。なお、このドメイン自体は GoDaddy.com で取得したものです。他のドメインプロバイダーを使っている場合は一部異なる設定内容が含まれると思いますのでご了承ください。


【「さくらのメールボックス」で独自ドメイン利用の設定】
改めて「さくらのメールボックス」のコントロールパネルを使って独自ドメインのメール環境を構築します。今回は自分が取得している独自ドメイン(welove.bz)のメールサーバー環境を構築する様子を紹介します。

画面左のメニューから「ドメイン/SSL」 - 「ドメイン/SSL」 を選択します:
2022032501


ドメイン/SSL の設定画面になり、現在までに登録されているメールのドメイン(デフォルトの1つ)が表示されています。ここで「ドメイン新規追加」をクリックします:
2022032502


「ドメインの新規追加」画面に切り替わります。追加するドメインの指定方法によっていくつかの選択肢が用意されていますが、(これから取得して追加するのではなく)すでに取得済みのドメインを追加する場合は画面下にスクロールします:
2022032503


ドメインの管理そのものを移管する場合は「他社で取得したドメインを移管して使う」から先に進むことになりますが、今回はドメイン管理をそのままにして、メールサーバーの設定のみを行います※。というわけで一番下までスクロールして「他社で取得したドメインを移管せずに使う」の「追加」をクリックします:
2022032901


※上の画面にも書かれていますが、このオプションはさくらのブログでの動作を保証していないようです。


次の画面ではメールサーバーで移管するドメイン(下図では "welove.bz")を指定して「追加」します。ネームサーバーについて云々・・・と書かれていますが、今回ネームサーバーを現行のものから変更するつもりはないので、ここは無視します:
2022032902


するとドメイン/SSL の画面に戻り、指定したドメインが追加されていることを確認します:
2022032903


さくらのメールボックス側で必要な作業は以上です。続けてドメインを管理しているプロバイダー側での DNS 設定画面で変更作業を行います。



【「さくらのメールボックス」向けの DNS 設定変更】
対象ドメインの DNS 変更を行います。自分の場合、対象ドメイン(welove.bz)を GoDaddy.com で取得&管理しているので、以下は GoDaddy.com での作業イメージとなります。が、他のプロバイダーでも同様の作業を行えばよいだけなので、以下のスクリーンショットを参考に同様の作業を行ってください。

具体的には対象ドメインの MX レコードを編集します。またメールサーバーを mail.welove.bz のような名称にしたい場合は合わせて CNAME レコードも編集します。 というわけで、対象ドメインの DNS 管理画面に移動します:
2022032901


まずは MX レコードを以下のように変更(または追加)します。これ以外の MX レコードが存在していたら併せて削除します:
ホスト名: (対象ドメイン名)
TYPE: MX
VALUE: xxxxx.sakura.ne.jp(初期ドメイン名)
状態: 有効
優先度: 10 (など、適当な値)
2022032901


また単にさくらのメールボックス機能を使うだけでなく、メールサーバーに mail.welove.bz という名前をつけて管理したい場合は以下の CNAME レコードも追加します。なお、これをやっておくとウェブメール以外の(POP3/IMAP/SMTP などの)メーラーを使う際のメールサーバーを "mail.welove.bz" などと指定できるようになります:
ホスト名: mail  (メールサーバーを mail.対象ドメイン名 にしたい場合)
TYPE: CNAME
VALUE: xxxxx.sakura.ne.jp(初期ドメイン名)
状態: 有効
2022032902


これで DNS の設定も終わりです。スクリーンショットは GoDaddy.com のものでしたが、他のプロバイダーを使っている場合も同様の作業をすればいいはず。

あとはしばらく(TTL次第ですが、おそらく数分)待てば指定したドメインのメール環境が整います。すでにさくらのメールボックスにユーザーの登録が済んでいればすぐに使えるようになりますが、まだの場合はユーザーを登録します。


【「さくらのメールボックス」へのユーザー追加】
さくらインターネットのサーバーコントロールパネルに戻ります。今回はメールのユーザーを指定するので「メール」メニューを選択してメールアドレスの一覧を表示し、「新規追加」ボタンをクリックします:
2022032901


新規に登録するユーザーの情報を入力します「ユーザ名」と書かれた部分がメールアドレスの @ の左にくる部分となります。また「パスワード」も必須情報です:
2022032902


全ての情報が入力できたら画面下の「作成する」ボタンをクリックします:
2022032903


メールアドレス一覧画面に戻ります。作成したユーザーが追加されていることを確認します:
2022032904


【「さくらのメールボックス」のウェブメールを使う】
ドメイン側の設定変更が済んでいればウェブメールを使うことができるようになります。ウェブメールを使うには以下の URL にアクセスします:
https://secure.sakura.ad.jp/rscontrol/?webmail=1


認証を聞かれるのでメールアドレスと(作成時に指定した)パスワードを入力してログインします:
2022032901


ウェブのメール画面が開きます。この画面を使って受信メールを確認したり、送信・返信が可能です:
2022032902


なお、さくらのメールボックスでウェブメールを使う場合はこちらのドキュメントも参照ください:
https://rs.sakura.ad.jp/function/webmail/

またウェブメール以外の各種メーラーやその設定についてはこちらを参照ください:
https://help.sakura.ad.jp/mail/



同様にして(プラン容量内であれば)更にドメインを追加したり、ユーザーを追加して使うこともできます。ドメインの移管をしない場合は、現行のドメインプロバイダーによって DNS の設定方法が異なるため、画面とかは用意できないのですが、ちょっとした手間をかけるだけで実現できるはずです。また Cloudflare などのドメインレベルでのファイアウォールを使っている場合だとメールのためにドメインの移管をするわけにもいかない(この影響がデカい)ので、この方法のほうがより柔軟性高く実現できると思っています。



Google Apps の無料運用が終わることになり、これまで運用してきた独自ドメインのメールアカウントをどこかへ移行する必要が生じました。

いくつかの移行先候補の中で、「無料で」続けることができる数少ない選択肢が Zoho メール だと思っています。というわけで、Google Apps からの移行を視野に入れて、Zoho メールで独自ドメインのメールアカウントを運用する方法を調べました(ちなみに以下のスクリーンショットを撮った時には FireFox を使っています):
2022030500


【Zoho メールとは】
個人や小規模組織を対象に無料のメール環境を提供しています。GMail 同様、個人でも @zohomail.jp ドメインのメールアカウントを取得することもできますが、今回は独自ドメインでメールを運用できる点に絞って紹介します。なお無料で Zoho の独自ドメインメールを運用する場合の条件は以下のようになります:
・最大5ユーザー
・1ユーザーあたり 5GB のメール容量
・添付ファイルは最大 25MB まで
・Webメールとモバイルアプリのみ(POP3/IMAPなし)



【Zoho メールを独自ドメインで利用するまでの手順】
以下に実際に自分が所有しているドメイン(yellowmix.net)で利用できるようにするまでの手続きの様子を紹介します。Zoho は Zoho Japan が日本人向けのサービスも提供していますが、この Zoho メールの手続きは途中から英語のみになるので、その点にご注意ください。

まずは Zoho メールのトップページへ行き、「広告表示なしメールの使用を開始する」と書かれた箇所で「メールアドレス」を選んで「無料プランに登録する」ボタンを選択します:
2022030501


※ちなみにここで「個人向け」を選ぶと、@zohomail.jp ドメインの無料メールアカウントを取得できます。

このような画面が表示されます。この辺りは有料サービスなので下にスクロールします:
2022030502


「永久に無料のプラン」と書かれたサービスの「無料お試し登録」をクリックします:
2022030503


次の画面では新たに申し込むアカウントの設定に利用する氏名とメールアドレス(今回申し込むメールアドレスのドメインとは別のもの)、そしてパスワードを入力します(既にそのメールアドレスで Zoho のアカウントを取得している場合はログインします)。最後に「登録する」ボタンをクリックします:
2022030501


Zoho メールの設定ウィザードがスタートします。まずはドメインを追加します。今回は既に所有済みのドメインを利用するため「既存のドメインを追加する」「今すぐ追加する」ボタンをクリックします:
2022030502


以下のようなダイアログが表示されるので、登録するドメイン名(www. が表示されているので、そこに続けてドメイン名を入力)、組織名、そして組織の分類(自分は IT を選びました)を指定して「追加する」を選択します:
2022030503


すると次のような画面になり、ドメインの追加ができました。ただ本当にこのドメインを所有しているかどうかを確認する必要があります。続けて「ドメイン認証に進む」をクリックします:
2022030501


ドメインの所有権を認証する画面が表示されます。ここから先はドメインを取得したプロバイダーによって作業内容が変わると思いますが、自分の場合は GoDaddy.com でこのドメインを取得しており、GoDaddy.com の場合は左の「自分の DNS にログインする」を選ぶことで先にすすめることができました。以下、この方法を選んだ場合として説明を続けます:
2022030501


「自分の DNS にログインする」を選択すると DNS プロバイダー(自分の場合は GoDaddy.com)へのログイン認証が行われるので、該当プロバイダーへログインする ID とパスワードを入力してサインインします:
2022030502


正しくサインインできると、Zoho Mail Hosting を有効にする許可を与えるかどうかの確認画面になります。内容を確認して「接続」をクリックします:
2022030503


すると元の画面に戻り、「ドメインの所有者が確認されました」のメッセージが表示されます。これで指定したドメインを本当に自分が取得していることを証明できました。

続けてこのドメインでのユーザーを作成します。

"Your login mail address" と書かれたテキストフィールドに作成するメールアドレスを入力(@yellowmix.net は入力済みなので、その前の部分を入力)して、「作成する」をクリックします:
2022030501


すると以下のような画面が表示され、ユーザーが追加されたことが確認できます。必要に応じてここで「追加する」を選択して、このドメインのメールユーザーを(無料プランであれば最大5ユーザーまで)追加できます。ユーザーの追加が完了したら「グループの設定に進む」をクリックします:
2022030501


グループはユーザーが共有して利用することができるメールアドレスです。必要に応じて「作成する」からグループを作成してください(不要であれば作る必要はありません)。次に進む場合は「DNSの関連付けに進む」をクリックします:
2022030502


次に MX レコードなどのメール用 DNS 設定を行います。が、この前の手続きでドメイン認証が済んでいれば「MX、SPF、DKIM を自動で設定できます」ボタンをクリックするだけです:
2022030503


続いてデータ移行の画面になります。既存メール環境からのデータ移行ができるようですが、今回の自分の場合は新規のメール環境登録なので既存メール環境がありません。ここは何もせずに次の「モバイル設定に進む」を選択しました。ここは実際に試した人からの情報があればいただきたいです:
2022030501


スマホからこのメールを使うための設定画面です。といっても実際にはモバイルアプリへのリンクがあるだけのページでした。必要であればこのページのリンクから Zoho メールのモバイルアプリをダウンロード&インストールしてください。最後に「設定の完了に進む」をクリックします:
2022030502


※上のリンクをクリックするとこのような画面になって、モバイルアプリのダウンロードができるようです:
2022030503


これで全ての設定が完了しました。「受信トレイを確認してください」をクリックします:
2022030501


新しいメール環境が確認できるようになりました。が、改めて最初からのアクセス方法を確認するため、一旦ログアウトしましょう。右上のアイコンをクリックします:
2022030502


そして「サインアウトする」を選択して、サインアウトします:
2022030503



では改めて Zoho メールに作成した独自ドメインのユーザーでログインしてメールを使ってみます。まずは Zoho メールのトップページにアクセスします:
https://www.zoho.com/jp/mail/


そして右上の「サインイン」をクリックします:
2022030501


先程登録した独自ドメインのユーザー名とパスワードでサインインします:
2022030502


初回ログイン時には2段階認証を有効にするよう注意画面が表示されます。必要に応じてここで2段階認証を有効にしてください(後から設定することも可能です)。ここでは一旦「後で確認する」をクリックして先に進みます:
2022030501


これで Zoho メールを送受信できる画面に移動できました!安全のため2段階認証も有効にしておきましょう:
2022030501



以上、独自ドメインを Zoho メールで運用する場合の設定手順を紹介しました。1ドメインあたり5ユーザーまで、というのが個人的にはちと厳しい気もするのですが、Google Apps 亡き今となっては無料で独自ドメインメール運用ができる環境の選択肢そのものが少なく、無料となると(格安のはいくつかありますが)個人的にはここしか知りません。この5ユーザーの範囲内でうまく使っていけると、Google Apps 難民にとっても有用な移行先であるように思えました。


タイトルの通りです。obniz に赤外線人感センサー(HC-SR501)をつなげて人の存在を確認し、なんらかの変化があった場合にその結果をクラウド上の Google スプレッドシートに送信する、という仕組みを作ってみました。必要な設定やコードはこちらからも公開しています:
https://github.com/dotnsf/obniz_sensor_gas


Google スプレッドシートを複数人で共有しておけば人感センサーのセンシング結果を複数の人で共有することができます。今回の例ではそこまで実装していませんが、センシング結果にセンサーの ID を含めるようにすれば、複数のセンサーからの結果を一枚のスプレッドシートにまとめることもでき、またスプレッドシート側でピボットして確認したり、グラフ化などの視覚化も容易にできるようになります。

この仕組みはもともとこちらの動画で紹介されていたものを参考にしています。この動画ではラズベリーパイと HC-SR501 を接続して、ラズベリーパイのコマンドでセンシングを実現しています。また最終的にはそのコマンドを cron に登録する形で永続処理化まで実現されているようでした:
RaspberryPIでIoT簡単入門!クラウド対応人数カウントを作る!

2021052502


これを参考にラズベリーパイを obniz に置き換えて GPIO に接続し、ラズベリーパイのコマンドではなく、obniz のウェブページの JavaScript でセンシングし、その結果を Google スプレッドシートに向けて JavaScript で(jQuery で) POST する、となるように書き換えました。

以下、その準備段階も含めた実現の手順を紹介します(ハードウェアは持っていない場合は購入の必要があります)。

【入手するハードウェア】
obniz 本体
人感センサー(HC-SR501)
ジャンパケーブル(オス-メス)3本

【用意するソフトウェア】
・Google スプレッドシート(Google Drive から作成)


【準備作業】
人感センサーによるセンシングを行うための準備作業は以下の大きく以下3つの作業を行います:
1 スプレッドシート側の準備
2 obniz と HC-SR501 の接続
3 センシングを実行する HTML / Javascript コードの用意


1 スプレッドシート側の準備

まず Google スプレッドシートを1つ新規に作成します:
2021052601


スプレッドシートのメニューから ツール - スクリプトエディタ を選択します:
2021052602


コード画面が表示されるので、デフォルトで用意されているスクリプトをすべて消し、代わりに以下のコード(後述のデータ送信を受けて、シート内に日付時刻と送信データ内容を追加するコード)をコピー&ペーストします:
function doPost(e) {
  SpreadsheetApp.getActive().getActiveSheet().appendRow(
    [new Date(),e.postData.contents]
  );
  
  var output = ContentService.createTextOutput("ok");
  output.setMimeType(ContentService.MimeType.TEXT);
  return output;
}
2021052603



メニューから 公開 - ウェブアプリケーションとして導入 を選択します:
2021052604


プロジェクト名を聞かれたら適当に入力して OK をクリックしてください:
2021052605


続けてデプロイ設定画面になります。バージョンは "New" の "1" 、アプリケーションの実行者は自分のメールアドレスを指定、そしてアクセスできる人として "Anyone, even anonymous" を選択して deploy ボタンをクリックします:
2021052606


アプリケーションの認証が必要なので「許可を確認」をクリックします:
2021052607


ちょっとびっくりするような画面になりますがエラーではないので続けます。詳細を表示して、安全ではないページに移動します:
2021052608


作成したプロジェクトにアクセスの許可を与えるため、「許可」ボタンをクリックします:
2021052601


デプロイが行われ、最後に URL が含まれる画面になります。この URL はこの後必要になるので、メモしておきます。OK を押してダイアログを閉じます:
2021052602


これでスプレッドシートの最低限の準備はできました。必要であればスプレッドシートの名称を変更したり、他の人と共有しておいてください:
2021052603


2 obniz と HC-SR501 の接続

まず以下の作業をする前に obniz の電源を OFF にしてください。以下の作業は obniz の電源が OFF になっている状態で行ってください。

HC-SR501 には3本の接続コネクタピンがあります。接続コネクタ部分が左側にくるように向きを調整した時のピンを上から0、1、2とみなします。また obniz も同様に GPIO が下側にくるように向きを調整した時のコネクタを左から0、1、2、・・・とみなすことにします:
2021052601


この状態でジャンパケーブルを使って、0と0、1と1、2と2をそれぞれ接続します。ここまでできると写真のような状態になります:
D95C6870-EBAC-4D5B-88BB-F8F5F48F9D7F


これで obniz と HC-SR501 が接続できました。この後、obniz の電源を ON にすると HC-SR501 でセンシングできるようになり、センシングした結果を obniz から取得することができるようになりました。


3 センシングを実行する HTML / Javascript コードの用意

最後に実際にセンサーで人の存在を確認し、その結果を取得して、(上述で準備した)スプレッドシートに記録する、というプログラムを作ります。

まず obniz の開発者コンソールにログインします:
https://obniz.io/ja/console


画面左の「リポジトリ」から「新規作成」を選択します:
2021052604


新しいプログラムのダイアログが表示されます。タイプは「WebApp」、アクセスレベルは「公開」を選択し、適当なファイル名を付けて「作成」します:
2021052605


サンプルページの HTML がエディタ内に表示されます:
2021052606


この HTML をすべて消して、以下の内容をコピー&ペーストします:
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@3.8.0/obniz.js"></script>
  </head>
  <body>
    <h1>人感センサー</h1>
    <div id="obniz-debug"></div>

    <script>
      var obniz = new Obniz("OBNIZ-ID");
      var sensor = null;
      const url = "https://script.google.com/macros/s/xxxxxxxxxx-xxxxxxxxxx/exec";//GASのウェブアプリケーションのURLを指定してください

      obniz.onconnect = async function () {
        sensor = obniz.wired( "Keyestudio_PIR", { signal:1, vcc:0, gnd:2 } );
        console.log( sensor );
        sensor.onchange = function( v ){
          console.log( v );
          $.post( url, { value: v } )
            .done( function( data ){ console.dir( data ); } );
        };
      };
    </script>
  </body>
</html>
2021052607


12 行目と 14 行目は変更が必要です。12 行目の new Obniz( "OBNIZ-ID" ); となっている OBNIZ-ID の部分は自分が使っている obniz の ID (電源を入れた時に画面に表示される nnnn-nnnn 形式の8桁数字)に置き換えてください。 また 14 行目の url の値は上述の作業1の最後、スプレッドシートに権限を与えた際に取得した URL 文字列に置き換えてください。

なお、17 行目で obniz と人感センサーをソフトウェア的に接続しています。上述の 0-0, 1-1, 2-2 と物理的に繋いだ作業の意味(0 が vcc 、1 がシグナル、2 がアース)を指定しています。

ここまでの変更ができたら準備はすべて完了です。


【センシング実行】
まず obniz と、obniz に接続された HC-SR501 に電源を入れます。obniz にマイクロ USB ケーブルを接続して、WiFi に接続してください。成功すると以下のように obniz ID とその QR コードが表示される画面になります:
2021052601


そして obniz コンソール画面右上の「実行」ボタンをクリックします:
2021052607


すると以下のような画面になります。緑の帯が出ていれば obniz は WiFi を経由してインターネット接続ができていることを意味しています(緑にならず、赤くなっている場合は WiFi 接続に失敗しているなど、インターネットに接続できていないことを意味しているので修正が必要です):
2021052602


この時に人感センサー近くで人が行ったり来たりして、人が存在していたりいなかったりするような状況になると、その変化を人感センサーが感知してスプレッドシートにその変化の様子が送信されます。スプレッドシートは以下のような感じになり、変化を検知する度に一行ずつ増えていきます:
2021052603

↑左が検知の日付時刻、右は value=true が人を感知した時、value=false は検知していた人がいなくなったことを検知したことを意味しています。

なお、このスプレッドシートは手動で情報を消さない限りはずっと情報が「追加」されます。一度リセットしたい場合は該当シート内に書かれた部分を手動で全選択して DELETE してください。


動作確認ができたら、いったん「終了」ボタンを押してセンシングを終了します:
2021052602


【センシングの自動化設定】
とりあえず人感センサーとしての挙動は確認できました。最後にこの仕組を(わざわざウェブページを開いて「実行」ボタンを押さなくても、電源に接続しただけで実行できるように)自動実行する方法を紹介します。

改めて obniz 開発者コンソールに戻り、左側のメニューから「サーバーレスイベント」を選んで「新規作成」します:
2021052601


適当な名前(図では「人感センサー」)を入力し、「トリガー」には obniz Hardware Event を選択後に対象 obniz id を選択して online イベントを、「実行するアプリケーション」にはリポジトリ内の HTML を選択後に先程作成した HTML を、それぞれ選択します。最後に「作成」ボタンをクリックします:
2021052602


これで対象 obniz がオンラインになったタイミングで対象 HTML ページが実行されるので、自動起動に近い処理が実現できました。いったん obniz の電源を OFF にしてから ON にするなどして、再度センシングできているかどうか(スプレッドシートに情報が追加されるかどうか)を確認してください:
2021052603


肝心のセンサー精度などはまだちゃんと測定できていない(苦笑)のと、実際には HC-SR501 についているネジでそのあたりの調整もできるようですがまだしていない(苦笑)ので、実際のところどの程度現実的に役立つものなのか、まだわかっていないところもありますが、(ラズベリーパイや)obniz があるとこんなことも簡単に作れちゃうんですね。単にセンシングするだけでなく、取得した内容をインターネット上に記録して共有するところまでできている点がポイント高いと思っています。




Google Fit は Google のヘルスケア関連プラットフォームと、その SDK を提供しています:
https://developers.google.com/fit/

2020062600


Google Fit SDK は Android 標準アプリである Google Fit を操作するものです。簡単に言えば「Android の歩数カウント情報を取得する」ための SDK といえます。

この SDK の1つがブラウザ用の JavaScript で提供されており、ウェブアプリケーションに組み込んで使うことが可能です。データを取得するまでを実際に作ってみたので、その準備手順を含めてまとめてみました。


【Google APIs Console へのプロジェクト登録】
この Google Fit SDK を使う上で最初に必要な作業は Google APIs Console へプロジェクトを登録して Client ID を取得することです(SDK は Client ID を指定して動かすことになります)。
https://console.developers.google.com/flows/enableapi?apiid=fitness&pli=1

Fitness API を使うことになるアプリケーションプロジェクトとして、既存のプロジェクトを流用するか新たにプロジェクトを作成します。そして「使用する API」は「Fitness API」を選択し、「使用する場所」は「ウェブサーバー」を選択、更に「アクセスするデータの種類」は「ユーザーデータ」を選択します。最後に「必要な認証情報」をクリックして、クライアント ID を取得します:
2020062601


次の画面で OAuth 認証用のドメイン登録をします。「承認済みの JavaScript 生成元」と「承認済みのリダイレクト URI」に以下のアプリを動かす URI を指定します。ローカルで動作確認する場合であれば両方に "http://localhost:8080" を追加して保存します※:
2020062602

※以下で紹介するサンプルを https://localhost:8080/ という URL にアクセスして参照する場合の設定です。異なるホスト名やポート番号を使う場合は適宜変更してください。

これで Google APIs Console 側の準備は完了です。



【サンプルアプリケーションで動作確認】
動作確認用の Node.js 向けサンプルアプリケーションを以下に公開しておきました。Node.js がインストール済みの環境であれば実際に動かして動作を確認することが可能です:
https://github.com/dotnsf/google_fit


zip をダウンロードして展開するか、git clone して、自分の PC 内にプロジェクトファイルを展開します。実質的に public/index.html ファイルを 8080 番ポートで公開するだけの Node.js アプリケーションです。

実際に動作させる前に、public/index.html ファイルをテキストエディタで開き、8行目の client_id 変数の文字列値(初期値は 'your_client_id' )を上記で取得したクライアント ID の文字列値に書き換えて保存します:
2020062609


これでサンプルアプリケーションを動作させる準備ができました。以下のコマンドを実行してアプリケーションを稼働状態にします:
$ cd google_fit

$ npm install

$ node app


稼働状態になったアプリケーションは 8080 番ポートでリクエストを待ち受けています。ウェブブラウザで http://localhost:8080/ にアクセスしてみます。正しく動作していると最初に OAuth 認証が実行されるので、Android スマホで利用しているものと同じ Google アカウントでログインします:
2020062604


Google アカウントを選択してログインし、正しく処理が実行されると(このコードでは)2019/03/01 以降の歩数記録を取得します。何種類かの dataSource ごとの記録が表示されるはずです:
2020062608


どれか1つの dataSource をクリックすると、その dataSource に関して更に詳しく日時やその時の歩数が表示されます:
2020062609


↑自分は Android をメインスマホにしていないため、歩数が少ない・・・



実際に使っているコードは OAuth 認証のための authorize 関数と、そのコールバック先で実行している dataSource 一覧のフェッチ、そして各 dataSource ごとの歩数カウントのためのデータセットのフェッチです。JavaScript 自体はかなりシンプルになっていると感じました。



(参考)
https://qiita.com/feb19/items/383848119ba1bdfe5110


毎年恒例のマンホールマップ年間アクセスランキングを発表します。2019 年にマンホールマップでもっとも人気のあったマンホール蓋をベスト10形式で紹介します。また今年新たに投稿された蓋の中で最も人気があった「新人賞」と、今年最も多くの蓋画像を投稿いただいた方「最多投稿賞」を紹介します。


集計のルールとしては 2019/01/01 から 2019/12/20 までの集計期間における、PC およびスマホのブラウザから単独ページとしてのアクセス数を集計しています。ページビューとしての集計なので、例えば同じページの画面をリロードした場合は1回とだけカウントされます。

なお、過去5回の結果はこちらを参照ください:


2019 最多投稿賞

まず今年は集計期間中に 1006 枚ものマンホール画像が投稿されました(有効投稿のみ)。この集計を取り始めた 2014 年以降では最多で、初の年間 1000 枚投稿を達成しました!マンホールブームは確実に来てます!! 改めて投稿に協力いただいた皆様、ありがとうございました。

そして今年マンホールマップに最も多くの画像を投稿いただいたユーザーに与えられる賞、それが最多投稿賞です。今年もマンホールマップに有効に投稿された全画像の大半が昨年も激しく一位を争った 
minamu4545 様と 42ER03 様の2名のユーザーによって提供されたものでした。今年も感謝の限りでございます。 m(__)m

今年も昨年を上回るレベルでの激しい1位争いの結果、 42ER03 様が今年1年間で 354 枚もの蓋画像を投稿いただき、2年連続での1位となりました!おめでとうございます!!

そして今年もハイレベルな一騎打ちを演出いただき、惜しくも僅差で2位となった minamu4545 様、ありがとうございました。来年もお二人の争いになるのか、はたまた新星が現れるのか? 楽しみにしたいです。

ちなみに私自身は今年は5位でした。自分自身も含めて上位陣の投稿総数という意味では僅かな減少が見られますが、それでも総投稿数が上昇しているという事実も有り、つまるところユーザーの裾野が広がり、全体的な底上げができつつあるように感じられました。2020 年のマンホールは上昇確実銘柄と期待できます!(※投資は自己判断でお願いします)



2019 総合ランキングベスト10

いよいよ 2019 年マンホールマップ年間アクセス数ランキングを発表する時がやってまいりました。総合ランキング1位となる MVM(Most Variable Manhole) の座はどの蓋に!?


まずは 10 ~ 4 位です。

実は今年の10位が大激戦でした。2票差の中に5つの候補がひしめく大激戦を制して神10入りを果たした今年の第10位!

順位昨年順位市区町村投稿者画像
10 - 埼玉県比企郡滑川町iamokura_2


埼玉県滑川町の地名が大きく書かれた地味蓋、マンホールナイト実行委員の新人でもある iamokura_2 さんによる今年5月の投稿でした。iamokura_2 さんのこういう独特な着眼点が僕大好きです!


続いて9位ではなく、8位は同数だったので1つ目の第8位!

順位昨年順位市区町村投稿者画像
8 - 静岡県島田市minamu4545


静岡県島田市島田大祭を描いたカラー蓋、この年間統計ではおなじみ minamu4545 さんによる 2018年10月の投稿作品です。最近多くなったカラフルな蓋作品です。


もう1つの第8位!

順位昨年順位市区町村投稿者画像
8 - 東京都江東区morimo_t

東京都江東区、というかお台場のガンダムと無理やりコラボした morimo_t さんの作品です。2012 年6月の投稿作品です。蓋というよりもガンダム人気で上位に来たような気がしていますw


第7位!

順位昨年順位市区町村投稿者画像
7 - 東京都中央区dotnsf

東京都中央区日本橋のたもとにある日本国道路元標の疑似蓋が第7位でした。東海道の起点としての印なんですが、お江戸日本橋のシンボルにもなっています。ちなみに投稿者は dotnsf つまり僕です σ(^^; 。投稿は 2011 年8月でした。


第6位!

順位昨年順位市区町村投稿者画像
6 - 岡山県倉敷市eRP1pgRkR6B4mSu

岡山県倉敷市ジーンズストリートに飾られたジーンズ地の蓋です。 eRP1pgRkR6B4mSu さんによる 2017 年4月の投稿作品でした。ジーンズ地でジーンズストリート周辺地図を描いた蓋になっています。


第5位!

順位昨年順位市区町村投稿者画像
5 - 静岡県静岡市SakiYumeno

静岡県静岡市、登呂遺跡のイメージキャラクターである『トロベー』が描かれたカラー蓋です。 SakiYumeno さんによる 2019 年 2 月の投稿作品でした。今回のランクイン蓋の中では珍しいキャラクター蓋でした。


第4位!

順位昨年順位市区町村投稿者画像
4 - 静岡県富士市meaculpax3

日本以外でも話題になった、静岡県富士市かぐや姫マンホールです。meaculpax3 さんによる 2011 年 6 月の投稿作品です。 この年間アクセス数ランキングではこのようなメジャーな蓋が上位に来ない、という謎の伝統(?)があったのですが、この有名な蓋が年間アクセス数で4位になったというのはやはりマンホールブームの裾野の広がりを感じさせる結果にもつながります。


昨年・一昨年とマンホールカード勢による新作マンホールが上位を席巻したベスト10でしたが、今年はここまで新作蓋が比較的苦戦している印象を受けます。昔ながらのマンホールが見直されつつあるというのは(そっち好みの)マニアとしては嬉しい限りですが、このあとのベスト3ではどうなるのでしょう!?



どきどきのベスト3の発表です。第3位!!

順位昨年順位市区町村投稿者画像
3 - 香川県小豆郡小豆島町42ER03

香川県小豆郡小豆島町空気弁蓋。最多投稿賞にも輝いた 42ER03 さんによる作品です。マンホールマップへの投稿は 2019 年 6 月と記録されていますが、投稿メッセージに「平成28年12月撮影」とあるので、3年前の撮影画像ということになりますね。

マンホールマップ年間統計ではおなじみのセリフなんですが、「なんでこの蓋がそんなに人気あるの?」が謎の第3位となりました(笑)。


第2位!!

順位昨年順位市区町村投稿者画像
2 - 埼玉県入間郡毛呂山町Nikki_papa

埼玉県入間郡毛呂山(もろやま)町のカエル(ケロ?)が描かれたデザインマンホールが第2位でした。 Nikki_papa さんによる 2011 年7月の投稿作品でした。菊、山吹、つつじという地元の名物が描かれたデザイン・マンホールらしい蓋が第2位となりました。



ここまで古参マンホール勢と静岡県勢が大健闘している 2019 年マンホールマップ年間アクセス数ランキングの上位争い。では 2019 年マンホールマップ年間アクセス数ランキング・第1位となった MVM(Most Variable Manhole) は!?

第1位!!!

 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓




順位昨年順位市区町村投稿者画像
1 - 静岡県富士市minamu4545


1位のマンホール画像は 2019 年の3月に minamu4545 さんによって投稿された静岡県富士市岳南排水路の蓋画像でした。

中央にこの地方が全国トップシェアを誇る加工品であるトイレットペーパーとその工場、下方に駿河湾とその名物である桜エビ&シラス、そして上方には世界遺産・富士山が描かれています。情報をいっぱい詰め込んだ、ある意味でデザインマンホールらしいデザインマンホールが今年の MVM に輝きました。

なお、この画像は今年投稿されたものでもあるため 2019 年新人賞蓋でもあります。 minamu4545 さんはなんと3年連続で新人賞と MVM の同時受賞を達成しました!快挙だと思います、あらためておめでとうございます。


今年はこれまでの新人蓋が上位を席巻するような流れが一変し、以前に投稿された蓋のあらためて慈しむ流れが発生した結果となりました。一方で今年のベスト10画像には昨年のベスト10画像が1つも含まれないという結果となりました。 ただそのような新しい流れの中でも牙城を崩さずに MVM を死守しただけでなく、唯一人ベスト 10 に2枚の蓋を送り込んだ minamu4545 さんの強さ(=行動力?)を確認した 2019 年となりました。



そして最後にマンホールマップ開発者&運営者としての自分からのメッセージです。今年は天災による停電の影響に加え、マンホールマップ自体のメジャーバージョンアップやその後の調整作業などもあって、サービス全体としては比較的不安定な運営となった1年だったと思っています。ご不便をおかけして失礼しました。

一方で調整後の12月になってからは比較的安定した運用ができていると思っています。また新機能であるブロックチェーン連携によって投稿画像の著作権を保護する、という(地味にwすごい)先進技術によって、利用いただくみなさんが安心して使えるサービスをこれからも提供できればと思っています。

加えて、実はマンホールマップの運用開始から約10年が経過しましたが大きな変化がありました。マンホールマップにはいわゆる「いいね!」に相当する「ナイスマンホ!」機能があり、利用者による人気ランキング投票が実現できていましたが、この10年の間、人気1位はほぼ不動で石川県のこの蓋となっていました:


が、今年はついにこの1位に変化があり、12月21日時点で渋谷のこの蓋が同率1位となっています。1位に変化があったのは10年間で初です:



さて来年の今頃、この人気投票はどのような順位になっているのでしょうか? その結果も楽しみにしつつ、来年以降も引き続きマンホールマップを宜しくおねがいします。

このページのトップヘ