Android
 Computer >> コンピューター >  >> システム >> Android

2018〜2019年の最新Androidアプリ開発ロードマップ:モダンな暗号通貨ポートフォリオアプリをゼロから作る

Kriptofolioアプリシリーズ ― はじめに

本ブログシリーズへようこそ。この連載では、2018〜2019年時点で利用できる最高のツールとベストプラクティスを駆使して、モダンなAndroidアプリを実際に構築していきます。Android開発界隈で最もホットなトピックを網羅し、読者の皆さんに教えることで自分自身も知識を深めていく――それがこのプロジェクトの目的です。

このシリーズを最後まで読めば、アプリをゼロから開発する方法を習得できます。各記事では特定の開発トピックに焦点を当てて解説する予定です。質の高いアプリを作りながら、その開発プロセスを丁寧に説明していきますので、ぜひお付き合いください。まずは記念すべき第1回として、これから取り組むプロジェクト全体のロードマップを紹介します。

シリーズの構成

  • はじめに: 2018〜2019年にモダンなAndroidアプリを構築するためのロードマップ(今ここ)
  • パート1: SOLID原則の入門
  • パート2: Androidアプリ開発の始め方 ― モックアップ、UI設計、XMLレイアウトの作成
  • パート3: アーキテクチャ徹底解説 ― 各種アーキテクチャパターンの比較とアプリへの適用方法
  • パート4: Dagger 2による依存性注入(DI)の実装方法
  • パート5: Retrofit、OkHttp、Gson、Glide、Coroutinesを使ったRESTful Webサービスの処理

アプリ「Kriptofolio」(旧名:My Crypto Coins)のコンセプト

Android開発の最新トレンドをすべて盛り込める題材を考えるのは簡単ではありませんでしたが、ようやく気に入るアイデアが見つかりました。それは私が長年強く関心を持ってきた分野――ブロックチェーンと暗号通貨に関連するものです。そこで、保有する暗号通貨のポートフォリオを管理し、法定通貨に換算した価値を確認できるアプリを作ることに決めました。

ユーザーにとって重要なのは、このアプリが100%信頼できることです。ログインや登録の手続きは一切不要で、ユーザーのデータをサーバーへ送信することもありません。自分の資産情報をネット上で共有するのは、誰にとっても不安なものですよね。

ユーザーが入力した暗号通貨投資に関するデータは、Androidデバイス内のローカルデータベースにのみ保存されます。ただし、ポートフォリオの法定通貨換算額を表示するために、最新の換算レートを取得する目的でのみインターネット接続を使用します。

ご覧のとおり、学習用の題材としては理想的なアプリです。データの扱い方についてさまざまなアプローチに挑戦でき、これはモダンなアプリ開発において最も重要なスキルの一つだからです。お金というテーマは人にとって非常にセンシティブなもの。さらに信頼を高めるため、このアプリは完全にオープンに開発します。ブログ記事として過程を公開し、プロジェクトのコードも誰でも閲覧できるようにすることで、「隠すものは何もない」ことを証明します。

使用する技術スタック

まず、このアプリには現時点の各種暗号通貨の価格情報が必要です。価格は常に変動しているため、インターネットからデータを取得します。

データAPI

CoinMarketCap ― 暗号通貨市場の概要を把握するための最も人気のあるサイトの一つです。誰でも無料で利用できるAPIを提供しており、データ提供元として私たちの用途にぴったりです。

次に、このプロジェクトに適したAndroid業界の最重要トレンドをリストアップしました。

プログラミング言語

Kotlin ― Android公式のプログラミング言語です。表現力が高く、簡潔かつ強力で、既存のAndroid言語やランタイムとの相互運用性にも優れています。

Kotlinの登場は2017年のAndroid界隈で最大の話題となりました。私たちのアプリもKotlinで書きます。Kotlinについては、以前の記事「Android電卓アプリを作りながらKotlinを学ぼう」でも詳しく解説しています。

統合開発環境(IDE)

Android Studio ― Android公式のIDEです。あらゆる種類のAndroidデバイス向けアプリを最速で構築できるツール群を備えており、ネイティブアプリ開発においてこれより優れた選択肢はありません。迷うことなくこれを採用します。

ビルド管理システム

