退屈な日々 / Der graue Alltag

将来の展望が見えない現代。それでも映画や本を楽しみ、ダラダラと過ごす日常を生暖かく記録する。

メディアマーカーからブクログへのデータ移行の作業メモ

読書記録サービス「メディアマーカー」のサービス停止を受けて、先日「ブクログ」に引っ越ししました。以下はそのときの作業メモです。


はじめに

この作業メモは作業手順を示した文書ではありません。この文章だけを追ってもデータ移行できないことをまずお断りしておきます。それでもデータ移行を考えている人に少しばかりでも参考になればと思い、メモを残すことにしました。

作業の流れと方針

メディアマーカーからCSVファイルをエキスポートして、それを加工してブクログにインポートするのが基本的な流れです。

データの加工には、私は表計算ソフト「Googleスプレッドシート」とテキストエディタ「CotEditor」を使いましたが、各自のスキルに合わせて使い慣れたツールやスクリプト言語を使えばよいでしょう。テキストファイルを扱えれば何でも構いません。

また作業はラフにやることにしました。多少のデータの取りこぼしは見逃すこととし、なるべく短時間に新しいシステムに移行することを優先することにしました。

CSVデータの比較と変換

まずメディアマーカーからCSVファイルを出力してサンプルを採取します。これとブクログが提供しているCSVファイルのテンプレートを比較します。下はメディアマーカーCSVファイルの出力オプションの指定画面です。

f:id:goldensnail:20181012220657j:plain:w320

データに不足はないようですが、少し加工する必要がありそうです。以下は移行データを検討したときに作成したメモの断片です。

f:id:goldensnail:20181012220724j:plain:w420

つまずいた点

次にテスト用の小規模データを作成してインポート側の挙動を探っていきます。そこでつまずいたのは以下の点です。仕様書がないので手探りです。

複数タグの区切りの変換

ブクログのテンプレートファイルには、複数のタグがあるサンプルがありませんでした。最初に試した改行で区切ったデータではうまくいかなかたので、コンマ区切りを試してみると成功したので、複数タグの区切り文字はコンマにすることにしました。

"タグ1,タグ2,タグ3”

このような書式になります。

読書状況の変換

読書状況(未読、読中、読了など)の示す値もシステムによって異なるので、それぞれ以下のように置換します。

  • なし→NULL
  • 未読→読みたい
  • 読中→いま読んでる
  • 読了→読み終わった

カテゴリの扱い

ブクログにある「カテゴリ」というフィールドが最後まで不明でした。テンプレートファイルには、すべてのレコードで"-" だったので、それに倣うことにしました。

しかし移行後、手動でアイテムと登録するとNULLになっていました。これはNULLにするのが正解だったかもしれません。そもそも何のためのフィールドなのか謎です。タグとどうなって使い分けるのか。

細かいことは無視して、とりあえず"-"を入れておくことにしました。

GoogleスプレッドシートCSVファイル出力の挙動

Googleスプレッドシートのデータ加工が目処がついたので、CSVファイルを出力してチェックしてみました。ダブルクオーテーションの扱いが期待とちがいました。

これはどうしようもないので、ダブルクオーテーションの代わりに適当な文字列を使い、出力後のCSVファイルをテキストエディタで加工することにしました。

文字コードSJIS

あとブクログにインポートするCSVファイルの文字コードSJISだということにも留意してください。ふだんUTF-8で作業している人は、忘れずにSJISに変換しておいてください。これを怠ると当然ながら文字化けします。経験者は語る……。

インポート実行

データの準備ができたらインポートを実行します。インポートのページには下のようなお願いがありますが、「大量」と言われても困りますね。私がハンコを押す立場だったら、「具体的に数値で示してください」といいたいところです。

インポート処理はサーバーに負荷がかかりますので、大量のデータを連続してご利用にならないようお願いします。

まあ調子に乗って一気にインポートしたらタイムアウトを起こしてしましました。いったん、すべてのデータを消去してから、ファイルを分割して数回に分けてインポートを実行しました。

その際、以下のようなエラーが出力されましたが、どこでエラーが出ているかわかりません。せめてエラーしたレコードのASIN/ISBNを表示してほしいものです。

...
699行目のアイテムが見つかりませんでした
830行目のアイテムが見つかりませんでした
970行目の項目が10列で足りません。1行は11列以上で作成してください
...

さらに言えば、何件インポート成功して何件リジェクトされたのかわかりません。ちょっと残念なインポートツールです。若干エラーが出ましたが、基本方針のとおり、今回は原因を追求するのはあきらめてスルーすることにしました。

しかし登録されたアイテム数の総計が2000件余りと数が合いません。5000件以上あるはずですが……。インポートに成功したレコード数ががわかれば安心できるのですが困ったなと思っていると、半日ぐらい時間をおいてチェックすると登録総数がほぼ期待値どおりになっていました。めでたしめでたし。

置きざりにされたデータ

最後に移行できなかったデータについて説明します。

メディアマーカーには関連リンクという項目がありました。そこにネット上の書評やEvernoteに書き留めた自分の読書メモのリンクを登録して便利に使っていました。しかしなぜか関連リンクの情報はエキスポートされないので移行できませんでした。

この置き去りにされたデータの扱いは後日の課題です。

まとめ

以上のとおり、なんとか短期間でデータ移行できました。ブクログを使いこなすには、もう少し時間がかかるでしょうが、第一印象は悪くありません。しかし、さっそくですが不満もあります。しばらく使ったあとでブクログの感想についてもまとめたいと思います。