Nuro光へ切り替える その2

コレの続きになります。
deutschina.hatenablog.com

屋外工事の日はやってきた

Nuro光の工事日はなぜか、屋内工事と屋外工事の2段階に分かれているという不思議。昨年末に屋内工事を済ませており、屋外工事は年明けのこの日になりました。

都内から移動

工事日は金曜日、つまり平日。月曜日とかであれば前乗りしても良かったのですが、午後に工事することは分かっていたので、それに間に合うように当日朝、都内から移動します。


※一応緊急事態宣言発令下なので、リスクの少ない移動手段を使っております。

屋内工事の際には前日にSMSで連絡があったのですが、この日は工事開始の1時間前ぐらいにお電話があり、午後1時ぐらいから工事を開始するという旨の連絡をいただきました。

屋外工事は約1時間程度

ほぼ予定時刻通りに業者さんが到着されて工事開始です。家の中の配線は終わっているので、電柱から引っ張ってきた回線をすでに敷地ギリギリのところまで敷設してあった屋内配線に接続する作業をされるとのこと。その通りまずは我が実家から電柱まで引っ張るケーブルを用意した後、そのまま電柱に来ているであろうNuro光回線につなぐのかと思ったのですが、実際には家の前の電柱まで回線を引っ張ってくるところから工事しているようで、作業トータル時間としては約1時間程度要しました。作業の最後に、最終確認ということで、家に中に設置してあるルーターのステータスランプが点灯しているところだけを確認して作業は終了です。信号が届いているところだけを確認するだけでした。ネットにつながるつながらないというのは、Nuro側の責任範囲のようです。

なぜ二段階工事なのか

屋内工事を担当された方の説明によると、屋外というか敷地外については、電柱なのか回線そのものなのか分かりませんが、とにかくNTTの持ち物なので、NTTに認可を受けた業者さんじゃ無いと作業できないというのが理由らしいです。許認可ビジネスの闇ですな(謎)。

Nuro 回線開通!

何はともあれNuro光回線が開通しました。さっそくネット接続を試してみました。

確かに速くなった

今回、Nuro光から支給されたルーターは、Huawei製のWiFiルータを兼ねたタイプでした。なので、そのルータのWiFiにそのまま接続しても良いのですが、自分以外の家族にはこれまでのWiFi設定をいじらなくても接続できるように、Nuroのルーターから、これまで使っていたWiFiルータにも有線接続して両方使えるようにしておきました。

さっそく各種スピードテストをしてみたところ、結果はこんな感じ。


都内の自宅の有線接続ほどではありませんが、かなりスピードは出るようになりました。これなら、実家からビデオカンファレンスなどに参加しても問題なさそうです。

フレッツの解約はいつやる?

これでめでたしめでたしと言いたいところなのですが、まだ電話回線のNuroへの移行とFlets光の解約を忘れては行けません。もともとFlets電話は使っておらず従来のNTTの加入電話回線を使っていたので、Nuroが開通したら即解約して良いのかと思ったのですが、電話の移行が終わってから解約してくださいと案内に書いてあり、電話で聞こうと思ったのですが、なかなかコールセンターにつながらず。ひとまず案内通り電話の移行の連絡を待ってから解約手続きを踏むことにしました。

ということで、Flets解約編へ続く。

結局Appleからは逃げられず (iPhone 12 Pro Maxを買いました)

お題「#買って良かった2020

自分の過去ブログをたどってみると、iPhone飽きたと言って、Andorid機を物色したりしているのですが、メイン機はずっと iPhone のままなんですよね。と言っても、2016年に買ったiPhone 7 Plusのバッテリーがそろそろ限界を迎えており、ようやく嫁の承諾を得てメイン機を交換したというのが本日のお話になります。

購入前

購入に至るまでのつまらない与太話です。

メイン機はiPhone 7 Plus (2016)

