タイムスタンプを置換するアプリについて
2つアプリを作った。
世の中には、タイムスタンプと名のつくものがいくつもある。
ほとんどはUnixタイムスタンプだけれど、 秒単位であったりミリ秒単位であったり、小数点が付いていたり小数点が付いていなかったりする。
ログファイルを渡されて、まず「そのタイムスタンプがどういう単位で書かれているか」 というところから考えるのは、難しくはないがだるい作業だ。
そして、どのフィールドにタイムスタンプが書かれているかを読み取り自分のパースしやすい形式に変換する。
これも難しくはないけれども、だるい作業だ。
世の中には、日付を表すフォーマットがいくつもある。
代表的なものはISO8601もしくはRFC3339に沿っているが、そうでないものもある。
タイムスタンプと同様に、小数部があったりなかったりするし、区切り文字が-
であったり/
であったり、
タイムゾーンがついていたりついていなかったりする。
ログファイルを渡されて、まず「その日付文字列がどういう構成になっているか」 というところから考えるのは、難しくはないがだるい作業だ。
そして、どのフィールドにその文字列が書かれているかを読み取り自分のパースしやすい形式に変換する。
これも難しくはないけれども、だるい作業だ。
世の中には、UnixタイムスタンプとHuman Readableな文字列を相互に変換してくれるウェブサイトがいくつか存在する。
代表的なものは、unixtimestamp.comだろう。 筆者もよく利用している。
しかし、複数のタイムスタンプ(もしくは文字列)を一括して受け取って、変換してくれるウェブサイトはなかなか見つからない。
実際にタイムスタンプや日付文字列を目撃するのは、繰り返しこういったデータが現れるログファイルであり、 一回限りの変換機能しか提供されていないのは、物足りないと思った。
以上のような問題意識から、上のアプリを作った (以前書いたように、Svelteを触ってみたかったというのもある)。
重要な点は、オプションで指定できるのは出力の形式だけという点だ。
入力の形式は、指定しない。
上のような問題意識から、入力の形式を指定せずとも、うまくいくことが望ましいと考えているためである。
もちろん、そのように作ったので、やりかたはアドホックであり(たとえば、10桁なら秒単位のタイムスタンプだろう、というような)、 けっしてすべての場合に通用するツールではない。
しかし、「私達が直面しているのは常に現実的な問題であり、100%の問題を解くことは重要ではない」と信じているので、 「90%の場合でうまくいけば良い」という方針をとって作ることにした。
したがって、不完全でうまく行かないケースも当然出てくる(ハズ)。
ただ、そういったケースが見つかり次第(コーナーケースでない限りは)対応していくつもりだ。