はじめに
Androidをはじめとするスマートフォンが盛り上がりをみせています。2011年上半期の携帯電話販売ランキングの上位はスマートフォンがほぼ独占、爆発的な増加となっています。
スマートフォンのシェアが急激に拡大する中、開発の現場にも変化が起こっています。スマートフォン案件の増加です。iPhone用のアプリをAndroidに対応する案件や、業務端末としてAndroidやiPadを使いたいといった案件が増えてきました。スマートフォンへの開発ニーズの高まりを感じます。
本稿はサンプルアプリの作成を通じてAndroid開発について解説していきます。 電卓アプリをサンプルとして使用しますが、よくある機能が限定されたようなサンプルではありません。実用に耐えうる電卓アプリの基盤を作成していきます。 本稿を読み終えた後は、電卓アプリにさらに機能追加が可能となりあなただけのカスタマイズ電卓が作成できるようになります。
完成したサンプルアプリはAndroid Marketからダウンロードできます。MyCalcというアプリなのでAndoroid Marketで検索してみてください。
本稿でAndroid開発のすべてを網羅できるわけではありませんが「Andoroid開発はこんな雰囲気だ」ということを肌で感じ、本格的なサンプルアプリを通して仕組みが分かる作りを目指しています。
まず、電卓アプリの中心となる計算処理を作成します。GoFのデザインパターンのうち「Stateパターン」を適用して電卓の計算処理を作成します。デザインパターンという高度な設計により電卓の機能拡張が容易であることを学習します。
次に、作成した計算処理をAndroidに組み込みます。
最後に、電卓のデザインを変更します。XMLの設定だけでグラフィカルな表現が可能であることを学習します。
対象読者
本稿は次の読者を対象としています。
- Androidの開発について興味のある方。
- Javaの基本的な知識を持っている方。
必要な環境
Android開発ができる環境であればOSは問いません。
開発環境が構築できていない方はこちらの記事「Android入門-開発環境を準備する」を参考に環境を準備してください。
電卓の基礎ロジックの作成
最初に電卓の基礎部分を作ります。 単にA+Bの結果を表示するだけなのですが、 0から9の数値ボタン、四則演算ボタン、イコールのボタンとそれぞれ動作を割り当てなければなりません。 さらに今Aを入力中なのかBを入力中なのか、演算結果を表示中なのかを判定して各ボタンの動作を決めていかないといけないのです。簡単そうに思えて以外に複雑なんですね。
通常のプログラミングなら、このようなアプリケーションは状態をフラグで管理して、ifやcaseによる分岐を延々とコーディングしていくことになります。状態や動作が増えるにつれフラグは増え分岐は巨大となり収拾がつかなくなってしまいます。機能追加ともなればすべてのifやcase文に手を加える作業が待っています。これは大変です。
今回はデザインパターンを使用してifやcaseによる条件分岐を排除し、見通しのよい構成にしてみたいと思います。
GoFのデザインパターン
GoFのデザインパターンとはオブジェクト指向言語においてよく使われる設計の「パターン」であり「ノウハウ」です。プログラム設計の定石なのです。
今回、電卓の基礎部分では、SingletonパターンとStateパターンを使用します。パターンを使用することで、再利用しやすく、機能拡張しやすい構成になります。
Stateパターン
これは状態に対して動作を規定する場合に最適なデザインパターンです。Stateパターンでは状態をクラスで表します。状態が遷移している様子はクラスを差し替えて表現します。
Singletonパターン
これはそのクラスのインスタンスが1つしか生成されないことを保証するためのクラス設計です。 状態を表すクラスは1つだけで良いのです。もし状態が変わるたびにクラスを作成してしまったなら無駄なメモリを使ってしまいますので、Singletonパターンを用いて、状態を表すクラスはたった1つだけ生成されることを保証しましょう。