これまでメイン機として使っていたのは、2016年に購入したiPhone 7 Plus 128GBモデルです。Apply PayやSuicaなど決済手段としても中心的な役割を果たしており、自分のキャッシュレス化はこのiPhoneなくしてはあり得なかったと言えるほど。ストレージも128GBあり余裕はあったのですが、とにもかくにも、バッテリーの劣化が激しく、フル充電して2時間もすれば50%以下に落ち込む状態。以前の過充電がバッテリーの寿命を短くしてしまったのかもしれません。コレを理由に1年以上前から嫁に買い換えを直訴していたのですが、なかなか首を縦に振らず。

なぜ交換まで4年もかかったのか

正直言うと独身の頃は、毎年1〜2台端末を買っていましたが、1台10万円を超えるような端末を自由に勝手気ままに買ってしまうと、家庭内でいろいろな問題が出てくる訳です。海外出張などで使うサブ機ならまだしも、メイン機だと毎日家の中でいじり倒す=嫁の目に止まるわけです。これまでみたいに出張が多い生活だったら、、、と頭をよぎりますが、2020年は3月末から在宅勤務となると、これは筋を通して購入しないと悲劇が待っているわけです。

結局、粘り強く交渉を続け、とある条件をクリアしたらと言う譲歩?を引き出し、2020年秋頃にめでたくそれをクリア。嫁は実現は無理だと踏んでいたフシがあり、いざ現実を目にしてからは、あれこれ理由を付けて購入を先延ばしするものの「約束は約束」と言うことで、こちらもグイグイ押し込み、最後には何故か義母の後押しもあり、ついにこの年末に購入の許可が下りたわけです。

どうでも良いことですが、ちなみに我が家は家計管理は自分がしており、奥様が財布を握っているという、ありがちな他のご家庭とは少し状況が違います。こちらとしても原資はあらかじめ確保してあり、あくまで筋を通すコトが重要だったりします。

後継機候補選びは大分前から始まっていた

これは過去ブログを参照していただくとして、2018年頃から(オイ!)後継機をどうするか考えていました。2016年以降に出たiPhoneは、それほど目新しいところがあるわけでも無く、iPhoneじゃなくても良いかなという方向に気持ちが傾いていたのは確か。特に一時期Googleに傾倒してた際には、Pixelをメイン機にしても問題ないのでは?とも思っていました。ただPixel 4はバッテリーのもちに難がある、それに続くPixel 5はCPUの性能だけ見るとPixel 4に劣るという情報が入ると、Googleじゃない方が良いのか?なんて思い始め、今度はSamsungなどの他のAndroidまで選択肢を広げたのですが、最近のハイエンド機はお高いのね。。。というところで、なかなか踏み切ることができませんでした。

Androidに流れなかった二つの理由

といいつつ、iPhoneに踏みとどまったのには2つの理由があります。ひとつ目は、Apple Payでカバーされていて、Google Payでカバーされない決済手段(具体的にはカード会社)があり、それが自分のメインの決済手段であったこと。もう一つは、コレです。
blog.google
2021年6月以降、Google Pixel以外からアップロードされた写真は、15GBの無料ストレージを消費することになるという例のニュースです。今の自分の写真ライブラリのサイズは物理的に15GBを超えており、今後も増え続けることはほぼ確実です。現状、iCloudにも毎月数百円払って追加ストレージを購入していますが、これがGoogleにもとなると心理的負担が大きい。もちろん、Pixelを買えばその心配はしなくても良いのかもしれませんが、メインの決済手段を変えてまで引っ越すまでのモチベーションにはつながりませんでした。

機種選び

グチャグチャ書きましたが、実際に嫁の許しが出た際には、iPhone一択になっていました。我が家はもう長いこと格安SIMなので、SIMフリー版をApple Storeで購入することになります。

ぶっちゃけiPhone 12かProで良いと思っていた

購入にゴーサインが出たのは12/25か26のことでした。大分前から購入を企んでいたので、iPhone 12シリーズが出たときには、細かい違いなどは全てチェック済みでした。

