もう年末ですね。最近月日がたつのが早く感じている今日この頃です。
今回は私が社内勉強会で「Rubyで学ぶデザインパターン」なることをやっていますので概要をご紹介したいと思います。
デザパタと私
私がまだウイウイしかったころ(1X年以上前)、先輩からデザインパターン勉強しとけよ!と本を投げつけられる渡されたことがありましたが、いまの今までずっとサボっていました。
いくつか知っている(と思い込んでいる)パターンもありますが、知ったかぶりがバレる前にこの機会を利用して勉強させてもらっています。
一番効率の良い勉強は人前で発表することなのは間違いないですね
デザインパターンとは
私が語るよりも皆さんの方がお詳しいと思いますので簡単に...
- GoF(Gang of Four)の皆様がまとめた超有名な設計集
- 設計をする上でよく出てくるパターンをまとめたもの
- パターンの名前くらいは知っていないと
意識の高い人たちアーキテクトや上司と話が通じません
ちなみにウイウイしかった頃の私は「デザイン」=「設計」という事実を知りませんでした
デザインのパターンは設計の「定石」
最近BPSでは将棋部が盛り上がっています。
駒の動き方は知ってるけど将棋は指せないんだよねーという方が多いと思いますが将棋も「定石」を覚えないと強くなれないそうなんです。
Youtube対局動画を見ているとまだ数手しか進んだだけなのに「相手の方は石田流っぽいですね」と実況しながらサクサク駒を動かしていきます。なるほど強いわけです。
これと同じで、プログラマーも文法を覚えただけでは仕事にはなりません。
いろいろな設計の「定石」を知っていないと、作る前から見積もれない、設計されても作れない、コードを読んでも理解できない。。。とデスマーチまっしぐらになってしまいます。
開発をしているとオープンソースのコードや他の方が書いたコードから設計手法を学ぶことも多いと思いますが、デスマ進行中のクソコードなんか見てる暇があればデザインパターンを知っておいた方が早く上達できると思います。
勉強会進め方
ざっくりこんな感じで隔週ペースで進めています。
- 基本的には結城先生の本をベースに進めています。結城先生Love
- Rubyで説明します。
- 30分枠で1つのパターンを紹介しています。
- 動くコードベースでパターンの実装例とパターンのメリットを紹介しています。
実績と今後の予定
とりあえず現在こんな感じになってます。道は長い
- 第0回 オブジェクト指向入門(カプセル化とかポリモーフィズムとかを語る)
- 第1回 イテレーターパターン
- 第2回 アダプターパターン(の予定。ブリッジパターンもいっしょにやるかも)
- 第3回以降も頑張ろう
やってみての感想
Rubyだと翻訳が必要!
- 基本的にサンプルがJavaのクラス図になっているので工夫が必要
- Rubyであえてinterfaceは作らなくてもよかったり
- オープンクラスで実装した方がよかったり
- そもそも外部イテレーターなんてつかわなかったり
1年がかりの大型連載!?
- 23パターンを隔週で行うと1年はかかる!
- そんなに続けられるのかとっても心配
みんなついてきてる?
- クラス図の説明とか何にもしてないのにジャジャーンと出しているのでぽかーんされてるのかも
なんだか前途多難な感じですが頑張って完走できればと思います。
機会があれば記事の方でも内容をご紹介できればなんて思ってます(誰か書いて)
参考にさせていただいているサイト
資料を作る上でよくパク参考にさせていただいているサイトをご紹介します。
- デザインパターンから学ぶオブジェクト指向
- とてもわかりやすいです!けど二つしか無い?
- 01. Iterator
- 02. Adapter
- デザインパターン | TECHSCORE
- Google先生によくつれてってもらってます
- ギコ猫とデザインパターン
- 結城先生Love
- でざぱたん
- デザインパターンを擬人化されているサークルさんがいらっしゃいます。資料に使わせていただいてます