22時に寝ようと思って2時に寝る。

備忘録や日記を書いてます。きょうは早く寝よう。

Androidアプリ開発を勉強し始めました

お盆ですね。バイト先の学生がみんな帰省しちゃってバイトばかりしてる気がします。(自分は9月ごろ帰省する予定です)

タイトル、これまで「Androidアプリ開発勉強はじめました」って3回くらい言ってる気がする。もう冷やし中華のノリ。

今回は1週間後に控えた短期インターンAndroidアプリ開発に関連することなので、割とまじめにやろうかと思います₍₍ (ง ˘ω˘ )ว ⁾⁾

きょうやったこと

schooの"はじめてのAndroidアプリ開発 - 計算機アプリをつくろう"を受講した

schoo.jp

schoo.jp

schoo.jp

今日は録画で1~3限まで見ました。 電卓を題材にAndroidアプリ開発の流れを学べました。 ただいまいち理解は深まってない感じはある。写経して動いておぉ!ってなっただけな感じ。まだ授業は完結してなくて来週の火曜日に4限目があるのでそれも見る予定。

schoo.jp

昨日、思い切ってschooのプレミアム学生になったので、録画も見放題になりました。 生放送だとどうしても見逃すところがあって、そこでついていけなくなるけど、録画は戻れるので良いですやっぱり。

今回受講した中で特に3限目の「プログラムの整理の仕方(設計)を学ぶ」のところがとても勉強になりました。内容としてはリーダブルコード的なものでした(まだ読んだことないけど)。以下に軽くまとめてみる。

プログラムはどうして複雑になるのか

  • 機能を増やすとプログラムも増える 

    • if文を追加…
    • 新しいメソッドを追加…
    • 新しい部品を追加…
  • 大きく複雑なプログラムになる

    • どこに何があるか分からない
    • 変更の影響が広範囲に及びやすくなる

こういう問題に"立ち向かわなければならない"

読みやすいプログラムとは

  • if文などの条件分岐が少ない
  • メソッドで実行する内容がシンプル
  • クラスが持っているメソッドや変数がシンプル

使いやすいプログラムとは

  • プログラムの実行する内容がシンプル
  • メソッド名が目的を端的に表している
  • クラスの役割が明確に分けられている

設計パターンをおさえる

デザインパターンとも言う。オブジェクト指向プログラミングにおいて、デザインパターンを利用すると開発者にいろいろメリットがある。以下のサイトが詳しい。

デザインパターン | TECHSCORE(テックスコア)

いまいち設計パターンは理解できなかったけど、"なんか使うと良いらしい"的な理解はした(適当)

実際に動くアプリも作れました

https://i.gyazo.com/9e13be3c3ea2d46b6447e128683782b3.gif

ドットインストールで基礎を学んだ

dotinstall.com

dotinstall.com

dotinstall.com

dotinstall.com

ドットインストールは基礎の基礎から丁寧に教えてくれる印象がありますが、AndroidStudio導入の部分から教えてもらえます。レイアウト入門は特に知りたいところを網羅的にかつ端的に図を使って説明してくれるところが良かったです。

おみくじアプリを作った

https://i.gyazo.com/001297844187a4a22e8f296a805ba29d.gif

ちょっと自分なりに工夫しようかと思って、ボタンのデザインをAndroid-Bootstrapを利用していい感じにしてみました。

android.tecc0.com

ただ、これを使うとマテリアルデザインの水面に波紋が広がる感じのアニメーションがなくなってしまうので、どうなんだろうって思いました。

このアプリを作る過程で学べたこととしてはテキストの色の指定等。

テキストの色の変え方

Color.RED
Color.rgb(255,255,255)
Color.argb(127,255,255,255) // aはアルファで透明度を指定できる127で50%の透明度となる
Color.parseColor("#ff0000") // 16進数で指定できる

乱数の発生のさせ方

// 0-2の乱数を生成
Random randomGenerator = new Random();
int num = randomGenerator.nextInt(results.length); 

テーマの変え方

  • デザインに統一感を持たせるためにテーマが存在する
  • コードで指定したテーマはアクティビティの画面を編集する際に出てくるプレビューとは全く連動していない
  • 連動していないので、テーマを変更してもプレビューに反映されない または プレビューでテーマを変更したのにエミュレータでテーマが反映されない等混乱する可能性があるので注意
  • プレビューはテーマ表示に不具合がある場合があるので基本的にエミュレータで動作確認すべき

Strings.xmlでのテキスト管理

  • Strings.xmlを使うことで多言語対応も可能

名前診断を作った

https://i.gyazo.com/df41f21daa0f1fac10270d0e580d1654.gif

エラーメッセージの表記方法やIntentについて学んだ。

名前が入力されてなくて空だった場合に表示するエラーメッセージの出し方のレパートリーはいろいろある

その1 setError

myEditText.setError("Please enter your name");

https://i.gyazo.com/0bce331765d50d63619d8938df1433ed.gif

その2 Toast

Toast.makeText(
    this,
    "Please enter your name!",
    Toast.LENGTH_SHORT
).show();

https://i.gyazo.com/9bbc346a5e203d6c237f71d726ff1800.gif

その3 AlertDialog

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder
    .setTitle("Error!")
    .setMessage("Please enter your name!")
    .setPositiveButton("OK", null);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

https://i.gyazo.com/a12c963b4ab455ca9356fa9c18a648d8.gif

AlertDialogは動作が重いのでアレらしいから今回は使わず

少し基礎ができた

気がする。

半月前にこの本を買って、さらーっと1/5くらい読んだけど、なんかレベル高いなーと思ってモチベが下がってしまいました。

なので今回は学習動画コンテンツを中心にやっていきました。

やっぱり学び始めの触りは本よりも動画が向いてるのかもしれない。

まだ写経しかできないけど、コツコツやっていこう。