<< オブジェクト指向プログラミングの教え方? | main | 技術者は成長したかったら転職すべし >>

「オブジェクトの設計力」 スキルアップ講座やります

私が講師をさせていただく、技術講座のご案内です。

2月23日(土)14:30−17:30
東京・品川 楽天タワー2号館
5000円

お申し込みはこちらから。
オブジェクト設計エクササイズ

この講座は、実務経験が3年程度ある技術者で、

● プログラミングはだいぶ覚えたが、設計といわれると自信がない
● ある程度、設計はできているつもりだが、不安

という方むけに「実務で役に立つ」オブジェクト設計の考え方・やり方を知ってもらおう、という講座です。

その設計は手続き指向では?


Java, C#, Rubyなどは「オブジェクト指向」のプログラミングも「できる」言語です。
いっぽう「手続き型」だけで書けちゃう言語でもあります。

業務アプリケーションの開発で、Java は相当使われている言語です。
しかし、多くのコードは手続き型の考え方と習慣で書かれているようです。

そういう手続き型があたりまえの環境で育ってしまうと「オブジェクト」を設計するという発想やスキルを身につける機会がないのが実情だと思います。

この講座は、若手の技術者のみなさんに、「オブジェクトを設計する」という発想と、実際の設計のやり方に触れてもらい、現場に持ち帰って役立ててもらおう、という主旨で開催します。

現場で生かせるオブジェクト設計力


講座の内容は、日常のプログラミングの時に、ちょっと気にするだけで、みちがえるようにオブジェクトの設計力がアップしていく魔法のような(笑)テクニックの紹介です。

設計に唯一の正解はありません。
いろいろな考え方・やり方があります。
実務で役に立つ設計力とは、いろいろな設計の考え方・やり方を、必要に応じて適切に、使い分けたり、ミックスする力です。

この講座で説明する設計力アップのテクニックは、最初は奇妙に見える以下のルールを使ったプログラミングの実践のススメです。

1.ひとつのメソッドのインデントはひとつまで
2.else 句は使わない
3.すべてのプリミティブ型と文字列型はラッピングする
4.ファーストクラスコレクションを使う
5.1行につきドットは1つまで
6.名前は省略しない
7.クラス50行以内、メソッド3行以内
8.1クラスにインスタンス変数は2つまで
9.getter/setter は使わない

手続き型の発想だと、これらのルールは不思議、あるいは悪い書き方かもしれません。
でもオブジェクトの設計力のスキルアップには、効果絶大の練習方法なんです。

講座では、

● そもそもどういう意味?
● なぜこのルールでプログラミングするとオブジェクトの設計力があがるの?
●(ルールはわかるけど)こういう時は具体的にどうすればいいの?

というあたりをサンプルコードを見ながら、具体的に説明します。

Q&Aの時間もたっぷりとります。

極端すぎるのでは?


この9つのルールは、コミュニティの勉強会でなんどかお話をさせていただきました。
スライドも公開しています。
オブジェクト指向の設計と実装の学び方のコツ

おおむね良い評価をいただけたと思っていますが、極端すぎるとか、現場では無理、非現実的、というフィードバックもそれなりの数がありました。

「これがオブジェクト指向だというなら、私はオブジェクト指向をやっていないし、やる気もない」というように(言外に)これは「にせもの」のオブジェクト指向である、という意見の方もいらっしゃいます。

オブジェクト指向に一つの明確な定義があるわけではないので、私は、それもオブジェクト指向、これもオブジェクト指向、という感じで受け止めていますが、「極端」であることは、その通りだと思います。

意識的に極端にして、ある「意図」を伝えようとしているルールだからです。

ルールの意図


このルールの背景にある考え方は、次の2点に集約できます。

◎ 名前たいせつ
◎ 小さいほうが扱いやすい

この2点は、総論としてなら、みなさん賛成いただけると思います。

でも現場で実際にプログラミングするとなると、

● 名前をいちいち考えているのはたいへん
● 小さく分割しすぎると、見通しが悪くなり、かえってわかりにくくなる

という意見が多くなってきます。

この現場感覚が、実は「手続き型」プログラミングの発想や習慣に、知らないうちに、しばられている。
この手続き型の発想や習慣とは「異なる」発想である「オブジェクト」の発想や習慣を知ることで、設計力が格段にアップしますよ。


これがこの講座の狙いなんです。

「手続き型」の発想や習慣を捨てる必要はありません。
そうではなくて「手続き型」とは別の「オブジェクト」の発想や習慣を増やしていけば、設計力が格段にアップしますよ、ということなんです。

今回の講座では、キーワードとして「オブジェクト」にフォーカスしていますが、「関数型」の発想や習慣も、設計力アップにとても役に立ちます。

また講座の中では「宣言型」とか「論理型」という言葉そのものは使いませんが、そういう考え方を隠し味として使っています。

そうやって考え方の幅を広げることが「設計力アップ」のコツなんです。

