良いとは?
|
ソフトウェア開発ではこれまで、設計の重要性が繰り返し提言されてきた。良い設計ができれば、仕様を満たして正しく動作するだけでなく、理解や変更がしやすく、さらに再利用しやすいシステムとなる。逆に、そのようなシステムが実現できているのなら、それは良い設計であったといえるだろう。 では、良い設計が実践できているかというと、できていないことの方が多いのではないだろうか。例えば以下のような状況を聞くことは決して少なくない。 本稿では、ソフトウェアの良い設計を行うコツについて「NAgileの視点」で考察する(NAgileについての概要は第1回の記事を参照されたい)。また、それを実践するためのテスト系のN*ツールの紹介と、その効果的な利用方法を解説する。 以降の解説部分は、前回同様に会話形式の物語として話を進める。登場人物は以下の2人だ。なお本稿のサンプル・コードはすべてC#で記述している。 NAgiler(ナジャイラー=.NETにおけるアジャイル開発の実践者)。謎の多い人物。ちょっと偉そう。だが、実は弟子思い。 .NET開発者。ウォーターフォール型の開発を行っているが、アジャイル開発を明るく真摯(しんし)な態度で学ぼうとしている。 ※ご注意 ……本稿の物語やそこで交わされる会話はすべてフィクションであり、実在の人物、団体などとは一切関係ありません。登場人物の役柄はストーリー上の設定であり、筆者や読者を代表するものではありません。あくまでフィクションとしてお読みください。 さっそくですが師匠、NAgileによるアジャイル開発では、プログラミングだけに集中して、設計は行わないと聞きましたが、これは本当なんですか? それは、まったくの誤解だ。確かにアジャイル開発では、ウォーターフォール型の開発のように、開発ライフサイクル全体の前半に設計を集中的に行ったりはしない。だがアジャイル開発では、開発が継続される間、ずっと設計に投資するのだ。つまりNAgileでは設計がより重要視される。これは、開発期間中における仕様変更などのリスクを上手にコントロールするという考え方に基づいている。 ウォーターフォール型の開発では、後半の変更コストが増大するのを避けるため、できるだけ前半、できれば初期の段階で仕様を確定させ、後々に仕様の変更が発生しないようにします。これができなければ一人前のSEではないと教えられましたが、このやり方は間違っているんですか!? 必ずしも間違ってはいない。例えば開発の対象が明確で、仕様変更などのリスクがないケースなら、むしろそのやり方の方が有効だ。しかし現在では、そのようなシンプルな開発案件はほとんどない。なぜなら、顧客にとって高い価値を生むシステムというのは常に新しい挑戦であることがほとんどだからだ。そのようなシステムでは、未経験の仕様を決定せねばならないことも多く、当然ながらこれには多くのリスクが付きまとう。 要するにウォーターフォール型の設計スタイルが好ましいか、アジャイル開発型の設計スタイルを採用すべきかというのは、ケース・バイ・ケースであり、案件次第ということですね。 そのとおりだ。アジャイル開発では高いビジネス価値を生むシステムを対象としているので、ここでは仕様変更などのリスクの高いソフトウェア開発を対象として話を進める。 それでは話を少し戻して、なぜアジャイル開発が長期にわたって設計に投資し続けるのかを説明する。ビジネスで競争力を付けるためには、新しい挑戦が必要になる。新しい挑戦には、未経験の領域が存在する。また、ビジネスの提供速度や顧客ニーズへの対応速度も重要な価値となる。これらを極限まで高めるために必要となるのが そうではない。そもそも設計とは問題を解くことなので、あるのは唯一の正解ではなく、最適解にすぎない。状況が変われば問題も変わり、最適解も変わる。設計の本質は、変化を内在していることにある。変化を恐れていては、設計の本質を見極めることはできない。 この考え方は、特に未経験の領域に対するシステム開発においては合理的である。当然、未経験な領域に対する知識は、開発の初期段階では十分とはいえない。この状態で、十分な設計をすること自体にそもそも無理がある。 「あるものが全体として成長しているという時、その全体性こそが成長の絶え間ない創造者であり、起源であり、母体である。……中略……成長が始まった時点では、それがどのように展開するか予測できない」 と述べている。ビジネスを成長させることを命題とするとき、改善は避けて通れない重要な本質ということである。 具体的には、「変更容易性」を設計の最優先指針とする。つまり、変更を予測した設計ではなく、現時点で求められている最もシンプルな方法で設計することだ。そして、必要に応じて再設計する。 効果的な対処方法の1つが、「テスト容易性」(=テストできること)を設計時の指針とし、自動テストを作成するというものだ。設計段階で、「テスト対象は何か?」「利用方法はどうするか?」などを常に考えて、自動テストを作成する。このように自動テストを作成することで、変更することが簡単になるので、再設計時のコストを低減させられるのだ。 このような条件を満たしている良いテストは、以下のような「変更容易性」を高める効果があるので、良いテストを作ることが変更容易性のある設計への近道となる。 なるほど。アジャイル開発での設計の考え方やコツが少し理解できました。アジャイル開発ではこの良いテストが設計書になるから、やはりアジャイル開発ではドキュメント・ベースの設計は行わないんですよね? 違う。アジャイル開発では、良いテストのテスト・コードを重要な設計ドキュメントの1つとするだけだ。当然、UMLを用いた設計ドキュメントなども必要に応じて作成する。これについては数日前に、井坂 十蔵氏から(「開発をもっと楽にするNAgileの基本思想 第1回 アジャイル開発ではドキュメントを書かないって本当?」で)聞いたはずだが……。 また、設計と実装の時間ギャップをできるだけ少なくすることも重要だ。少しテストを作成したら少し実装を行う、というリズムが大きな効果を生む。このリズムによって、設計を検証しながら確実に開発を進めることができ、「日々設計を改善する」が実践される。 設計という行為としてテストを利用する場合、必然的にテストをまず初めに作成することになる。テストファーストは、NAgileの最初の一歩である。そこで、次に良いテストを実現するための基礎ツールについて話す。 Windows VistaでVB6アプリは本当に使えるのか? (2007/11/9) 「Vista時代もVB6で開発していきたい」、そんな開発者は必見。Vista対応時に起こる問題点、注意すべきポイント、効率的な対応方法とは? ホワイトペーパー利用者に「Amazonギフト券」を抽選で100名様にプレゼント!――TechTargetジャパン リニューアル・キャンペーン @ITトップ|Insider.NETフォーラム トップ|会議室|利用規約|プライバシーポリシー|サイトマップ |
[ 116] ソフトウェアの良い設計を行うコツ − @IT
[引用サイト] http://www.atmarkit.co.jp/fdotnet/nagile/nagile03/nagile03_01.html
|
「原点から未来へ良い仕事」をテーマとした、良い仕事とは何かを見つめ直す活動の一環として、ユニットごとに「良い仕事ワークショップ」が実施されています。 さらに、新しい視点を取り入れるためにはユニットの壁を越えて意見交換する機会も必要との声から、全社横断の「良い仕事ワークショプ」も月2回開催しています。 2006年8月17日、全社横断ワークショップに参加した社員23名は、各自の業務と照らし合わせながら、良い仕事について議論を繰り広げました。 全社横断ワークショップの目的は、部門を越えたさまざまな立場の社員同士が議論することで、良い仕事の切り口や課題解決の手がかりをつかむこと。さらにそれを各部、各部門に持ち帰り活用してもらうことです。当日はコーポレートスタッフ部門・営業部門から、さまざまな業務を担当する社員が、A・Bの2つのグループに分かれ、現在の仕事の内容ややり方などから始まり、「三井物産の良い仕事とは何か」について約2時間にわたって語り合いました。 Aグループは、「誰にとっての良い仕事なのかが見えにくい」、「良い仕事の定義は難しい」と結論。その理由は、「あらゆることに表と裏があるように、良い仕事にも両面がある」からです。例えば、電気のない地域に発電所を作り、電気を引けば、地域の人の役には立つが、地球環境には多少なりとも負荷をかけてしまいます。また、環境に良いとされる風力発電設備にも、場所によっては騒音などの問題が起こりかねません。一方で「需要がある以上、お客様にとっては良い仕事だ」との意見もあり、「100%良い仕事、あるいは悪い仕事というものは無く、区別は難しい」と結論付けたのです。 そして、「各部門で、自分たちの仕事が良い仕事かどうかを点検するシステムを持つべき。また自分の部門だけの考えにならないよう他の部門との横の連携も必要」との提案が出ました。 Bグループは、「すべての面で良い仕事ということはなく、家族に堂々と話せる仕事かどうかが基準になるのではないか」、「商社の仕事はステークホルダーが多様で、バランスを取るのが難しい」との意見が出ました。Aグループ同様、「良い仕事」の難しさを感じながらも、「良い仕事は非常に幅が広く、あいまいな概念。しかし、『良い仕事なら、もうからなくてもいい』ではなく、良い仕事の中でも頂点にある『誰からも喜ばれ、利益も出る』、そんな仕事を目指したい」との結論をまとめました。 Bグループでは、業務を定量面だけでなく定性面からも評価するようになった会社の取り組みを歓迎する声が多かった一方で、「利益が出なくなったら、また定量評価一辺倒に戻るのではないか」と不安の声も上がりました。「中長期的には良い仕事でも、最初はもうからない仕事もある。定性評価を今後も継続し、途中で打ち切るようなことはしないでほしい」との経営陣への要望もありました。このほかに、「商社の特徴を生かした良い仕事とは、世界の貿易がフェアであるように貢献することではないか」との意見も出ました。 ワークショップ終了後、オブザーバーとして参加した麗澤大学国際経済学部の高巖教授に講評を頂きました。「良い仕事というのは仕事の内容ではない。仕事に取り組む姿勢で決まる」という先生の言葉に、参加者は一様に感銘を受けていました。 ほかの社員がどのような問題意識を持っているのかよくわかり、今後部門内のワークショップのとりまとめをするためにも参考になりました。自分たちの常識が世の中の常識とは少し違う場合もあることを意識し、もっと高い志を持って取り組んでいかなければならないと思いました。 部門や年次の異なる方々が参加するワークショップでの意見交換はとても楽しかったです。先輩方が仕事に対する熱意や志について熱く語られているのを聞き、改めて夢や情熱を素直に語れる会社で働けることを嬉しく思いました。自分も喜んで人に語れる仕事をしていきたいと思います。 普段の職場を離れた場だったので、フラットに「物産マン」としての視点で議論ができました。それぞれが入社した時の「自分が会社を作っていく」「成し遂げていく」という気持ちを忘れずに、自らの考える「良い仕事」を責任もって進め、これからの三井物産を作っていくという姿勢を持ち続けられるといいですね。会社を辞めたあとに「良かったな」と思えるようにしていきたい。 |
[ 117] CSR(社会・環境) | 良い仕事ワークショップ - 三井物産株式会社
[引用サイト] http://www.mitsui.co.jp/csr/business/03/index.html
|
推測されにくく、総当たりされても大丈夫な“良いパスワード”を作るには「キャッチフレーズを日本語でパスワード化する」のが良いのではないか、という読者からの提案がありました。 オンラインサービスのパスワードを忘れることがよくあります。そんなときのために「秘密の質問」を用意するサービスも多いですね。しかしこれが簡単な単語だったりすると、パスワードをそのような推測されやすいものにするのとほとんど同じになってしまいます。気をつけたいものです。 記事「優れたパスワードの選定と記憶法」に対して、ブログ「とりとめもなく日記的雑記」では別の方法を提案しています。それは「キャッチフレーズを日本語でパスワード化する」こと。例えば、「ダイエット中の人なら“ato3kiroherasu(=あと3キロ減らす)”とか、“bi-ruha2haimade(=ビールは2杯まで)”」などになります。 このほか、方言や「88oki(早起き)」のように数字を混ぜた言葉を使うことも勧めています。パスワードの生成に悩んだり、忘れたりということは数多くありますが、キャッチフレーズや目標であれば覚えやすく便利そうですね。 記事「本のページを開いたまま固定する」で紹介したブックストッパーによく似たクリップを、ブログ「浮浪プログラマの始末書」で紹介しています。洗濯ばさみと重りで自作したそうです。しかし使い勝手はいまひとつだったので、結局書見台「ほんたった」を購入したとのこと。 以前はこのコーナーで、ハンガーから作ったブックスタンドを紹介しましたが、書見台もブックストッパーもお金をかけずに作れてしまえるのはいいですね。 記事「作業中にPCから離れる場合の“お作法”」では、PCをロックする方法や離席時に便利なフリーソフトウェアを紹介しています。ブログ「にっき」では、離席時には「ノートPCの場合はディスプレイパネルのバックライトが消灯する角度まで倒し、据置PCの場合はモニタの電源を手動で切る」とし、さらに電源を切り忘れた時の対策として「スクリーンセーバーは『スクリーンセーバー(画面暗転のみ)』で更に時限自動モニタ電源断の設定までしてあります」とのこと。 設定によりますが、ノートPCのディスプレイを手前に倒すとバックライトを消灯したり、スリープモードになったりします。ここまですると電気代の節約にもなりますね。 この1週間ほどの間には、ToDo管理のコツを紹介する記事がいくつかありました。読者によると、記事で紹介したToDo管理ツール以外にも便利そうなソフトがあったようです。 3分LifeHacking:チェアのひじかけの上でマウスを操作する机に取り付けるタイプのアームレストにつづき、チェアに取り付けるタイプのアームレストを紹介しよう。 ライフハック テンプレート:#051 10年後オブジェシート周りにある身近なものの10年後を考えてみると、何が分かるでしょうか? 未来に想いを馳せてみれば、逆に現在足りないものが浮かび上がってきます。 Google Appsへのメール移行用API公開過去のメールデータをGmailに移行するためのツールが作成できるようになる。ただし、対象はStandardエディション以外。 樋口健夫の「笑うアイデア、動かす発想」:ハウリングする恐怖――社内悪口の“正帰還”ポジティブフィードバックという現象がある。会議室などで、マイクがひろったちょっとした音をアンプが増幅し、再びマイクがひろってしまい、キーンと耳障りなハウリングが起こってしまう現象だ。社内の悪口もこうしたポジティブフィードバックが起こりやすい。 シゴトハック研究所:週次レビューを確実にこなすには?【解決編】一週間を振り返る週次レビュー。習慣化するための方法の1つは、振り返るための仕事の記録が手軽に残せ、その記録を簡単に取り出せるようにすることです。 2ちゃんねる発のOSである「Mona」。プロジェクトがスタートしてから5年が経過したいま、これからのMonaOSが目指す目標とは デスマーチに身の危険を感じたプログラマ。転職活動を始めたが、他社でやっていける自信がなく休止……。3カ月後、何が起こったか? 42位:速度はレーザー、使い勝手はインクジェット──その両方を備えた、これからのビジネスプリンタとは? jobtxt1 += '30代で派遣・フリーの仕事はなくなるのか?43歳エンジニアと派遣会社担当者に聞いた'; jobtxt2 += '匿名|最高25社から査定結果が届く。査定|プロが鑑定するあなたの市場価値'; |
[ 118] ITmedia Biz.ID:良いパスワードはどうやって作る?
[引用サイト] http://www.itmedia.co.jp/bizid/articles/0612/13/news052.html
