独学でAndroidアプリ開発を目指す人におすすめの本


Androidアプリ開発初心者が独学で勉強するのに適した本

僕が独学でAndroidアプリ開発を勉強するために使った本を紹介します.

まず,Androidアプリ開発をする上でこれらの知識が必要です.

  • Javaによるプログラミング知識
  • AndroidStudio等の統合開発環境(IDE)の基本的な使い方
  • Androidアプリ開発のための知識

これらを学ぶために僕が使用した本を紹介します.
なお,本の画像はアマゾンへのリンクになっています.

広告

パソコンショップ「ドスパラ」が一押しする、今話題沸騰中のスティック型PC!!


Java入門書

まずはAndroidの勉強をする前にJavaの勉強をする必要があります.
AndroidはJavaでプログラムが組まれているので,Javaでの基本的なプログラミングを学ぶ必要があります.
僕が使用したのはこちらの本です.


スッキリわかるJava入門 第2版 (スッキリシリーズ)

書店で中身を軽く見たり,アマゾンのレビューが高評価だったので購入を決めました.
内容は初心者向けのJava入門書です.

オブジェクト指向によるプログラミングを学ぶ教材としては最高の物ではにかと思います.
例えがとにかく分かりやすく,なぜそうなるのか?を本当に理解することができます.

他のプログラミング言語を勉強したことがある人にとってはもちろん,プログラミング自体が初めての人にとってもいい本であることは間違いありません.

他のオブジェクト指向言語にも流用できるので,読んでおいて損はないと思います.


AndroidStudioでのアプリ開発本

次に,統合開発環境(IDE)の使い方も踏まえた初歩的なアプリ開発方法を紹介している本です.
AndroidStudioのインストール方法,基本的な使い方,アプリ開発の流れを学ぶことを目的としています.


改訂2版 中学生でもわかる Androidアプリ開発講座

書店での確認とアマゾンレビューを読んで購入を決断しました.
これを買った当時は全くと言っていいほどAndroidの開発方法を知りませんでした.
そのため,やさしくて丁寧な基本的な必要事項だけを書いた本がほしくて購入しました.

タイトルにあるように中学生向けのアプリ開発本です.
とは言ったものの,一部中学生には理解が難しい内容も含まれている気がします.
ですがAndroidアプリを開発する基本的な流れやIDEの使い方を勉強するには適していると思います.

何より,中学生向けを目標に作られているので,全てがやさしく解説されています.


Androidアプリ開発の辞書的な役割を果たす本

AndroidはSDKと呼ばれる開発キットを使って開発されます.
そのため,SDKの使用例をまとめた辞書的な本があると非常に役立ちます.


Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

こんな機能を実装したい!と思った時に使う本です.
サンプルプログラムも豊富なので,開発を助けてくれます.

これを読んだだけでAndroidアプリが開発できるというものではありません.
欲しい機能の実装方法を調べるための辞書的な本です.
Androidアプリの作り方を学んだ後で使うといい本だと思います.

全く知らないことはグーグルなどで検索することもできません.
そのため,カテゴリで分けられた辞書的な本があると自分の知識の引き出しを増やすことができます.
全部を読む必要はなくて,困ったときに必要なものだけを読むといい本だと思います.


気になっているAndroid開発本

一応,僕は上で紹介した本を読んでアプリ開発を行っています.
ですが,Androidアプリ開発は奥がかなり深いので,これだけでは足りないと思います.

というわけで,以前から気になっているいくつかの本を挙げておきます.


やさしいAndroidプログラミング 第3版 (「やさしい」シリーズ)

最近(?)出たAndroid本です.基本的な開発手順が詳しく書かれているのでいいなーと思っています.
改訂2版 中学生でもわかる Androidアプリ開発講座ではなくて,こっちの本でもいいと思います.


Androidアプリ開発パーフェクトマスター (Perfect Master)

