読書記録サービス「メディアマーカー」のサービス停止を受けて、先日「ブクログ」に引っ越ししました。以下はそのときの作業メモです。
はじめに
この作業メモは作業手順を示した文書ではありません。この文章だけを追ってもデータ移行できないことをまずお断りしておきます。それでもデータ移行を考えている人に少しばかりでも参考になればと思い、メモを残すことにしました。
作業の流れと方針
メディアマーカーからCSVファイルをエキスポートして、それを加工してブクログにインポートするのが基本的な流れです。
データの加工には、私は表計算ソフト「Googleスプレッドシート」とテキストエディタ「CotEditor」を使いましたが、各自のスキルに合わせて使い慣れたツールやスクリプト言語を使えばよいでしょう。テキストファイルを扱えれば何でも構いません。
また作業はラフにやることにしました。多少のデータの取りこぼしは見逃すこととし、なるべく短時間に新しいシステムに移行することを優先することにしました。
CSVデータの比較と変換
まずメディアマーカーからCSVファイルを出力してサンプルを採取します。これとブクログが提供しているCSVファイルのテンプレートを比較します。下はメディアマーカーのCSVファイルの出力オプションの指定画面です。
データに不足はないようですが、少し加工する必要がありそうです。以下は移行データを検討したときに作成したメモの断片です。
つまずいた点
次にテスト用の小規模データを作成してインポート側の挙動を探っていきます。そこでつまずいたのは以下の点です。仕様書がないので手探りです。
複数タグの区切りの変換
ブクログのテンプレートファイルには、複数のタグがあるサンプルがありませんでした。最初に試した改行で区切ったデータではうまくいかなかたので、コンマ区切りを試してみると成功したので、複数タグの区切り文字はコンマにすることにしました。
"タグ1,タグ2,タグ3”
このような書式になります。
読書状況の変換
読書状況(未読、読中、読了など)の示す値もシステムによって異なるので、それぞれ以下のように置換します。
- なし→NULL
- 未読→読みたい
- 読中→いま読んでる
- 読了→読み終わった
カテゴリの扱い
ブクログにある「カテゴリ」というフィールドが最後まで不明でした。テンプレートファイルには、すべてのレコードで"-" だったので、それに倣うことにしました。
しかし移行後、手動でアイテムと登録するとNULLになっていました。これはNULLにするのが正解だったかもしれません。そもそも何のためのフィールドなのか謎です。タグとどうなって使い分けるのか。
細かいことは無視して、とりあえず"-"を入れておくことにしました。
インポート実行
データの準備ができたらインポートを実行します。インポートのページには下のようなお願いがありますが、「大量」と言われても困りますね。私がハンコを押す立場だったら、「具体的に数値で示してください」といいたいところです。
インポート処理はサーバーに負荷がかかりますので、大量のデータを連続してご利用にならないようお願いします。
まあ調子に乗って一気にインポートしたらタイムアウトを起こしてしましました。いったん、すべてのデータを消去してから、ファイルを分割して数回に分けてインポートを実行しました。
その際、以下のようなエラーが出力されましたが、どこでエラーが出ているかわかりません。せめてエラーしたレコードのASIN/ISBNを表示してほしいものです。
...
699行目のアイテムが見つかりませんでした
830行目のアイテムが見つかりませんでした
970行目の項目が10列で足りません。1行は11列以上で作成してください
...
さらに言えば、何件インポート成功して何件リジェクトされたのかわかりません。ちょっと残念なインポートツールです。若干エラーが出ましたが、基本方針のとおり、今回は原因を追求するのはあきらめてスルーすることにしました。
しかし登録されたアイテム数の総計が2000件余りと数が合いません。5000件以上あるはずですが……。インポートに成功したレコード数ががわかれば安心できるのですが困ったなと思っていると、半日ぐらい時間をおいてチェックすると登録総数がほぼ期待値どおりになっていました。めでたしめでたし。