https://cap-calendar.netlify.com/
最近キャップ野球関係のサービスをいくつか作っているのですが、
まだ普及途上にあるマイナースポーツなので、色々広報手段が足りないようで「こんなイベントカレンダー欲しい」という声を聞いたので作ってみました。
マイブームというわけではないのですが、個人開発ではDBレスのサービスを作ることが多いです。スキーマの設計が面倒なのと個人でデータを持ちたくないのが....。
カレンダー共有ということで一番最初に考慮したのがtimetree。
ただし、外部公開されているAPIの中にカレンダーに登録されているイベントの一覧を取得するAPIがないことがわかり(19/12/7時点)、採用を断念しました。
定番のカレンダー。ただし、現在公開されているv3 APIはOAuth必須となっている。極力ユーザに余計なアクションをさせたくなかったので選択肢から外しました。
googleカレンダーには誰でも閲覧できる「公開カレンダー」があり、
その仕組みを調べていたところ、OAuthなしでデータを取得できるという結論に達しました。
イベントの種類を分類するために、イベントのタイトルにタグをつけてもらう方式にしました。
例:【イベントの種類】【イベントの場所】タイトル
エンジニアとして避けては通れない道なのはわかっているのですが、1つめの【】の中は取得できるものの、繰り返しの取得ができず、
(ノ`Д)ノ彡 ┻━┻ ←こんな感じになりました
結局文字列を再帰的に検索するという力業で解決しました。
文字列処理はHSP時代に腐るほどやったんや....
findTag=(str,tags)=>{
console.log(tags)
let beginIdx = str.indexOf('【');
let endIdx = str.indexOf('】');
if(beginIdx !== -1 && endIdx !== -1){
let tagStr = str.substring(beginIdx + 1,endIdx);
tags.push(tagStr);
this.findTag(str.substring(endIdx + 1,str.length),tags);
return tags;
}else{
return tags;
}
}
ロースキルでごめんなさい。
普段Noto Sans JPを好んで使っているのですが、Noto Sans JPのままでは若干固いイメージだったので、M PLUS Rounded 1c
を使っています。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント