Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(俺的)超絶便利な自作ツールたちの紹介タイム
Search
Kotaro Inoue
March 22, 2025
0
16
(俺的)超絶便利な自作ツールたちの紹介タイム
2025/03/22 @ 情報科学若手の会 春の陣2025 #wakate2025s
Kotaro Inoue
March 22, 2025
Tweet
Share
More Decks by Kotaro Inoue
See All by Kotaro Inoue
A Hidden Pitfall of K8s DNS with Spring Webflux
musaprg
2
960
BuildKitの不可解な挙動とGoのFileModeの仕様
musaprg
2
280
準同型暗号処理で多用されるTrace-Type FunctionのAVX512による高速化
musaprg
0
260
完全準同型暗号の高速化に向けたハードウェア利活用に関する研究調査
musaprg
0
430
今日から始める(完全)準同型暗号の世界
musaprg
0
1.6k
GetEnvoyで始める快適Envoy生活
musaprg
0
440
CKKS方式準同型暗号におけるRescale演算のGPU実装と演算性能評価
musaprg
0
670
Shall we SHOJIN?
musaprg
0
120
ReLU6に関する検証
musaprg
0
960
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Automating Front-end Workflow
addyosmani
1370
200k
For a Future-Friendly Web
brad_frost
179
9.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Gamification - CAS2011
davidbonilla
81
5.4k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Transcript
(俺的)超絶便利な自作ツールたちの紹介タイム 2025/03/22 @ 情報科学若手の会 春の陣2025 #wakate2025s
お前誰 むさしん 趣味: OSS開発 / アニメ / 海外ドラマ / FPS
SNS: @musaprg
今日話すこと 2つのカテゴリの自作ツールを紹介します 1. オンライン英会話の自動予約 miscord-dev/rarejobctl 2. アニメ録画予約の自動化と監視 miscord-dev/annict-epgstation-connector miscord-dev/epgstation-exporter
カテゴリ1: オンライン英会話(レアジョブ)の自動予約 rarejobctl
モチベーション レアジョブの予約を毎回手動で行うのがそもそも面倒 よく予約するのを忘れて悲しい気持ちになる 習慣化のためにも、定期的に同じ時間帯に予約したい → 自動予約すればよくない?
自動予約機能 レアジョブにあるじゃん 追加課金で使える「あんしんパッケージ」に自動予約機能がある。 ただし、全員が使えるわけではなく、月8回プランと法人会員は使えない。どうして…
あんしんパッケージ 終了のお知らせ 頼みの綱の自動予約機能も巻き込まれて爆散 現在は公式で自動予約機能は提供されていない。
rarejobctl 2022年10月に誕生 Go製のCLIツール 講師予約をCLI経由で行えるツール 伝統的筋肉(Selenium WebDriver)で解決 たぶん最近だと適当にAI Agentに投げればど うにかなりそう(?)
Selenium WebDriverって何 Webブラウザを自動操作するためのRPCプロ トコル Webサイトの自動テストやスクレイピング (Webサイトからの情報抽出)に使われる
rarejobctl: できること 指定した講師・時間帯の自動予約 Discord/Slackへの通知 使用例 2025/03/27 9:30ぴったりに開始のレッスンを予約する。 $ rarejobctl -year
2025 -month 3 -day 27 -time "9:30" -margin 0
rarejobctl: CLIの実装手順 1. 気合いを入れる 2. Chrome DevToolsを使ってレアジョブの予約導線上に存在する関連要素のセレクタを収 集 3. GoのSelenium
WebDriver Client実装の tebeka/selenium を使って予約処理を実装 4. ついでにDiscord/Slack通知を実装 5. 完成
rarejobctl: 定期実行→GitHub Actions GitHub Actionsは、 schedule トリガーを用いて定期実行が可能 name: Reserve next
daily lesson on: schedule: - cron: "0 11 * * 0,1,2,3,4" # 日〜木曜日の20 時(JST) に実行、つまり平日のレッスンを各前日に予約 workflow_dispatch: jobs: reserve: runs-on: ubuntu-latest services: selenium: image: selenium/standalone-firefox-debug:3.141 container: image: ghcr.io/musaprg/rarejobctl:latest env: # ... steps: # ... - name: Reserve a next lesson env: TZ: "Asia/Tokyo" # Timezone is set to JST run: |
rarejobctl: 実際の使用感 予約の手間が省けて、予約忘れがなくなった 毎日同じ時間にレッスンが入るので、予定管理がしやすくなった 英語力も(ちょっぴり)上がった
カテゴリ2: アニメ録画の自動化 と監視 annict-epgstation-connector epgstation-exporter
アニメ録画自動化: モチベ 来期のアニメをチェックする際にいちいち予約をするのが面倒 録画予約をしていたと思ったら忘れてて1話を逃すという悲しい事故を防ぎたい
Annict アニメの視聴記録ができるWebサービス。アニメの視聴状況や評価を記録したり共有できる。 EPGStation 有名な録画管理ソフト。録画予約や録画済み番組の再生ができる。
annict-epgstation-connector Annictで「見てる」登録したアニメを取得 EPGStationに予約ルールを登録 annict-epgstation-connector \ --annict-api-token $ANNICT_API_TOKEN \ --epgstation-endpoint http://localhost:8888/api
sync
None
自動予約は実現したが... 予約が成功したかどうかが分からない タイトルをそのままクエリとして挿入しているためイレギュラーに対応できない 例えば、リコロイ版の新無印ポケットモンスターの場合 Annict側では「ポケットモンスター (2023)」として登録 実際の番組表では「ポケットモンスター【冒険の先に】[字][デ]」 当然予約に失敗する
epgstation-exporter EPGStationの録画状況をメトリクスとして出 力してくれるPrometheus Exporter
監視と通知 Grafana Cloudで監視 放送開始の3日前になっても、登録した録画ルールに番組が1件もマッチしない場合にア ラートを出す sum by (annict_work_id) ( (epgstation_rule_reserves
== bool 0 == 1) * on(rule_id) group_right annict_epgstation_connector_syncer_recording_rule_synced ) * on(annict_work_id) group_right label_replace( annict_epgstation_connector_syncer_annict_work_started_at - time() > 0, "annict_work_id", "$1", "id", "(.*)" ) / 60 / 60 / 24
アラート通知の例 小市民シリーズ 第2 期 の録画予約が正常に完了していません。 正しく録画されるよう手動でルールを追加してください。
使用感 見たいアニメを「見てる」に登録するだけで録画予約が(大抵の場合は)完了するので 楽 うまく動いてなかった場合もアラートの仕組みにより運用でカバー 困りどころ 配信サービスで同時配信されているアニメは正直録画する意味はない Annictでの配信サイト情報とかをもとに、地上波のみ放送のアニメや、独占配信系のも のだけを対象にする仕組みが欲しい
まとめ 技術的には単純でも日常を便利にするツールは価値がある 自分の「めんどくさい」を解決するためのツール作りは楽しい みんなもやろう!
Q&A