コンピューティング・プラットフォームのシェアではすでにAndroidがWindowsを抜いているというニュースが少し前に話題になりました。スマートフォンの存在感は、いまやパソコンをしのいでいます。

 パソコンが主流だった時代に比べ、スマートフォンでは自分でアプリを作ることに興味を持っている人も増えた気がします。そうした人にとって取っ付きやすいのが、Androidアプリの開発です。iPhone/iPad向けのアプリを開発するには、まず開発用機器としてMacが必要で、年間8400円(2013年10月現在)の費用も必要です。一方、Androidアプリであれば、手持ちのパソコン(WindowsでもMacでもLinuxでもOK)を使って無料で開発できます。

 Androidアプリの開発ツールである「Android SDK」を使えば、アプリ開発初心者でもコードを全く書くことなく「Hello World!」を表示するアプリを作れます。しかし、それ以上のことをしようとしたときに初心者の前に立ちはだかるのが「Javaの壁」です。Androidアプリは基本的にJavaで記述するからです。

 最近は企業システムをJavaで構築することが多いので、そうした開発にかかわっている人であれば問題ないでしょう。しかし、プログラミングが初めてだったりC言語しか知らなかったりすると、Javaを理解していないことが大きな障壁になります。

 そこで日経ソフトウエア2013年12月号では、そうした方を対象に「Androidアプリ開発初心者のためのJava超入門」という特集を掲載しました。Androidアプリの開発に最低限必要なJavaの知識を解説することを目的とした記事です。前半のJava知識のパートを私が執筆し、後半のアプリ作成法のパートを外部の方に書いていただきました。

 恥ずかしい話なのですが、この特集で取り上げた「オブジェクトにも型がある」「クラス階層とパッケージ階層を区別しよう」といった話題は、実は自分自身が以前は理解していなかったことです。私がJavaのコードを初めて見たのは2000年代初めだったと思いますが、そのときにはまずオブジェクトが型を持つということが理解できませんでした。クラスの継承関係とパッケージも混同しがちでした。そうしたときの気持ちを思い出しながら、今回の記事を書きました。

 中でも一番反省しながら書いたのが、プログラミングを知らない人に向けた以下の文章です。

重要なのが「よくわからないけどなんとなく動いた」という状態に満足しないクセをつけること。サンプル・コードであれ、自分が書いたコードであれ、「どうしてこんな動作になるのかわからない」というところがあれば、解説書なりインターネットなりを参考にして、納得できるまで考えてください。どんなに単純なコードでも、自分が書いたコードの動作を人に説明できるようになれば、あなたは立派なプログラマです。

 私もご多分に漏れず、最初に書いたプログラムはBASICで、その後はC言語でした。しかし「適当に書いて、動かなかったらいろいろ変えてみて、たまたま動いたら満足」という素人状態からずっと抜け出すことはできませんでした。そうした姿勢がいかにダメかということを思い知らされたのは、日経バイト(2006年1月号をもって休刊)や日経ソフトウエアに掲載するサンプル・コードを書くようになってからです。適当に書いたプログラムでは、満足に記事を書くことはできません。

 これからプログラミングを始める人は、こうした回り道はすべきではないと思っています。なので「ちょっと初心者には厳しいかな」と思いつつ、最も言いたいこととして上の文章を書きました。

 ちなみに同じ号では「CプログラマのためのHaskell入門」という記事も書きました。Haskellについてはさわり程度しか紹介できず、むしろ関数型プログラミングの概念の紹介が中心になっています。なるべく難しくならないよう心がけて書きました。