Q&Aセッション Webアプリケーションのつくりかた

次のセッションは谷本さん(id:cero-t)の「Webアプリケーションのつくりかた」。
「開発に関係すること」を分類し、分類されたトピックから参加者にお題を選んでもらい、参加者の体験談を聞いたり、ご自身の体験談を話しながら進めていくといった内容でした。
セッション中のQ&Aの結果はうらがみさん(id:backpaper0)がまとめていらっしゃっています。

フレームワーク

僕は派遣先が独自に開発したフレームワークを使い続けているので、最近のフレームワークについては全く把握できていません。
フレームワークを使えば開発が楽になる」とは限らないこと認識されてきているみたいだけど、フレームワークを全く使わないことも考えられないんじゃないかと思っています。
なので、どんなフレームワークを使っていて、どんなフレームワークに興味があるのかというのは、すごく参考になりました。

自動テスト

Javaのテスティングフレームワークとして、JUnitは完全にデファクトスタンダードになっている印象。
「当たり前」ではない僕がいる・・・

  • コーディングする前にテスト仕様書(チェックリスト)を作る

コーディングしてからだと、テストケースが漏れてることがありますね。
「コーダーはテスト仕様書(チェックリスト)を作らない」っていうのも可能な限り実施したいです。

  • レガシーコード(テストのないコード)に対しては、範囲を絞って行う

テストがないコードを自動テストできるようにしたいと思ってきたので、質問してみました。
レガシーコード改善ガイドを読んでみようと思っています。
読書会が開催されているようですが、東京では参加が難しい・・・

DBのテスト

顧客からデータをもらい、テストケースに応じてパッチを当てることを繰り返している身としては、どんな方法でテストしているのか興味深かったです。

  • DBへの接続情報は統一し、hostsファイルで担当者用DB環境に接続するようにする

「なるほど」と思ったTipsでした。
DBに限らず、接続情報は各担当者ごとにプロパティファイルで設定したりしているけれど、同じようなことかな。
いや、アプリケーションで使うファイルを触っている時点で違う気がする。

  • データは事前投入する
  • テーブル構成が変わると面倒なので、DDLは手動で

僕の場合、手動で対応しなければならない状況ばかりですが、ポリシーは無かった気がする・・・

  • Virtual Boxでやりたい

「クラウド + 仮想化」な環境を提供するサービスはあるようです。

    • 開発者はVPNで仮想化環境にアクセス
    • 各開発者は全く同じ仮想マシンで開発
    • 仮想マシン上で開発すれば、情報漏えいのリスクを減らせる
    • 仮想ファイルサーバを立ち上げれば、協力会社同士が直接データをやり取りする必要がなくなる
    • 開発規模が拡大・縮小しても、仮想マシンの数をコントロールするだけで良い

良いことばかりに聞こえるけど、使ってみたらかゆいところに手が届かなかったりしそうですね。
それにしても良い値段しそうだなぁ。

ファイルの入出力テスト

「基本的にDBのテストと同じ」とのことでした。

CI(Continuous Integration)

Hudsonは最近知りました。
「buildする」という意味では、Ant、Maven、Hudsonの違いが良くわかってません。
とにかく前提知識が足りないですね・・・

セキュリティ対策

PreparedStatementを使いましょう。

  • 同一セッションの複数リクエストは許さない

syncronizedを使ってセッションの上書きを防ぐお話。
ダブルクリックを抑止するくらいしか対策したことが無かったので、新たな発見でした。

  • ツールを使用する

ツールは使われていないようです。

僕が参加したプロジェクトはここ止まり。

  • 教育

体系的な(網羅的な?)セキュリティ対策に関する情報を、皆さんはどうやって手に入れているのでしょう?
僕が参加したプロジェクトでは、せいぜいガイドラインどまりでした。
セキュリティ対策というと、優先順位が低く、補足的に対応していて、体系的なルールというよりは経験則で対策しているイメージがあります。