Android徹底批判
※この文書はまだ途中です。
まえがき
もちろん、アップルがいくら嫌がらせをしてもAndroidが優位に立つことは間違いないし、Windowsの小さいやつとかその他のモバイルOSを駆逐してしまうことも約束されているのであろう。しかし、これに対してAndroidのAPI及び開発環境はとにかくひどい。なぜこれに皆口をつぐむのか不思議で仕方がない。
この種の問題はこの業界に限らないことなのであるが、それを推進している側としては「賛美」しか許されないのであろう。強くコミットしていればいるほど、批判は酒の席でしか語られず、表に出てこないものである。
しかし、Androidの設計は明らかに「変」なのである。「変」で悪ければ「ちぐはぐ」という印象を拭えない。細かい設計ひとつひとつはさすがと思わせても、全体を通す設計思想ともいうべきものがほとんどデタラメとしか言いようがない。ここではこれらを徹底的に批判していく。
すべてをJavaで記述することができない
これが最大の問題点であり、これほどひどい設計は無いとさえ言える。 APIの多くの機能を使うためには、必ずXMLを記述しなければならないのである。Javaから操作する方法は全く提供されていない。
アップルのAPIように一般の開発者には知らされていない裏口があって、そこからなら操作できるのかといえばさにあらず。 Androidの(おそらく)すべてのソースは公開されているので、そんな不正は全くないのである。完全に術が無いのだ。
つまり、この設計者は「XMLを使うんだからJavaなんか使う必要なんかない」と考えているようなのであるが、これは間違い。 XMLはJavaの代わりにはならない。
XMLは絵に描いた餅
さて、この設計者はXMLを手書きで記述することを想定していたのであろうか?まさかそんなことはないだろう。 何らかのGUIエディタで「簡単に」プログラムを作成することを夢想していたのであろう。 Visual BasicやDelphiのようにドラッグドロップして簡単にイベントハンドラを記述して。。。。 しかし、これは完全に失敗している。Eclipse-ADTに付属のGUIビルダの貧弱さを見れば明らかだ。
というよりもむしろ、全く使い物にはならない。こんなものを使うよりむしろ手でXMLを記述したほ方がはるかにマシだ。
しかし、このXMLときたら、XMLの規格を厳格に守ろうとするあまりか、こんな調子になってしまうのである。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#00000000" android:gravity="center"> <Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:textSize="24pt" ....
こんな風に何でもかんでも「android:なんちゃら」と記述しなければならないのである。 これは苦行以外の何物でもない。
また、「プログラミング言語ではないXMLを使うことによって、プログラマ以外の素人でも設定することができる」という意見を持つ者があるが、これも理由にならない。XMLで記述されたSpringのワイアリング設定をプログラムを知らない素人がいじることなど100%ありえないのである。
そもそも、これが真だと仮定しても、そんな素人のためにプログラマがなぜ余計な負担を背負わなければならないのだろうか?