はじめに
この記事は新歓ブログリレー2026 42日目の記事です
導入
n3です。新歓ブログリレーの担当をしています。
新歓ブログリレーでは、毎日誰かが新入生向けのブログを書いています。参加は自己申告制で、部内wikiの担当表に名前を書き込むだけです。

しかし、人間は数週間後に入れた予定を忘れるものです。期限が近くなってきたらその人をメンションしてやる必要があります。ですが、僕が毎朝8時に起きて担当表を見て当日の担当者をメンションして...なんてするのは面倒です。そもそも僕はそんなに早起きできません。
そこで、担当表の情報を自動で読み取って、対象者をメンションするBOTを作成しました。
そもそも、このようなBOTを作るのは例年行われていることです。詳しくは以下の記事をご覧ください。
H1rono_K さん:https://trap.jp/post/1992/
Hueter さん:https://trap.jp/post/2193/, https://trap.jp/post/2445/
これらの方が、僕のブログよりも役に立つ情報が詰まってます。見に行ってください。
作成の流れ
- cp20 さんによるテンプレートをインポートする
- crowiという部内wikiのAPIを登録する
- 必要な機能を実装する
- NeoShowcaseに載せる
だいたいこんな流れです。知らない知識は気合いとバイブコーディングでなんとかなります。
テンプレートの導入
@cp20 さんというすごい人が、BOTを簡単に制作できるテンプレートを作っています。これです。このブログの1億倍ぐらい有用です。今すぐ見に行ってください。
crowiの利用
部内wikiにはAPIがあります。適当にアクセストークンを取得すれば何とかなります。

必要な機能の実装
wikiはHTMLが使えるマークダウンで書かれています。そこで、日程表の最初に特定のコメントアウトを入れることで、それ以下の部分を担当表のデータとして取得します。

あとは行ごとに文字列を取得して、| で値を区切ります。そのデータを配列で持ちながら、適当に検索すれば実装完了です。要件定義してGeminiに書いてもらいましょう。
NeoShowcaseへの移行
ここはしーぴーさんのブログのやり方だとうまく行かなかったので、Geminiを叩きました。
以下は解決方法です。
- 自動ではなくDokcerfileで設定する。以下の内容の
Dokcerfile(拡張子無し)をindex.tsとかと同じ場所に置くする。
# ベースイメージとしてBunの公式イメージを使用
FROM oven/bun:1
# 作業ディレクトリを指定
WORKDIR /app
# パッケージの依存関係ファイルをコピーしてインストール
COPY package.json bun.lock ./
RUN bun install
# プロジェクトのソースコードをすべてコピー
COPY . .
# アプリケーションの起動コマンド
CMD ["bun", "run", "index.ts"]
- Dokcerfile Name は
Dokcerfileにする。 - デプロイに成功したら、アプリを停止して、アプリを再起動する。Restart だけだとうまくいかない。

完成品
いい感じにMDの形式に整理します。下みたいな感じにしました。これは前年に作成されたものを参考にしています。

いかがでしたか?
いつもより雑なブログでした。
これを参考にブログリレーBOTを作る人がいるかも知れないです。とりあえず、「cpさんのパッケージを使えばなんとかなる」ということだけ覚えておけば何とかなります。ちなみにPythonとか他の言語を使ってBOTを使っている人もいます。
競プロしかしていない人間ですが、BOTは作れます。好きなBOTを作成してみてください。
明日の担当は @nemlos5 さんです。