かなり分厚い本です.まさに辞書.
Androidの開発に関わることが全て書かれているのではないかとも思います.

ただし,Android 4までしか対応していないので,最新の情報ではありません.
しかし,これに書かれている情報は今でも非常に役に立つ内容だと思います.


Androidプログラミングバイブル SDK5/4対応 (smart phone programming bible)

こちらも分厚い本です.先ほどの本よりは薄いですが.
しかしAndroid 5に対応しているため,最新のAndroidアプリ開発を行うことができます.

先ほどの本を買うべきか,こちらの本を買うべきか非常に悩んでいます.
もう少し時間をかけて選びたいと思います.

 

広告

日本最大級のオンライン書店 NETOFF

遷移先のActivityに値やオブジェクトを渡す方法のまとめ.


Activityの遷移時にデータの受け渡しを行う.

今回はActivity間でデータを共有する方法です.
Activityの遷移はintentを使って行えます.

Activityの遷移は必ずと言っていいほどアプリ開発では使うものです.
その際,遷移先のActivityに値を渡したり,遷移先から値を受け取る必要があることがあります.
しかし,値やオブジェクトを遷移先のActivityに渡そうとすると,いろいろとややこしい事になったりします.

そこで今回は,遷移先のActivityに値を渡したり逆に受け取る方法をいくつかまとめてみました.

 

広告

パソコンショップ「ドスパラ」が一押しする、今話題沸騰中のスティック型PC!!


.putExtra()やSerializableインタフェースを利用して受け渡しを行う.

このサイトにintent.putExtra()を用いて値を遷移先のActivityに渡す方法が書かれています.
この方法は型を指定する必要があります.
また,オブジェクトの一時的保管領域を使うことでオブジェクトを渡すことができます.
自作オブジェクトを渡すことも可能なようです.

また,Serializableインタフェースを用いて自作クラスのオブジェクトを渡す方法もあります.
このサイトにオブジェクトを遷移先のActivityに渡す方法が書いています.

といったように,.putExtra()を用いることやSerializableインタフェースを実装することで値やオブジェクトを渡すことができます.


Applicationクラスを使ったActivity間でのデータの共有

このサイトにも記されているように,Applicationクラスを用いてActivity間でデータを共有することができます.

Applicationクラスを継承したクラスを作成し,getApplication()で作成したApplicationオブジェクトを取得します.
これによってグローバル変数をActivity間で共有しようというものです.

この方法を使うと値の受け渡しを行うことなくActivity間でデータを共有することができます.
導入が比較的簡単なので,一番おすすめの方法です.

ApplicationはActivityとは違って勝手に消えることがないので,データを保持するには打って付けです.

 

広告

Android テキストファイルの入出力に関して


Androidでのファイルの入出力

Androidでファイルの入出力をしようとしてつまづいたのでメモ

バイナリでの出力ではなく,文字列で出力しようと思うとこうなりました.

簡単そうで難しい気がするAndroidでの入出力についてです.
いや,慣れれば簡単だと思うんですけどね.僕は慣れてなかったので.

本や,いろんなサイトを調べまくってこの結果にたどり着きました.

広告
満足度で選ばれるアンチウイルス対策ソフトなら「ESET NOD32アンチウイルス 4」


結論

import android.content.Context;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.io.FileNotFoundException;
import java.io.IOException;

