┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
┃ ■┃
●┃● ● オ ブ ジ ェ ク ト 倶 楽 部 ■ ┃
┃ ■ ┃
┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
No.151 2006/08/09
■ I N D E X
┃
┣【Topics】音声ファイル提供のページを開設しました −第1弾 岡島幸男−
┣【設計】ソフトウェアのお言葉[11]
┃ - 事前条件はより緩く、事後条件はより厳しく
┣【PF】アジャツール - Agileなツール紹介[14]
┗【アンケート】気になるシステム業界 ホントのところ
〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
〇 音声ファイル提供のページを開設しました −第1弾 岡島幸男−
〇 〇━━━━━━━━━━━━━ ━━・
第1弾:「プロジェクトを成功させる現場リーダの守破離」岡島幸男
http://www.ObjectClub.jp/download/voice/
大好評だったオブジェクト倶楽部2006夏イベントでのセッション全録音です。
イベントを逃してしまった方は、これを機会に是非お聞きください!コメントも
どしどしお待ちしています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【設計】ソフトウェアのお言葉[11]
- 事前条件はより緩く、事後条件はより厳しく
こんにちは、天野勝です。
今回のお言葉は「事前条件はより緩く、事後条件はより厳しく」です。
Liskov(リスコフ)の置換原則の一側面を表しているこのお言葉を、今回も筆者
の独断と偏見で、解釈、解説してみます。
●リスコフの置換原則とは
「派生型(サブ)はその基底型(スーパー)と置換可能でなければならない」とい
うもので、MITでソフトウェアの研究をされていた、リスコフさんによって提唱
された、というところから名付けられている原則です。
オブジェクト指向の基本的な考えに「オーバーライド(操作の上書き)」があり
ます。スーパークラスで定義していたもともとの操作を、サブクラスで上書き
してしまうというものです。この考えを使うと、メッセージを送っている側は、
スーパークラスだろうが、サブクラスだろうがお構いなしに、メッセージを送
れるという優れものです。しかし、優れているからこそ注意が必要で、サブク
ラスで操作を上書きしたときに、メッセージの送り手が期待しないような上書
きをしてしまうと、混乱が起きてしまいます。そこで、このような混乱を避け
るためにこの原則の適用を考える必要があります。
ちなみに、この原則は、オブジェクト指向の中心的な概念である「クラス」や
「オブジェクト」の基礎となっている、「抽象データ型」の研究をしている中
で生み出された原則のようです。
余談ですが、抽象データ型とは、あるデータに対して適用できる操作の集合で
抽象化して定義した型の事です[*1]。例えば、「カウント」という名前のデー
タがあり、これに対して「カウントアップする(1加える)」「カウントダウンす
る(1減らす)」「リセットする(0にする)」「現在の状態を確認する」といった
操作の集合で「カウンター型」と定義します。このように操作の集合で定義す
ると、操作を通してアクセスしている分には、データの管理方法が変更されて
も、利用する側にはその変更の影響がないというのが利点です。こう説明する
と、「クラスやオブジェクトと何が違うの」と混乱するかも知れませんが、こ
こでは同じものと思ってしまってかまいません。
●サブルーチンの修正について適用してみる
リスコフの置換原則は、オーバーライドに際して検討されるものだと思われる
人もいるようですが、サブルーチンの修正時にも検討することをおすすめしま
す。ここではあるサブルーチンを修正するという状況で、例を挙げてみます。
仮に、1から1000までの整数を受け取るサブルーチンがあり、このサブルーチン
を修正して、1から100までしか受け取れなくなったとします。するとどのよう
な事が起きるでしょうか。このサブルーチンを呼び出す側は、500という値を渡
していたとした場合、これを受け付けてもらえなくなってしまうのです。これ
では、バグを潜ますようなものです。
このように事前条件は、修正前と同等か、それよりも緩くしなくてはならない
というのがご理解いただけると思います。
事後条件を緩くしてしまうと、どのようなことになるでしょうか。サブルーチ
ンの戻り値で1〜1000を期待しているような状況で、-1000が返ってきたらどの
ように対処するか困ってしまいます。事後条件は、同等かより条件が厳しくな
るようにする必要があります。
●オーバーロードについて考えてみる
Javaなどの言語にはオーバーロード(操作の多重定義)といって、同じ名前のサ
ブルーチンを引数の組み合わせを変えることで、複数定義する機能が備わって
います。この機能と「事前条件はより緩く、事後条件はより厳しく」の関係を
考えてみます。
まずは、事前条件についてです。引数の組み合わせを増やすことができるとい
うのは、そのサブルーチンの事前条件を緩くする方向に働くので、これはよい
でしょう。問題は、事後条件のほうです。引数の組み合わせが変わると、戻り
値の型も自由に変えられるのが一般的な言語仕様でしょう。言語仕様が許して
いるからといって、サブルーチン名が同じでありながら、戻り値の型を変えて
しまうというのは、事後条件が緩くなるとみなせるので、あまりよい設計とは
思えません。時と場合によるのですが、混乱やバグを避けるためにも、サブル
ーチン名と戻り値の型については対応させておくのをオススメします。
●おわりに
サブルーチンの事前条件と、事後条件について考えてみました。事前条件、事
後条件を積極的に活かした設計手法として、DbCがあります。こちらについても、
調べてみてはいかがでしょうか。(天野勝)
[*1]:「抽象データ型」についてWebで調べてみると、いろいろな定義があるよ
うです。厳密な定義をご存知の方はeditors@ObjectClub.jpまでお報せく
ださい。
[*2]:DbC(Design by Contract)は、バートランド・メイヤーにより提唱されて
いる設計の考え方です。
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=L001-10&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=L001-10&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=L001-10&choice=2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【PF】アジャツール - Agileなツール紹介[14]
●はじめに
今回は前回の予告通り、腰メモについての紹介をします。腰メモといっても、
初めて聞いた方々には「なにがなんだかさっぱり」ですよね。簡単に言ってし
まうと、腰に常にメモ可能なものを着けておくというスタイルを指します。も
ちろんメモ帳は、Yシャツの胸ポケットにしのばせて置くのでも使い勝手におい
ては一向に問題ありませんし、カバンに常にメモを携帯しているという方もい
るでしょう。今回は敢えて「腰である理由」とその方法について書いてみます。
●腰リールメモ
腰リールメモとは造語です。簡単に言うと、腰に腰リール(ベルトにクリップな
どで固定する、鍵などを着けて自由に伸縮させることができるリール)を備えつ
け、その先に鍵ではなく、小型のボールペンと単語帳をつけておき、常に腰に
ぶらさげておき、常に単語帳にメモができる状態にしているというスタイルの
ことです。
筆者は2004年の中頃から腰リールメモを始めて、周囲の人にリールからワイヤー
をひっぱりだして、縮ませたりネタとして見せつつ、歩きながらでも、トイレ
でもいつでもメモをとれるようにして実践していました。
昨年秋に自分のサイトに解説を書いたのですが[*1]、Life Hack Press[*2]に取
り上げられてから、ネットで見る限り利用者が増えたように思います。また実
際に会う方々の中でも「使い始めました」という人をよく見かけます。最近で
は、単語帳の代りにリング式のメモを着けている人も多いようです。
腰リールメモの特徴としては、まず第一に「即座にメモ態勢に入れ」、「片付
けに時間がかからない」という点につきます。おもむろに腰リールから単語帳
を延し、備えつけのボールペンのキャップを外して書きたいページを開けばす
ぐにメモが取れます。携帯電話にメモをとるのに比べても、素早いと思います。
さらに書いた後は、ボールペンのキャップをして手を離すだけで、元の位置に
メモとペンが戻ります。このアクションは慣れると病みつきになること請け合
いです。
[*1]:http://giantech.jp/articles/waistreel_memo
[*2]:http://www.gihyo.co.jp/magazines/lifehacks
●シザーケース + メモ帳
ここ最近の筆者のメモは、腰リールからシザーケース+メモ帳に移行しています。
シザーケースはアジャツールの第0回[*3]で紹介したAGILITYのものを使ってお
り、そこにMoleskine Reporter Pocket Plain Notebook[*4]というメモ帳を挿
しています。ペンはボールペンではなく、PILOTのキャップレスデシモ[*5]とい
う万年筆をシザーケースに挿して使用しています。こちらは腰リールメモに比
べると装備が重いのが難点ですが、比較的大きなメモを携帯できるのがメリッ
トです。[*6]
筆者が使用しているAGILITYのカフェバックは、計ったかのようにMoleskineの
ポケットサイズがぴったりと収まるサイズで、計算をして買ったわけではなく
偶然なのですが重宝しています。
腰リールのように自動ではメモが戻りませんが、ガンマンがホルスターから銃
を抜いて射った後にサッと戻す、このようなアクションになります。こちらも
慣れるとなかなか楽しいものです。
シザーケース以外にも、チョークバッグ[*7]やウェストポーチでも同様に腰メ
モが可能です。好みのものを使えばよいでしょう。
[*3]:http://www.objectclub.jp/ml-arch/magazine/99.html
[*4]:http://www.moleskine.jp/reporter.htm
[*5]:http://www.pilot.co.jp/products/pen/fountain/caplessdecimo/index.html
[*6]:筆者が腰リールメモから、シザーケース+メモ帳に移行したは、実は万年
筆を使いだしたからなのですが。
[*7]:ロッククライミングチョークを入れておくためのバッグ。
●何故腰メモなのか?
腰リール、シザーケースともに腰に着けるアイテムです。何故Yシャツのポケッ
トや鞄の中ではいけないのでしょうか?まずYシャツのポケットなどは、筆者の
ような私服で仕事をする人間にとっては必ずしもあるとは限らないため、メモ
を携帯する障害となります。着衣にメモの携帯を依存するのはあまり好ましく
ありません。次に鞄の中にメモとペンを置いておく場合を考えてみると、自分
の身とメモが離れてしまうのは大きなマイナス要因になります。このことを思
い知るのは、イベントの後の飲み会の席などでしょう。鞄を置いてから飲みは
じめると、人の話をとっさにメモしようとしても、メモが手元になくて困って
しまうのです。腰メモならば、これらの状況に対応できます。
また電車に乗っている時、歩いている時、トイレに居る時、様々な時間と場所
で気づきを得る可能性があります。その気づきを逃さず書き留めておくために、
腰メモは有用なツールです。
携帯電話でメモを取るという方法もありますが、筆者は親指スキルが低いため
打つのが遅いのと、絵が自由に描けないという点で候補から外しています。
●世間師の知恵
最近、夏イベントで羽生田さんが話題にしていた、宮本常一という民俗学者の
著作を乱読しています。その中の「忘れられた日本人」[*8]という本に登場す
る左近熊太翁という方のエピソードが、「『忘れられた日本人』の舞台を旅す
る」[*9]という書籍に載っていました。左近熊太翁は幕末から昭和(戦中)まで
を生き抜いた長野県河内長野の方です。左近熊太翁の孫である又三郎氏はこう
語っています。
『(熊太翁は)いつも腰から方位磁石と大福帳と矢立をぶらさげてね。大福帳い
うたら横に長いメモ用紙ですわ。矢立も知らん?筆と墨壺を入れる容器ですわ。』
宮本常一は、日本中を旅して得た見聞を自分の村に戻って活かす知恵者のこと
を「世間師(ショケンシ)」と呼んでいました。左近熊太翁はまさにその世間師
で、様々な見聞を腰の大福帳に記録しておき、生活に活かしていたのでした。
腰リールやシザーケースといった方法に違いはあれども、腰にメモを携帯して
おき、見聞きしたこと、気づいたことを常に書き留める。そしてその見聞、気
づきを仕事や生活に生かすことは、今も昔も変らない行為なのではないでしょ
うか。(懸田)
[*8]:http://www.amazon.co.jp/o/ASIN/400331641X/xpjp-22
[*9]:http://www.amazon.co.jp/o/ASIN/430922444X/xpjp-22
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-14&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-14&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-14&choice=2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ
今週は「メモ、携帯していますか?」のホントのところ。今回のアジャツール
で紹介した腰メモを含め、確かに周りでメモを携帯している人が増えたように
思います。みなさんは、メモ、携帯していますか?またどんな風に携帯してま
すか?
腰リールメモ付けてます。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=0
腰バッグ+メモです。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=1
いつもポケットにメモ入れてます。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=2
首からメモぶら下げてます。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=3
カバンの中に常にメモ持ち歩いてます。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=4
身に着けてませんが、いつもメモが傍らにあります。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=5
手に直接書いちゃうので、メモはいりません。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=6
あったらいいなと思いますが、メモは携帯してません。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=7
メモはしないので、必要ありません。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=8
それは秘密です。
http://www.ObjectClub.jp/special/kininaru/vote?vol=117&choice=9
ちょっと語らせて!
editors@ObjectClub.jp まで詳細を!!
アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「地デジ対応済んでますか?」の結果は公開中。ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol116/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記
こんにちは、編集人です。まさか第3弾があるとは思ってなかったのですが、今
週も壊れ物シリーズです。。ほとんどネタか?!と言いたいくらいですが、こ
の週末は、恥ずかしながら私がギックリ腰になってしまいました(涙)これといっ
た原因は無かったのですが、土曜の夜にお風呂に入っていたら、何だか腰に違
和感が。お風呂から上がってしばらくテレビなど見ていたら、なんともう立ち
上がるどころか姿勢を変えるのも難しい状態に。歩くのもままならず、仕方な
く横になっても、寝返りするのすら厳しいという感じでした。何せ動くのがま
まならないので、週末の予定もキャンセルし、ひたすら寝ていました。腰を痛
めると立つことも座ることも、下手すると寝るのもツライ。腰の大切さが改め
て身にしみました。やっぱり運動不足が一番の原因の気がします。いい加減、
本当に運動しなくちゃ。みなさんも、くれぐれもお気をつけて。
さて、来週はお盆休みのためメールマガジンはお休みさせていただきます。次
回の配信は、8月23日(水)です。
今週の強引な一言
*** 浅き川も深くわたれ(ことわざ)***
簡単なロジックだからバグはないだろうとか、10件同じようなテストでOKだっ
たから他も大丈夫だろう、などと言ってテストをおろそかにしたところに限っ
て、後で影響が出るような問題が潜んでいたりするものです。簡単そうに見え
るところも手は抜かずに。その分、手間は自動化してみましょう。
(まにわ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は ⇒このメールに返信ください
〇 配信中止、アドレス変更は
⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋 健児
Copyright (c)2003-2006 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.