変更履歴と開発メモ
利用者向けの説明は README.md、個人情報の扱いは PRIVACY.md にあります。
伝助・デイコード・調整さんの出欠入力画面に、ヒヨリと同じ入力手段を追加します。
- フリカレから取り込む … 公開フリカレのURLから予定を読み、○△×を入れる
- Googleカレンダーから取り込む … iCal形式の非公開アドレスから予定を読み、○△×を入れる(予定名はどこにも送らない)
- テキストから取り込む … 「9/15 夜」「9/16 ○」のような行を読み取って入れる
- まとめて入力 … 曜日・空欄の日だけを指定して ○△× を一括で入れる。「◎を○に」のような記号の置き換えもできる
- 元に戻す … 直前の取り込み・まとめて入力・置き換えの前の状態に戻す
どれも画面上のボタンを押した状態にするだけで、伝助の「登録する」を押すまで保存されません。
「×の日以外を更新」(v1.0.0)
- フリカレと Google の取り込みに「×の日以外を更新」を足した。オンのときは、表で今 × になっている日(行けないと決めた日)に触らず、それ以外の日を更新する。「入力済みの日はそのまま」と同時にオンなら、入力済みの日はすべて残る
- 設定はフリカレと Google で共通(keepNg)。調整さんは最初から全部 × なので出さない
ヒヨリでも Googleカレンダーから入れる(v0.11.0)
ヒヨリの参加者ページの「取り込む」に「Google」タブを足した。ヒヨリのサイトは iCal のアドレスも予定も持たない。
- ボタンはヒヨリのページにあるが、押したときの処理はこの拡張機能(hiyori.js)が行う。拡張が入っていると
<html data-hiyori-assist> を付けて知らせ、ページはボタンを出す。入っていなければ案内文だけ出る
- 予定は background.js が Google から直接読み、hiyori.js が「ふだんの都合」と重ねて 全・昼・夜・× に直し、ページの表のボタンを押す(手で押したのと同じ)。サーバーに届くのは「保存する」を押したときの表の答えだけ。ヒヨリのテキスト取り込み(サーバーで読む)は通らない
- 仮の予定(△)がある日は、ヒヨリに△が無いので入れない。過ぎた日も入れない。「入力済みの日はそのまま」も選べる
- アドレスは拡張の設定画面(options.html。ヒヨリの「アドレスの設定」か、chrome://extensions の「拡張機能のオプション」から開く)で登録する。伝助などのパネルで登録したものと共通
- 判定の時間帯は昼13-18時・夜19-24時
Googleカレンダーから取り込む(v0.10.0)
取り込み元に「Google」を足した(フリカレ/Google/テキスト)。GAS の「Googleカレンダー ○×テキスト」を各自で組み立てなくても、拡張機能だけで読める。
- 使うのは Googleカレンダーの「iCal形式の非公開アドレス」(設定 → 自分のカレンダー → カレンダーの統合)。一度貼れば覚える
- カレンダーは5つまで足せる(「+ カレンダーを増やす」)。重ねて判定し、どれかに予定があれば埋まっている。読めなかったカレンダーがあっても、読めた分で入れて結果に知らせる
- 「フリカレの予定も重ねる」をオンにすると、フリカレの欄のURLも一緒に読んで1回で判定する(v0.10.2)。フリカレの記号(×・昼×・夜△など)を、その時間帯(昼13-18時/夜19-24時)の「埋まっている/仮」の時刻に直して Google の予定に足す。ふだんの都合は最後の判定で一度だけ効かせる。フリカレの読み込み制限(1回3か月・1分に1回など)はそのまま効き、読めなかったときは Google の分だけで入れて結果に知らせる
- 予定はヒヨリのサーバーを通らない。 background.js が Google から直接読み(
calendar.google.com/calendar/ical/* だけ許可)、その場で日ごとの「埋まっている時刻」「仮の時刻」に直す。予定名は background.js の外に出さない。読んだ本文はメモリに10分置くだけで保存しない
- アドレスは予定を読める鍵なので、入力欄は伏せ字にし、拡張の保存領域(chrome.storage.local)にだけ置く
- 判定は GAS と同じ形の文(
2026/10/14(水) 昼× 夜○ |×10:00-12:00)を作り、テキスト取り込みと同じ処理(候補の時刻と重なるかで ○△×)に渡す
- 「△にする語」「数えない語」は予定名に含まれる語で決める(初期値は △=仮, 未定)。Googleで「予定なし(空き時間)」にした予定と、キャンセルされた予定は数えない
- 「入力済みの日はそのまま」「本日以降の予定を更新」はフリカレと同じ設定を使う
- 同じアドレスを読みに行くのは30秒に1回まで
注意
- Google側の反映に数時間かかることがある(非公開アドレスの仕様)
- 会社・学校のアカウントでは、管理者が非公開アドレスを止めていることがある
- 繰り返しの予定は 毎日/毎週(曜日指定)/毎月/毎年、回数・終了日・除外日・個別変更に対応。「第2火曜」のような指定は最初の日付で近似する
- タイムゾーンは日本時間を前提にしている(UTC表記と Asia/Tokyo は正しく読む)
フリカレの読み込み制限(v0.9.1)
フリカレのサーバーに負担をかけないよう、読みに行く量とタイミングを絞った。ヒヨリ本体(app/sched/freecal.mjs)も同じ考え方。
| 決まり |
拡張機能 |
ヒヨリ本体 |
| 数え方 |
フリカレに問い合わせた月の数(1か月=1回の通信) |
同じ |
| 同じ月の使い回し |
1時間(月ごと) |
4時間(月ごと) |
| 1回に読む月 |
3か月まで(残りは読まず、判断しない月として返す) |
同じ |
| 同じカレンダーの間隔 |
1分に1回 |
同じ |
| 1カレンダーの1日の上限 |
12か月分 |
同じ |
| 全体の1日の上限 |
36か月分(この拡張) |
600か月分(全利用者の合計) |
| エラーが返ったとき |
30分止める |
30分止める(全員分) |
| 月ごとの間隔 |
1秒 |
1秒 |
| 同時に押したとき |
1回にまとめる |
同じ |
- 回数は本体ではDB(freecal_usage)に残すので、再起動しても0に戻らない。拡張は chrome.storage.local に残す
- 読まなかった月は、取り込み結果に「◯月は今回は読んでいません」と出る。1分おいてもう一度押すと、使い回しの月はそのままに続きの月を読む
伝助の新規作成で候補日程を作る(v0.9.0)
伝助の「イベント新規作成」(/event)の候補日程の欄の上に「候補日程アシスト」を出す(create.js)。最初はたたんだボタンで、押すとひらく。
- まとめて作る … 期間・曜日(平日/土日の一括選択あり)から「11/14(金) 21:00~」の行を作る。時刻は平日と土日祝で分けられる。「祝日は土日と同じに扱う」がオンなら、土日を選んだときに祝日も入り、時刻も土日祝のものになる。「下に足す」と「入れ替える」がある
- ヒヨリから … ヒヨリの日程調整のURL(参加用・管理用どちらでも)から候補日、または確定日だけを写す。時刻は「まとめて作る」の設定を使う。イベント名が空なら題名も入れる(background.js が /api/sched/events/:key を読む)
- 整理する … 日付順に並べ替えて同じ行を消す。自分のフリカレで予定が埋まっている日を消す(17時より前は昼、以降は夜で判断。時刻の無い行は昼夜どちらかが空いていれば残す。要確認・非公開の月は残す)
- どれも欄の文字を書き換えるだけで、直前の1回は「元に戻す」で戻せる
- 設定は出欠入力側とは別に
createSettings に覚える。フリカレのURLと「ふだんの都合」は出欠入力側の設定を読む
- 伝助の
www.densuke.biz でも出欠入力の補助が動くようにした
まとめて入力の見た目をヒヨリ本体に合わせた(v0.8.2)
- 曜日は7つを同じ幅で1列に並べ、文字そのものを押して選ぶ。「平日」「土日」は見出しの右に小さく置いた
- 「空欄の日だけに入れる」は押して切り替えるボタンにした(入っているときは淡い色に ✓)
- ○△×・空欄に戻す・長押しで全部消すを、曜日と同じ高さで横いっぱいに並べた。「置き換える」はその下
- パネルの色(文字・背景・枠・押すボタン)をヒヨリ本体の青系に合わせた。○△×などの記号の色は、各サービスに合わせたまま
- 「置き換える」の行は、選んでいる記号の色を選ぶ欄に付けた(変えるたびに色も変わる)。アイコンも青に
- フリカレ取り込みに「本日以降の予定を更新」を追加(初期値オン、設定は覚える)。オンのときは今日より前の候補に触らず、取りに行く月も今月以降だけにする
- テキスト取り込みにも「本日以降の予定を更新」を追加(フリカレとは別に覚える。初期値オン)。オンのときは過ぎた日付の行を入れない
- デイコードでは外部サービスへの誘導が禁止のため、ヒヨリのロゴと「ヒヨリで日程調整を作る」を出さない(見出しは「日程入力アシスト」の文字だけ)
- デイコードでは色・角の丸み・影をデイコード(Bulma)に寄せる(
theme: 'daycode')
- たたんだときは幅の狭い1つのボタンになり、どこを押してもひらく
- デイコードではボタン・文字の大きさもデイコードの小さいボタン(高さ30px・12px)に合わせ、パネル幅も最大440pxに細くした
拡張のIDを固定した(v0.8.2)
- 置き場所を
Documents\GitHub\hiyori-assist に移した。読み込み直しのときは chrome://extensions の「パッケージ化されていない拡張機能を読み込む」でこのフォルダを選ぶ
- manifest.json に
key を入れたので、フォルダを動かしてもIDは henlcnamdggcacdjjojpnekegpnpabbj のまま変わらず、保存した設定も消えない
- Chromeウェブストアに出すときは
key を消してから提出する(ストアが自前のIDを付ける)
パネルの置き場所の修正(v0.8.1)
- 参加者が多い伝助で、パネルが表の上に出てしまっていたのを、表の右に戻しました
- 原因:参加者が多いと、表を包む箱(#regdiv)が画面の幅いっぱいに広がる。箱の右端で余白を測っていたため「右に置く場所が無い」と判断していた
- 対処:箱の中の表の右端で測るようにした。箱が表より狭く横スクロールしているときは、箱の右端を使う
予定の時刻つきテキスト(v0.8.0)
Googleカレンダー ○×テキスト(GAS)が、日ごとの行の後ろに埋まっている時刻を出すようになった。
昼 13-18時 / 夜 19-24時 ○空き ×不可 △要確認 |のあとは埋まっている時刻(×予定 △仮)
2026/09/17(木) 昼× 夜△ |×10:00-12:00 △19:30-21:00
2026/09/18(金) 昼○ 夜○ |なし
2026/10/06(火) 昼× 夜× |×終日
読みやすさ(v0.7.1)
- 文字をひと回り大きく(本文 13→14.5px、小さい字 11〜12px → 12.5〜13.5px)。パネル幅も最大 540px に
- 説明の文を減らした(URLの保存先の注記、まとめて入力の注記、設定の要約、ふだんの都合の補足)
調整さん対応・いつものコメント(v0.7.0)
- 調整さん(
chouseisan.com/s?h=…)に対応。入力欄は「出欠を入力する」や名前のリンクを押したときに下に作られるので、
出てきたらパネルを出し、消えたら片付け、別の人の入力に切り替わったら作り直す
- 調整さんには記号の設定が無く、最初から全部×(未入力の状態が無い)。そのため「空欄の日だけ」「入力済みの日はそのまま」「空欄に戻す」は出さず、長押しは「全部×に」
- 札の押し方は調整さん自身の処理に任せる(値は 1=○ 2=△ 3=×)
- 設定に「いつもの一言コメント」を追加。コメント欄が空なら、ページ(調整さんは入力欄)を開いたときに自動で入れる。書いてあるコメントは消さない。「入れる」で今すぐ上書きもできる
- 入れる先: 伝助
membercomment/デイコード #comment/調整さん hitokoto
- 拡張機能のフォルダ名を
hiyori-assist に変更
対応サービス(v0.6.0)
| サービス |
開くページ |
登録ボタン |
| 伝助 |
名前を押した入力画面/新規追加の画面 |
登録する |
| デイコード |
個人日程入力ページ(/schedule/input?key=…&userId=…) |
日程登録 |
| 調整さん |
イベントページで「出欠を入力する」または名前を押したとき |
入力する |
- サービスごとの違い(候補の読み方・記号の読み方・押し方・パネルの置き場所)は
content.js 冒頭の SITES にまとめてある
- デイコードは記号のテンプレート(○△ / ◎○△ / ○ / ○①②③ / 全昼夜 / 自由入力)を作成者が変えられる。
記号は文字ではなく札の色(BEST / OK / CONDITIONALLY / CONDITIONALLY_PLUS / NG)で値を決め、画面に出ている文字をそのまま入れ分けに使う
- デイコードでは札のクリックをデイコード自身の処理に任せるので、「移動するとデータは保存されません」の警告もいつもどおり出る
- 入れ分けは「サービス・ページ・記号の組み合わせ」ごとに保存。テンプレートが変わったら、その組み合わせで最後に使った入れ分け(無ければ初期値)になる
- 入れ分けの初期値
- 全昼夜: 全日○→全 昼だけ○→昼 夜だけ○→夜 △→入れない 昼か夜×→入れない 全日×→×
- ◎○△: 伝助の ◎○△× と同じ
- ○△ や ○: 全日○→○ 昼だけ・夜だけ→△(無ければ○) △→△ 昼か夜×→△(無ければ×) 全日×→×
- 読めない記号だけ(①②③ など): 並び順で先頭を全日、2番目を昼だけ・夜だけに
ヒヨリへの案内(v0.5.0)
- パネル左上をヒヨリのロゴ(マーク+文字)に。押すとヒヨリのページ(https://macchan.onrender.com/sched/ )が新しいタブで開く
- パネル下に「ヒヨリで日程調整を作る ↗」を一行だけ
- 拡張機能のアイコンをヒヨリのファビコンと同じ絵(ティールの角丸にマークを白抜き)に。ツールバーのアイコンを押してもヒヨリのページが開く
- ロゴの絵は sched.html の LOGO_FULL と同じ。元絵を差し替えたら content.js の LOGO_FULL と icons/ も作り直す
画面(v0.4.0)
emilkowalski/skills の考え方を参考に整理しました。
- よく使う操作を上に、たまにしか触らない「判定の設定」(ふだんの都合・記号の入れ分け)は折りたたみに
- フリカレ/テキストは切り替えタブにして、パネルの縦の長さを抑えた
- 上部に表の集計(◎○△×・空欄の件数)。伝助の表を手で押しても数え直す
- 結果はパネル下のトーストで表示し、その場で「元に戻す」を押せる
- 曜日はボタン式にし、「平日」「土日」をワンタッチで選べる
- 「全部消す」は長押し(1.2秒)。取り消しもできるので確認ダイアログは出さない
- 押した瞬間に少し縮む(scale 0.97 / 160ms)、動きは transform と opacity のみ・300ms 以内、ホバーの変化はマウス環境のみ、動きを減らす設定では移動のアニメーションを止める
入れ方(開発者モード)
- zip を展開する
- Chrome で
chrome://extensions を開き、右上の「デベロッパーモード」をオンにする
- 「パッケージ化されていない拡張機能を読み込む」で、展開したフォルダを選ぶ
- 伝助の出欠入力画面(名前をクリックした画面/新規追加の画面)を開くと、入力表の右にパネルが出ます
(画面の幅が足りないときは表の上。右に出たパネルはスクロールしても付いてきます)
更新したときは chrome://extensions でこの拡張機能の再読み込みボタンを押してから、伝助のページを開き直してください。
判定のしかた
- 判定ロジックはヒヨリ本体の
app/sched/availability.mjs をそのまま移植(availability.js)
- 判定結果を6つの区分に分け、区分ごとにどの記号を入れるかをパネルの「記号の入れ分け」で選べる
- 全日○ / 昼だけ○ / 夜だけ○ / △(不明・△と書いた) / 昼か夜×(片方×・片方不明) / 全日×
- 「入れない」を選ぶと、その区分の日は触らない
- 初期値(◎○△×の伝助): 全日○→◎ 昼だけ○→○ 夜だけ○→○ △→△ 昼か夜×→△ 全日×→×
- 初期値(○△×の伝助): 全日○→○ 昼だけ○→△ 夜だけ○→△ △→△ 昼か夜×→△ 全日×→×
- 伝助のページごとに保存。初めて開くページには、同じ記号の組み合わせで最後に使った入れ分けを使う
- 「ふだんの都合で昼の予定を上書き」(初期値オン): ふだんの都合を上限として重ねる。例:「平日の昼は仕事」なら、平日の「昼○ 夜○」は「昼× 夜○」=夜だけ○として入れる
- 候補名に「昼」「夜」「19:00」などが書いてあれば、その時間帯だけで判定
- 年の無い候補日(9/15 など)は、ページ下の「作成日時」を基準に年を補う
- 祝日は Google の公開カレンダーから取得(取れなければ土日のみ)
フリカレ取得のマナー
- 「取り込む」を押したときだけ取得。定期取得はしない
- 同じ月は30分キャッシュ、1カレンダーあたり1日10回まで
- 読み取り専用。フリカレのURLはこのブラウザの中にだけ保存
ファイル
| ファイル |
役割 |
| manifest.json |
拡張機能の設定(Manifest V3) |
| content.js |
伝助の画面にパネルを出し、○△×を操作する |
| availability.js |
空き状況の判定(ヒヨリ本体と共通) |
| create.js |
伝助の新規作成画面の候補日程アシスト |
| hiyori.js |
ヒヨリの参加者ページで Googleカレンダーから表に入れる |
| options.html / options.js |
設定画面(Googleカレンダーのアドレス・語) |
| ics.js |
Googleカレンダー(iCal)の読み解きと繰り返しの展開(background.js が読み込む) |
| background.js |
フリカレと祝日の取得 |