こんにちは、ナイトレイインターン生の田中です。
Wantedlyをご覧の方に、ナイトレイのエンジニアがどのようなことをしているか知っていただきたく、Qiitaに公開している記事をストーリーに載せています。
少しでも私たちに興味を持ってくれた方は下に表示される募集記事もご覧ください↓↓
はじめに
はじめまして株式会社ナイトレイの渡辺です。
この記事では、実際に弊社の開発チームが実践しているロゼッタストーンドキュメントについての概要と、書くべきドキュメントについての考え方などを記載します。
ロゼッタストーンドキュメントとは
ロゼッタストーンドキュメントは(自分自身も含めた)未来のチームメンバーに向けて書く簡潔な手引書を指します。ソースコードやテストコードだけでは理解しづらい、開発対象システムの全体像の把握につながる情報を記します。
ちなみに、ロゼッタ・ストーンとは、エジプトのヒエログリフを理解する鍵となり、他の古代エジプト語の記録も解読が可能になったと言われているみたいです。
弊社が実際に書いている内容
弊社ナイトレイで実際に書いている内容は以下です。
ある程度の規模の機能単位ごとに作成しています。
- システムの概要
- 担当者、リポジトリやサーバーの在処
- システムの開発経緯
- システムの目的 (開発理由)
- システムの設計や仕様
- ビルドと動作確認の実行手順
- その他補足
- 関連資料リンク
何が良いの?
- これ1つあればシステムの概要を把握でき、すぐに作業を開始できる
- ソースコードの読解力が促進されること
- 概要レベルの情報なので、ドキュメントを更新する際も短時間で済む
アジャイル開発におけるドキュメントの考え方
書かなくて良いは間違い
「アジャイルだからドキュメントを書かない」という話は一度は耳に入れたことがあると思います。ただ、これはきっと誤解です。
誤解の理由は、アジャイルソフトウェア開発宣言に記載されている「包括的なドキュメントよりも動くソフトウェアを」が原因だと思われます。しかし、ここでは「包括的」なドキュメントだけを指しているのであって、ドキュメントは全て不要と表現されているわけではありません。むしろ、「必要最低限」なドキュメントはシステムにとって当然必要であるということが暗に示されているようにも感じます。では、その必要最低限とは何を指すでしょうか?
必要最低限でいこう
必要最低限は、もちろん組織によって異なるはずです。また、組織のフェーズによっても異なるはずです。なので、常に議論されるべきことであると考えています。ちなみに、弊社では保守の際に最低限困らないようにするためにドキュメントが必要と定義しているので、その意味でロゼッタストーンドキュメントは必要最低限として挙げています。
無駄なドキュメントは削っていこう
もちろん、必要最低限以外のドキュメントはアジャイルソフトウェア開発宣言のとおり削っていくべきです。なので、常に必要最低限のドキュメントは何か?という議論に合わせて、削るべきドキュメントは何か?も議論していくべきです。弊社にとって削るべきドキュメントは「機能の具体的な使い方」、「細かすぎる仕様書」でした。
ドキュメントあるあるかもしれませんが、作ったはいいが作りっぱなしで結局未来で一度も見られなかったなんてこともありますし、ドキュメントはあればあるほど運用コストがデカくなります。アジャイル開発者にとってソースコードを書くのと同じレベルでドキュメントも書くことに慎重になるべきだと思います。
大前提 ソースコードもドキュメント
必要最低限のドキュメントを書いていくには、ソースコードもドキュメントであることも意識する必要があると思います。結局はコードに書いてあることが1番細かいシステムの情報だと捉えることもできるので、誰が見てもわかりやすいコードを書いたり、理解をサポートするようなコメントを含ませたり、そのようなアプローチは非常に有用だと考えています。
システムの概要はドキュメントで
より細かい情報はソースコードで
非常にシンプルだと思います。
まとめ
- ロゼッタストーンドキュメントがあればシステムの概要を把握でき、すぐに作業を開始できる
- 「アジャイルだからドキュメントを書かない」は間違い
- 必要最低限のドキュメントと、削るべきドキュメントを定義することが大事
- システムの概要はドキュメントで、より細かい情報はソースコードで
参考資料
- http://www.kumikomi.net/archives/2012/11/ep15agi2.php
- https://agilemanifesto.org/iso/ja/manifesto.html
- https://gihyo.jp/dev/serial/01/agile/0004?page=4#sec2_h1
最後に
私たちの会社、ナイトレイでは一緒に自社開発のWebサービスを盛り上げてくれるエンジニアメンバーを募集しています!
基本的には直接ユーザーと接することのないポジションですが、セールス部門から
「顧客の声」を教えてもらったり、希望すればユーザーとのMTGに参加することも可能です。
モチベーションの高め方はあなた次第。
このような方は是非Wantedlyからお気軽にご連絡ください(もしくはこちらまで recruit@nightley.jp )
✔︎ 自社Webサービスの開発で事業の発展に携わってみたい
✔︎ 自分が開発したサービスで地域活性化に貢献したい
✔︎ 位置情報ビッグデータに興味があり、新しい活用方法を提案したい
✔︎ 地理や地図が好きで仕事中も眺めていたい
一つでも当てはまる方は是非こちらの記事をご覧ください 。
二つ当てはまった方は是非エントリーお待ちしております(^ ^)
「位置情報×モビリティ.まちづくりetc事業領域拡大の為GISエンジニア募集」
https://www.wantedly.com/projects/1031814
▼ナイトレイとは?