プロダクトのドキュメントにプルリクエストを送れる仕組みがすごい

これ↓なんですけど、意外と RT や Like が付いてたので、ちゃんと書きますね。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">しっかしMicrosoftのドキュメントシステム良く出来てるなー。右のEditボタン押すとGitHubが開いてすぐPR送れる。あちらでマージされれば即サイトに反映される。Contiributorsに自分のアイコンが増えた♪ これはフィードバックするのに「面倒」は理由にできないですぞ。<a href="https://t.co/9KhAwhV5PP">https://t.co/9KhAwhV5PP</a> <a href="https://t.co/r46zFUvkEp">pic.twitter.com/r46zFUvkEp</a></p>&mdash; あめいぱわーにおまかせろ! (@amay077) <a href="https://twitter.com/amay077/status/1006355144567488512?ref_src=twsrc%5Etfw">2018年6月12日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

このツイは Microsoft の製品やサービスのドキュメントについてなんですが、

* [Microsoft Docs](https://docs.microsoft.com/en-us/)

というポータルがありまして、同社のサービスの多くはここでドキュメント公開されている模様です。
ここで公開されているドキュメント群は、バックエンドに GitHub[^gh] が使われていて、ドキュメントの修正方法に GitHub のプルリクエストの仕組みがうまく統合されています。

とても素晴らしいのは、ドキュメントの修正が **「誰でも」**、 **「簡単に（すなわち今すぐに）」** できることです。Microsoft アカウントは必要ありません、GitHub アカウントがあればOKです。

## ドキュメントの修正を送る手順

例えば、テキトー に Visual Studio -> Visual Studio App Center とクリックしていって https://docs.microsoft.com/en-us/appcenter/dashboard/ を開いてみると、普通にドキュメントが見られるわけですが、ここでなにか誤字を見つけたとします。

そしたらすぐに、画面の右側にある「Edit」ボタンを押します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/bc271f91-a630-3f7b-e4fe-b4c23770f56b.png)

するとなぜだか GitHub の当該ドキュメントのページが開くので、ここでも編集を示すアイコンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/e3d1ff05-5399-81fe-5846-67b4844dbbb9.png)

そしたら Markdown の編集画面になるので、みつけた誤字を修正します。
ここでは仮に 「EMail を E-Mail に直す」 という超どうでもいい修正をしました。

**仮なので実際にはこんなPRは送らないですよ**

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/d98bbdbf-05bb-5e91-4b29-110a9976dca6.png)

「Propose file changes」 を押します。大丈夫です、まだ何も起こりません。

次に修正箇所の確認画面になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/07121645-736c-9802-f40e-faf98f25dacd.png)

修正が問題ないことを確認したら、「Create pull request」を押します。まだ何も起こりません。

すると、次のような画面になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/0146cf93-0fb0-c248-6f99-5f3c8372fb3e.png)

"Leave a comment" に簡単に「どんな修正をしたか」とか「なぜこの修正をしたか」などを書いて「Create pull request」 を押すと、 **実際に修正が送信されます**。

プルリクエストが送信されると、Microsoft のチームの人がそれをレビューし、問題なければマージされ、サイトに反映されます。

## 私が送った修正のプルリクエスト

App Center で Android アプリをビルドするときに、環境変数を注入する方法が間違っているのに気づいて、それを修正しました。

https://github.com/MicrosoftDocs/appcenter-docs/pull/168

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/ee5f90cd-b443-c1d9-0766-6b916b55ed94.png)

「Java なんだから ``string`` じゃなくて大文字の ``String`` だろ」 とか 「文字列は ``\"`` で囲まなきゃダメだろ」 というところを直して、簡単に説明して送信しました。

送信後、こんな↓感じで、アチラのメンバーの人がリアクションしてくれました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/da1a16fc-2b98-c2fe-107e-9e0dcb5d078e.png)

コメントがもらえたらすかさず :thumbsup: して、「見てますよ〜」 感を出していくと、アチラも悪い気はしないと思います。

最終的には５日後くらいにこの修正がマージされて、サイトに公開されました。

現在、該当ページは次のように修正済みです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/3d0da3e0-5acb-150b-32b9-3e4fcc32647a.png)

ついでにページ上部の contributors にアイコンが付きました、やったね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/52f2716e-7565-1961-f48b-39fb639862e1.png)

## 今すぐコントリビュート！

https://docs.microsoft.com/ はローカライズもされているのですが、「とりあえず機械翻訳で出したよ」的なものも多く見られます。