最近、めっきり外出の機会も減ったこともあり、カメラの性能にもそこまでこだわらずに無印のiPhone 12でも良いかなと思っていました。ただ、せっかく嫁の許しを得て正面から堂々と購入できるので、少しだけ考え直してProにしようかなと思い、だいたいこのぐらい費用がかかるよという話を嫁ともしていました。実際Proを買い物かごに入れて納期を見ると、納期が1月中旬頃になりそうなことが判明。「これから3週間もさらに待つのは嫌じゃ」となり、色を変えたりしてみたいのですが、それでも納期は変わる様子がありません。

あれ?Maxならほぼ即納じゃん

そこで、Maxとの値段を比べてみたら1万円ぐらいしか差がありません。Maxはデカすぎという記事も見かけたのですが、実際にiPhone 7 Plusと比べたら重さは結構違いましたが、サイズは大差ありません。気になる納期は3-5営業日で年末年始休暇中に手にすることができそうです。ここで再びさっきの「正面から堂々と購入できるんだから」という考えが頭をもたげて、心のリミッターをあっさり外してしまいます。「いいやMaxにしちゃおーっと」、って。サクッとポチって注文してしまいました。そこで表示された配達時期は1/1-6とのこと。

やってくるiPhone 12 Pro Maxのために

購入に当たって、嫁に釘を刺されたのは、今度買い換えたら最低3年は使うこと。であるなら、その間に落としたりして画面が割れたりしたら目も当てられません。あ、ケースとフィルムを買う良い口実ができましたね(笑)。

ケースとフィルム選び

純正品はバカ高いので、最初から眼中にありませんでした。せっかく美しい色をしているのですから、無色透明のケースをいくつか検討して、購入したのはこちら。

充電はどうしようか?

あと、充電器とイヤフォンが付属していないという件については、もちろん織り込み済みです。充電器については、あまり気にする必要はないものの、会社の携帯(iPhone XR)の充電用に使っているコレで試してみれば良いねという結論に。

※最大10Wなのでぶっちゃけ充電は遅いです!
イヤフォンについては、AirPods Proを持っているので、これを使えば良いだけです。
Apple AirPods Pro

Apple AirPods Pro

  • 発売日: 2019/10/30
  • メディア: エレクトロニクス
なんやかんやで家の中にすでにあるアクセサリ類を使えるので、今回別売りにしたというAppleの選択は正しいと思いますね。

少し早めにやってきた Pro Max


結局、当初の予定より少し早く12/30にiPhone 12 Pro Maxが配達されました。

初期設定は自動で

4年前に7 Plus買ったときにどうやったか忘れましたが、今回は自動で移行処理をやってしまいました。ひとつずつ手で設定するのも悪くないですが、ゴミは後から消せばいいやぐらいの感じで気楽にやっちゃいました。


だいたい30分強くらいかかったかな?という感じです。

使ってみて

ここまで丸2日ほど使ってみましたが、感想はコレにつきます。


変わらなすぎるので、何のストレスもない分、何の目新しさもないというのが正直なところです。

写真は、これぐらいしか試していないのですが、ぼかしは以前よりも自然な感じになった気がします。


早く気ままに旅ができるようになって、写真をバリバリ撮りたいですね。

何か新たに気づいたことが出てきたら、また記事を書きたいと思います。今日はこんなところで。

Nero光へ切り替える その1

このコロナ禍の環境でありますが、実家の光回線をFlets光からNuro光に変えるというお話です。正式にはまだ開通していないので、続編を書く予定です。

Nuroに切り替えようとした契機

きっかけはウザい電話から

実家に帰った際の快適なネット環境を確保するために、数年前にFlets光を導入した実家。NTTの部分は両親負担、プロバイダ(So-net)の部分は自分で負担という形式でやってきていました。我が実家は東京駅からJRで約1時間、通勤圏のギリギリ端っこというような立地であり、光回線が我が街までやってきたという話を聞きつけて早々に契約した記憶があります。

実は去年ぐらいから、何度かこれまでよりも安くなります、電話だけで手続きができますという感じでNuro光の売り込みの電話がかかっていたのですが、これまではまともに取り合っていませんでした。というのも自分ではプロバイダ部分しか支払っておらず、そこまで割高という感覚がなかったこと、会社勤めで工事立ち会いのスケジュールを割くのが無理だと思っていたこと、さらに言えば電話だけで切り替えができるというのが、どう考えても怪しかったので実家に説明資料を送ってくれの一点張りだったのです。

