憂国なプログラマ

背景を地味なパターンに直してみました。これはこれでいいかも!

全体表示

[ リスト ]

先日のわんくまでのライトニングトークは大失敗 ><!
時間切れの上、終わりの方ではパニくって、とうとう言いたいことの半分も言えませんでしたよ。(つд⊂)エーン

しかしその後の懇親会では、何人かの方にプレゼン資料を見せていろいろ話すことが出来ましたが、今回はこのネタを使って「オブジェクト指向」について考えてみたいと思います。


さてネタにした「某バイク便システム」の開発事例についてですが・・・

1.まず「仕様書」などという大層なものは、初めから存在しない。

2.仕様は常に変わる・・・というか、動かしてみて初めて判る仕様です。

3.開発途中でコンセプトが「バイク便システム」から「総合物流システム」
  に大変貌を遂げる!!!!
  販売ターゲットとする業種が拡大したため、仕様も途中から大規模に変わった。

4.エンドユーザーにはとことん易しく、60代〜70代のおじいちゃんや、
  こないだまでキャバ嬢だったオネエちゃん、
  パソコンを触ったことのないおばちゃん達にも扱えるよう
  超ユーザビリティなインターフェイスに!!

5.デザインも堅苦しくなく、見た目に易しいデザインでよろしくネ!!

6.予算は抑えて開発は速く、しかもチームは2・3人のみ!!

7.ちなみに現場は21:00で建物が締まるため、21:00以降の残業はできません。強制退社!!

というもの。まさにある種のアジャイル開発!!


このシステムの最大のヤマが 「受注画面」 なるものだが、これがまた凄い仕様である!!!

まず起動時の画面である。
イメージ 1

次に伝票登録用の状態に遷移する。
イメージ 2

この画面では表示されていないが、「依頼主」を登録すると、過去履歴の一覧が自動表示される。
イメージ 3

中継地点も登録可能。「請求先」もユーザーが自由に編集できる。
イメージ 4

地図を使って料金を自動計算。高速料金も自動算出する。直線・エリア・時間による料金計算も可能!
イメージ 5

登録済みの伝票を表示する。フッターのボタンの機能が変わっていることに注目!!
イメージ 6

登録済みの伝票も変更できる。ここでもフッターのボタンの機能が変わっていることに注意!!
イメージ 7


これ、すべて一つの画面の機能である・・・
この画面、単発の伝票だけでなく、定期配達便やキャンセル伝票、さらに赤伝すらも扱えるという代物である!

そのうえ中継地点のドラッグ&ドロップによる入れ替えも可能、
各コントロールも読み取り専用〜編集可能〜に状況に応じて小まめに変化する
なかなかも気の利いたインターフェイスになっている。

自慢ではないが、このシステムのプロトタイプを見に来た新聞・雑誌の編集者たちが皆
「今まで記事を書くため様々なシステム見てきたが、こんな細かい作りのアプリは見たことがない!!!」
と目を丸くして驚いていた。どれだけ内部で恐ろしい実装をしているか、百戦錬磨のエンジニアの皆様なら、コードが凄い(酷い)ことになっているだろうと想像が着くと思う。


さて、この画面、極めて膨大な行数になってしまったことは想像に難くない。

2010年3月8日現在、この画面の行数であるが
1,867行(ドキュメントコメント含む)
・・・桁の間違いではない。2000行に達してないのだよ、明智くん!!


ついでにこの画面の開発期間は三人月、
月の平均稼働時間が180〜200時間
・・・いま思い出したが160台のときもあったような・・・

しかも今回初めて使った未知の地図コントロールを二つも使い倒しながらであり
さらに最初搭載していた地図コントロールは、諸般の事情により、
途中で全く別のコントロールに換装したというオマケ付きである。


どうすればこのようなことが出来るのか、仕掛けは簡単、画面では実装を極力減らし、画面を構成する各コントロールや、さらに機能や概念に細分化した各クラスに、処理を委譲しまくっているからである。

