クラウドワークス エンジニアブログ

日本最大級のクラウドソーシング「クラウドワークス」の開発の裏側をお届けするエンジニアブログ

Qiita Team からNotionへ移行した話

f:id:ryon_cw:20220130151739p:plain

こんにちは! クラウドログ開発チームで日々研鑽を積んでいる中山です。
クラウドログの開発には3年ほど携わっているのですが
クラウドワークスへの入社は2021年の7月なのでピチピチの新入社員です(!?
ピチピチなので今回エンジニアブログ初執筆となります。よろしくお願いします。

この度クラウドログチームではNotionの利用を開始しました。
それに伴い今までQiita Teamに作成していた記事をNotionへ移行することになりました。
この記事では上記Notionの利用開始とQiita Teamからの移行で得た知見をお伝えします。

※Notion(ノーション)とはタスクも、メモも、ナレッジも、すべてをひとつにする All-in-one workspace です。

www.notion.so

はじめに

この記事では以下をお伝えしていきます!

  • Notionの利用を決めた理由
  • Notionをどのように活用しているか
  • Qiita Teamの記事をNotionへ移行する方法

そして、以下のような方の助けになれたら幸いです。

  • Notionの利用を迷っている方
  • QiitaからNotionへ移行しようと思っている方
  • クラウドワークスの文化に興味のある方

それでは、最後までお付き合いいただけましたら幸いです。

結論

  • チーム内でのナレッジ共有においてNotionで困ることは特にない
  • ナレッジ共有以外にもいろいろできるNotion
  • Qiita Team からNotionへサクッと全記事を移行する手段は2022年1月時点では見つけられなかった
    • Qiitaの提供するAPIを使用することでQiita側の記事のエクスポートは柔軟に行える
    • Notion側に一括インポート機能はないため何かしらの工夫が必要
      • 本記事でQiita APIを使用するサンプルプログラムとそれを使用した移行方法を掲載しています。

Notionの利用を決めた理由

最初に理由を3行でまとめておきます。

  • Qiita Teamでやっていたことに加え、他にも色々なことができそう
  • 費用はあまり変わらない(ユーザ権限をうまく検討すればQiita Teamより安く済む)
  • 移行に対して反対意見がなかった

そして以下はその経緯です。

はじまりはクラウドログのPMから投げられた一つのアンケート
f:id:ryon_cw:20220130152223p:plain

このアンケートの結果は

  • 賛成 33%
  • 特にこだわりがない 50%
  • notionを知らない 11%
  • その他 6%
  • 反対 0%

という感じでとりあえず反対意見はなかったので、
まずは検討を進めてみようという結果に。

ちなみにPMの思いは以下の様な感じでした。

  • 費用はQiita Teamの8割くらい
  • NotionでもQiita Teamでやっていたことができる
  • 上記に加えて他にも色々できそう(リッチなドキュメント作成、スケジュールも引ける)
  • 使いやすそう
  • ベンチャー界隈でかなり使っている企業増えている

かくいう私は、新しいツールを使うということにワクワクする人間なのでもちろん賛成しました!
Be Agile !! 1

コラム:Notionのユーザ権限設定と費用について

Notionではページごとにゲストユーザを招待することができます。

extns.notion.site

そしてゲストユーザでも以下のことは実施できます。

  • 招待されたページの編集
  • 招待されたにデータベース(ページの集合体)にページを作成する
    • つまり、ナレッジベースというデータベースに招待しておけばそこにナレッジのページは作成できる
    • Notionのデータベースについては以下をご参照ください。

www.notion.so

そのため、ナレッジを作成するだけのメンバーやページの参照だけができれば良いメンバーはゲストユーザでも十分運用可能です。

そして、ゲストユーザに対しては有料プランの請求はされません。
まずはゲストユーザではじめてみて、必要に応じて課金ユーザへ昇格するというような使い方もできると思います。

Notionをどのように活用しているか

活用方法は以下の通り!

  • ナレッジベースとして利用
  • 会議の議事録もNotionでとる
  • 新メンバーのオンボーディングもNotion上で!
  • メンバー一覧ページを作ってお互いのことを知る
  • 個人のメモもNotionで!

それぞれ説明していきます。

ナレッジベースとして利用

前述のとおりQiita Teamからの移行を行っているため、
まずはナレッジベースとしての利用が1つの用途となります。

基本的にはQiita Teamの時と同様、1トピックについて1ページを作成し、
その中に内容を記載していくことになります。
すべてを紹介すると長くなってしまうので、個人的(チーム的)に便利だな、と思ったことをいくつか紹介します。

同時編集ができる

ナレッジに限って言うと、あまり複数人で同時に一つの記事を書くことってないと思うのですが、
例えば何人かで集まってレビューなどをする時にめちゃめちゃ便利です。
感覚としてはGoogleドキュメントと同じ感じです。

f:id:ryon_cw:20220130153123p:plain

好きな箇所にコメントを入れられる

これもレビューをするときに大活躍!
記事内の好きな箇所にコメントを入れられます。

f:id:ryon_cw:20220130153155p:plain

f:id:ryon_cw:20220130153215p:plain こちらも、感覚としてはGoogleドキュメントと同じ感じです。

ビュー(検索結果やフィルタ、表形式かリスト形式かなど)を作成して共有できる

更新日の降順でリスト表示や種別ごとにボード形式で表示、作成日ごとにカレンダー形式で表示など、
いろいろな表示形式を予めビューとして作成しておけます。
f:id:ryon_cw:20220130153251p:plain

作成したビューごとにURLも発行されるので、これを活用すれば例えば

  • 毎週の会議のために、直近1週間に更新のあったナレッジだけ表示
  • 新規メンバーのために最初に見てほしい記事をまとめた一覧を作成しておく

みたいな使い方ができます。

逆に注意しないといけないのはバージョン履歴の保持期間が30日間(チームプランの場合)ということです。
Qiita Teamは無制限だったので注意が必要です。
※Notionの一番上のプラン(エンタープライズ)だと無制限になります。

会議の議事録もNotionでとる

今までGoogleドキュメントでとっていた議事録もNotionでとるようになりました。
Notionにはカレンダー形式のビューがあるのでどの会議がいつあったかもすぐわかり、ついでに議事録もすぐに見られるすぐれもの。
更にプロパティを自由に設定できるので、タグを付けたり参加者をチームメンバーのリストから選択して設定などもできます。

f:id:ryon_cw:20220130153322p:plain

新メンバーのオンボーディングもNotion上で!

f:id:ryon_cw:20220130153343p:plain

オンボーディングに必要な資料や連絡事項をまとめたページを作成し、 新メンバーにはまずはここを見てね!と案内しています。

メンバー一覧ページを作ってお互いのことを知る

f:id:ryon_cw:20220130153406p:plain メンバー一覧ページをNotion上に作成して自己紹介ページを作ってみたり

個人のメモもNotionで!

Notionには自分専用のページを作成できるプライベートエリアも用意されています。
なので、私は今までメモはAppleのデフォルトのメモアプリを使っていたのですがそれもNotionに移行してしまいました。
最初は個人用のメモとして作ってみて、やっぱり公開しようとなったらすぐに公開できるので便利です。

※ゲストユーザはプライベートエリアを利用できません。

そのため、ゲストユーザ用に個人メモを提供したい場合は、 「個人メモ」というページを作ってゲストユーザを招待し、 その配下にメモを作成してもらう、などの手順が必要になります。

この場合はプライベートではないので他の人からも見えてしまいますが・・・

または、Notionは複数のアカウントログインしておけばアカウントを切り替えることができるので、 個人のメモは個人のNotionを利用してもらう、といったことも可能です。

Qiita Teamの記事をNoitonへ移行する方法

最後に、クラウドログチームではQiita Teamの記事をどのようにNotionへ移行しているかを紹介します。
冒頭の結論部分でも述べましたが、ぱっと移行する方法は現状ありませんでした。
なので本章では以下それぞれの手順を説明させていただきます。

  1. Qiitaの記事をAPIで一括エクスポート
  2. Qiita Teamの記事一覧をNotion上に作成
  3. NotionにQiita Teamの記事をインポート

1. Qiitaの記事をAPIで一括エクスポート

Qiita Team自身にも記事をすべてエクスポートする機能があるのでが、
残念ながらこのエクスポートファイルには画像が含まれません。

teams.qiita.com

そこで、今回はQiitaが提供しているAPIを使用して画像も含めて記事をエクスポートするスクリプトを作成しました。

こちらがQiitaの提供するAPIのリファレンスです。

qiita.com

今回はそのうちのGET /api/v2/itemsを使用してQiita Teamから前記事のデータを取得し、
更に取得した記事の一覧をCSV形式で出力します。

作成したスクリプトについてはgithubにて公開させていただいております。
ご興味のある方、使用してみたい方は以下のリンクからご確認ください。

github.com

上記のスクリプトでは以下のファイルを出力します。

  • Qiita Teamの各記事のマークダウン形式のテキストファイル
  • 各記事に含まれていたが画像ファイル
  • 各記事のメタデータ(投稿者ID やタグなど)のjsonファイル
  • エクスポートした記事の一覧を記載したCSVファイル

これらを使用して後続の手順でNotionへの移行を行っていきます。

2. Qiita Teamの記事一覧をNotion上に作成

NotionにはCSVをインポートする機能があります。
それを使用して、上記スクリプトが作成したCSVファイルをインポートします。

これにより、Qiita Teamの記事一覧をNotinon上に作成することができました。

f:id:ryon_cw:20220130153531p:plain

また、CSVファイルを取り込んで作成された表に新たな列を加えることも可能です。
クラウドログチームでは「Status(移行状況)」、「Notion URL」「メモ」の列を追加し、
それぞれの記事の移行状況が分かるようにしています。

もちろんこの表に対してもビューを作成できるので、
移行がまだのものを表示するビューや、グループごとの記事を表示するビューを作成することで
移行状況がよりわかりやすくなります。

f:id:ryon_cw:20220130153613p:plain

当初はQiita Teamのすべての記事をNotionへ移行する予定で検討しておりましたが、
古くなってもう使用しない記事などもあったため、
「移行しない」と決めた記事もこの表で管理できるようにしています。

そして、Googleドライブにスクリプトで取得した記事のマークダウンファイルを置いておくことで、
万が一のためのバックアップとすることにしました。

3. NotionにQiita Teamの記事をインポート

「移行する」と決めたQiita Teamの記事をNotionにインポートします。
Notionにはマークダウン形式のファイルをインポートする機能があるため、
上記スクリプトが出力したマークダウンファイルをそのままインポートすることが可能です。

ただしいくつか注意点があります 以下の注意点はいずれも2022年1月末に試した際の挙動となります。

マークダウンのインポート先

Notionのデータベースへマークダウンをインポートしようとしたのですがうまくいかず、
自身のプライベートエリアにインポートされてしまいました。
ただし、この場合でもドラッグアンドドロップでデータベース配下に記事を移動することができます。

Qiita <=> Notionの非互換部分

  • Notionは見出しが3階層まで
  • Notionはコード(```)のファイル名表示は非対応

画像ファイルは手動で差し替える必要がある

上記スクリプトが出力したマークダウンファイル内の画像のURLはQiita Teamを向いたままになっているため、 手動で画像を差し替える必要があります。
Notionには画像を差し替える機能があるためこれを利用することも可能です。

f:id:ryon_cw:20220130153645p:plain

記事に含まれる「Qiita Teamの別の記事へのリンク」は手動で差し替える必要がある

リンク先の記事をNotionに作成した上で、リンク元の記事のURLを差し替える必要があります。

Notion上のタグ付けは手動でやる必要がある

Notionへ移行後、Notion上でタグなどを付ける場合は手動で実施する必要があります。
Notionではタグ以外にも様々なプロパティを付与できるので、
これを機にプロパティを見直すもの良いかもしれません。

以上が注意点となります。
画像ファイルがたくさん含まれていたり、
他記事へのリンクがたくさんあるものほど移行には時間がかかってしまいます。

最初からすべての記事をまるっと移行するのは大変なので、
Notion上に作成したQiita Teamの記事一覧を活用しつつ、
必要なものから適宜Notionへ移行していくというのが現実的かもしれません。

今後の展望

NotionもBeta版ではありますがAPIを提供しています。

developers.notion.com

今後NotionのAPIが整備されてくれば、 Qiita APIから記事を取得 → NotionのAPIを使用してページを作成 なんてこともできるようになりそうです。 画像やページ内リンクのことを考えると、なかなか一筋縄では行かないかもしれませんが、
今後はもっと簡単に移行作業ができるようになることを切に期待しています。

最後に

今回のNotionへの移行にあたって、まずは社内Slackのbabubabu2チャンネルで情報共有をさせていただいたのですが、 チームの垣根を超えてたくさんの人からのリアクション、返信をいただけました。3

f:id:ryon_cw:20220130153717p:plain

これぞ One CrowdWorks!! 4

CrowdWorksにはいろいろなサービスやチームがあり、 そしてなにより温かい仲間がたくさんいます!

そんな環境で一緒に働きたい人、お待ちしています!

クラウドワークス採用ページ


  1. Be Agile: クラウドワークスの行動規範(CW Value)のひとつ

  2. “babubabu"とは結論のない発言、まとまってない発言、事実のない解釈のみの発言などをおこなうこと。

  3. “よ"とは誰かの発言に対して、肯定でも否定でもなく、いったん受け止めたことを合図する言葉。個別の解釈に対して評価や否定される不安を感じることなく、率直に意見を伝えられる環境をつくるために使う。

  4. One CrowdWorks: クラウドワークスの行動規範(CW Value)のひとつ

© 2016 CrowdWorks, Inc., All rights reserved.