ところが、このコロナ禍で在宅勤務になった折、場合によっては実家から働くケースもあるかもなんて考えている最中に、再び電話Nuro光からの勧誘電話が。もう少し真面目に話を聞くことにしたのです。

セールストーク自体はあまり引っかからず

最初に電話口に出たのがおそらくパートの方。あらかじめ用意されたセールストーク読み上げて並べ立ててきましたが、ポイントはこれまでよりも2,000円ぐらい安くなるよという点と、Fletsが最大1gbpsなのに対して、NUROは2gpbsが出るから速いという点に絞られてました。値段は総額では安くなる(So-netに寄せることで自己負担は上がるけど)というのは、すんなり理解できましたが、回線速度が2gmps出るというところをあまりに強調してくるので、ちょっと意地悪なことを聞いてみました。

土井さん「2gpbsになっても、家の中のLANが1gbpsしか出ないんですよね。だからあんまり変わらないんじゃないですか?」

(実家ではなく)東京の自宅は理論値最大1gpbsで、有線接続の場合でGoogle Speed testの実測値が700-850mbpsといったところ。だからこんな質問が口をついて出たのですが、こちらの言っていることが理解できないようで固まっていまい、結局2gbpsなので速いんです!とBroken recordのように繰り返していました。

ま、そこは論点ではないので、契約しても良いよと伝えると、今度は社員なのかパートリーダなのか、もうすこしシニアな人が対応してくれました。ただ、両者とも言っていることは同じで、おそらく前者のパートさんがきちんと説明したかを再チェックしているような感覚でした。とりあえずコレまでと同じく、書面を家に送ってくれと頼んだところ、だいたい1週間ぐらいで届くとのことで、最終的に契約することを承諾して電話を切りました。

宅内工事

知らせは忘れた頃に

電話で契約を承諾した後、実家に連絡をして「So-netから封書が届いたら知らせて欲しい」と頼んでおいたのですが、一向に音沙汰無し。何度か親にたずねてみても、そんな封書は来ていないとのこと。かれこれ半月たったころでしょうか。いきなりSMSにこんなメッセージが送られてきました。

NURO光です。宅内工事日が12/xx(午後後半)で決定致しました。

<2通目>詳細はこちら
https://hikarisvc.jp/xxxx

ちなみに、このリンクをクリックすると、工事予定日などのステータスが確認できるようになっていました。その日に都合が悪ければ、他の日に変更できるようになっているものの、前倒しは難しそうな感じ。延期も数週間単位になりそうで、最初にご提案いただいた日付を受け入れないと、開通時期もそれだけ延びるという感じになりそう。

工事前日、再びSMSでご連絡をいただきました。作業開始時間は16:30-17:00頃になりそうとの連絡が。このコロナ禍なので、できるだけ人混みを避ける交通手段で実家へ移動します。

宅内工事

業者の方は予定時間通りにいらっしゃいました。宅内工事という言葉のイメージから、家の中の配線工事をやるのかと思っていたのですが、実際には屋外を含んだ家の敷地の中の配線工事を実施するとのこと。確かFlets光を入れたときは一日で全作業が終わったのですが、説明によると電柱から家の敷地までの配線はNTTがやる必要があるので、工事が二段階なんだとか。

最初にどのように配線を宅内に引き込むかという相談になります。できるだけ壁に穴を空けなくて良いように、固定電話の配管に光ケーブルを通すのが一般的なようですが、我が実家は築40年弱でそんなオシャレ配管は通っていないことは明らか。Flets光の時にすでに壁に穴を空けて通した経験があるので、大工事かつ関連機器を移設する必要があるのも面倒なので、こちらから「何ならFletsの横に穴空けてもらって通してくれて構いませんよ」とご提案。