前の記事では「クラスは責務を持つ実体」と書いたが、クラスを機能や概念ごとにどんどん分割し、ひとつのクラスが一つの責任しか持たないようにしてしまう。あとで知ったが、これがどうやら

単一責任の原則

というものらしい。よってこのプロジェクト内では、VisualStudio が自動生成するファイル以外、2000行を超すクラスは一つもなく、また 100 行を超すメソッドもほとんど皆無という状況になってしまった。その後ヤマのようにバグ修正や仕様変更が発生したのだが、殆ど苦もなく修正できてしまったのである。

一年近くやって徹夜が一回もない案件は今回が初めてだが、OOP の真髄を一分なりともマスターすると、ここまで楽になれるものなのかと、つくづく思い知らされたのであった。


・・・以下、疲れたので続きは今度。もう寝よう。

閉じる コメント(7)

顔アイコン

いやー、お酒でも飲みながらゆっくりお話を聞きたいです、凄いためになります。この体験談、LTといわずセッションでも聞いてみたいですよー。

2010/3/11(木) 午後 9:28 [ 割と普通 ]

顔アイコン

こういう話を聞くと、うらやましい限りです。
なかなかこういう具合には行きません。
以前SmallTalkの講習会でもありましたけど、本当のオブジェクト指向を実践している所は少なく、なんちゃってオブジェクト指向開発している人達に見せたい位ですね。
上司ばかりでなく社員の意識も変えないといけないので、一人実践するわけにもいかず。。。。です。

2010/3/12(金) 午前 1:27 [ かわじゅん ]

顔アイコン

ありゃりゃ、コメントに気づくのが遅くなりました。すみません><!

割と普通さん

先日のわんくまのレビュー会、とても面白かったです!(^ω^)
トリの二人の場の盛り上げ方は凄いですね。あれはもう才能としかいいようがありません!(マジほめ言葉です!)

今回はビッグネームはいませんでしたが、来たからといって盛り上がるとは限らないですよね。しかし今回は最初から最後まで楽しめました。いやはや、本当にありがとうございます。<(_ _)>

2010/3/12(金) 午前 10:23 [ hilapon ]

顔アイコン

あと LT は・・・トラウマです。
かなりしっかり準備してきたつもりだったが・・・甘かった。orz

機会みてリベンジ考え、基礎からプレゼン勉強するつもりです。

> いやー、お酒でも飲みながらゆっくりお話を聞きたいです、凄いためになります。
> この体験談、LTといわずセッションでも聞いてみたいですよー

次回のわんくまは「数学デイ」だそうですが、ぜひ「オブジェクト・デイ」もやって欲しいです。そんときは是非立候補させて頂きますか(汗

2010/3/12(金) 午前 10:32 [ hilapon ]

顔アイコン

かわじゅんさん

> こういう話を聞くと、うらやましい限りです。なかなかこういう具合には行きません。

大きいところになればなるほど、制約は厳しいんでしょうねぇ・・・(-ω-;

でも、とある超大型デスマ案件にぶちこまれたときは、すでにグダグダになってて誰もチェックできる状況じゃなかったから、もう好き勝手にソース改造させて頂きましたがw

2010/3/12(金) 午前 10:39 [ hilapon ]

お疲れ様です。
以前バスの中で偶然会った同業の者です。

相変わらず大変そうですね、バイク便システムから物流??

ど、どうしたらそんなに話が大きく…(*_*)

今度機会ありましたら詳しく教えてください( _

2010/3/12(金) 午後 0:51 [ ryl**lk_tea ]

顔アイコン

どうもお久しぶりです!!
> ど、どうしたらそんなに話が大きく…(*_*)
バイク便業界だけがターゲットでは、販路が狭過ぎますからねぇ〜。(^ω^;

2010/3/13(土) 午後 11:04 [ hilapon ]


.
hilapon
hilapon
男性 / AB型
人気度
Yahoo!ブログヘルプ - ブログ人気度について
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

過去の記事一覧

よしもとブログランキング

もっと見る

[PR]お得情報

話題の新商品が今だけもらえる!
ジュレームアミノ シュープリーム
プレゼントキャンペーン
ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事