• コラボレーター
  • 加留部 有哉

開発以外でも使える!GitHubの一歩先ゆく活用術【文書校正・仕様書作成】

スタートアップにおけるソフトウェア開発では今や当たり前となったGitHub。ですが、開発以外の用途にも活用できる可能性があることをご存知でしょうか? SELECKを運営するリレーションズ株式会社では、ソースコードの管理だけではなく、次のような用途にもGitHubを活用しています。

  • SELECKの記事の品質を上げるための自動校正ツール
  • 誰でも編集でき、どこでも閲覧できる仕様書作成ツール

今回はこの2つの事例を紹介します。

▼Githubの使い方についてはGithub入門の連載記事をご覧ください。

チーム開発を変える「GitHub」とは?導入方法・使い方を徹底解説!【第1回】【導入編】

GitHubはソースコード管理の枠を越えて活用されている

SELECKでは今まで、数々の企業にGitHubの活用方法を取材しました。

GitHub本来の使い方であるソースコード管理に主軸を置いたサイバーエージェントさんの記事や、営業とエンジニアの壁を埋めるような使い方をしているM.T.Burnさんの記事には、特に大きな反響をいただきました。

GitHubは、本来ソースコードを管理するためのツールです。しかし、SELECKの取材先企業が体現しているように、アイデア次第で一歩先をいく使い方ができます。

これまで数多くの企業の活用事例を取材する中で、もっと幅広い領域でGitHubを活用出来るのではないかと考えました。そうして実際に試してみた施策の中から、ユニークな2つの活用法を紹介します。

活用例1:記事の執筆をGitHubで行う

まずひとつ目は、SELECKに配信している記事の管理にGitHubを活用しています。

SELECKのリリース当初は、記事をクラウドストレージで管理していました。しかし、記事には執筆中・編集中・最終稿といったステータスがあり、それぞれで履歴を管理する必要があります。記事数が増えるにつれてこの管理が煩雑になってしまい、それを解決するための手段としてGitHubの導入を検討しました。

エンジニアの方にはあまり馴染みがないと思いますが、実はGitHubはWeb上でファイルの作成・編集・ブランチの作成など一通りの操作が可能です。Web上からの操作であれば、gitの仕組みを知らないライターでも簡単にファイルの操作ができます。

▼ライターがPullRequstを作成して編集者に編集を依頼する

実際の作業フローとしては、ライターがGitHub上で記事を書き、執筆が完了した時点でPullRequstを作成して編集者にアサインします。編集者はそのPullRequst上で記事を編集し、完了したタイミングでマージします。こうすることで編集前後の差分がPullRequstの形で残り、ライターが自分の記事を見なおして改善していくことも簡単になります。

▼編集後に差分の確認もできる(左:編集前・右:編集後)

記事の執筆にCIを組み込み、校正を行う

このように記事の保管先として使い始めたGitHubですが、今ではさらに一歩踏み込んだ活用をしています。それがCI(継続的インテグレーション)による記事の自動校正です。

SELECKではGitHub以外にも、CircleCIやTravisCI、JenkinsといったCIツールも数多く取材しています。そのひとつであるサイバーエージェントさんの記事では次のように述べられています。

機械ができることはできるだけ機械に任せ、人は人ができることをするべきだと思います。エンジニアはエンジニアにしか出来ないことに集中する環境を作るために、自動化ツールを最大限に活用しています。

一般的にCIでは、ソースコードの静的解析やテストを自動化します。記事のデータもソースコードと同じくテキストベースであるため、同様に自動化可能な領域があるのではと考えました。

CircleCIを使い、記事を編集する度にタイトル・見出しの文字数チェックやNGワードの検出、校正APIを使った自動校正を実装しています。PullRequestを作成するとCIが実行され、記事の校正結果がPullRequestのコメント形式で流れます。これは「textlint」というOSSを活用しています。

▼自動でCIが実行され、記事の校正結果がコメント形式で流れる

このシステムの導入により、ライターは簡単な誤字や不適切な表現に自分で気付くことができるようになりました。基本的な指摘を自動化することで編集者の手間を削減でき、より記事のクオリティに注目することが出来るようになりました。

構成図などの詳細は、こちらのQiitaの記事をご覧ください。

活用例2:仕様書の管理をGitHubで行う

もうひとつの活用事例が、仕様書などのドキュメントを管理する場所としてのGitHubです。一般的に仕様書はWordやGoogleDocsなどで書かれる事が多いと思いますが、「システムには変更があったけど仕様書が更新されていない」というケースが多々あります。その原因がリッチテキストを編集する手間や、バージョン管理の煩雑さにあると考え、GitHubで解決できるのではと考えました。

仕様書をMarkdown形式で記述してGitHubに保管することで、編集履歴の管理が容易になります。また、メリットは履歴管理だけではなく、GitHubレポジトリの内容を電子書籍化するOSS「GitBook」によりドキュメント化が容易であることも上げられます。

GitBookを使うと、GitHubに保管されたファイルがPC・スマートフォンどちらでも電子書籍のような形式で閲覧できます。もちろん、PDFへのエクスポートにも対応しています。

▼GitBookを使うと、GitHubに保管されたファイルを閲覧できる

だれでも、どこでも最新のドキュメントを見れる状態に

GitBookにはホスティングサービスもあり、これを使用するとで常に最新の仕様書が閲覧できるようになります。しかし、そのためにはGitHubのアカウントを持っている必要があるため、社外の人に閲覧権限を渡すことが難しいという問題があります。弊社ではその問題を解決するために、Amazon S3のWebホスティング機能を使って仕様書を公開することにしました。

GitHubのファイルが更新されるたびにCircleCIが起動し、GitBookによりエクスポートされたHTMLファイル一式をS3に自動でアップロードしています。これでGitHubアカウントを持っていない人でも最新の仕様書を閲覧出来る環境が整いました。気になるセキュリティも、リバースプロキシを立ててしまえば十分に確保することが出来るため、手軽に仕様書を公開する環境を作りたいプロジェクトにはおすすめです。

構成図などの詳細は、こちらのQiitaの記事をご覧ください。

GitHubはアイデア次第で何通りもの使い方が可能

今回、ソースコード管理という目的以外での活用例を挙げましたが、GitHubにはアイデア次第で無数の活用方法があるように感じます。成果物の履歴管理をしたい人も、自動化出来そうなルーチンワークを抱えている人も、一度GitHubでその問題を解決できないか検討してみてはいかがでしょうか?

▼Githubの使い方についてはGithub入門の連載記事をご覧ください。

チーム開発を変える「GitHub」とは?導入方法・使い方を徹底解説!【第1回】【導入編】

;