例えば [Xamarin Android の日本語のページのひとつ](https://docs.microsoft.com/ja-jp/xamarin/android/user-interface/material-theme) を見てみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8227/1240d772-cc43-25ca-b388-be4a93187366.png)

おお、Material Theme を「材料テーマ」ときましたかｗ 
まあ機械翻訳だし仕方なし。
カーソルを当てると英語の原文が見られるのも便利ですごい。
ここから適切な日本語文に修正してプルリクエストを送ることができます。

日本語訳は結構難しくて、ドキュメント全体で訳の一貫性を保たせなければならない、とかあるんでしょうけど、なにかアクションを起こさないとこちらの(この日本語版ドキュメントが欲しいという)ニーズも伝わらないので、カジュアルにプルリクしてよいと思います。ダメなら Reject されるだけです。

## おわりに

と、このように誰でもすぐにドキュメント修正が行える仕組み、よくできてるなあ、と感動しました[^hb]。
やりたい／やってほしい事が抵抗なくできるシステム、理想的なんじゃあないでしょうか。

Microsoft さんにはこの仕組み自体を我々にも使わせて欲しい！（もう公開されてるなら教えてください）
自社の製品やサービスのマニュアルもこれ使いたい！ APIリファレンスもこれで書きたい！ もはや CMS これでいいじゃん。
よろしくご検討ください。

## 他の事例(随時追記 ※コメントなどで募集してます)

### Elasticsearch

[Elasticsearch](https://www.elastic.co/jp/products/elasticsearch) の[ドキュメント](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)も、同じ仕組みであるとの情報をいただきました。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://t.co/qppqavNAks">https://t.co/qppqavNAks</a><br><br>すっごい薄いですが「edit」というボタンがあります。ちょっと薄すぎて目を凝らさないと見えないですが…ｗ</p>&mdash; FUJI Goro (@__gfx__) <a href="https://twitter.com/__gfx__/status/1006712075492585473?ref_src=twsrc%5Etfw">2018年6月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### MDN(Mozilla Developer Network)

MDN のドキュメントも、同じ仕組みであるとの情報がありました

<blockquote class="twitter-tweet" data-cards="hidden" data-lang="ja"><p lang="ja" dir="ltr">MDNも忘れないで！MDNは2006年以前からその仕組みがある。MSのこの改善は素晴らしい。もっと早くに欲しかった。 / “プロダクトのドキュメントにプルリクエストを送れる仕組みがすごい” <a href="https://t.co/G1jeSeIKcJ">https://t.co/G1jeSeIKcJ</a></p>&mdash; test (@in_dow) <a href="https://twitter.com/in_dow/status/1006718243644452864?ref_src=twsrc%5Etfw">2018年6月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

* [HTMLを始めよう - ウェブ開発を学ぶ | MDN](https://developer.mozilla.org/ja/docs/Learn/HTML/Introduction_to_HTML/Getting_started)

なるほど右上に「編集」ボタンがあります。

### Docker

[Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 17.06.Beta ドキュメント](http://docs.docker.jp/index.html) は Read the Docs が使われているようです。

### AWS(Amazon Web Services)

ドキュメントの言語を English にしたときのみ「Edit on Github」のボタンが現れます(コメントで教えていただきました。)。

例 - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

### さらに（すみません、まとめて）

> GitHub にホストされているものに関しては、むしろ、できないほうが驚く程度には一般的な印象です。

との意見と以下の情報をコメントにていただきました。

* [Babel](https://babeljs.io/docs/en/index.html) (右上に EDIT)
* [Webpack](https://webpack.js.org/concepts/) (右上に EDIT DOCUMENT)
* [ESLint](https://eslint.org/) (フッターに Edit this page)
* [Vue.js](https://vuejs.org/v2/guide/) (フッターに Edit this page)
* [React](https://reactjs.org/tutorial/tutorial.html) (フッターの上に Edit this page)
* [npm](https://docs.npmjs.com/cli/install) (フッターに Send a pull request!)

## この機能を実現可能なサービス・ソフトウェア

### Read the Docs, GitBook 

[Read the Docs](https://readthedocs.org)、 [GitBook](https://www.gitbook.com/) というサービスもあるそうです、これらは我々がコンテンツを提供する側になれる SaaS ですね。

<blockquote class="twitter-tweet" data-cards="hidden" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://t.co/3nCVFfK0a3">https://t.co/3nCVFfK0a3</a> とか <a href="https://t.co/Kxb2KwG0dF">https://t.co/Kxb2KwG0dF</a> とか使えば気軽に実現できます。アイコンはないけど。 / “プロダクトのドキュメントにプルリクエストを送れる仕組みがすごい” <a href="https://t.co/Cq1YipcuHL">https://t.co/Cq1YipcuHL</a></p>&mdash; ㈱にゃーん (@Kengo_TODA) <a href="https://twitter.com/Kengo_TODA/status/1006759972976381959?ref_src=twsrc%5Etfw">2018年6月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

セルフホストできるようなプロダクトがあれば企業や団体の閉じた世界で使えそうです。

[^gh]: ちなみにこの仕組みは GitHub 買収発表以前からあったものです、念の為。
[^hb]: Android や iOS のドキュメントもこんな風にすぐフィードバックできるようになって欲しい！