public class IO_Class {
private String fileName=“data.text”;
private MainActivity main;

//初期化処理を記述
public IO_Class(MainActivity ma){
  main=ma;
}

//読み込み処理
public ArrayList<String> inputData(){
 ArrayList<String> strings=new ArrayList<String>();
 File file ;
 BufferedReader bufferedReader;
 InputStreamReader inputStreamReader; 
 try {
  String row1;
  FileInputStream fileInputStream;
  fileInputStream = main.openFileInput(fileName);
  inputStreamReader=new InputStreamReader(fileInputStream);
  bufferedReader=new BufferedReader(inputStreamReader);
  while ((row1=bufferedReader.readLine()) !=null){
   strings.add(row1);
  }
  bufferedReader.close();
  inputStreamReader.close();
  fileInputStream.close();
  return strings;
 }
 catch (FileNotFoundException e){ return strings ; }
 catch (IOException e){ return strings ; }
 }

//書き込み処理
public void outputData(ArrayList<String> strings ) {
 File file;
 FileOutputStream writerFile;
 BufferedWriter bufferedWriter;
 OutputStreamWriter outputStreamWriter;
 try {
  String path = \\data\\data\\+ main.getPackageName() + \\files\\+ fileName;
  file = new File(path);
  writerFile = main.openFileOutput(fileName, Context.MODE_PRIVATE);
  outputStreamWriter = new OutputStreamWriter(writerFile);
  bufferedWriter = new BufferedWriter(outputStreamWriter);
  for (String s : strings){
   bufferedWriter.write(s);
  }
  bufferedWriter.close();
  outputStreamWriter.close();
  writerFile.close();
 } catch (FileNotFoundException e) {
 } catch (java.io.WriteAbortedException e) {
 } catch (java.io.EOFException e) {
 } catch (IOException e) {}
}
}

はい,こんな感じです.
ArrayList<String>に入出力したいデータを入れて,引数にしたり返したりしています.

ポイントはFileとBufferedReaderとInputStreamReaderもしくはwriterを組み合わせて使っているということ.  
これで文字列での入出力ができます.

例外処理をしないとエラーが出るので処理しています.

あと,パスの指定は

\\data\\data\\+ main.getPackageName() + \\files\\+ fileName

のようにしなければいけません.
Androidではアプリごとに保存場所が決まっていて,それ以外の場所にはファイルの保存ができません.

とりあえずこれでファイルの入出力が簡単にできます.

広告

作ればわかる! Androidプログラミング第3版 [ 金宏和實 ]

価格:2,894円
(2015/9/23 19:29時点)
感想(0件)

Androidアプリ開発逆引きレシピ [ Re:Kayo-System ]

価格:3,024円
(2015/9/23 19:29時点)
感想(0件)

Androidで楽に暗号化.javax.mailのインポート.


パスワードをテキストファイルなどに保存するときにそのまま保存するのはマズイですよね.
で,暗号化をするのですが,いろいろなサイトで簡単に暗号化する手法が紹介されています.
今回はAndroidで楽に暗号化を行う方法を紹介したいと思います.

広告
満足度で選ばれるアンチウイルス対策ソフトなら「ESET NOD32アンチウイルス 4」


暗号化方法

今回参考にしたのはこちらのサイト
非常にシンプルで分かりやすく暗号化を実装しています.以下引用です.

僕がいま係っているシステムで、別システムのログインパスワード文字列データベースに格納することになりました。これを実現するために、Java文字列暗号化/復合化を行う方法を調べたので、その結果を記しておきます。(※既に別の方々が解説している内容をまとめただけですが。)

まず、大きく以下の工程にわけて考えます。

  1. 文字列暗号化する(バイト配列を得る)
  2. 暗号化されたバイト配列文字列化する(暗号文字列を得る)
  3. 暗号化された文字列をバイト配列化する(暗号化バイト配列を得る)
  4. バイト配列を復号化する(文字列を得る)

文字列を暗号化して,文字列を返す.といった内容です.
通常は暗号化したらバイナリになるのですが,それを文字列に変換して扱いやすくしよう.
といった試みをしてくださっています.

文字列でしたらテキストファイルにもCSVファイルにも出力しやすいので,便利ですね.

で,僕もここで紹介されている暗号化処理を使ってみました.

基本的にはクラスを新規作成してコードをコピー&ペーストすれば機能します.
が,ただ一つ注意していただきたいことがあるのでそれについて記述.
というか僕がつまずいたことですが.

 


javax.mailのインポート

