SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から

Androidアプリケーション開発におけるActivityの肥大化を防ぐデザインパターン

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から 第5回

パターン適用が効果的になる実例

 デザインパターン「Fragmentを使って、Layoutのパーツごとに実装クラスを分ける」は、1つの画面が複数のレイアウトで構成されている場合に特に効果を発揮します。

 以下3つのレイアウトからなるニュース閲覧アプリの記事一覧画面を実装するとします。

図3 サンプルのニュース閲覧アプリの記事一覧画面
図3 サンプルのニュース閲覧アプリの記事一覧画面

 デザインパターンを適用しないで開発すると、3つのレイアウト分の機能が1つのActivityクラスのサブクラスに実装されます。Activityクラスのサブクラスが非常に大きなクラスになることが容易に想像できます。すなわち図4の構成になります。

図4 デザインパターン適用前の構成
図4 デザインパターン適用前の構成

 デザインパターンを適用することができれば、1つのクラスに1つのレイアウト分の機能が実装できるようになるのです。レイアウトごとに実装クラスが分かれている、ということは可読性・保守性の点で優れています。結果的に図5の構成を取ることができます。

図5 デザインパターン適用後の構成
図5 デザインパターン適用後の構成

 また、機能追加も行いやすいです。レイアウトを増やす場合、既存のActivityやFragmentのサブクラスに手を入れる必要はなく、Fragmentのサブクラスを追加すれば良いのです。

 デザインパターン「Fragmentを使って、Layoutのパーツごとに実装クラスを分ける」の有用性を理解していただけましたでしょうか? ぜひ、明日からのAndroidアプリケーション開発に取り入れてください。

 なお、デザインパターン適用後のソースコードをGitHubで公開しております。Androidアプリとして、そのまま動かすことも可能です。よろしければ、参考にしてください。

デザインパターンを探してみてはいかがでしょうか?

 今回、Androidアプリケーション開発におけるデザインパターンを提示するのと同時に、デザインパターンを見つけるための具体的な方法についても紹介しました。Androidアプリケーション開発に関して何か困っていることがある場合、それを解決するデザインパターンを探してみてはいかがでしょうか? 困っている点に焦点を絞ってアプリのソースコードを見ていくと、たくさんのアプリのソースコードを見ることも、そんなに大変な作業ではありません。今回の「Activityクラスの肥大化」であれば、Activityとそれに関連するクラスやファイルだけを見ていけば良いのです。一度パターンを見つけることができれば、それは今後の開発のための良い財産になるはずです。

おわりに

 今回紹介したデザインパターンを活用して、ぜひ保守性・可読性の高いActivityを実装してください。また、デザインパターンを活用することのメリットについても理解していただけましたでしょうか。他の人がすでに解決した問題について頭を悩ませる必要はありません。デザインパターンをうまく活用して、効率よく拡張性・保守性の高い開発を行いましょう。今回、デザインパターンについて初めて学んだ方はぜひGoFのデザインパターンから学んでみてください。今後、設計や実装を見た際に「これはGoFの○○パターンか」ということが分かり、その実装・設計に対する理解が深まるはずです。

トップエスイーについて

 「トップエスイー」は、国立情報学研究所で提供している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用していただける記事を連載しています。トップエスイーを受講すれば、今回紹介したパターンをはじめとして、コンポーネント開発やアスペクト指向開発、モデル駆動開発、再利用といったアーキテクチャに関連する講義群を履修できます。今回の記事では、これらの講義で習得した内容を元にした修了制作の成果を紹介しました。修了制作は本年度より、アドバンスコースのプロフェッショナルスタディや、トップエスイーコースのソフトウェア開発実践演習へと形態が変わりましたが、受講者の周辺で発生した問題点を自分で解決することに取り組むことは、単独での展開からグループ作業など多彩な展開ができるカリキュラムへと進化しています。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
トップエスイーからのアウトカム ~ ソフトウェア工学の現場から連載記事一覧

もっと読む

この記事の著者

若松 和憲(リコーITソリューションズ株式会社)(ワカマツ カズノリ)

 2015年にトップエスイーを受講。現業務はWebアプリケーション開発。認定スクラムマスターを取得しており、チームでより高い価値を創出できるよう日々奮闘している。AWSに非常に関心があり、現業務でも活用している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10232 2017/06/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー