Azure DevOps を使って Qiita に投稿する記事を管理してみる

最近は毎日 Qiita を投稿しているのですが、普段の時間も限られているのでもちろん毎日リアルタイムで記事を書いている訳ではないです。空いている時間でストックをいくつか貯めておいて、投稿する時間になったらその中から選んで投稿しているのですが、ネタ探しや記事の管理に少々手間がかかっています。そこで今回は、Qiita に投稿する記事を Azure DevOps で管理してみたらどうなるか、という検証をしてみたいと思います！

#Azure DevOps 側の設定
まずは、任意の Organization にて、Qiita 記事を管理するためのプロジェクトを作成します。今回は QiitaVal というプロジェクトを作成してみました。(せっかくなので Agile を使ってみましょう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/69b44117-6a65-634b-3dab-e3aae2765ee3.png)

次に Boards>Backlog から New Work Item を作成します。今回は、一日投稿する記事についてにひとつの UserStory を作成しようと思います。ひとまず一週間分作成してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/24ea960b-5585-7ba2-b5b7-f2e128ffd4e5.png)

次に Repos>Files で Git をクローンする URL を取得します。ローカルの任意の環境で以下コードを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/42b54836-f51a-636b-6065-d1f250e6765c.png)


```
git clone XXXXXXXXX(git clone URL)
```

これで Azure DevOps の開発環境とローカルの開発環境が連携されることになります。簡単ですね！

#Visual Studio Code の設定
ここまでできたらローカルで Azure DevOps にデプロイしやすい設定をします。まずは、先ほど Clone したディレクトリで、「code .」を実施し、Visual Studio Code を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/d6ba4c17-ede7-2152-4f0a-3eb04385d413.png)

VS Code が立ち上がったら、Azure Repos / Azure DevOps planner を入れておきます。これを入れると色々な便利なショートカットが使用可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/3fbf2d6c-5898-5356-9128-8b358666b0a9.png)

次に作成した ディレクトリ内に Markdown 形式のファイルを作成します。今回は「2019年10月31日の記事」という意味で「20191031.md」と名付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/1de2e3c1-06cf-a744-3838-e4ef4c177f10.png)

ここに Qiita 記事に投稿するような Markdown 形式の記事を書いていけばよいわけです。

#Azure DevOps で記事を管理する
Azure DevOps の Boards に戻ります。今回はローカルで編集した記事をプッシュし、ネタが出来上がった記事はクローズしていく、という方法で管理することを実施してみたいと思います。
最初に、Work Item と Branch を結び付けてみます。Branch は記事の名前(つまり日付)のような形式にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/2099d88d-75e6-4ea5-01fa-0ca751e8c2f4.png)

ブランチを作成すると、ローカルの Visual Studio Code で F1>Checkout to で 新しいブランチが選ぶことが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/28678caf-4a2c-8581-8259-84d1cb739309.png)
このブランチの上で、2019年10月31日投稿予定の記事を書いていきます。これを小まめに commit/push しましょう！F1のショートカットがとても素敵です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/53bef352-d368-eb5b-f573-4e91f5076b26.png)
push すると指定したブランチに MD ファイルがアップロードされているのが分かります。これを Master ブランチに pull をリクエストします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/a9a7e6fb-38a2-5f21-b975-5379cd342041.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/8c3be394-9a00-e7eb-a01b-1b285f4a1b70.png)

Pull リクエストを実施すると右側のメニューに Approve と Complete が出てきます。これを実施するとどうなるでしょうか!?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/bb8bae27-58b0-fabf-0e82-9ec5191a19ed.png)

Pull リクエストの画面は Complete になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/556956eb-1957-5428-35ea-a4758f7fced2.png)

それでけではありません。Work Item と紐付けているため、Boards>Boards にも変更がしっかり反映されました！紐付けた Work Item が Closed になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/74463347-706e-5813-0307-8ea49fe03787.png)

これを使用すると、複数のネタを同時に集めることや、誰かに依頼をしてネタを集めることが可能になってきます。Azure DevOps は GitHub と連携もできるので、Azure DevOps からコードをたたいて、GitHub 経由で Qiita に記事を自動投稿する、という Pipeline も書けそうです。

#所感
単純にテキスト管理するだけでも、普段から Git に触れるという意味では非常に良いかと思いました。また、複数人で記事を管理する部署などにも効果的ではないかなと思います。(まぁひとりでは使わないですね笑)