すると、業者さんはFlets開通の時に通した穴を確認するなり、「これならもう1本ケーブル通りそうですね」ということで、家の外壁側から穴を確認してもらって、実際にケーブルが通るか確認していただいただき、問題なくケーブルはするっと通ってくれたので、壁にもう1個穴を空けることは回避できました。

その後は屋外、つまり家の敷地との境界まで配線を行っていただき、最後に室内で使う接続機器を設置していただいて作業としては終了。もちろん宅外工事が終わっていないので、機器を設置するだけで電源等は入れていません。作業時間は、かれこれ1時間半ほどかかったでしょうか。時期が時期だけに作業が終わる頃には外は真っ暗になっていました。

残る作業は

宅外工事は年明けに

最後に今後の流れを業者さんに説明いただいたのですが、宅外工事が約3週間後に設定されており、これが終わればNURO光でのインターネット接続は可能になるとのこと。ただ、気がつけば固定電話もNURO光に切り替えることになっており、これが開通するのが、そこからさらに2〜3週間かかるとのこと。そこまで終われば、Fletsは解約しても良いよとのこと。ただ、うちはFlets光電話はやっていなかったので、そこまで待たなくても良いような気もしますが。。。

宅外工事に立ち会いのためにまたやってくることはもちろんですが、固定電話がNURO光に切り替わるときにもまた来る必要があるのかなと考えると、結構面倒な気が。。。固定電話切り替えについては、配線のやり方だけ教えて両親に対応してもらおうか検討中です。

また開通時にレポートを書きたいと思います。
(つづく)

USB Hubモニタは快適か?

気がつけば、在宅勤務生活ももうすぐ10ヶ月に突入でございます。

コロナ禍になる前からずっと、心の中で「現場に行かなくても、システムにアクセスできれば何の問題も無いはず」と頭で思いつつ、現場に通う生活を3年以上続けてきた訳ですが、いざ実際に在宅勤務をしてみると、仕事部屋が北側で日が差さないという問題を除いては非常に快適に過ごしております。

そんな中、モニタを買い換えてみたというのが本日のお題です。

唯一の問題は10年前の20インチテレビ

唯一問題だったのが、PCモニタとして使用していた2010年製のSONY液晶テレビ。FullHD表示ができません。厳密には擬似的にFullHDにすることは可能なのですが、アスペクト比の関係で上下が少しだけ切れるのと、エディターや情報量の多いスプレッドシートなどを表示させようとすると文字が滲んでしまい使い物にならず。

プライベートでは全くPCを触らない嫁に意義を説明することに手こずったまま問題をずっと抱えており、この12月になってようやく説き伏せて、モニタを買ってみました。買ったのはこちら。

www.dell.com

モニタを選ぶにあたっての基準

当然のことながら、購入に当たっては条件をいろいろ考えました。

  1. サイズは24インチくらいでOK。巨大なモノはいらない
  2. 母艦であるMac mini 2018のモニタとして機能すること
  3. HDMIで接続できること
  4. ケーブルの抜き差しをしなくても仕事用Macbook Pro 2019の拡張ディスプレイとしても使えること
  5. USB-Cのダウンストリームポートがあること
  6. スピーカーがあること

順番に補足すると、オフィスでは24インチの外付けモニタを使っており、感覚的に24インチもあれば十分だと考えていました。あまり大きくても仕事部屋の机において使うとなると、顔から画面までの距離は50センチあるかというレベル。あまり大きくても視線を移すのが逆に面倒になるような気がしました。

今の母艦はラップトップではなく、Mac mini 2018なので普段はMac miniのモニタとして機能してくれなくては話になりません。そのMac miniとは元々HDMIでテレビと接続していたので、HDMIインターフェイスを持っていることも大前提になるわけです。

これまで使っていたテレビは、HDMI端子が3つ用意されていました。仕事用のMacbook Pro 2019と接続するために、HDMIケーブルをMac miniに接続しているモノとは別にもう1本用意しておき、リモコンで切る変えるだけにしてあったので、それに近い使用感で切り替えができることも重要でした。

次のUSB-Cのダウンストリームポートというのは、WebカムがUSB-Cというのが理由だったりします。

