デザインパターンを学んで自分の持ち札を増やす
初めて投稿した自己紹介記事でも軽く紹介していますが、今年はアウトプットを100本行うを目標にして技術的な知見を深めています。
※現在75本、順調😄
最近はアウトプットの題材をデザインパターンにして学んでいました。
これについて振り返ろうと思います。
デザインパターンとは
無知な頃の僕
🤔 デザインというからにはなにかUI/UXに関することなのかな
業務に慣れてきて少し経った頃の僕
🤔 よくわからんけど設計的なことっしょ?
🤔 Clean ArchitectureとかVIPERとかわかってきたけど、このこと?
*
*
*
違いました😅
下記記事にも書いていますが
様々なプログラムで再利用できる汎用的な設計パターンのこと
ということでした。
設計をパターン化することで、いつでもコードの再利用や変更に強い作りをいろんな場面で再現できるのがこのデザインパターンです。
一般的なイメージに落とし込むといわゆる戦法みたいなもんかなと。。
・将棋で言うと棒銀や雁木
・サッカーで言うと4-3-3みたいなフォーメーション
・鬼滅の刃で言うと水の呼吸・一の型「水面斬り」
それぞれ特徴やメリットがある、完成された一つのセオリー。
必ずしも守らなくて良いが、そのセオリーに当てはめると決まった恩恵が得られる。
全ての物事に対応できるわけではないと言うのが個人的にキモかなと思って、だからいろんな戦法を知っておくことでこういうときはこう!と対応できるようにするためにすることが必要なのだと思う。
エンジニアも、こういうもの作りたいなぁってなった時に仕様の変更等の将来を見据えて、こう言う設計で作っておけるようになるのでデザインパターンは知っておいて損ではないと言うことが分かりますねぇ。
参考書籍
まずはAmazon等でレビューが高い書籍をいくつかピックアップ。
その後書店に行き、軽く本の中をパラっと読んで自分が理解しやすそうかどうかを吟味。
その結果購入したのがこちら。
他のデザインパターンの書籍って、結構しっかり書かれていてお固い感じがちょっと嫌だなと思ってしまった。
そのなかで、この本は表紙からまぁまぁぶっ飛んだ表紙で、中身もアメリカンジョークを入れたりストーリー仕立てにしてくれていたりがすぐに伝わってきたので、楽しく学べそうだなと思いこれを選びました。
正直、文章がたまに英語を直訳してたりアメリカっぽいジョークをそのまま日本語にされたりして違和感があったけどw、それでも本を読むのが苦手な僕でも読めました。
紹介されているデザインパターンは結構豊富で、Javaを用いた例で紹介されているのでとても参考になりました。
アウトプット
読むだけだと入ってこないと思ったので、デザインパターンを使った実装をしました。
普段はSwiftエンジニアなので、Swiftでデザインパターンを使いつつアプリを作ってみました。
設計も普段の業務でもやるのですが、まだまだ場数が足りなすぎるなと思ったので各パターンでのクラス図の作成もしました。
作成したものはGitHubで公開しています。
よかったら手元で動かして遊んでみてください。
また、各パターンについては備忘の意味も込めてQiitaで投稿もしているので、そちらも合わせてご覧いただければと思います。
エクストリームにまとめています笑
*
*
*
自分でSwiftでアプリの画面を何作るかを考えたり、各パターンのクラス図を作ったりすることは結構大変でした。
それに、数が多すぎたので多分全て定着仕切ったかというと無理だと思います。一度にはできません。
でも、それぞれがざっくりどういう特徴を持っているかがわかったのと、名前がわかったので他のエンジニアと話す時に共通の認識をある程度持って話せるようにはなったんじゃないかと思う。
あとは実際に、場数をこなしてデザインパターンを当てはめていきながら実装して行けたら良いな。
少なくとも、いろんなパターンに触れたので設計についての経験値はだいぶ積めた。
業務でもここの作りもっと良くなりそうだな〜みたいに考えるようになってきたし、楽しくなってきた。
もっと強くなります。