これは はてなエンジニア Advent Calendar 2025 5 日目の記事です。
はてなでは週に一度の頻度で技術勉強会と称してチームから技術的トピックを発表してもらっているのだけど、この取り組みがはじまったころと比べると組織のサイズも大きくなってきており、コンテキストが薄まることで「自然とわかる」話が減っていて、そのぶん話が頭に残らなくなってしまう。これは勿体ない。
そういうわけで、技術勉強会のログから復習クイズを生成してみることにした。これを1週間後、次の技術勉強会の開催時に回答してもらうことで忘却曲線に働きかける作戦である。
Google Workspaceではオンライン会議の書き起こしがGoogle Docsで提供されるので、ここからGeminiでクイズを生成、Google Formのクイズとして提供することにした。ウェブ上で回答するのではなくFormにしたのは、共有範囲を細かくカスタマイズしたいこともありそうだから。
上記のようなリソースを取り扱うので、Google CouldのApp Engineにデプロイするかたち。ドライブのファイルを取扱うためのサービスアカウントをひとつ作って、議事録ドキュメントを共有してもらう先とし、また、フォームをドライブに作成する主体とする。
大体できたのがこんな感じ。
GitHub - motemen/meet-recording-quiz-maker
app.example.yaml を参考に設定し、gcloud app deploy でウェブサービスとしてデプロイできるはず。おそらく自明なGoogle APIを有効にするのに加えて、サービスアカウントの設定がいくつかあるので、DEPLOYMENT.md を参照してください。

技術的制約
できたフォームは指定の共有ドライブ(共有フォルダではない)に置かれることとなっている。開発中、Google Form APIを使ってサービスアカウントによりフォームを作成しようとすると "Internal Error" とかいう絶望的なエラーメッセージが返ってきて途方に暮れていたのだけど、これはサービスアカウントに与えられたドライブ領域がゼロに設定されており、ファイルを作成するだけの領域が不足している、ということだった(Drive API を叩くともうちょっとよいエラーメッセージが返る)。昔は暗黙の容量があったらしい……。
仕方がないのでForm APIによってファイルを作成することはあきらめ、まずDrive APIで mimeType: "application/vnd.google-apps.form" なファイルを最初から共有ドライブの中に作り、そのあと得られたIDを使ってForm APIを呼び出す、ということをしている。Form APIだと「共有ドライブに作る」ができなくてまず個人のファイルとして作り、それから共有ドライブに移動、という手順になってしまうので最初で躓く。
また、Googleフォームは最近回答者ロールの権限範囲が設定できるようになったらしいが、まだAPI経由でこれを設定することができないっぽくて、作成後に人間が公開範囲を設定してやる必要がある。これはちょっと惜しいな。
自動でクイズを生成するようにすればさらに便利になりそうだが、なんかそういうのも Google Workspace Studio とかでできるようになりそうなので、いったんこのくらいで。