このWebカム、Mac miniに接続しており使っているのですが、たまに仕事の顔出しビデオ会議の時にも使えたらいいなと思っていました。つまり、Webカムをモニタにつないでおけば、比較的簡単に仕事用のMBPからもWebカムを使えるといいなという願望半分。

最後のスピーカーというのは、会議はヘッドフォンを使うのですが、一日中着用したままというのは、結構しんどいです。なので発言の必要が無い会議などの場合は、スピーカーから音を流すというのもオプションとして持っておきたかったのです。

各社のモニタのスペックなどを見てみて、すべてを満たせるモノというのはありませんでした。ただ、HDMIは1ポートしかないもののUSB-Cでも接続できること、オプションでスピーカーを追加できるということで、今回はDellのモニタを選択したわけです。

答え合わせ - 快適になった?

待つこと数日。ひとまずモニタが届き設置してみました。

見た目はこんな感じ

f:id:deutschina:20201215151032j:plain

実はオプションのスピーカだけ海外受注生産らしく、まだ届いていないのですが、かれこれ1週間ほど使ってみたので、期待していたポイントの答え合わせをしたいと思います。

まず、今使っている机のサイズ的に、もう少し大きい27インチとかでも全然大丈夫でしたね。ま、今回は予算の関係もあるので、ここはOKです。FullHD(ただしこのモニタのアスペクト比は16:10なので1920x1200px)によって、一画面上で確認できる情報量が格段に増えたこと、あとは高さが自由に調節できることにより、姿勢良く背筋を伸ばして使用することができるようになったので、24インチで小さいなという感覚は今のところありません。

USB-CでつなぐかHDMIでつなぐか

モニタへの接続方法としては、母艦であるMac mini 2018はUSB-C接続、仕事用のMacbook Pro 2019はHDMI接続するようにしています。切り替えはモニタ背面にあるボタンを使えばできるので、それほど苦になりません。もともとUSB-C端子しかないMBPをUSB-C接続した方が良いのではとも考えたのですが、その場合WebカムはMac mini本体に挿しておく必要があり、たまにMBPでWebカムを使いたいとなると、Mac miniの背面から抜いてMBPに差し替えるのが手間になってしまいます。

代わりにMac miniとUSB-Cケーブルでつないでおけば、Webカムはモニタの左下面にあるUSB-Cダウンストリームポートにつないでも機能します。写真の右側にMBPが見切れていますが、MBPでWebカムを使いたい場合は、モニタに挿してある端子を抜いて、20センチほど左にあるMBPの本体のUSB-Cポートに接続すれば良いので、この方が簡単かなと判断しました。

スピーカー問題

実はスピーカーについては、落とし穴がありました。モニタのオプションのサウンドバーというものは、どうやらUSB-C接続をしたマシンからの音声しか再生しないらしいのです。まだ届いていないので未検証ですが、レビューへの書き込みにはそのように書いてあります。今のところ、Mac miniの内蔵スピーカを使用していますが、やはり以前のテレビの時に比べるとこもったような音となるのがネックです。ただ、MBPからスピーカーを使って聞くようなケースはほぼないので、自分なりに無理矢理納得していますが、イヤフォンジャックがあるので、それに接続できるポータブルスピーカーの方がコスパ的にも良かったかもしれませんね。。。

まとめ

とりあえず使ってみた今の時点での感想を書いてみました。多少想定外だった部分はあるものの、全体的には満足しています。ただ、広告にあるようにケーブルすっきり!というのは、使い方によるものの、あまり正しくないと思います。写真でも、ケーブルが入り乱れているのが見えますよね。

Google App Scriptで学習記録を自動化してみる

かなり迷走気味なこのブログですが、リモートワークで通勤時間が消滅した分、いろいろな事が試せるのはいいですね。いっそのこと、このままリモートワークがスタンダードになってくれと心から願う今日この頃です。

以前の記事で、オンライン英会話を始めた話を書きましたが、習慣化するために進捗を記録化して、何ならTwitterでつぶやいてしまおうというのを考えていたところ、Google App Scriptを使うのが良さげで、一気に実装してみたというのが、今回のお話です。