Gradle ― GroovyとKotlinをベースとした高度な汎用ビルド管理システムです。依存関係やライブラリの自動ダウンロード・設定をサポートしており、Googleが推奨するビルドシステムでもあります。Android Studioとの統合も優れているため、これを使います。

アーキテクチャ

Android Architecture Components ― 堅牢でテスト可能、かつ保守しやすいアプリを設計するのに役立つライブラリのコレクションです。

MVVM(Model–View–ViewModel) ― アーキテクチャパターンの一つ。データ表示ロジックをビジネスロジックから分離し、専用のクラスに移動させることで明確な役割分担を実現します。Androidチームがデフォルトの選択肢として推奨しているパターンであり、MVCやMVPの代替となります。

このパターンを選んだ理由や他のアーキテクチャの選択肢、コードの整理方法については、シリーズの中で別途詳しく解説します。保守しやすい堅牢なプロジェクトを構築するうえで、非常に重要なポイントです。

Coroutines(コルーチン) ― 非同期処理を実行するコードを簡潔にするためにAndroidで使用できる並行処理デザインパターンです。

データ永続化

SQLiteデータベース ― データをデバイス上のファイルに永続的に保存できるオープンソースのSQLデータベースです。AndroidにはSQLiteの実装が組み込まれており、リレーショナルデータベースの機能をすべてサポートしています。

SharedPreferences ― Android SDKが提供する、アプリ設定を保存・取得するためのAPIです。キーバリュー形式でデータを永続的に保存・読み出しできます。

ライブラリ

Android Jetpackコンポーネント

AppCompat ― 新しいバージョン向けに開発されたアプリを旧バージョンでも動作させるためのサポートライブラリ群です。

Android KTX ― Androidアプリ開発のためのKotlin拡張セットです。拡張関数・拡張プロパティ、ラムダ、名前付き引数、デフォルト引数といったKotlinの言語機能を活かし、より簡潔で快適、かつ idiomatic(慣用的)なAndroid開発を実現することを目指しています。

Data Binding ― レイアウト内のUIコンポーネントを、プログラムによる操作ではなく宣言的な形式でアプリのデータソースにバインドできるサポートライブラリです。

Lifecycles ― ActivityやFragmentのライフサイクルを管理するためのライブラリです。

LiveData ― Androidのライフサイクルに関する一般的な課題を解決し、アプリの保守性とテスト容易性を高めるために設計された、監視可能なデータホルダークラスです。

Room ― SQLiteの上に抽象化レイヤーを提供し、SQLiteの全機能を活かしながらデータベースへのアクセスを容易にします。

ViewModel ― UI関連のデータをライフサイクルを意識した形で保存・管理するために設計されています。画面回転などの設定変更時もデータを保持できます。

その他の標準コンポーネント

ConstraintLayout ― 柔軟かつ効率的なレイアウトを構築するためのレイアウトです。Layout Editorは制約(constraint)を使ってUI要素の位置を決定します。制約とは、別のビュー、親レイアウト、あるいは不可視のガイドラインへの接続や配置を表すものです。

CardView ― 影(elevation)と角丸を持ち、プラットフォーム全体で一貫した外観になるカード形式で情報を表示する要素です。

RecyclerView ― ListViewの柔軟で効率的な後継版です。大量のデータセットを効率的に再利用・スクロールしながら描画できるコンテナです。

サードパーティ製ライブラリ

Dagger 2 ― JavaとAndroidの両方に対応した、完全に静的なコンパイル時依存性注入フレームワークです。

Retrofit 2 ― AndroidおよびJava向けのオープンソースのタイプセーフHTTPクライアントです。Retrofitを使えば、APIドキュメントのようにシンプルで表現力豊かなインターフェースだけでHTTP通信を簡単に実装できます。

OkHttp ― HTTP/2とSPDYをサポートする、モダンで高速かつ効率的なオープンソースHTTPクライアントです。

Gson ― JavaオブジェクトとJSONを相互に変換(シリアライズ/デシリアライズ)するためのオープンソースJavaライブラリです。

Glide ― スムーズなスクロールに重点を置いた、高速で効率的なAndroid向け画像読み込みライブラリです。使いやすいAPI、高性能で拡張可能なリソースデコードパイプライン、自動リソースプーリングを備えています。

新規プロジェクトの設定

