C言語プログラマがスマホ用アプリ開発を始めるときに役立つWebサイト(適時更新)

C言語プログラマとしての経歴が長い私ですが、
スマホアプリ開発android, java)を始めるときに、お勉強になったWebサイトを適時紹介したいと思います。
(というか、ただの備忘録?)

世界観から再構成しましょう

C言語でPCソフトを作ったりすると、
すべての処理を自分で書かなくてはいけない
という固定概念が染みついてしまいます。
実際にはライブラリ等を使っているので、すべてのコードを自分で書いているわけではないのですが、
それでも、「ライブラリは意識的に使用する道具であり、手間の節約のために使っている」という認識があり、
原則的にはすべてを自分で書かなくてはいけない、と考えていました。

しかしアプリ開発は(一般的には)そうではないのです。

上記リンク先を読んでいただければわかりますが、
原則は「追記」です。
まるで、既存の完成ソフトに追加機能を実装していく派生開発のようなスタイル、これがアプリ開発の基本です。

恐らくPCソフト開発も、大手が作る場合は同じスタイルなのだと思います。
基本となるベースソフト(OOP的にいえば継承元クラス)があり、
それを元に(継承して)新たなソフトウェアを作成していく、という感じなのでしょう。

それがわかっていないと、「extends」や[@Override」が一体何をしているのか、
なんでこんなことをしているのかが見えてこず、
たとえ今までのあなたがプログラマ経験が長い人だったとしても、
アプリ開発についてはド素人のコピペプログラマになってしまいます。

MainActivityの中身は把握しておきましょう

と言われても、C言語プログラマとしては気持ち悪いもの。
C言語を初めて勉強したときの「#includeはお・ま・じ・な・い♪」をあの時呑み込めたのは、
よくわからない気持ち悪いものが#include文ただひとつだけだったからで、
「MainActivity.javaとactivity_main.xmlがまるっとおまじないだよ♪」なんて、
C言語プログラマからすると吐き気を催すレベルです。
(あるいは「やだもう帰る!」と叫んでキーボードをクラッシュするレベル)

なので、せめてこの2つのファイルの中身くらいは意味や機能を知っておきたいものです。

上記サイトでは、コードを一行一行、丁寧に解説してあります。
これを見ると、「あぁ、MainActivityってメインループ的存在なのね」というのがわかります。
(while文などの明示的なループ制御はありませんが、機能としてはメインループの各イベントが
 書かれているものですので、そう言っても間違いはないでしょう)

これらを理解していれば、とりあえずは落ち着いてアプリ開発が始められるかなと思います。