negi's blog

都内エンジニアの雑ブログです。

ゴミの日が分かるLINE Botを作成する(GAS・Google Drive・LINE Bot・Messaging API)

目次 

  

はじめに

今日、明日、はたまた今月のゴミ出しの予定を確認したい時は毎日あります。
その度に自治体から頂いたゴミの日カレンダーをパラパラと見ていたのですが、LINE Botでゴミの日を通知してくれるBotを作成出来るといった内容の記事を見つけ、使いやすいようにカスタマイズして実装しました。

Botの概要

完成したBotとのトーク画面はこのようになります。

f:id:negi_sudo:20210207202449j:plain


「今日は何のゴミの日?」「明日は何のゴミの日?」「今月のゴミの日カレンダー」のいずれかの文言に対応してReplyします。

  • 今日/明日のゴミの日を聞かれると、何のゴミの日か返します。
  • 今月のゴミの日カレンダーを聞かれると、ゴミの日カレンダーの画像を返します。(上記画像では、意図的に白塗りしています)
  • 毎月1日に、同じく今月のゴミの日カレンダーをフォロワー全員に送信します。

曜日に応じて何のゴミの日か返す機能は、割とよくある機能ですが、ゴミの日カレンダー画像を送信する機能は少し珍しいかもしれません。が、これが一番役に立ちます。
もともと、第何曜日はゴミの種類が異なるとか、年末年始だとゴミが出せないなどの特殊な条件にも対応出来るようにスマートに実装出来なかったのが理由でもありますが、ゴミの日カレンダーを見れるようになると、将来ゴミを出すタイミングを事前に把握出来るのでとても便利です。

ソースコード

 GASは基本的にGithubで管理することは無いのですが、本ブログ用にアップロードしました。良ければご参考下さい。

github.com

 

LINE Botについて

f:id:negi_sudo:20210202003245p:plain

LINE BotはLINE Developersから作成できます。
LINE Developers

 

基本的には、Messaging APIを使って、返信と全フォロワーへのBroadcast送信を行っていきます。JSONの定義もすごくシンプルで使いやすいです。

Messaging API | LINE Developers

 

Google Driveとの連携 

各月のゴミの日カレンダー画像は1年分をGoogleDriveに保存し、対応する月のカレンダー画像をLINE Botから送信するようにしています。

自治体毎に異なりますが、もともと12ヶ月分のカレンダー画像がまとまったPDFファイルが自治体ホームページからダウンロード出来たので、それを各月のカレンダー画像にトリミングしJPEG画像に変換するのは、SmallPDF(https://smallpdf.com/jp/pdf-to-jpg)を使いました。

JPEG画像の作成は手動のオペレーションになりますが、年1回なので許容範囲かなと思います。

 

 課題

現状いくつか課題や実装したい機能があり、今後折を見て改善していきたいです。

  • ゴミの日を日/週単位でリマインドする機能
  • 何度もカレンダー画像を送信すると、LINEのトーク画面上では「保存期間が終了したため画像を表示出来ません。」といった内容のが表示され、画像が見れない。

 細かい内容は追記するかもしれません。

 

Mac Big Sur でAndroid StudioのPreferenceを開くとタブで開かれてフリーズする

f:id:negi_sudo:20210206005828p:plain

表題の通りです。

経緯

MacOS をBig Surにして、Android Studio 4.1をダウンロードした直後に、KeyMapを編集しようと思ったらPreferenceを開くと、ダイアログではなくタブ形式で表示され、そのままほぼフリーズした状態になりました。一応クリックに反応はしていましたが、かなり遅れていました。

解決策

解決方法は以下の通りです。公式のDeveloperサイトに載っていました。

[システム環境設定] > [一般] の順に選択します。[書類を開くときはタブで開く] で [しない] を選択します。Android Studio を再起動します。

Android Studio と Android Gradle プラグインに関する既知の問題  |  Android デベロッパー

再起動した後は、Preferenceを開くときにタブ形式ではなく、これまで通りダイアログ形式になっていました。

ちなみにプレビュー版ですが、Android Studio 4.2にアップグレードすると治るようですので、その内正式リリースされると治るかと思います。

AWS ソリューションアーキテクト(Solutions Architect Associate)に合格しました

f:id:negi_sudo:20210206000546p:plain

年始にAWS SAA(Solutions Architect Associate)の試験を受けて、無事合格しました。
その際の出来事や学習方法などを振り返りたいと思います。

 

AWS SAAの概要

まず、SAAの概要ですが、主に1年以上AWSを使って業務をしてきた方が対象で、合格することによって証明される能力は以下のように定義されています。

https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/

認定によって検証される能力
AWS のテクノロジーを使用して安全で堅牢なアプリケーションを構築およびデプロイするための知識を効果的に証明すること
顧客の要件に基づき、アーキテクチャ設計原則に沿ってソリューションを定義できること
プロジェクトのライフサイクルを通して、ベストプラクティスに基づく実装ガイダンスを組織に提供できること

 

試験範囲

AWSを用いて基本的なWebサービスのインフラを構築できるために知っておくべきことがメインです。

最近は時代のニーズに合わせてECSやEKSのような、コンテナやオーケストレーションサービスの問題も徐々に増えている印象です。

サービスの名前も分からない状態からでもAWS Balckbeltを読んでおくと、非常に理解が深まります。(実際私もSnowballなんてAWSのサービスがあるなんて、試験勉強を始めてから知りました……。)

サービス別資料 | AWS クラウドサービス活用資料集

試験の準備

何はともあれ受験のためにAWS(普段AWSを触る際に使うAWSアカウントとは異なります)アカウントを作成します。自身の受験履歴やデジタル認定バッジもこのアカウントに紐づくことになるので、メインで利用しているメールアドレスで登録することをおすすめします。

https://www.aws.training/

今回私はピアソンVUE 試験センターに行き受験しました。新宿/銀座あたりはかなりの数の試験会場があり、ほぼいつでも受けれる状態ですのでオススメです。

試験を受けるには15000円ほどの受験料がかかります。
予約はすぐにできるかと思います。

勉強方法

私が勤務している会社ではUdemy法人向けの講座が受講できるUdemy for Businessに加入しているため、その範囲内でいくつか講座を受けました。(法人向けの講座と言っても、ほとんどの講座は受けられました)

 

これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)

