Google Formを使って社員紹介ページを作りたかった

この記事は 面白法人グループ Advent Calendar 2022 の8日目の記事です。

こんにちは、カヤックボンドでサーバーエンジニアをやっている松本です。

3日目の駒田さんの記事でも紹介があったとおり、ボンドでは定期的にもくもく会をやっておりまして、 今回はその中で作ってみたものを紹介したいと思います。

(作り込んでいたら時間が無くなっていたので、ざっくり紹介になります!) techblog.kayac.com

きっかけ

最近はCloud Runを触るのが好きで、趣味でも色々触っている毎日を送っていました。

その中で、GASをGCPプロジェクトと連携できることを最近知ったとき、「フォームの入力でCloud Run起動させたら何でもできるんじゃないか?試しに作ってみよう!」と思ったので作ってみました。

サービス構成

こんな感じです。基本は社員のフォームの入力で情報が自動更新されて、たまにメンテナがスプレッドシートを書き換えて更新する想定で作ってみました。 写真とか自己紹介とかを入力していただく想定です。

Batch側のCloud Runは頑張ればGASでも書けますが、Goで書きたい+リビジョン管理できる形にしたいので極力Cloud Runに寄せています。

その他にも、Batch側はGCP内部のみアクセス許可したかったため、Cloud Runは2サービス用意しています。

GASからpub/subメッセージをpublishできるようにする

GASからPubSubを実行するためには、自分で作ってGCPプロジェクトと紐付けを行う必要があります。 下記を参考にやっていきましょう。(OAuth 同意画面まで作成すればOKです) developers.google.com

無事設定が終わったらGASのプロジェクト設定の以下項目にチェックを入れます。

「appsscript.json」マニフェスト ファイルをエディタで表示する

appscript.jsonがエディタから見られるようになるので、以下の必要な権限を追加しましょう。

  "oauthScopes": [
    "https://www.googleapis.com/auth/pubsub",
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/userinfo.profile",
    "https://www.googleapis.com/auth/userinfo.email"
  ]

GASのトリガーにする関数はこんな感じに書いていきます。

function pubsub() {
  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify({
      "messages": [
        {
          "data": getRowInfo(),
        }
      ]
    }
    ),
    'headers': {
      Authorization: `Bearer ${ScriptApp.getIdentityToken()}`
    }
  }
  UrlFetchApp.fetch(PUB_SUB_URL, options)
}

PUB_SUB_URLには以下を参考にGCPプロジェクト名、pubsub側で作ったトピック名を入れていきます。 cloud.google.com

一度手動トリガーを行い、無事にOAuth同意画面を認証してPubSubのトピックにメッセージが溜まっているのが確認できればGASでの作業は完了です。

Cloud Runをデプロイする

Batch、MainのCloud Runサービスをまずは作っていきます。

PubSubから配信されるメッセージも通常のHTTPリクエストと同じように受信できるので、下記を参考にGCSに保存、FireStoreに保存、閲覧画面の作成などを行っていきます。

cloud.google.com

それぞれのサービスを作ったらデプロイを行うのですが、個人的にCloud Run + Goでオススメなデプロイ方法はkoを使ったデプロイです。 DockerやCloud Build無しでイメージを高速にビルドできるため、どんどん使っていきましょう。 cloud.google.com

実際には以下のようにデプロイを行います。

go install github.com/google/ko@latest
gcloud run deploy main --image=`KO_DOCKER_REPO=asia.gcr.io/$(PROJECT_NAME)/main ko publish main.go` --platform managed --region asia-northeast1 --allow-unauthenticated --cpu=1 --memory=256Mi

ここまで行うとURLが発行されるので、pubsubで作ったトピックにpushサブスクリプションを設定します。

これでFormsからCloud Runまでが繋がるので、Formsを送信することでCloud Runが起動することを確認してみましょう!

作ってみた感想

残りは閲覧画面を作り込んでいくのですが、ここで12/8がやってきてしまいました。

最後までは間に合わなかったですが、Formsをトリガーにやってみたかったことはだいたい出来たかなと思っています。

一つ困ったこととしては、Formsで「回答を 1 回に制限する」に設定した場合、一度アップロードした画像が変更不可となってしまう点でした。

これだと「1人1行」と「画像を後から差し替える」の両立が難しそうです。

いい方法無いかな?と思っているのですが現状は思いつかず、今後のもくもく会で解消していけたらと思っています。

明らかに変更できなさそうな見た目をしています。困った。

【圧倒的快感】2022年に行って良かったサウナランキング

この記事は 面白法人グループ Advent Calendar 2022 の7日目の記事です。

アウフグース
「最近サウナ流行ってるけど別に興味ないや。」
「そもそもサウナとエンジニアって関係なくない?」

ちょっと待ってください!!

サウナとエンジニアは一見関係なさそうに見えますが、実はかなり深い因果関係があるのです!!!

