このフォルダは、奥武蔵マウンテンバイク友の会の活動の記録を残し、会のカレンダーを管理するための保管庫です。 プログラムやインターネットの仕組みの知識がなくても、ここに「何が・なぜ入っているか」が分かるように書いてあります。
会の活動は、これまで会のブログ(okumusashimtb.wixsite.com/omcweb)に 「お知らせ」と「報告」として書き続けてきました。このフォルダは、その活動の情報をもとに 2 つのことをしています。
-
活動の記録を、将来にわたって手元に残す。 ブログのサービス(Wix)がいつか使えなくなっても、これまでの活動の文章・写真のありか・日付が 会の手元のデータとして残るようにしています。
-
会のウェブサイトと Google カレンダーを、この記録からつくる。 活動の記録と写真から、会のウェブサイト(tecolicom.github.io/OMC/)を 公開しています。活動は会の Google カレンダー(
okumusashi.mtb@gmail.com)にも登録し、 このカレンダーはウェブサイトや「街てこり」(city.tecoli.com)の会のページに表示しています。
つまり、「ブログに書いた活動」→「会の記録」→「ウェブサイト・カレンダー」 という流れを支える場所です。
会のブログ (Wix) このフォルダ (OMC) 外に見せるもの
───────────── ────────────────── ───────────────
お知らせ / 報告 ──①──▶ 活動の記録・記事・写真の控え ──②──▶ 会のウェブサイト
(文章・写真) + ウェブサイトのソース (site/) │ tecolicom.github.io/OMC/
└──▶ 会の Google カレンダー
└─▶ city.tecoli.com の会のページ
- ① ブログの記事を読み取って、活動ごとの記録・記事の控え・写真としてここに整理して保存します。
- ② その記録から、会のウェブサイトを組み立てて公開し、会の Google カレンダーに予定を登録します。 カレンダーはウェブサイトにも表示されます。
この①②は**自動で行う道具(プログラム)**が用意されていて、担当者が動かすと最新の状態に更新されます (動かし方は末尾の「維持担当者向け」を参照)。
おおまかに、次のものが入っています(細かいファイルは気にしなくて大丈夫です)。
| 場所 | 中身 | ひとことで言うと |
|---|---|---|
calendar/events/ |
活動ごとの記録(年ごとのフォルダ、1 活動 1 ファイル) | いつ・何の活動をしたかの一覧(2017〜2026年) |
calendar/sources/blog/ |
ブログ記事を 1 本ずつ控えたもの(本文・写真のリンク・記事のリンク) | ブログ全記事の控え(約 360 本)。将来の引っ越し用の保全 |
calendar/snapshots/ |
Google カレンダーに登録した内容の控え | カレンダーのバックアップ |
calendar/bin/ |
①②を行う道具(プログラム) | 更新を実行する道具(担当者が使う) |
site/ |
会のウェブサイト(tecolicom.github.io/OMC/)のソース | 公開サイトの中身(活動一覧・写真・カレンダー) |
idea.yaml |
会の基本情報(名前・公式サイト・カレンダーの場所) | 会のプロフィール |
docs/ |
設計や作業のメモ | 作った人向けの記録 |
1 つの活動は、こんな内容で記録されています(日付・活動名・関連するブログ記事へのリンクなど)。
活動名:名栗じてんしゃ広場定期作業
日付:2025-08-03
関連記事:
- お知らせ(事前の案内)→ ブログ記事へのリンク
- 報告(活動のようす)→ ブログ記事へのリンク
- 写真:ブログに載せた写真のありか
「お知らせ」と「報告」のように同じ活動の複数の記事は、1 つの活動にまとめて記録しています。
- 会のウェブサイト(tecolicom.github.io/OMC/)で、これまでの活動を
写真つきで公開しています。トップには今後の予定(会の Google カレンダー)も表示しています。
中身は
site/のソースから作られ、mainに反映すると自動で公開されます(詳しくはsite/README.md)。 - 会の Google カレンダー(
okumusashi.mtb@gmail.com)には、ここの記録から過去の活動が登録済みです。 今後の新しい活動も、ブログに書いて担当者が更新すれば、同じように追加されます。 - 街てこり(city.tecoli.com) にも会のページ
https://city.tecoli.com/ideas/okumusashi-mtb/があり、 上記カレンダーの今後の予定が表示されます(過去の予定はカレンダーアプリ側で見られます)。 - すでにカレンダーに手で入れていた予定は、タイトルと時間はそのまま残し、説明(ブログ本文や記事リンク)だけを 足しています。会とは別の団体の予定(同じ日に入っていたもの)は触っていません。
- このフォルダ自体は「記録と道具の置き場」です。普段ブログを書く分には、ここを触る必要はありません。
- 「カレンダーやウェブサイトに最新の活動を反映したい」ときは、維持担当者が下記の道具を動かします。
- 技術的なことが分かる人が変わるときは、この README と
docs/、各道具の説明を引き継いでください。
ここから先は、実際に更新作業を行う担当者向けです。コマンド操作(ターミナル)と Python が必要です。
| 道具 | 役割 |
|---|---|
cal-omc-blog-fetch |
ブログの RSS(最新分) から活動記録を作る |
cal-omc-archive-fetch |
ブログの 全記事(サイトマップ経由) から活動記録・記事控え(sources/blog/)を作る |
dedupe-chrome-images |
記事控えの写真から、全ページ共通のサムネ(会と無関係な画像)を除く |
cal-omc |
活動記録を Google カレンダーへ反映(既定は確認のみ=書き込まない。--apply で実反映) |
omc_parse.py / omc_project.py |
上記が使う内部処理(直接は実行しない) |
リポジトリ直下で make を使います。make help で一覧が出ます。
make help # できる操作の一覧を表示
make update # ブログから活動記録を更新(全記事+写真の整理)
make calendar # カレンダー反映の「確認」だけ(書き込まない)
make calendar-apply # カレンダーへ実際に反映する
make test # 動作テスト
make push # 変更を GitHub に送る(コミットは別途)
# 年を絞る例: make calendar-apply YEAR=2025通常は make update → make calendar(確認)→ make calendar-apply の順です。
site/ は Astro 製の静的サイト。calendar/ のデータと取り込み済みの写真からページを生成します。
Node は nodenv 管理で .node-version(22.22.2、Astro 7 は Node ≥22.12 が必要)。
make site-dev # ローカルで表示を確認(http://localhost:4321/OMC/)
make site-build # 本番ビルド(site/dist/ に出力)
make site-photos # 不足している写真をブログから取り込むmain に push すると GitHub Actions(.github/workflows/deploy-site.yml)が自動でビルドし、
GitHub Pages(https://tecolicom.github.io/OMC/)に公開します。詳しくは site/README.md。
- Google カレンダーへの書き込みには、サービスアカウントの鍵(
~/.config/omc/sa.json)と、 カレンダーをそのアカウントに「予定の変更」権限で共有しておくことが必要です。 cal-omcは iCalUID(omc-<日付>@okumusashi-mtb) で重複を防ぐので、何度実行しても予定は二重になりません。- ウェブサイト(city.tecoli.com)への会の登録は、city.tecoli.com の管理画面で行います (このフォルダから city.tecoli.com 側のファイルは触りません)。
詳しい設計は docs/superpowers/specs/ と docs/superpowers/plans/ にあります。