パターン適用が効果的になる実例
デザインパターン「Fragmentを使って、Layoutのパーツごとに実装クラスを分ける」は、1つの画面が複数のレイアウトで構成されている場合に特に効果を発揮します。
以下3つのレイアウトからなるニュース閲覧アプリの記事一覧画面を実装するとします。
デザインパターンを適用しないで開発すると、3つのレイアウト分の機能が1つのActivityクラスのサブクラスに実装されます。Activityクラスのサブクラスが非常に大きなクラスになることが容易に想像できます。すなわち図4の構成になります。
デザインパターンを適用することができれば、1つのクラスに1つのレイアウト分の機能が実装できるようになるのです。レイアウトごとに実装クラスが分かれている、ということは可読性・保守性の点で優れています。結果的に図5の構成を取ることができます。
また、機能追加も行いやすいです。レイアウトを増やす場合、既存のActivityやFragmentのサブクラスに手を入れる必要はなく、Fragmentのサブクラスを追加すれば良いのです。
デザインパターン「Fragmentを使って、Layoutのパーツごとに実装クラスを分ける」の有用性を理解していただけましたでしょうか? ぜひ、明日からのAndroidアプリケーション開発に取り入れてください。
なお、デザインパターン適用後のソースコードをGitHubで公開しております。Androidアプリとして、そのまま動かすことも可能です。よろしければ、参考にしてください。
デザインパターンを探してみてはいかがでしょうか?
今回、Androidアプリケーション開発におけるデザインパターンを提示するのと同時に、デザインパターンを見つけるための具体的な方法についても紹介しました。Androidアプリケーション開発に関して何か困っていることがある場合、それを解決するデザインパターンを探してみてはいかがでしょうか? 困っている点に焦点を絞ってアプリのソースコードを見ていくと、たくさんのアプリのソースコードを見ることも、そんなに大変な作業ではありません。今回の「Activityクラスの肥大化」であれば、Activityとそれに関連するクラスやファイルだけを見ていけば良いのです。一度パターンを見つけることができれば、それは今後の開発のための良い財産になるはずです。
おわりに
今回紹介したデザインパターンを活用して、ぜひ保守性・可読性の高いActivityを実装してください。また、デザインパターンを活用することのメリットについても理解していただけましたでしょうか。他の人がすでに解決した問題について頭を悩ませる必要はありません。デザインパターンをうまく活用して、効率よく拡張性・保守性の高い開発を行いましょう。今回、デザインパターンについて初めて学んだ方はぜひGoFのデザインパターンから学んでみてください。今後、設計や実装を見た際に「これはGoFの○○パターンか」ということが分かり、その実装・設計に対する理解が深まるはずです。
トップエスイーについて
「トップエスイー」は、国立情報学研究所で提供している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用していただける記事を連載しています。トップエスイーを受講すれば、今回紹介したパターンをはじめとして、コンポーネント開発やアスペクト指向開発、モデル駆動開発、再利用といったアーキテクチャに関連する講義群を履修できます。今回の記事では、これらの講義で習得した内容を元にした修了制作の成果を紹介しました。修了制作は本年度より、アドバンスコースのプロフェッショナルスタディや、トップエスイーコースのソフトウェア開発実践演習へと形態が変わりましたが、受講者の周辺で発生した問題点を自分で解決することに取り組むことは、単独での展開からグループ作業など多彩な展開ができるカリキュラムへと進化しています。