このプロジェクトはゼロから作成します。Android Studioを起動し、新しいプロジェクトを「My Crypto Coins」という名前で作成して、「Basic Activity」テンプレートを選択しましょう。この段階で特別に議論すべき点はありません。目標は、余計な複雑さを頭に持ち込まず、まっさらな状態でスタートを切ることです。追加機能(インスタントアプリ対応など)が必要になれば、開発中にいつでも加えられます。

まずはKotlin言語のサポートを有効にし、ターゲットAPIを23(Android 6.0 Marshmallow)に設定します。

なぜもっと低い、あるいは高いAPIをターゲットにしないのか?正直に言えば、古いデバイスへの対応を切り捨てられるのは魅力的です。開発中に互換性の問題を気にせず済みますからね。また、私は古いNexus 7(2013)タブレット――Android 6.0.1が動いている端末――を誇らしげに所有しています。この実機でアプリをテストしたいと思っていました。そういうわけで、この個人プロジェクトではminSdkの選択に影響しました。

さらに気づいたかもしれませんが、IDEに自動生成される基本アクティビティ(FragmentサポートとFloating Action Button付き)を利用するよう設定しました。これらはプロジェクトに役立つはずだと考えたからです。

2018〜2019年の最新Androidアプリ開発ロードマップ:モダンな暗号通貨ポートフォリオアプリをゼロから作る
Android Studio v3.0以降ではKotlinプラグインが組み込まれているので、チェックボックスをオンにするだけでサポートを追加できます。
2018〜2019年の最新Androidアプリ開発ロードマップ:モダンな暗号通貨ポートフォリオアプリをゼロから作る
最小SDKはビジネスニーズに基づいて選択しましょう。
2018〜2019年の最新Androidアプリ開発ロードマップ:モダンな暗号通貨ポートフォリオアプリをゼロから作る
Basic Activityを選ぶと、最初に役立つコードが自動生成されます。
2018〜2019年の最新Androidアプリ開発ロードマップ:モダンな暗号通貨ポートフォリオアプリをゼロから作る
チェックボックスをオンにすると、コンテンツがFragment内に配置されます。

GitHubでソースコードを公開

GitHub ― 最も人気のあるWebベースのバージョン管理ホスティングサービスの一つです。これはオープンソースプロジェクトなので、もちろんGitHubを活用します。

シリーズの各記事に対応するコミットは個別のブランチとして作成し、masterブランチには常に最新のソースコードを置きます。リポジトリへのリンクはこちらです。

GitHubでソースコードを見る

以上で準備は完了です。質問や提案、コメントなどがあれば、お気軽にお寄せください。それでは、一緒に学んでいきましょう!次回はパート2です!

Ačiū(ありがとう)!最後までお読みいただきありがとうございます。この記事は2018年2月12日に筆者のブログ www.baruckis.com で初めて公開されたものです。

  1. React Native と Native Base を使用して Android ニュース アプリを作成する方法

    私たちは物事が絶えず変化する世界に住んでいます。したがって、何が起こっているかを最新の状態に保ちたい場合は、優れたニュースアプリが必要になります. クールな技術を学び、最新の状態を保つために、このブログ投稿では、React Native を使用して Android 用のニュース アプリケーションを作成します。さまざまなニュース チャンネルから見出しを取得し、カテゴリ別に表示します。 完了すると、アプリは次のようになります。それでは早速見ていきましょう。 Expo のインストール方法 では、万博とは? Expo は、React Native アプリをすばやく簡単に構築してデプロイするの

  2. スマホだけでWebアプリを開発する方法 – Python × Pydroid 3 Androidアプリ開発チュートリアル

    こんにちは!私は18歳のバックエンド開発者で、機械学習エンジニアを目指して勉強中です。この記事では、スマートフォン1台とPythonだけを使ってWebアプリを構築する方法を解説します😁。それでは早速始めましょう!必要なものまず必要なのは、Android 6.0以降を搭載したスマートフォンだけです。「それだけ?」と思われるかもしれませんが、本当にこれだけでOKです。次に、スマホに「Pydroid 3」というモバイルアプリをインストールしましょう。ご覧のとおり、Pydroid 3はスマートフォン上でPythonコードを書けるようにしてくれるアプリです。Google Playストアからインストール