見出し画像

読書会リストプログラム更新・ZOOMミーティング自動作成

こんにちは!

今回は継続的に改良している読書会のリスト作成プログラムのアップデートについて書いていきたいと思います。今回の目玉はZOOMのAPIを叩いて自動的にZOOMミーティングを予約できるようにする機能を追加したこと。もはやリスト作成プログラムと言うよりは、オンライン読書会支援ツールと化している感は有りますがw、まあ便利になることは良いことなので、そこは気にしないということでw

前回のアップデート(Googleドライブへの自動アップロード)についてはこちら↓。


ソースコード

いつものごとく、まずはソースコードを公開しておきます。自分以外の人にとって価値があるものだとはあまり思っていませんが、今回使ったZoom.pyはZOOMのAPIをpythonで使いたい人にとっては例としては良いかも知れません。まあ、クラスの作りかたとしてはあまり褒められたものではないと思うので、ご参考までにって感じですがw



今回の改良点

冒頭に書いたとおり、主な更新点はZOOMミーティングの自動化です。pythonのプログラムからZOOMのAPIにアクセスし、読書会を実施する時間にミーティングを設定してくれる機能ですね。実際問題として、勝手にミーティングを設定してくれるので、手間がはぶけるのはもちろん、時間や日付のミスもなくなるので結構重宝しています。

実は今回の変更点はこれだけではなく、もう一つのポイントが読書メーターのイベントページから実施日時や参加者情報を自動的に取得してくれる機能です。いままでは参加者の名前とidを自分で確認し、csvの入力ファイルとしていたのですが、これが地味にめんどくさかったので自動化したわけです。自動化が進むごとに、自分のめんどくさいのハードルが下がって、どんどん自動化したくなるという変なループができている気がしますw 

あと、イベントページから実施日時を自動で引っ張ってこれるので、ZOOMのミーティング設定もそれをそのまま流用できるという利点もありますね(というか、実施日時を取得したかったからイベントページにアクセスして、そのついでに参加者情報ももってきたというのが実際のところですがw)

あと、これは大した変更ではありませんが、地味に入力ファイルをcsvからjsonファイル形式に変更したことですかね。APIを使っているとjson形式を使う機会が多いわけですが、使っているうちにその便利さがわかってきた感じですね。csvよりは人間が直感的に書きやすいですし、構造化データを扱えるのでなかなか便利です。jsonファイルについてはこちら↓。

ついでに、入力ファイルとしてGoogle Driveへの自動アップとZOOMの自動ミーティング機能は実行の有無を入力ファイルから選択できるようにもしています。参加者が直前に追加とかになった場合など、ZOOMの自動ミーティング設定は不要だけど、リストは作り直したいみたいなケースはそこそこあるので、選択式にしておくメリットは少なくないかなと。


参加者情報の自動取得

読書メーターのイベントは、各々のイベントに数字のイベントIDが付与されており、各イベントのページを見るには『https://bookmeter.com/events/ + 「イベントID」』にアクセスさせるようになっています。

たとえば、次回のオンライン読書会のイベントIDは「7960」なので、「https://bookmeter.com/events/7960」にアクセスすればOK。

画像1

なので、イベントIDを事前に調べて入力してやれば、htmlリクエスト用のライブラリ「Requests」とhtml解析ライブラリ「Beautifulsoup」を組み合わせることでイベント情報の取得が可能です。

「Requests」や「Beautifulsoup」については以前の記事を参照ください。

いずれにしても、アクセスすべきURLさえわかればあとはこっちのもんですね。Beautifulsoupの使い方は大分手慣れてきたので、割と苦もなく実装することができました。使い始めのときはhtmlやcssがあまりきちんと理解できていなかった関係上、結構苦戦したのですが、わかってしまえばサクッとできていい感じです。

具体的に取得するのは、参加するユーザーの名前とID、実施日時、そして読書会のタイトルです。読書会のタイトルについては、正確に言うと「第◯回」の部分ですね。この部分を切り取ってきて、Googleドライブにアップロードするエクセルファイルのファイル名に利用します。それ以外の取得項目は、既にご紹介のとおりです。


ZOOMミーティングの自動設定

そして今回の肝はなんといってもZOOMミーティングの自動設定。これを自動的にやってくれるようになったおかげで、自分自身でやるべき手間はかなり減りました。

プログラムからZOOMのアカウントを操作するには、既に何度も出てきたAPI(Application Programming Interface)を利用します。前回のGoogle Driveへのアクセスと同じような感じですね。ただ、ZOOMのAPIはGoogleのものと比べると結構シンプルで、割と素直に使えたなと言う印象です。Google Driveは専用のライブラリ「pydrive」を使いましたが、今回は一般的なライブラリの組み合わせいけました。というか、GoogleとかAmazonのレベルでないと、わざわざ専用のライブラリを作ろうという人もいないのでしょうね。

ZoomのAPIを使うには、Zoom公式の「App Marketplace」にアクセスしてAPIキーを取得します。今回は特に詳細までは説明しませんが、個人で使う分にはJWTというフレームワークで作ったキーを使えば良いでしょう。

大まかな流れとしては、①ZoonのApp MarketplaceでAPI keyとAPI secretを入手、②その情報を元に一時的なTokenを作成、③Tokenを使ってhttp通信を行いユーザー情報を取得、④ミーティングを作成という流れでOK。このあたりは詳しくはGitHubのZoom.pyをご覧ください。そんなに複雑なことをやっているわけではないですし、トークンの発行については解説しているところが色々とあると思うので、ちょっと探してみれば割と見つけやすいと思います。

以外だったのは、ZOOMの実装の部分のプログラムが想像以上に短くまとまったことですね。このあたりはやはりpythonの特性によるところが大きいのでしょう。テスト用のメイン関数を含めても100行もいかずに実装することができました。


まとめ

今回はオンライン読書会リスト作成プログラムの改良について書きました。プログラムを更新していくことでどんどん自分自身の手間が減っていくのはなかなか気分が良いですね。もちろん、単純に手間が減ることで継続しやすくなるという側面もありますが、それ以上にプログラムを組むことが自体が楽しいと言うかw

もはやリスト作成プログラムと言うよりは、読書会に関する秘書アプリのような感じになってはいますが、それはそれで良いでしょう。むしろ、リスト作成の部分もしっかりモジュール化して、秘書アプリの一部にするようにしたほうが汎用性が高くなる気はしています。

実はこれを書いている現時点でもさらなる改良のアイデアはあるので、アップデートしたらまた紹介してきたいと思います。

それでは、また。

この記事が気に入ったらサポートをしてみませんか?