Unixな話を中心に。最近は雑多な内容が多かったりして...。前説:こんな書かれ方をするといやなのだみなさん、ソフトウェアの設計書ってどうやって書いてます?....やっぱExcelですよね、この業界。版の管理は気にしなくてよい場合になら、たぶんExcelを普通に使うと思う。実際の現場だとそんな悠長なことを言っていられるわけでもなく、人が書いた設計書をもとに実装、なんてことは普通で、場合によってはこんな設計書()に出くわすこともありうる。この場合の正解は、商品情報.商品カテゴリが104のとき、商品情報.個数を加算する。なんだけど、不要な情報が一緒に目に飛び込んでくるのは、正直勘弁してほしいと思う。Office(xlsだと特に)だとこんなことが起きうる。Officeだとこんな弊害が起きる、と個人的には考えている。Businessとかが必要で、ふつうのVCSでやるのは悪夢でしかない(上に関連するが)リビジョン間で「どこがどう変わったか」を把握するのは、容易なことではないので、一つの最終版ドキュメントにすべての情報を押し込めようとする集中管理されるべき設計書がカジュアルコピーとして拡散するので、どれが本物かわからなくなる設計とは本質的に関係のない「体裁の修正」に、少なくはない労力を割かなければならないここまでで終わらせたらただの文句でしかないので、どうすればましになるかを考える。Officeでもっとも設計書作成で使われるのは、表計算ソフトであるExcelじゃないだろうか。表計算をほとんど必要としない文書なのに、なぜExcelを使うのか、僕なりに考察してみた。Officeが入っているので、環境を選ばない。これは、設計書を「納品」しても、それを相手先でも読むことができることを意味するExcelを使うときの利点を考えたら、僕ではこれくらいしか思いつかない。読者諸兄で、これ以外の利点がご存知ならご教示いただきたい。個人的には、これらは何もExcelでなくても達成できるものだと思う。考える理由は以下のとおり。Officeだと難しいのは、ファイルフォーマットがバイナリが基本なのが原因なので、原稿をプレーンテキストで記述できれば差分管理はVCSが良しなにしてくれる単一の原稿から複数のフォーマットの成果物を生成できれば、「開発時は開発サーバ上のHTMLを参照」し、「納品にはPDFを使う(必要であれば印刷してもよい)」という方式がとれるドキュメントビルダを経由すれば、規定のマークアップ仕様のもとで、体裁は統一された仕様として構造化された文書に紐づくので、「文書体裁の修正」と「ソフトウェアの設計」を明示的に分離できる前置きが長くなったが、これらを一度に解決する(と僕が考える)ソフトウェアがある。本題:ぼくのかんがえたさいきょうのドキュメントCIかんきょうまずは目標とすることを挙げてみる。文書の意味付けは標準テンプレートでまかなう版の管理をVCSに分離するVCSにコミットされた原稿からのビルドは、人手を介することなく自動的に行われるようにする開発中の設計書が拡散しないよう、Webサーバで参照できるようにする納品用成果物となる設計書は、PDFにして管理するいろいろ挙げたが、概念的にはこんな図になる。いうわけで、ひとつひとつ書いていく。実行して作るだけなので、特に難しいことはないはず。VCSも、現状Git以上にベターな選択肢はないので、Gitを選択し、外部のホスティングサービスにおいている。BitBucketを使っている。プロジェクトを作ったら、UTF-8を扱えるエディタでreStructuredTextのマークアップ仕様に基づいて設計書を書いていこう。面倒なことは有能な執事に任せる「体裁の修正」や「可読性の高い文書ファイルの生成と配置」といった、本質的に設計と関係ないところで労力を割きたくないので、このテの作業はすべてJenkinsに任せる。BitBucketがプッシュを受け付けたことをトリガーにしてビルドを始めるのが、反映タイミングとしては最速なのだが、これを実現するためにBitBucketにWebHookを設定する。Jenkins側にBitBucketからのWebHookを受け付けるためのプラグインを導入する。pluginを使った。導入自体は、Jenkinsのプラグインマネージャーから行える。導入したら、ビルドプロジェクトをつくる。ソースコード管理はGitにする。BitBucketの仕様に従っていれば特に問題はないはず。成果物をディレクトリにコピーするシェルスクリプトを実行する。認証なしで実行できるようにしている。tomcatALL=(ALL:ALL)NOPASSWD:/bin/chownこのあたり、もっとましなやりようがないものか。我ながらかなりの力技だ(汗)。Jenkins側の受け入れ態勢ができたところで、BitBucketのプロジェクトにWebHookを送る設定を書く。ここまでやれば、手元で原稿を書き、それをBitBucketへプッシュするだけで、実装者にも納品担当者にもうれしい設計文書が作られているはずである。芸能・アイドルRSSを表示する@niftyが提供する無料ブログはココログ!。