↓エンジニアは英語が話せてナンボ。お試しあれw
cambly.com

やりたいこと(やったこと)

今回実装したイメージを図にするとこんな感じです。
f:id:deutschina:20200603182410p:plain
Google Sheetsで履歴を溜めるのが目的なのか、Botで呟かせるのが目的なのか微妙なところですね。図ではCamblyとNativeCampが載っていますが、長くなりそうなので今回はCamblyをメインに書き残しておこうと思います。

Camblyでは

上の図では2つのオンライン英会話が載っていますが、まずはCamblyから始めました。Camblyでは、セッションが終わると、こんな感じでSession Summaryというメールが届きます。
f:id:deutschina:20200529080053p:plain
これの中に、何分間のセッションだったのかとか、講師は誰だったのかみたいな情報があるので、これらをもとに学習記録を残すことが出来そうです。
f:id:deutschina:20200529112926p:plain
履歴だけならWebサイトで見れるんだけどね…

それはともかく、レッスンが終わるたびにTwiterにこれまでの達成度合いをつぶやくBotを作るところまでやりたい。
f:id:deutschina:20200529180507p:plain
こんな感じ。

実装方法を考える

最初は、Twitterにつぶやくことをメインに考えて、Bot専用のサービスなども見たのですが、データの加工がどうしても必要だろうというところで、Google大先生に頼ってみたところ、Google App Script(GAS)を使えば、Googleの中で完結したモノが作れそうだということでトライしてみることにしました。

developers.google.com

他にもやり方はたくさんあるのですが、メール、記録をつけるスプレッドシートなど、Googleのエコシステムの中に必要なモノがそろっているのが大きかったですね。もちろん、GASからツイートする方法についても、問題なくできそうだということが確認できました。ひとつ気がかりなのは、これまでJavaScriptを触ったことがないので、そこの学習コスト(時間の事ね)も気になったものの、ここは「迷わず行けよ、行けば分かるさ」という感じで、一気に作ってしまうことに。

実装のステップ

結論から言うと、本当に何とかなりました。JavaScript正規表現などはTry & Errorの繰り返しとなったものの、これは他の手慣れた言語でも同じです。{}やら行末の;が気持ち悪いなと思っていたのも最初だけで、こんなお作法なのねと慣れてしまえば大した問題にならず、GASからSheetsなどを動かすのも、Microsoft OfficeExcel VBAを触ったことがあったので、こちらも没問題(メイウェンティ)。いかに順を追って見ていきたいと思います。

GmailからSession Summaryメールを抜き出す

自分のGmailアドレス宛に届いたメールの中から、CamblyのSession Summaryメールを抽出するための条件を考えます。難しく考えないで、Gmailの検索ボックスにいろいろ入れてみて、狙ったメールが検索結果として表示されればOKです。
f:id:deutschina:20200606150621p:plain
この画面の例だと、メールの件名に"Session summary"を含んでおり、1日以内に受信した(newer_than:1d)メールという条件で、1件ヒットしている事が分かります。この条件だけだと、同じタイトルのメールが別の会社や組織などから届く可能性もあるので、自分の場合も発信者を条件に追加しています。最終的にコレだ!と決めた検索条件は、コーディングの時に使うのでメモ帳などに貼り付けておきます。

メールの中から保存したい情報を抜き出す

次にメールから欲しい情報を決めます。下は実際に届いたメールですが、黒塗りでわかりにくいですね。
f:id:deutschina:20200529080053p:plain

例えば、こんな情報とか。

  1. 件名から日付(ただし月、日、曜日のみ)
  2. 本文からセッションの長さ
  3. 本文から講師の名前

Camblyからのメールは、結構シンプルなので使える情報が限られます。例えば、1日に2回以上セッションを受けた場合、上の情報だけでは完全に判別できない可能性があります。そこで、メールがセッションの直後に送られる前提で(遅延が出たらアウトですが)、メールの受信日時とセッションの長さの情報を組み合わせて、セッションが開始された時間帯を推測してみようだとか、同じメールを2回カウントしないようにGmailの個別のメールに必ず付いてるMail IDを拾っておこう、みたいなアイディアを出しておきます。