言わずとしれたSAA対策用の講座です。
業務でEC2・S3・VPCあたりは触ったことがあるけど、他のサービスはあんまり……という人にもおすすめできます。
SAAの試験では頻出のAutoScalingや、AWS Well-Architectedの概念など、キチンと重要なポイントを抑えて講座が出来上がっています。

ハンズオンもあるので、知識の定着もしやすいと思います。
この講座に限ったことでは無いですが、個人的には再生速度を1.5倍速程度にし、知らないポイントをつまみ食いする形で受けていくのが効率が良いと思います。実際私も全ての動画は見れていません。

www.udemy.com

 

【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)

こちらもオススメの講座です。試験に合格することだけが目的であれば、この講座だけひたすらやれば良いと言っても過言ではありません。

勉強していない状態で一度1セット解いてみることをオススメします。おそらく全然分からない(名前も知らないサービスも出てくる)と思いますので、そこから前述のUdemyの講座やBlackbeltなども見返すと良いと思います。

私は前述のUdemyの講座をさらっと流して、こちらの問題集とBlackbelt、またClassmethodさんの記事(https://dev.classmethod.jp/tags/aws/)などで、ピンポイントに各サービスについて理解を深めて行きました。

www.udemy.com

 

試験当日の流れについて

ここは意外に重要で、事前に知っておくと、心理的安全性がかなり高まるかと思います。

会場は小さめのオフィスビル内に試験会場の階があり、そこで受ける形が主になります。受付でAWSの試験であること、何時開始の試験か、自身の名前、を伝えれば良いと思います。事前にピアソンVUEから届くメールには試験開始の15分前に到着するように記載されていますが、だいたいそのぐらいに着くと思います。多少早く着いたら、その分早く試験を始められて、早く帰れます。(皆で一斉に試験開始、という感じではありませんでした)

試験会場では身分証明書が必要で、試験についての同意書の記入、写真撮影などを済ませると、ロッカーに荷物を預けて会場(いくつかの部屋に区切られたオフィスみたいな感じです)に移動します。

会場には受付で渡される小さいメモ用のホワイトボード、ロッカーの鍵、身分証明書のみ持ち込み可能です。腕時計やポケットの中身の荷物も事前にロッカーに預けます。

試験はPCで受けます。周りの雑音が気になる時のためにヘッドホンも置いてありました。

私が受けた会場は少し寒かったので、多少脱ぎきしやすい服装のほうが良いかもしれません。

 

余談 

以下は私の個人的な話しになります。

私自身はAWSを使ったシステム開発に携わって1年未満でしたが、何かしら目標となるものが欲しくて試験を受けることに決めました。合格ラインは7割と言われているSAAの試験ですが、かなりギリギリの点数での合格となりました。
試験に受かることがゴールではなく、その知識をアップデートし続けること、その知識を生かしてより良いシステムを作ることが重要ですので、これからも精進していきます。

 

自己紹介

ブログを初めてみました。
20代 都内勤務のSEです。
技術的なことを中心に書いていこうと思います。

 

業務では主にAndroid(Java/Kotlin)、AWS、Firebase、Pythonなどを使っています。
趣味ではFlutterなど色々手を出しています。

 

githubTwitterも始めてみました。良ければフォローしてください。
github : https://github.com/negishitakuro
Twitter : https://twitter.com/NegiSudo