タイトルにもあるようにjavax.mailをインポートする必要があります.
ただ,import javax.mailと記述するだけでは入れれません.

JDKの中にはjavax.mailは入っていません!
なので,Java Mail APIからAPIをダウンロードする必要があります!

リンクからページに飛んだら右上のDownloadsをクリック

JavaMail 1.4.5
JavaMail API 1.4.5, you can find it   here

とかなっているので,最新のヴァージョンのhereをクリック.

ページが飛ぶので,Downloadをクリック.
ダウンロードしたい項目のAccept Licenseをチェックして,ダウンロード

で,解答して中を見るとmail.jarというjarファイルがあるので,それをAndroidStudioに取り込んで完了.
import完了です.

以下,jarファイルの取り込み方です.


.jarファイルの取り込み方

 

まず,下の画像の左上にある赤丸のところをProjact Filesに変えます.
その次に,libsという名前のフォルダー(Directory)を新規作成します.

スクリーンショット (1)

で,libsの中に先ほどのjarファイルをコピーします.
フォルダーアイコンを右クリックして貼り付けでできます.

その時,こんなダイアログが出てきます.
そのままOKボタンでいいです.

スクリーンショット (2)

これでlibにjarファイルの追加ができました.
で,これをインポートで呼び出せるようにしないといけません.

先ほど追加したjarファイルを右クリック→Add As Liberarry

スクリーンショット (3)

すると,こんなダイアログが表示されるので,赤丸のところをAppに変更してOKボタンをクリック.

スクリーンショット (4)

で,app内のbuild.gradleを見てみると,下の画像の赤線の行が追加されています.
で,青線の行を削除してください.これを放っておくと後にビルドエラーが発生したりします.

スクリーンショット (5)

これでjarファイルの追加が完了しました.

これでjavaコード記述時にimportで読み込むことができます.


使い方

try {
            row1=ciphertestPasswd.decrypt(keySubPass,ciphertestPasswd.decodeBase64(row1));

}catch (java.lang.Exception e){

}

row1Stringで,ciphertestPasswdは今回作った暗号化用クラスです.
中に参考したサイトに記述されていたコードをメソッドとして定義したものです.
コードのように,例外処理をする必要があり,しないとエラーが出ます.

広告

Android StudioではじめるAndroidアプリ開発の教科書 [ 松岡謙治 ]

価格:3,218円
(2015/9/23 18:35時点)
感想(0件)

Androidアプリ開発逆引きレシピ [ Re:Kayo-System ]

価格:3,024円
(2015/9/23 18:36時点)
感想(0件)

AndroidStudioでNavigationDrawerを使う.


NavigationDrawerとは

スクリーンショット (3)

NavigationDrawerとは,Androidのデペロッパー向けのサイトで説明されているようなスマホの画面の左をスライドすると,横からシュッとメニューが出てくるあれです.
スライドだけでなく,左上にある3本線のアイコンをタッチすることでもメニューが出てきます.
Googleのアプリでよく取り入れられていて,なんかカッコイイあれです.大好きです.

ですが,こちらのサイト(引用元)によると,

ナビゲーションドロワーはサポートライブラリに含まれています。まずはアプリケーションプロジェクトにサポートライブラリを追加します。プロジェクトを右クリックで表示される、「Android Tools」の「Add Support Library」から追加しましょう。

といったように,導入しようとすると少し面倒です.いや,入れれば済むんですけどね.

広告
あのブランド品が毎日激安特価!お買い物なら楽天市場


Android Studioでの導入

Android StuidoではNavigationDrawerの導入が楽に行なえます.
Activityの新規作成画面で,NavigationDrawerを選択するだけ.必要なものは勝手に準備してくれます.

Activityの新規作成画面で,NavigationDrawerActivityを選択.
スクリーンショット (1)

必要事項を設定して,Finish.

スクリーンショット (2)

これで作成完了です.簡単ですね.

