-
研究室のミーティング関係の自動化ツール
- 議事録テンプレートの生成(MinutesTemplateGenerator)
- 議事録の Wiki ページ作成やメール送信(MinutesSender)
- ミーティングのメールリマインダー(MailReminder)
-
これは主に
golangで書かれており,GitLab の Pipeline で 3.メールリマインダーに関しては動作している -
もし仮に GitLab が動作しなくなった場合は, タグ
1.1.1に checkout し,mozart のcrontabで動作させる.- 詳しいことは当時の
README.md参照
- 詳しいことは当時の
目次
[[TOC]]
バイナリ とはダウンロード可能なバイナリのことである.
これはリリースノートのページからダウンロード可能である.
これにより,OS に依存せず実行可能である.
尚,Windows の場合は拡張子を .exe に手動で改名すること.
config フォルダの中身を管理しているリポジトリである.
必要なデータは以下の通り.
*.csv:executive_mail.csvなどのミーティングの予定を書いたファイル.env: 動作させる為の設定ファイル
(どうしても分からない場合は,本リポジトリのCI/CD>変数にも設定してあるので確認)
-
必ず
config/.envを作成すること- 今後述べるコマンドは全てこのファイルに依存して動作する
- GitLab の Pipeline の場合は設定された環境変数が優先されるので基本的に使わない
-
必ずディレクトリ構造を保つこと
congigは勿論,outも
-
以下の 3 つが可能である
-
ここでは必要なディレクトリ構造等の環境の用意を行う
-
Git を使わない場合 (詳しくはクリック)
-
適当なフォルダを作る (
LabMeetingフォルダと仮定する) -
バイナリをリリースノートからダウンロードし,
LabMeetingフォルダに置く- リリースノートは 「プロジェクトの概要 > リリース」 にある
-
LabMeetingフォルダにconfigフォルダとoutフォルダを作成 -
configフォルダに*_mail.csv,*_mail_zoom.csv,*_calendar.csv,.envを置く -
(バイナリのファイル名) の準備
- Linux 等の場合は,実行権限を
chmod 700 (バイナリのファイル名)で与える - Windows の場合は,
(バイナリのファイル名)を.exeで終わる形に変更し,コマンドプロンプト等から実行可能にする
- Linux 等の場合は,実行権限を
-
-
Git を使う場合 (詳しくはクリック)
-
下記のコマンドで環境を用意
# GitLab版 git clone https://gitlab.if.t.u-tokyo.ac.jp/MitaLab/LabMeeting.git # デフォルト git clone git@gitlab.if.t.u-tokyo.ac.jp:MitaLab/LabMeeting.git # GitLabとSSH通信可能な人用 # GitHub版 git clone https://github.com/miya789/MailSystem.git # デフォルト git clone git@github.com:miya789/MailSystem.git # GitHubとSSH通信可能な人用
-
下記コマンドで
configディレクトリにおいて設定を読み込むcd config # config ディレクトリに移動 git init # config ディレクトリを git で別管理 git remote add origin git@gitlab.if.t.u-tokyo.ac.jp:MitaLab/LabMeeting_config.git # config ディレクトリが参照する remote を設定 git pull origin master # config ディレクトリを remote に同期
-
-
主に名前やメールアドレス等の以下項目を変更する
-
既に
.env.sampleがあるのでこれを参考にすること -
個人情報を含む為,これを読み込んで実行ファイルは動く
- 因みに GitLab の Pipeline はこれではなく,環境変数を優先して参照する
種類 変数名 用途 ミーティングの設定 WIKI_TEMPLATE_MEMBERS Wiki のテンプレに書く全メンバー (メンバーが変わる度に変更) ミーティングの設定 REDMINE_API_KEY READMINE にアクセスする為の API トークン (API トークンの持ち主が卒業する度に変更,失効すると動かない可能性あり) 個人の設定 ME_EMAIL 使用するユーザーのメールアドレス 個人の設定 ME_NAME_JP 使用するユーザーの名前の日本語表記 e.g.) "宮澤" 個人の設定 ME_NAME_EN 使用するユーザーの名前の英語表記 e.g.) "Miyazawa" 個人の設定 ME_GRADE 使用するユーザーの学年 追加の設定(Proxy) PROXY_URL プロキシ越しでアクセス 追加の設定(SSL) ME_MAIL_ID メールで SSL を使用 追加の設定(SSL) ME_MAIL_PASS メールで SSL を使用
- オプションの使い方は,何も指定せずに実行して表示されるメッセージ等を参考に
- Windows の場合は,コマンドプロンプト等から実行可能
-
以下コマンドで呼び出し可能
# go をインストールしている場合 go run main.go -cmd 0 # go をインストールしていない場合 ./(バイナリファイル名) -cmd 0 # 串 を挟む場合 go run main.go -cmd 0 -p
-
-pで.envに設定した串経由でアクセス可能
-
以下コマンドで呼び出し可能
# go をインストールしている場合 go run main.go -cmd 1 # go をインストールしていない場合 ./(バイナリファイル名) -cmd 1
-
その後の手順は対話型で誘導されるので従うこと
-
ミーティング内容を更新する場合は config リポジトリに,後述の csv ファイル を
commitしておく-
形式は MeetingCsvGenerator の
README.mdも参考になる- 別のプログラム(MeetingCsvGenerator)で作成可能である
-
決まった直後に行うと,忘れずにできて良い
-
各項目に関して詳しくはこちらをクリック
-
各ミーティング日程は,半角スペース区切りで
yy/mm/dd,開始時刻,場所,内容と入力yy/mm/dd: 日付.月と日それぞれ 2 文字ずつ(0 埋め)入力- e.g.) 2020/03/07、2020/12/05、2020/10/14
開始時刻: そのまま:区切りで入力- e.g. 10:00、09:30
場所: 基本的には以下の候補いずれかを「そのまま」使用113114128VDEC306VDEC402Bldg13- 英語表記と日本語表記の文字列を生成する為のキーワード
Zoomの場合は自動で外部ファイルexecutive_mail_zoom.csvを読み込む- これ以外の文字列の場合,書いたものがそのまま日本語でも英語でも使われるが, pkg/lab_mail/meeting_place.go の該当箇所を加筆すれば同様に使用可能
内容: 内容
-
例:
Executive meetingの場合-
executive_mail.csvStart Date,Start Time,Location,Subject 2021/03/01,10:00,114,Executive meeting 2021/03/08,10:00,Zoom,Executive meeting
-
executive_mail_zoom.csvStart Date,Start Time,URL,Password 2021/03/08,10:00,https://zoom.us/j/<ID>?pwd=<ENCODED_PASS>,<PASS>
-
-
-
-
-
こうすることで,config リポジトリの内容に従い,後は勝手に GitLab の
schedulesステージの Pipeline が勝手にやってくれる-
尚,送信に失敗した場合は GitLab の
schedulesステージの Pipeline を確認し,最悪の場合は自分でメールを書いて送信して対処 -
設定を変える場合は, CI/CD>変数 を変更
- GitLab の Pipeline の場合は設定された環境変数が優先されるので基本的に使わない
MAIL_REMINDER_ACCESS_TOKENはGitLab-Runnerアカウントのアクセストークンである- これを用いて config リポジトリを clone しているので,間違って削除しないように注意すること
-
-
普段は使わないが,以下コマンドで呼び出し可能
# go をインストールしている場合 go run main.go -cmd 2 -mtg (1もしくは2) # go をインストールしていない場合(恐らくその場合は使わない) ./(バイナリファイル名) -cmd 2 -mtg (1もしくは2)
- (そんなものはない)
- ミーティングの予定を決まった形式で, config リポジトリ( remote )に
commitさえおけば問題無い筈…… - config リポジトリ 内の
.envの変更は忘れずに- 特に
REDMINE_API_KEY
- 特に
- 基本的に変更するのは
.envのみだが,中身の詳細が知りたい人向け
- (・)は Git 管理外
- 尚,主に
main.go->lab_cmd/*.go->pkg/*の順で呼ばれている
.
├── config # 設定ファイル置き場,基本的にここしか弄らない
│ ├── (.env)
│ ├── .env.sample # .env のサンプル
│ ├── (executive_calendar.csv) # ミーティングの Google カレンダーインポート用 csv
│ ├── (executive_mail.csv) # ミーティングのメールリマインダー用 csv
│ ├── (executive_mail_zoom.csv) # ミーティングのメールリマインダーで Zoom URL ,PASS を読み込む用の csv
│ ├── (teamMEMS_calendar.csv)
│ ├── (teamMEMS_mail.csv)
│ └── (teamMEMS_mail_zoom.csv)
├── lab_cmd # 実行ファイルに呼ばれる3種類のコマンドファイル
│ ├── mail_reminder.go
│ ├── minutes.go
│ └── send_minutes.go
├── main.go # 実行ファイル
├── out # 出力したテンプレートの出力先
└── pkg # 各機能毎に分けたパッケージ類
├── lab_flag
│ ├── flag.go
│ └── flag_test.go
├── lab_mail
│ ├── address.go
│ ├── meeting_place.go
│ ├── meeting_place_test.go
│ ├── message.go
│ └── send_mail.go
├── meeting_type
│ └── meeting_type.go
├── memswiki
│ ├── digest.go
│ └── memswiki.go
├── redmine
│ └── redmine.go
└── schedule
├── config.go
├── read.go
├── weekday.go
└── weekday_test.go