高い?


私としては5000円は破格の安値だと思っています(笑)。

でも払う側からすれば「5000円払って、休日つぶすだけの価値があるのか?」と思うのが普通の感覚ですよね。

価値がありそうかどうかは、このブログの過去記事や、公開しているスライド を参考にご判断いただければと思います。

<補足>
ブログ過去記事で「関数型プログラミングってエクセル方眼紙だよね」は、しょうもないネタ記事です。まじめに受け止めないでください。
それ以外のエントリは、まじめに書いている(つもり)。

コメント
はじめまして。JHashimotoと申します。
いつもブログを拝見して勉強させていただいております。

「オブジェクト設計エクササイズ」の講座を受講したかったのですが、満員で受講できませんでした。スキルアップのチャンスを逃してしまったことを大変残念に思っております。

再度同じ講座を開催するご予定はないのでしょうか?

キャンセル待ちの方が多数いましたので、受講希望者は私以外にもいると思います。

お忙しいところ大変恐縮ですが、開催をご検討いただければ幸いです。
JHashimoto さん。
はじめまして。

こういうコメントをいただけたこと、たいへん光栄でうれしいです。
また、十分な席数を用意できなかったこと、お詫び申しあげます。

開催する方向で、検討いたします。

今回の受講者のみなさんに、今、アンケートをお願いしています。

その結果も踏まえ、ぜひやりたいと思います。
日時、場所など、まだなにも決まっていませんが、具体的になりましたら、あらためてご連絡させていただきます。

よろしくお願いいたします。
  • masuda220
  • 2013/02/25 10:42 PM
masuda220さん

開催する方向でご検討いただけるということで、大変うれしく思います。ありがとうございます。

よろしくお願い致します。
お世話になりました。業務では開発しないので、すんなり入ってきました(笑)。個人的にC#で作っているものがあるので、試してみます。2回目以降が特に興味がある内容なので期待しています。
  • @tiger_takechan
  • 2013/02/28 12:59 AM
@tiger_takechan さん

ありがとうございます。

実際に、いろいろ試してみていただくと、何かしら得るものがあると思います。

私も、やりながら、学ぶことの繰り返しです。

2回目以降は、オブジェクトへの責任の割り当て、という設計の核心がテーマです。

ご期待いただけるのが、たいへんうれしいです。準備のモチベーションになります。

正直、ドラフトレベルでは、まだまだわかりにくいので、なんとか、受講者のみなさんにわかりやすく、現場でやってみようと、思っていただける内容に仕上げたいと思います。

引き続き、よろしくお願いいたします。
  • masuda220
  • 2013/02/28 11:16 AM
JHashimotoです。こんにちは。
DevLOVEの勉強会に参加しました。
増田さんもおっしゃっていましたが、他の人の設計を聞くのは楽しいですね。「入力チェックをPolicyクラスで部品化する」という発想は私にはなかったので、とても勉強になりました。
増田さんのお話も聞けたので、参加してとてもよかったです。ありがとうございました。
  • JHashimoto
  • 2013/06/13 8:37 AM
JHashimoto さん

こんにちは。
イベント参加とコメント、ありがとうございます。
CodeIQ では、JHashimotoさんが、最終解答者でした。
フィードバックにも書かせていただきましたが、JHashimotoさんの解答は、ファイナルを飾るにふさわしい、すばらしい(私好み?) の解答でした。

これからも、ドメイン駆動設計、オブジェクト指向設計をテーマに、勉強会とか、いろいろな人たちと意見交換できる「場づくり」をしていきたいと思います。

これからも、よろしくお願いします。
  • masuda220
  • 2013/06/13 11:01 AM
『● 名前をいちいち考えているのはたいへん
● 小さく分割しすぎると、見通しが悪くなり、かえってわかりにくくなる。

この現場感覚が、実は「手続き型」プログラミングの発想や習慣に、知らないうちに、しばられている。』

という事に大変共感しました。ただ、名前にこだわり、小さなオブジェクトで構成した時の『分かりやすさ』をもっと言語化したいと考えています。

5000円って信じられないくらい安いですね。
東京に住んでいたら是非お伺いしたいテーマです。地方在住で聞きに行くのが難しいですが、機会があれば是非お伺いします。
  • kompiro
  • 2013/08/14 11:35 AM
kompiro さん

コメントありがとうございます。
うれしいフィードバックです。

小さなオブジェクトにしたときの「わかりやすさ」を、もっとうまく伝える言語化できると、ほんとうに良いと思います。

地方在住のエンジニアの方と協力して、地方での開催もやってみたいと思っています。もし、何か、企画されることがあれば、ぜひ、お声掛けください。
  • masuda220
  • 2013/08/14 8:20 PM
コメントする









この記事のトラックバックURL
トラックバック
calendar
 123456
78910111213
14151617181920
21222324252627
28293031   
<< May 2017 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM