Frappe で 3 日で開発した、セミナーと社内ミーティングの管理アプリ「EventMeet」を OSS として公開しました
Frappe / ERPNext 向けのアプリ EventMeet を、MIT ライセンスのオープンソースとして公開しました。セミナー(オンライン・対面・ハイブリッド)の運営と、社内ミーティングの管理を、ひとつのアプリで扱えます。
当社は今後、情報発信のためにセミナーを定期的に開催していく計画です。EventMeet は、その運営を効率よく行うために自社で開発しました。Frappe のノーコード・ローコード開発基盤としての強みを活かし、開発 2 日、動作検証と改善 1 日の、計 3 日で作り上げています。
- リポジトリ: https://github.com/lifegence/eventmeet
- 対応: Frappe v15・v16(ERPNext は必須ではありません)
- ライセンス: MIT
- 最新版: v0.2.1
要旨
- セミナーの運営を最初から最後までまとめます。 公開の申込ページ、Stripe による有料チケット、申込者ごとの Zoom 参加 URL、当日の QR 受付、出席の取り込み、アンケートまでを、ひとつの画面の流れで扱えます。
- 社内ミーティングを、招待から議事録まで管理します。 会議ツールは Zoom と Google Meet から選べます。Google Meet では、Gemini の「自動メモ作成」の要約を議事録に取り込みます。
- Frappe の開発基盤を活かし、3 日で作り上げました。 開発に 2 日、実際の Zoom・Google Meet での動作検証と改善に 1 日です。
- MIT ライセンスで、自由に使い、改変できます。 公開ページのデザインは管理画面から変えられ、テンプレートを差し替えてレイアウトまで作り替えることもできます。
1. 背景
当社は、セミナーを通じた情報発信を定期的に行っていく計画を立てています。回数を重ねるほど、申込の受付、参加費の決済、Zoom の準備と参加 URL の案内、当日の受付、終了後の出席確認やアンケートといった運営の手間が、毎回積み重なっていきます。
これらを別々のサービスで行うと、申込者の一覧を書き写し、参加 URL を一人ずつ送り、終わった後に出席者を突き合わせる手作業が発生します。社内ミーティングでも、議題はチャットに、議事録は文書に、宿題は個人のメモにと、情報が散らばりがちです。
当社は社内の業務システムに Frappe / ERPNext を使っており、顧客や社員の情報はすでにその中にあります。そこで、セミナーと会議の情報も同じ場所で扱えるアプリを自社で開発することにしました。当社でも、社内ミーティングの管理にすでに使っています。
2. Frappe だから 3 日で作れた
Frappe は、ノーコード・ローコードで業務アプリを作れる開発基盤です。データの項目を定義すると、データベースの表、入力画面、一覧画面、検索、権限の管理、外部から呼び出す API までが自動で用意されます。メールの送信、定期的に動く処理、担当者への ToDo、公開の Web ページ、画面の翻訳といった、業務アプリに欠かせない機能も最初から揃っています。
そのため開発では、共通の機能を一から作る必要がなく、EventMeet ならではの部分に集中できました。
- 申込から確定、キャンセル、返金までの流れ
- Zoom・Google Meet・Stripe との連携
- 主催者と参加者で、編集できる範囲を分ける権限の設計
開発には 2 日、実際の Zoom と Google Meet を使った動作検証と、そこで見つかった点の改善に 1 日をかけました。短期間でも品質を確かめられるよう、100 件を超える自動テストを用意し、Frappe v15 と v16 の両方で毎回テストを実行しています。
3. セミナーの管理
| 段階 | できること |
|---|---|
| 企画 | 形式(オンライン・対面・ハイブリッド)、日時、定員、会場、プログラム、登壇者。準備のタスクは担当者の ToDo と連動 |
| 集客・申込 | 公開の申込ページ。チケット種別ごとの定員、ボット対策、送信回数の制限 |
| 決済 | Stripe Checkout(カードのほか、コンビニ払いなどの非同期の支払い)。Stripe の請求書を領収書として発行、返金、請求書払いなどの手動での確定 |
| オンライン | 申込の受付を始めると、登録制の Zoom ミーティング(またはウェビナー)を自動で作成。申込者ごとに個別の参加 URL を発行し、確認メールで送付 |
| 当日 | 会場の QR 受付、開始前のリマインドメール |
| 事後 | Zoom の参加記録から出席と視聴時間を取り込み、アンケートを実施 |
申込者には、Zoom からではなく EventMeet から案内のメールが届きます。参加 URL は申込者ごとに異なるため、出席の記録を申込と正確に結び付けられます。
4. 社内ミーティングの管理
- 議題・参加者・招待:社内の参加者に加え、アカウントを持たない社外の参加者も招待できます。招待は全員にも、選んだ人だけにも送れます
- 議事録とアクションアイテム:アクションアイテムは担当者の ToDo と双方向に連動し、どちらで完了にしても反映されます
- 権限:ミーティングを見られるのは主催者と参加者だけです。日時・参加者・議題の変更と招待は主催者が行い、ほかの参加者は議事録とアクションアイテムを編集できます
Google Meet との連携
会議ツールに Google Meet を選ぶと、主催者の Google カレンダーに Meet 付きの予定を作り、招待・変更・中止は Google カレンダーから参加者に通知されます。会議の終了後は、Meet の会議記録から参加者と参加時間を取り込みます。
会議中に Gemini の「自動メモ作成」を使えば、作られた要約を議事録の欄に自動で取り込みます。議事録が空なら要約を下書きとして入れるので、そこから手直しして仕上げられます。
5. Zoom のライセンスを共有して使う
Zoom の有料ライセンスは、1 つで同時に開催できる会議が 1 件です。EventMeet は、登録したホスト用アカウントの中から、その時間に空いているものを自動で割り当てます。必要なライセンス数は社員数ではなく、同時に開催する会議の数の最大値になります。
6. 公開ページのデザインを変えられます
セミナーの一覧や申込のページは、管理画面からデザインを変えられます。
- 4 種類の標準デザイン(標準・コーポレート・フレンドリー・ミニマル)
- カスタム:色・角丸・列数などを CSS で調整し、ページの上下にお知らせや問い合わせ先を入れる
- テンプレートの差し替え:自社用の小さなアプリを作り、ページのレイアウトを丸ごと変える(見本のアプリを同梱しています)
管理画面から入力した HTML は安全のため無害化され、テンプレートとして実行されることはありません。
7. 導入方法
bench get-app https://github.com/lifegence/eventmeet
bench --site your-site install-app eventmeet
bench --site your-site migrate
Zoom、Google Meet、Stripe の設定手順と、公開ページのデザインの手順は、リポジトリの 日本語の README と 手順書 にまとめています。画面は日本語に対応しています。
動作の確認状況
すべての連携は、外部のサービスを模した自動テストで確認しています。実際のサービスでの確認状況は次のとおりです。
| 連携 | 実際のサービスでの確認 |
|---|---|
| Google Meet(社内ミーティング) | 確認済み:予定と Meet の作成、招待、出席と Gemini の要約の取り込み |
| Zoom(セミナー) | 確認済み(Zoom Pro):登録制ミーティングの作成・変更・削除、個別参加 URL、ホストとしての開始、出席の取り込み |
| Zoom ウェビナー | 未確認 |
| Stripe(有料チケット) | 未確認 |
Zoom をセミナーで使うには、Pro 以上の有料ライセンスが必要です(無料プランでは登録制の会議と参加記録を使えません)。
今後
- Zoom ウェビナーと Stripe の決済を、実際のサービスで確認します
- 会議ツールは差し替えられる作りになっています。自社で運用できる会議基盤(Jitsi や LiveKit など)への対応も検討していきます
当社はこのほかにも、Frappe / ERPNext の日本語訳 frappe_japanese_translations、多言語管理アプリ I18n Manager、チャットを参加者それぞれの言語で読める Frappe Chat Translate などを公開しています。
セミナーや会議の運営を ERPNext にまとめたい方へ。 導入のご相談や、自社の運営に合わせた設定・拡張のご依頼を承っています。お気軽にお問い合わせください。
この記事を書いた人