🏭

「調整さん 日付×時刻 直積集合 ジェネレータ」を作った話

に公開

解決したい問題

オンライン上で日程調整をできる調整さんというサービスがあります。
主催者が候補日時を入力し、イベントページのURLを参加者に送付します。それを元に、参加者が候補日時の参加可否を入力する仕様になっています。

みんなで集まり、ご飯を食べるケースを想像してください。
予定が合うなら、お昼ご飯でも夜ご飯でも構わないとします。
すると、主催者は下記のように候補日を入力しなければなりません。

1月1日(日) 12:00~
1月1日(月) 18:00~
1月2日(日) 12:00~
1月2日(月) 18:00~
1月3日(日) 12:00~
1月3日(月) 18:00~
...

同じ時間を何度も入力する必要があり、面倒だと思いませんか?

作ったもの

そこで、「調整さん 日付×時刻 直積集合 ジェネレータ」を作りました。

このツールを使うと、日程と時刻の直積集合を作ってくれます。
出力されたテキストを右上のコピーボタンでコピーし、調整さんのイベントページに張り付ければ完成です。

工夫した点

ソースコードから抜粋します。
下記は、入力された日付と時刻を基に二重ループをして、出力用データを作成する処理です。
高階関数を使うと、おしゃれに書くことができます。可読性が高いかどうかは、不明です。

    let out_arr =
        date_arr.map(text => {
            let ret =
                times_arr
                    .map(e => {
                        return text + " " + e;
                    });

            return ret.join("\n");
        })

※MIT LICENSEです

まとめ

現状の課題を説明し、「調整さん 日付×時刻 直積集合 ジェネレータ」を紹介しました。
また、ソースコードの一部を抜粋し、高階関数の部分を説明しました。

Discussion