Qiita TeamからNotePMへデータ移行するための方法と、プログラムの使い方を紹介します。
- データ移行スクリプト対応サービス
- Qiita Team
- esa
- Docbase
- Kibela
- Confluence (準備中)
- Kintone (準備中)
- ファイルサーバー (準備中)
目次
Qiita Teamからのデータエクスポート
Qiita Teamの設定にチーム設定があります。
このチーム設定の下の方にデータのエクスポートがあります。
このエクスポートを実行すると、エクスポートの準備が開始します。しばらくすると、準備ができた旨メールが送られてきます。
チームデータはZipファイルでダウンロードされます。解凍(展開)すると、次のような内容となっています。
エクスポートデータについて
エクスポートされたデータの形式は次のようになっています。
- articles
記事データです。記事1件ずつ、1つのJSONファイルになっています。 - groups
グループデータです。1つのグループずつ、1つのJSONファイルになっています。 - projects
プロジェクトデータです。1つのグループずつ、1つのJSONファイルになっています。
エクスポートデータに画像や添付ファイルのデータは含まれませんので注意してください。
データのインポート
ではここからエクスポートしたデータをNotePMへ取り込む手順を紹介します。まず、プログラムをインストールします。必要なものは次の通りです。
- Node.js
- Google Chrome
- プログラムのインストール
- アクセストークンの取得
- 設定ファイルの作成
Node.jsのインストール
Node.jsはここからダウンロードできます。ダウンロード後、インストールを実行してください。
Google Chromeのインストール
Google ChromeはQiita Teamから画像をダウンロードするのに利用しています。あらかじめインストールしておいてください。Edgeなどでも動くかと思いますが、動作確認はしていません。
プログラムのインストール
プログラムはNode.jsをインストールした環境であれば、次のコマンドでインストールできます。
$ npm install notepm_importer -g
プログラムはMIT Licenseで公開しています。コードはNotePMMania/notepm_importer: 各種ドキュメント共有サービスからNotePMへ移行するスクリプトですにて公開しています。
アクセストークンの取得
NotePMのアクセストークンは個人設定のAPIアクセストークンから取得できます。
そしてアクセストークンを新規作成してください。スコープとして、読み込みと書き込みの両方にチェックを付けてください。
生成されたアクセストークンは、再確認する方法はありません。必ずコピーしたり控えておいてください。
設定ファイルの作成
Qiita Teamのエクスポートデータにはユーザ名などの情報がありません。ユーザID(英数字)のみしかありません。そこで、Qiita TeamのユーザIDとNotePMの紐付けを行います。ベースになる設定ファイルは次のように出力できます。
$ notepm users -a ACCESS_TOKEN -t TEAM_DOMAIN
- ACCESS_TOKEN
先ほど作成したNotePMのアクセストークンです - TEAM_DOMAIN
NotePMのチームドメインです(例:notepm)
実行すると、次のようにYAMLファイルの内容が出力されます。
:-:: プロジェクト太郎: "0000000001"-:: プロジェクト花子: "0000000002"
この内容をたとえば users.yaml として保存します。その後 id
の後にQiita TeamのユーザIDを記入してください。たとえば次のような内容にします。
:-: taro: プロジェクト太郎: "0000000001"-: hanako: プロジェクト花子: "0000000002"
これで準備完了です。
インポートを実行する
ではインポートを実行します。コマンドは次のようになります。
$ notepm qiita \-d QIITA_DOMAIN \-p PATH_TO_EXPORT_DIR \-a ACCESS_TOKEN \-t TEAM_DOMAIN \-u PATH_TO_SETTING_YAML
内容は次の通りです。
- QIITA_DOMAIN
Qiita Teamのドメインです(例:notepm.qiita.com) - PATH_TO_EXPORT_DIR
Qiita TeamからエクスポートしたZipファイルを解凍(展開)したディレクトリのパスです - ACCESS_TOKEN
先ほど作成したNotePMのアクセストークンです - TEAM_DOMAIN
NotePMのチームドメインです(例:notepm) - PATH_TO_SETTING_YAML
先ほど作成した設定ファイル(YAML)のパスです
Webブラウザが開く
実行するとWebブラウザが開きます。Qiita Teamのログイン画面が開くので、認証を行ってください。ID、パスワードを盗み見るようなことはありません。
認証が完了すると、画像をまとめてダウンロードします。この画像はQiita Teamからエクスポートしたデータを解凍(展開)したディレクトリの中に attachments というフォルダを作成して、その中に保存します。URLをハッシュ化して保存します。
画像をダウンロードし終わるとWebブラウザは自動的に終了します。
プロジェクトデータについて
Qiita Teamのプロジェクトデータはプロジェクトというノート作成し、その中に保存されます。各プロジェクトはページとして、次のように保存されます。
Qiita Teamの項目 | NotePMへの適用 |
---|---|
name | ページタイトルに利用します |
body | ページ本文に利用します |
user | IDが一致するユーザが見つかった場合は、そのユーザを作成者にします。いない場合は NotePM-bot になります。 |
created_at | ページ作成日時に利用します |
rendered_body | 利用しません |
archived | 利用しません |
id | 利用しません |
reactions_count | 利用しません |
updated_at | 利用しません |
グループデータについて
Qiita Teamのグループデータはノートとして保存します。
Qiita Teamの項目 | NotePMへの適用 |
---|---|
name | ノートタイトルに利用します |
users | ユーザが配列になっています。各ユーザについて、IDが一致するユーザが見つかった場合は、そのユーザのノート参加者にします。 |
url_name | 利用しません |
その他、デフォルト値は下記になります。
項目 | 値 |
---|---|
ノートの説明 | 固定「Qiita::Teamからのインポート」 |
スコープ | 固定「プライベート」 |
グループ | 設定しません |
アイコン | 設定しません |
すべてのノートはプライベートで取り込みます。調整後、公開してください。
記事データについて
Qiita Teamの記事データはページとして保存します。グループがない場合は「Qiita::Teamからのインポート用」というノートを作成し、その中に保存します。
Qiita Teamの項目 | NotePMへの適用 |
---|---|
title | ページタイトルに利用します |
body | ページ本文に利用します |
tags | name で指定されているタグ名を作成します |
user | IDが一致するユーザが見つかった場合は、そのユーザを作成者にします。いない場合は NotePM-bot になります。 |
group | 指定されている場合は、先に作成したノートに紐付けます。ない場合は「Qiita::Teamからのインポート用」というノートに紐付けます。 |
created_at | ページ作成日時に利用します |
rendered_body | 利用しません |
coediting | 利用しません |
comments_count | 利用しません |
id | 利用しません |
likes_count | 利用しません |
private | 利用しません |
reactions_count | 利用しません |
updated_at | 利用しません |
url | 利用しません |
page_views_count | 利用しません |
comments | 後述します |
さらにコメントはページへ紐付けて保存します。
Qiita Teamの項目 | NotePMへの適用 |
---|---|
body | コメント本文に利用します |
created_at | 利用しません |
id | 利用しません |
rendered_body | 利用しません |
updated_at | 利用しません |
注意点
データのインポート時の注意点は次の通りです。
- ユーザが存在しない場合はNotePM-botになります
- 添付ファイルは移行しません
- コメントユーザのIDは移行しません
- ページ内リンクは移行しません
- メンションは移行しません