VosaicのモーメントのデータをCSVファイルとしてダウンロードする際、現状ではモーメントの開始時間(Start Time)と終了時間(End Time)は秒の位までが表示される仕様となっています。

元となるXMLファイルを確認すると、小数点以下の数値まで記録されています。

そこで、この数値をそのままExcel上でも表示できるよう、XMLファイルからCSVファイルに変換するプログラムを生成AIの力を借りて考えてみました。
プロンプトを試行錯誤しながら、Google Geminiを使って作成してみたのが次のPythonのプログラムです。
import csv
import xml.etree.ElementTree as ET
def xml_to_csv(xml_path, csv_file):
# XMLファイルを解析
tree = ET.parse(xml_path)
root = tree.getroot()
# CSVファイルを開く
with open(csv_file, 'w', encoding='utf-16') as f:
# CSVファイルのヘッダー行を書く
writer = csv.writer(f)
header = [
"Start Time",
"End Time",
"Duration in Seconds",
"Form Title",
"Moment Name",
"User",
"Moment Sequence",
"Number of Tags",
"Global Moment Sequence",
"Comments",
"Tags"
]
writer.writerow(header)
# 各instanceタグについて処理を行う
moment_sequence = 1
for i, instance in enumerate(root.findall('ALL_INSTANCES/instance')):
# Start Time, End Time, Duration in Seconds を取得
start_time = float(instance.find('start').text)
end_time = float(instance.find('end').text)
duration_in_seconds = end_time - start_time
# Form Title を取得
form_title = xml_path.split('/')[-1]
# Moment Name を取得
moment_name = instance.find('code').text
# User, Moment Sequence を設定
user = ''
moment_sequence_instance = moment_sequence
# Number of Tags を取得
number_of_tags = len(instance.findall('label/text'))
# Global Moment Sequence を取得
global_moment_sequence = i + 1
# Comments を取得
comments = instance.find('free_text').text if instance.find('free_text') else ''
# Tags を取得
tags = []
for text_tag in instance.findall('label/text'):
tags.append(text_tag.text)
tags_text = ', '.join(tags)
# CSVファイルに1行分のデータを書き込む
data = [
start_time,
end_time,
duration_in_seconds,
form_title,
moment_name,
user,
moment_sequence_instance,
number_of_tags,
global_moment_sequence,
comments,
tags_text
]
writer.writerow(data)
# 次のMoment NameのMoment Sequenceを更新
if moment_name != instance.find('code').text:
moment_sequence += 1
if __name__ == '__main__':
# 変換元のXMLファイルのパスを指定
xml_path = ''
# 変換後のCSVファイルのパスを指定
csv_file = ''
# XMLファイルをCSVファイルに変換
xml_to_csv(xml_path, csv_file)
print('XMLファイルをCSVファイルに変換しました。')
このプログラムで、最初に示したXMLファイルをCSVファイルに変換し、Excelに読み込んでみると、次の画像のように表示されました。

最近のアップデートで、フレーム単位(1/30秒)でのコマ送りを矢印キーで行うことができるようになりました。これと合わせて、より詳細な分析に繋げていただけますと幸いです。
お断り:私自身はプログラミングに関する知識が乏しいので、上記のプログラムが最適なものなのかどうかについては自信がございません。もし何か間違いやもっと良い方法がございましたら、ご助言やご指摘をいただけますと幸いです。
(橘 肇/Vosaic総代理店 橘図書教材)