僕がこの簡単に作れるというのを知ったのは先ほどのサイトを参考にしていろいろ奮闘した後だったので,サポートライブラリーの導入などはしていました.ですので,もしかしたらサポートライブラリーをインストールするように求められるかもしれないです.
Android Studioでのサポートライブラリーのインストール方法はこちらのサイトこちらのサイトで紹介されています.
v4を入れましょうね.v4ですよ.v7じゃないですからね!


僕の環境で発生したエラー

ちょっと僕の環境で発生したエラーについて記しておきます.

アクティビティの作成はどうやらできたみたいなんですが,なぜかエラー表示が.
エラー内容をメモしておくのを忘れてしまいましたが…,Build.gradleにエラーがでてるみたいでした.

で,よく見てみるとbuild.gradlecompileSdkVersion 23targetSdkVersion 23という 記述になってたんですね.
で,エラーをよく読んでみると,ver23のSDK toolがインストールされてない!って内容でした.

ということで,SDK Managerからver23のSDK toolをインストール.無事ビルド成功.
プロジェクト作成時にSDKの設定を忘れてたのかもしれません..

build.gradleでエラーが発生してるよ,と言われたらSDKのバージョンに注目してみてください.
もしかしたらそこでエラーが発生してるかもです.


NavigationDrawerの最低限の設定項目

JavaコードにはMainActivityNavigationDrawerFragmentが作成されています.
layoutにはactivity_mainfragment_mainfragment_navigation_drawerが作成されています.

これを見て分かるように,Fragmentが使われています.
僕が最初に参考にしていたサイトでは使われていなかったのですが,確かに使ったほうが楽なのかな.と思いました.

以下,必須の設定項目を見ていきます.


public void onSectionAttached(int number) {
    switch (number) {
        case 1:
            mTitle = getString(R.string.title_section1);
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            break;
    }

MainActivityの中にあるonSectionAttachedの中身をいじることでアイテムが選択された時の動作を設定できます.
初期のままだと,アクションバーのタイトルを選択されたアイテム名にする.という処理になっています.


@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        mDrawerListView = (ListView) inflater.inflate(
                R.layout.fragment_navigation_drawer, container, false);
        mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);
            }
        });
        mDrawerListView.setAdapter(new ArrayAdapter<String>(
                getActionBar().getThemedContext(),
                android.R.layout.simple_list_item_activated_1,
                android.R.id.text1,
               new String[]{
                       getString(R.string.title_section1),
                        getString(R.string.title_section2),
                        getString(R.string.title_section3),
                }));
        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
        return mDrawerListView;

    }

NavigationDrawerFragment内の黄色で塗られた所にあるonCreateViewnew String[]{   }の中身を変更することで,Drawerのアイテムを設置することができます.
また,黄色で色付した部分を他メソッドで定義し呼び出すことでアイテムを動的に変化させることも可能です.


その他詳細な設定とカスタマイズ

その他の設定に関してはこちらのサイトが説明されているので,参考にしてみてください.

コカ・コーラ ドクターペッパー500mlPET×24本(1ケース)販売。2ケースご注文で送料無料!一本あたり104円(税別)【RCP】

価格:2,695円
(2015/9/23 16:25時点)
感想(4件)

よるのないくに 通常版 PS4版

価格:6,242円
(2015/9/23 16:27時点)
感想(0件)

WordPressはじめました.

 

はじめまして,もぶひこです.
以前から気になっていたWordPressをついに始めました.
 
普段は独学でプログラミングをしていて,パソコン向けソフトやスマホ向けアプリの作成をしています.
他にも自作パソコンや開発したアプリで収入を得る方法を模索したりしています.
ブログは書いてたりしたのですが,詳しい内容を記す備忘録は作っていなかったので,備忘録用に作成しました.
 
ソフトウェア開発などで困ったことがあれば共有できればいいなと思っています.
それでは,また次回.