Mindこの広告は、90日以上更新していないブログに表示しています。温泉編]otherとりあえず書き出してみました、これから色々修正します。したら良いと思う、こうしたら良かったの両方がごちゃごちゃっとなってますが、あくまで考え方なので銀の弾丸ではありません。話しをしました、いい機会なのでまとめてみます。自分が色々やっている中で、こうした方がいいと思いますという内容がほとんどです。エントリあげてました、実践的な話しなのでオススメです。よってそれぞれでしょう。そのため、今回書かれていることが銀の弾丸になる事はありません。開発手法は固定するモノではなく、常々変化するモノです。沢山のご意見をお待ちしてます。開発がメインライブラリの選択ライブラリの選択というのはどの言語を使っていても難しいモノだと思います。ここで手を抜くと後々痛い思いをしますし、全てを自前で書こうとするのは余りに非効率です。ライブラリの選定をしっかりやりましょう。ここではウェブアプリがベースなのでその点で話しを進めていきます。自分がライブラリを選択する際に注意したいのは安定した開発が行われている、または枯れきっているのどちらかです。他にはテストやドキュメントがあるというのもありますが、まずは関わっている人が多い方が良いと考えています。一つのフレームワークに特化する方が良いです。適材適所という話がありますがウェブはほとんどやることが同じです、内容が軽いモノと重いモノでわけるくらいでしょうか。ライブラリの環境ライブラリの選択が終わったら、社内のリポジトリにそれらのソースコードリポジトリを作りましょう。等に公開されていることがほとんどです。それのミラーを社内に保持します。定期的にミラーからデータを取ってきましょう。毎回外に取りに行くのも良いですが、それよりは社内のほうがスマートです。ライブラリの更新あくまで経験則なのですがライブラリは常に最新版に保っておくのが良いです。ライブラリが更新されたらできる限り追従しましょう。更新するタイミングとしてはタグが打たれたタイミングで十分だと思います。タグを打たないライブラリがあったりします。その際は社内のミラー側に「勝手に」タグを打ちましょう。プロジェクトで使うライブラリは全てタグが打たれたモノを使います。ライブラリの更新に伴い、できる限りそのライブラリを使用しているプロジェクトのライブラリ依存も更新しておくべきです。なんていうのはなくしていきます。全てのバージョンをそろえることでメンテナンスコストがかなり下がります。あげる手間がかかると感じてしまいがちですが、必要になってあげるより一つあげるなら他も一気にあげた方がノウハウがたまったり、バグを見つけたりと色々経験できます。ある程度のプロダクトがあったとしても後で書くテスト等がしっかり書かれていればバージョンを上げるコストはかなり低いです。ライブラリのドキュメント公開されているライブラリであればドキュメントが書かれているのも多いので問題無いでしょう。コストが高いのは自社非公開ライブラリのドキュメントです。公開していればある程度書いたりするのもいいでしょう。他の人が使うことで色々直してもらえたりしますし、もしかするとドキュメントを書いてくれる人がいるかもしれません。非公開の場合は話しが別です。基本的には社員しか使わないため、ドキュメントをあまり書く可能性が低いです。等に書いておいてあえて書かないというのも手です。ソースコードにコメントさえ書いてあれば困る事はあまりないでしょう。したライブラリに対するドキュメントがあるのが理想ではありますが、そう上手く行かない事の方が多いです。自社ライブラリと公開ライブラリ公開ライブラリで多機能なモノの場合は、自社ライブラリでラッピングしてしまうのもオススメです。機能しか使わない場合は自社ライブラリ側でその機能をラッピングして、その部分だけ集中的にテストを書いてしまいます。必要な機能だけ、自分たちのテストが書けるわけです。欲を言えばその書いたテストを公開ライブラリ側にテストを書いてパッチを送るのもありですね。開発環境は気軽に整えられるように社内に全てのライブラリのリポジトリがあれば、あとはプロダクトのリポジトリを更新したら全て必要なライブラリ等が自動的に入るようにしましょう。開発環境を簡単に作れるというのは実はとても重要なファクターです。これを目指すのがオススメです。たたけばあとは全部用意してくれるが理想ですね。言語のバージョンこれだけは実はかなりハードルが高いですができる限り統一するのが理想ですが、難しいと思います。その場合は複数のバージョン環境を簡単に切り替えられるようにする事が大切です。ここは開発環境を気軽に構築出来るというのに結びついてきますね。コーディング規約を決めるできる限りコーディング規約を明確にすると開発しやすいですしメンテナンスも楽になります。使ってチェックするといいでしょう。スタイルガイドhttp://works.surgo.jp/translation/pyguide.htmlルールはルールです。趣味ではなく仕事で書いている以上、ルールはできる限り守りましょう。あまりにも会わない場合は理由を説明して理解を求めましょう。拒否するのではなく提案をする事をオススメします。単体テストと外部テストテストは安心を提供してくれますが、開発速度を妨げる負債でもあります。単体テストはその機能を開発した人の為にその人が書くためにあります。外部テストは「仕様」と一致しているかどうかを確認するためにあります。これら二つがあってやっとテストです。単体テストだけ書いてカヴァレッジが上がっていたとしても仕様通りには動く事は少ないですし、外部テストだけ書こうとすると仕様と明らかに違う事や、大きく転ぶ可能性があります。どちらも重要ですが、書く人を変えるのがオススメです。単体テストはその機能の開発者、外部テストはその機能を開発していない人が書くべきです。二つのテストを疎結合にすることで、仕様ミスや、実装ミスを見つけやすく出来ます。継続的インテグレーションツールを導入しましょう。