情報を貯める場所を用意する

メールから拾った情報を貯めておくためのSpread sheetをGoogle Sheetsの中に用意します。
f:id:deutschina:20200529112926p:plain
作りながら、GASにどうやって更新させるかなどをイメージしながら作ります。自分の例だと、最新のレコードが常に先頭に来るようにすること、あとはこれまでの通算回数や合計セッション時間などが分かるようにしたかったので、それらを入れるための項目を用意しています。新しいセッション履歴が、常に8行目にインサートされる感じで、上の方の統計は数式で計算させればいいや、という感じで割り切っています。あと、作成したSpread sheetのURLがコーディングの時に必要になるので、こちらもメモ帳などに残しておきます。

とりあえずコーディングをはじめてみる

まだTwitterと連携するところまで見ていませんが、いきなりコーディングをはじめて見ます。Gmailから情報を抜き出して、Spreadsheetに記録するGASのスクリプトは、ググると結構な数が見つかりますが、私の場合は、主にこちらを参考にさせてもらいました。

qiita.com

自分のように、多少Excel VBAの経験がある人だと、Spreadsheet側の更新よりも、メールからピンポイントで情報を抜くところの方が苦労しました。といっても、Python正規表現はなんとなく触ったことがあったので、こちらのサイトを使いながら、正規表現を少しずついじってコードに反映させて行きました。

regexr.com

1つだけ注意点を挙げるとすると、正規表現にハマりすぎると、何でもかんでも正規表現できれいに一発で抜き出したいという気持ちが頭をもたげると思います。でも、例えばPostive backbehind(?<=x)など、GASの中で対応していないモノもあるので、実際には、結構泥臭くreplace文などを駆使して実装しています。特にメールの中から情報を抜き出す部分は、一般化が難しいので、CamblyならCamblyに特化したメールの内容をparseするfunctionを分けておくと、あとで使い回しが楽になります。

Twitter連携

自分の場合は、GmailからSpreadsheetに更新するところと、Spreadsheetから最新のエントリをTwitterに呟くBotの部分を分けて作りました。理由はいくつかあるのですが、例えば初めて動かすときに、すでに20何回ものSession Summaryのメールがあるわけで、それを追加するたびに呟かれたのでは、いくらBotとは言え感じが悪いですよね。あとは、Twitterに呟くところを分けておけば、トラブってTwitterに投げられなかった場合でも、そこだけ単体で実行すればリカバリできます。

前置きが長くなりましたが、こちらも先人の知恵をお借りする感じで、こちらの2つを主に参考にさせていただきました。
qiita.com
moripro.net

Tweetの文面は、自分で好きなように考えるとして、これまでの実績だとか、セッションの長さなどはSpreadsheetから拾ってくるようにしてあります。あとは自分用のハッシュタグなんかもつけてあげれば、それらしくなりますよね。
f:id:deutschina:20200606155619p:plain
自分の場合は、Botのあとに感想をReplyでつけています。あ、Replyの部分はBotではありません。

最後にスケジューリング

一通り、動かしてみて良さげだったら、最後にスクリプトが1時間に1回動くように設定してあげます。
f:id:deutschina:20200606160007p:plain
コーディングのところで書きませんでしたが、キモになりやすいところには、Logger.log()を使ってログを吐くようにしておくと、仮にエラーになったときの原因特定が楽になると思います。ログは「実行数」というところで確認できます。
f:id:deutschina:20200606160211p:plain

今後の展開

コレを書いている時点では、Camblyだけではなく、Native Campのレッスン履歴からTwitterに呟くBotだったり、英単語の学習記録をSpreadsheetから呟いたりするBotも作ってみました。正直、書いたコードが余りキレイではないので、リファクタリングしたいなとか、もっと一般化できたはずだなんていう思いもありますが、仕事じゃないので一銭にもならないので、ゆっくり改善していければと思います。時間に余裕ができたら、もっと細部についても記事にできると良さげですね。

(つづく)