エンジニアは頭を使うので脳に疲れが溜まってしまいがちです。
そして、疲れが溜まると仕事のパフォーマンスが落ちてしまいますね。

しかし、サウナに行くと脳の疲れが綺麗さっぱりなくなります!
しかも疲れている時の方が気持ちよくなれるのです!!!

そうなんです!
エンジニアとサウナには究極の因果関係が存在するのです!!!

仕事で頭を使うので脳が疲れる
→ 疲れているからサウナで深く整える
→ 脳の疲れが取れて仕事で良いパフォーマンスを発揮できる
→ 仕事で頭を使うので脳が疲れる
→ (繰り返し)

つまり、エンジニアはサウナに入るべきなのです!!!

目次

自己紹介

はじめまして!カヤックボンドでエンジニアをやっている園です。
サウナー歴4年目のサウナ・スパ健康アドバイザーという資格を有しているアマチュアのサウナーです。

整うとは

まずはよく聞く「整う」とはいったい何なのかを説明していきます。

> ととのう
サウナ、水風呂、休憩を何度か繰り返すことにより、心身が完璧に調和された状態。 五感が冴える、疲労が取れる、雑念が消えるなど様々な効果が言われている。プロサウナー濡れ頭巾ちゃん発祥のワード。 サウナタイム【サウナWiki】抜粋

とのことです!!

詳しくはこちらをご覧ください。 saunatime.jp

サウナの入り方

「サウナに入ってみたいけど、入り方がよくわからない...。」

そんな方も多いんじゃないでしょうか。
そんな方のために目安となる入り方がこちらです!!

【基本のサウナの入り方】
1.サウナ(約6~12分)
2.水風呂(約1~2分)
3.外気浴(約5~10分)
こちらを3回繰り返します。

※こちらはあくまで目安となりますので、その日の体調に合わせて時間を変えて入ることが大切です。

詳しい入り方やマナーについては、こちらをご覧ください。 onsen.nifty.com

今年行って良かったサウナランキング

それでは私が2022年に行ってよかったサウナランキング2022を発表します!

第5位 南柏天然温泉 すみれ

minamikashiwa-sumire.com

サウナ室:94度/60度
水風呂:13度
外気浴:あり

すみれの特徴はなんと言っても20分ごとに行われる激アツのオートロウリュ*1です。そして、他の施設と大きく違うのはオート熱波*2があることです。
オートロウリュに合わせてオート熱波で一瞬にしてサウナ室の温度が上昇し、大量の汗が出てきます。
水風呂の温度も低く外気浴スペースも充実している施設です。

第4位 JFA夢フィールド 幕張温泉 湯楽の里

www.yurakirari.com

サウナ室:70度
水風呂:17.6度
外気浴:あり

幕張の湯楽の里は、サウナの温度が少し低めの施設です。
海を見ながら最高の外気浴ができるためランクインです!

第3位 竜泉寺の湯 スパメッツァ おおたか

www.ryusenjinoyu.com

サウナ室:100度/90度/50度
水風呂:8.6度/15.8度/15.5度
外気浴:あり

こちらは今年のSAUNACHELINでも1位をとった施設です。
スーパー銭湯ですが、とにかくサウナに力を入れているため様々な楽しみ方ができます。
特に、毎時0分のドラゴンロウリュ*3はかなり強力で大量の汗をかくことができます。

第2位 おふろcafé かりんの湯

www.thefarm.jp

サウナ室:94度/96度
水風呂:17度
外気浴:あり

こちらの施設は都心より少し離れている田舎にあります。
周りに高層ビルがないため、静かな自然に囲まれて整うことができます。
全体的に満足度が高いため第2位です!

第1位 岩塩ブロックサウナ「金の亀」

kinnokame.com

サウナ室:100度
水風呂:15度
外気浴:あり

こちらの施設に点数をつけるなら100点です。
全てが完璧で非の打ち所がありません。
生姜がテーマの施設で、生姜ロウリュや生姜水風呂では他の施設では味わえない独特の質感を味わえます。
休憩スペースには外気浴・インフィニティチェア・ベッド・ハンモック等が揃っており、様々な休み方ができます。 横になっていると鳥の囀りのBGMが聞こえてきて、気づいたら昇天してしまいました。
今年行ったサウナの中でぶっちぎりの1位です!!!

最後に

最後までお読みいただいてありがとうございます。
こちらの記事でサウナに興味を持ってくれた方がいたら嬉しいです!
初めていくサウナは一生記憶に残るので、素敵な施設に行ってみるのがおすすめです!

それでは良いサウナライフを!!!

*1:ロウリュ(サウナストーンに水をかけて熱い水蒸気を発生させる)を自動で行ってくれる仕組み

*2:ロウリュで発生した水蒸気を風で送ること

*3:サウナストーブ5台同時のオートロウリュ