プレドン引き。
今日は、プレドン引きとして、フォーティファイ・ソフトウェア株式会社と言う会社で、
売り物のツールを見物してきました。
まず、前提としてこのソフトウェア如何に関わらず、
僕は、理屈抜きに静的解析ツールの類が大好きです。
少なくとも、以下の文章は、その部分を差し引いて読んで頂けるとイイかなぁ…とか。
非常に短い時間の間に紹介された部分的な見地でしか無いものの、
僕がこのソフトウェアが優れていると感じる部分は、
- 複数のプログラム言語を単一のツールで解析出来る事
- チェック対象項目が、売り切りでは無く、定期的に追加される事
- ウィルスチェックソフトウェアの様な感じで、サーバにチェック定義を取りにいく事が出来るらしい。
- かなり充実したドキュメントが付随しており、それの見せ方がそれなりに工夫されている事
大まかに書くと大体この三点かな。と。
単一のツールが複数の言語を精査出来る事について。
業務アプリケーションと言うか、SIerが取り扱う様なソフトウェアの開発において、
恐らく単一の言語だけを扱うだけで、システムが完成する事は、ほぼあり得ないと僕は考えます。
最低でも三種類のテクノロジを扱うのがごくアタリマエなんじゃないかなぁ…と。*1
特にMVCモデルに拘らないとしても、例えば
とか。
例え、静的解析するにしても、これらを全く別のツールでそれぞれチェックしていくとなると、
それはそれで、手間だし、セキュリティ系とかテスト系のツールは*2値段が高いのが世の常だし、と。
それに、遥か古代からソフトウェアのバグは、インターフェース*3に一番沢山あると言って、過言では無いでしょう。
単一のツールが複数の言語をチェック出来る事によって、発見できる種類の問題は少なくは無い筈です。
話題に登りがちなSQLインジェクションなんかは分かり易いと思います。
レガシーマイグレーション的な案件では、コストの問題で全てを作り直す事は出来ず、
どうしても複数の言語で実装せざるを得ない事もそれなりにあるでしょうし。
チェック項目が、定期的に増える事について。
これについては、良い事ばかりでは無いのですが、ココは非常に重要なポイントだと思います。
好むか好まざるかに関わらず、ソフトウェアは、何らかの形で変容していくものです。
それは、仕様変更かもしれないし、バグフィックスかもしれないけれど。
特に、オープンソースソフトウェアであれば、それは非常に顕著に現れるでしょう。
開発が活発なOSSは、それはそれは物凄いスピードで、機能が追加され、バグがフィックスされ、
昨日までの指針は、既に古いかもしれない。
まぁ、卑近な例で言えば、Seasar2.4系は、スゴイ勢いで変わっています。*4
JDKやJREだって、最低でも年単位で変化しています。
Java5がそろそろ安定してきたかもなぁ…と思ったら、もうJava7の話をしている人までいる位には。
静的解析ツールは、ある意味で、過去のプログラミングモデルにおけるバッドノウハウを駆逐し、
コードを在るべき姿へ補正しうるツールです。
ソフトウェアが変化し続ける事を考えれば、古いバッドノウハウは、新しいバージョンにおいて、
より適切な姿が存在する可能性が高いのです。
ちょっと例がオカシイかもしれませんが、
Javaなら、DoubleCheckedLockingは、あるバージョンまで適切に動作しない可能性が高いコーディングパターンでした。でも、今は違います。
ライブラリやフレームワークなら、機能が追加され、汎用的に便利になっていく過程で、
ある特定のコードパターンが、検出し辛い複雑なバグの原因になる可能性は十分にあります。
定期的にチェック項目が増えていく仕組みが存在すると言う事は、
この問題に大してベンダが取り組んでくれる可能性が存在すると言う事であり、
つまりは、売切りのソフトウェア*5を買うと言う事ではなく、
この会社が持っているノウハウを買える、と言う事なんじゃないかな…と考えます。
充実したドキュメントについて。
内容について細かく精査した訳では無いのですが、
見つかったそれぞれの脆弱性について、一般的な解釈及び、
それに対応する為の一般的な指針が表示されます。
これは、意識があれば、学習するチャンスを得る事が出来るという事なので、
これはこれで非常に重要だなぁ…と。
まぁ、ここは僕がやれてない部分なのでアレコレ言うのは止めます。
持ち上げるだけではツマラナイので。
僕が静的解析好きな事に加えて、ソフトウェア自体が非常に優れているので、
完璧に見えない事も無いのですが、家に帰る最中に考えたもやもやについて書いてみます。
まず、値段が高いです、はい。
サイトに見当たらなかったので、書いていいかどうか判断がつかない為、書きませんが、物凄い値段です。
個人的に買ったりとか、どう考えても無理です。本当にありがとうございました。
次に、ユーザインターフェースが、質実剛健に過ぎるです。
今日見せて頂いたのは主に、eclipseのプラグインでした*6が、
見易さや絞込み易さ、使い易さ、は必要十分にちょっと足りない印象があります。
僕自身ユーザインターフェースデザイン出来ていないので、
他人の揚げ足をとるのも如何なものかと、言われればそれまでですが、
もう少しカッコイイデザインってあるんじゃ無いかなぁと思います。
例えば、
まぁ、基本はエンジニアが見るモノなので、素晴しいデザインである必要性は無いのかもしれませんが…。
最後に、静的解析ツールを運用する事の本質的な問題点は、今の所、どうにもならない。
これは、どういう事かと書くと、
大量に出た脆弱性をより分ける部分が、人間に任されている事です。
いや、人間に任されていないと困るし、
全然出ないよりは、沢山出る方がよい事が多いのは間違い無いのですけれど、
多分きっと、大部分の人が、僕自身も含めて、
出た脆弱性に対処するべきか否かを決めきれない事があるでしょう。
又、チェックが定期的に増え続ける事の暗黒面なのですが、
増えたチェックを運用内に取り込むべきか否かを、決め続けなければいけないのは、明らかに大変です。
只、これは、現時点では、日本の法人で対応しきれないけれども、
アメリカの法人では提供しているオンサイトコンサルティングサービスの様な事を
日本でも提供するつもりがある…との事です。
これによって、恐らく大域において、この問題をお金によって解決出来るかもしれません。
オマケ的かつ些細な事ですが、PDFによる印刷精度の高いレポートを出力出来ないっぽい。
少なくとも、見せて頂いたeclipseプラグインのレポート出力フォーマットに、PDFはありませんでした。
これは、キチンと質問出来なかったのは、残念だと思うのですが、
まぁ、これが出来ると使い方が少し変わるんじゃないかと思います。