アプリの開発に携わっています。日々アプリを開発する中で、近頃は最適なアーキテクチャとは何かを考えながら色々な形を試行錯誤しています。世の中で採用されているモバイルアプリのアーキテクチャには様々なものがあります。開発している、あるいは開発しようとしているアプリケーションでどういったアーキテクチャを選択するかというのは難しい問題です。選択するためにはアーキテクチャに求める要件を定義する必要があります。いう2つのアーキテクチャで実装したサンプルを見つつその長所・短所について考えてみようと思います。アーキテクチャに求める要件アプリケーションの性質や開発チームの状況によって適したアーキテクチャが異なるため、モバイルのアプリのアーキテクチャには様々なアイデアがあります。アプリはおよそ十数人程のメンバーで同時に開発しており、ある人の書いた実装を別の人が修正あるいは機能追加することも日常的に行われています。いった開発体制の中で私がアーキテクチャに満たしてほしいと思う要件は下記のようなものです。この構造が悪いという話ではないのですが、機能が増え実装が複雑になっていくにつれ、上記の要件を満たすのが困難になってきます。いうパターンに倣って簡単な画面を実装してみました。寄りのロジックに工夫のあるこの2つを選択しました。それぞれの実装を見ながら長所・短所を考えていきます。いうライブラリを使っています。末尾までスクロールすると続きのデータをサーバーから取得し表示リクエストエラー時にはアラートを表示というシンプルなアプリケーションです。略で、下記のような3つのレイヤに役割を分割します。パターンで実装したサンプルコードです。以下で実装の概要を説明します。コードの骨子はこのようになっています。