記事の管理をGithubとLinearでやることにした!!


**※ぶっちゃけ、本題がめっちゃ短くて、前段がめっちゃ長いですｗｗｗ**

## 1. 本記事のターゲット層
(1) 複数のメディアに記事を投稿している人
(2) Githubで記事を管理している人　または管理をしようと検討中の人
(3) Linearを使っている人　または使おうと検討中の人

## 2. はじめに
今回は、記事を書いている中で以下の課題にぶちあたったので、その解決をした話です。

(1) Githubのレポジトリで記事を管理しているが、ZennやQiitaが生成する記事のファイル名がランダム英数字である
→英数字なので、いつの記事で、何の記事を書いたものなのかファイル名から特定できない
(2)書こうと思っているネタや現在書いているネタの管理ができていない

現在、タスク管理ツールをWrikeからLinearに変えてから概ね1年が経過しました。以前からLinearはGithubのissueと連携できることは認識していましたが、この連携機能を使う機会がありませんでした。しかし、今回の課題にぶちあたったとき、まさにこの連携機能が使えると思いました。

## 3. そもそもLinearとは
話を進める前に[Linear](https://linear.app/homepage)について軽くご紹介いたします。

Linearとは海外を中心にエンジニアの間で人気が急上昇しているタスク管理ツールです。ポジションとしてはJiraとAsanaの間の層を狙っているそうです。

特徴はなんといってもエンジニアファーストであることです。一言でそのように表現できるほど、エンジニアにとって使いやすく、便利なタスク管理ツールになっています。

(1) Markdown記法が使える
(2) ショートカットが充実している
(3) フィルターに[is not][do not include]などが指定できる
→いままでありそうでなかった指定方法です。
(4) 管理方法としてLabel、Statusが使える
(5) プロジェクト、マイルストーンをタスクと紐づけて管理できる
→プロジェクトで使えるタイムライン表示が便利です。それにマイルストーンの登録は大体のタスク管理で使えると思いますが、それにタスクを紐づけて、どのタスクをいつまでに終わらせればいいか管理できるものはいままで見たことがありません。
(6) Viewが作れる
→これが一番すごいです。Labelやステータス、人は長く使うほどに増えていき、タスクの把握が複雑になっていくと思います。フィルターやソート順、表示方法をViewとして名前を付けて保存することができ、Workspace、Teams、個人ごとに分けて管理できます。「自分はこれだけ把握できれば十分なのに・・・」という悩み事が解決できます。
(7) Workspace、Teamが複数作れる
→複数作れるのでタスク管理を分離して、アクセスできる人を制限することができるのはとてもありがたいです。
(8) 多くのツールと連携できる
→そのうちの一つがGithubです。
(9) 無料で使える
(1)～(8)までのことが無料でできるのがすごい！！

## 4. まずは記事の投稿方法について
Zenn/Qiita/noteと投稿をしている中で、「こういう手順なら効率よくできるな」と思っているやり方があります。まずはその投稿方法について説明をしたいと思います。

(1) Zennの記事を作成する
まず一番先に記事を作成するのは[Zenn.dev](https://zenn.dev/ochtum)の記事です。なぜかというと、画像を事前にアップロードしておくことができるので、他のメディアからの参照先としても使えるからです。publishedをfalseにしてアップすることで、Zenn上で非公開でプレビュー確認できることもメリットに上げられます。

また、GithubとZenn.dev間の記事連携がしっかりできているので管理しやすいということも理由にあります。

記事を作成するときにVS Codeを使うことで、メリットとしてはGithubに記事を上げやすいというだけではなく、Markdown記法を使うのでプレビュー表示で出来上がりを確認しやすく、Github Copilotを使っていれば記事作成をフォローしてもらうこともできます。

なお、Zennで記事を作成する手順については[CLIで記事を管理する](https://zenn.dev/zenn/articles/zenn-cli-guide)をご参照ください。[ZennCLIとは](https://zenn.dev/zenn/articles/install-zenn-cli)のページから[ZennとGithubレポジトリを連携する]ページに飛ぶことができます。

(2) Qiitaの記事を作成する
Qiitaの記事はほぼZennで作成したタイトル/本文をコピペするだけで終わります。
ただ、タグの書き方だけ違うので、これは一つ一つコピーします。

※ZennとQiitaはそれぞれ違うフォルダで記事を管理するため、同じルートフォルダで共存できます。
![](https://storage.googleapis.com/zenn-user-upload/0c569e8f9ca3-20241018.jpg)

(3) noteの記事を作成する
ZennかQiitaのmdファイルをプレビュー表示させて、その内容をnoteの編集画面でコピペします。
画像は、URL貼り付けになっているものを、アップロードしなおす必要があります。

タグについても、一つ一つ指定していく手間があります。

(4) SNSに展開する
私の場合は、noteで作成した記事からシェア機能を使ってXやFacebookに展開しています。

## 5. 【本題】LinearとGithubで記事を管理する方法
(1)まずは、LinearにGithubと連携するためのTeamを作成します。
(2) Linearの設定で、Workspace配下にあるIntegrationsからGithubを選択して、Enableにします。
(3)アクセス権限のリクエストが表示されるので[許可する]を選択します。
(4)Github Issuesで連携するGithubのrepositoryとLinearのteamを選択してSaveします。

以後、Githubの該当repositoryでissueを作成するとLinearの該当teamにもissueが連携されます。
issueの内容を変更するとLinearのissueにも反映されて、Linearのissueの連携スレッドにコメントをするとGithubのissueにも反映されます。
Linearのissueの連携スレッド以外にコメントをする場合、Githubのissueには連携されません。
![](https://storage.googleapis.com/zenn-user-upload/b0717b786fd5-20241021.jpg)

記事のネタを思いついた場合は、Githubのissueに登録して、記事をcommitする場合は[#issue number]をつけてコメントをすることで、記事とissueが紐づきます。
issueにファイル名を記載しておけばissueから記事を追えます。

記事の進捗状況やネタにするURLなどはLiearで管理することで、他のタスク管理とまとめて管理することができて便利です。
![](https://storage.googleapis.com/zenn-user-upload/70411c072430-20241021.jpg)