先月くらいからずっと気になっていた「ActionScript3.0 デザインパターン」という書籍。まだ読み途中なのですが、はじめの5ページくらいをパラパラ読んでみて既に「そう、そうなんですよ川崎さん!」と言いたくなることが度々あったので、記事にまとめてみることにしました。

といっても先に書いたように、まだ読み終えていないのでまた記事にしていくかもしれません。それではどうぞ。

 

まずデザインパターンってなに?

デザインパターンそのものが何なのかについてですが、こんなふうに説明しているサイトがあります。とてもわかりやすかったので、そのまま引用させてもらいました。

サルでもわかる 逆引きデザインパターン 第1章 はじめてのデザインパターン デザインパターンとは

デザインパターンとは簡単に言うと「良い設計の虎の巻」です。 プログラミングや設計をしていると、以前経験したことがある、似たような問題に出くわすことがよくありますよね。そのような問題の解決法にわかりやすい名前を付けて、カタログ化(虎の巻化)したものがデザインパターンです。

デザインパターンは虎の巻ですので、知っているのと知らないのでは設計や効率に大きく差がついてきます。先人たちの「設計に関する試行錯誤の結果」であるデザインパターンを、効果的に再利用しない手はありません。

デザインパターンというと一般的に「GoFの23のパターン」と呼ばれるものがその名の代名詞になるほど有名です。23種類のパターンの名前を見ると、「Decorator(装飾者)」「Mediator(調停者)」「Bridge(橋)」など、まるでタロットカードの種類のように聞き慣れない名前がつけられていますが、各パターンの概念をうまく例えて説明するためにつけられた名前のようです。

個人的にはここでエヴァに登場する使徒たちを思い出します。なぜか、思い出します。

 

補足として、僕が「デザインパターンって何?」とはじめて思ったとき参考にさせていただいたサイトをご紹介。

矢沢久雄の早わかりGoFデザインパターン(1) - ITレポート(動向/解説):ITpro

trick7 - Flashでのデザインパターン

 

あと、23種類のうちのひとつ「Singletonパターン」については過去に記事を書いてました。

【Progression】Singletonパターンを使ってどのシーンからも変数を参照できるようにする。

ちなみに上の記事、ProgressionだったらgetInstanceById()などのget~系のメソッド使えば特定のシーンやインスタンスの参照がとれると気づいたのはこの記事を書いた後でした。これは内緒です。

 

デザインパターンの考え方をActionScriptに応用するには

デザインパターンを学ぶ良書としてよく挙げられるのが、「増補改訂版Java言語で学ぶデザインパターン入門 」ですが、タイトルのとおりJava言語で書かれています。JavaもActionScriptもプログラミングの基礎的な考え方は同じなので、なんとか翻訳しながら読み進めていけますが、そもそもJavaではできるけどActionScriptではできないことがあったりするので(多重継承とか)←Javaでもできないようです。コメントでご指摘いただきました。しかじろうさん、ありがとうございます!、サンプルコードをAS3に書き換えても動かないものもあります(実際にやりました)

そんな中登場した今回の主役「ActionScript3.0 デザインパターン」はまさに待望の一冊でした。

じつはまだ第二章の終わりまでしか読み終わっていないんですが、この二章までは、デザインパターンをActionScriptに応用するための基礎的な考え方について述べていて、はっきりいってデザインパターンのデの字も出てきていません。

その基礎的な考え方というのは、具体的には継承・コンポジションやインターフェースといった概念のことなんですが、そのほかにもアプリケーションとしてのFlashを設計開発するときの効率的な手法について書かれています。

 

普段Flashの開発をスタートするとき、要件から設計を導きだして、すぐ実装に取りかかりたくなってしまうんですが、本書では開発の流れを大きく「分析」「設計」「実装」「テスト」と四分割しています。「要求されている動きは何なのか?」と分析する。それに対して設計フェーズで必要なシステムやクラス群を考える。そして、それを実装する。そして検証、という流れです。

テストに関しては(学校の試験=テストのほうではない)最近担当する案件をとおしてその重要性を感じていたので、ActionScriptの書籍でテストの話題が出てきて若干テンションがあがりました。

 

デザインパターンを理解するには、継承・コンポジションやカプセル化、インターフェースといった概念はやはり大前提。避けて通れない道なんだな、ということがよくわかります。しかし、意外とこういった概念についての解説はFlash・ActionScript系の書籍にはあまり載っていないと感じていたので、個人的には導入部分でその辺りをちゃんと解説してくれててよかったです。

まだ途中までしか読んでいないので実際のデザインパターン解説に関しての部分にまったく触れていませんが、発見があったらまた記事にまとめたいですね。

ちなみに、この一冊に対して熱く語っていますが、宣伝目的ではないです(笑)

HTML5飯