初心者が独学で Android アプリ開発に挑戦して、挫折するまで。

PC・スマホ・Web

具体的なコードの話が出てきますが、言語のバージョンアップなどで現在の仕様とは異なる可能性がありますので、ご了承下さい。

 昨年、Android のアプリを開発しようと思い、独学で勉強していました。

 結論としては、ある程度はできるようになったものの、完成までに超えることが難しそうな壁があることがわかり、あきらめることになりました。

 今回は、アプリ開発に挑戦してから、感触をつかみ、そして挫折するまでの話を書きたいと思います。(ちなみに、ここではおおまかな流れを書いて、細かい話は次の記事で書く予定です)

 作りたものが作れなかったことに関しては、もちろん悔しい気持ちもあります。

 しかし、ある程度は成長を感じられたこと、また、やらないとどんな壁が待ち受けているかすら分からないので、そういった見通しを持てるようにはなったという点で、やってよかったと思います。

【前提】プログラミング知識はちょっとある

 プログラミングは全くの素人というわけではなく、ちょっとだけは触ったことがあります。

  • VBA (仕事で、課内用の Excel マクロは書ける)
  • HTML と CSS → 自作ホームページあり(静的)。CSSの知識は、かなり活かせた。
  • データベース → Access のテーブルをつなげてクエリを作れるくらい。

 ざっくりいうと、「プログラミング言語なんて、所詮は If と forループ と データベースのテーブル を組み合わせるだけ! あとは言語によって書き方が違うだけだろ!」と思っています。

ステップ1 とりあえず動くものを作る

 まずはこの本を買いました。

作って楽しむプログラミング Androidアプリ超入門
Amazon.co.jp: 作って楽しむプログラミング Androidアプリ超入門 eBook : WINGSプロジェクト 高江 賢, 山田 祥寛: 本

 この本は、サンプル通りにコードを書き、占いアプリを完成させようというものです。

 まずは写経するのが大事だと思ったので、とにかく1つ作り上げることを目指しました。

 この本でできるようになったことは、以下のことです。

  • レイアウト(画面上のボタン配置など)の作成
  • 発生させたランダム数に合わせて、写真を表示
  • 右上の「…」から設定へ、簡単な画面遷移

簡単に言うと「データベースはまだ無理だけど、用意したリソースをとりあえず動かせる!」というレベルになりました。

 しかし、まだ1つしかアプリを作っていないので、コードのどの部分がどの機能と対応するのか、十分には理解していませんでした。ただし、これは本のせいではありません。僕が詳細に理解することよりも、大雑把な理解のままで、とりあえず動くコードを完成させることを優先したからです。

 本の解説は、最低限の機能に始まり、動く状態をキープしながら、少しずつ機能を追加していく順番で記載されています。正しく理解すれば、コードと機能の対応を把握でき、応用力のある人であれば発展させられると思います。

 ちなみにこの本、現在では非推奨の Kotlin Android Extensions を使っています。

 Android Studio でも警告が出るのですが、無視できるので、修正せずに使いました。代わりにどうすれば同じ機能を実現できるか、というレベルにまだ達していなかったからです。ここでも「とりあえず動く」ということを重視しました。

ステップ2 データベース(のようなもの)を使う

 次に使ったのが、こちらの本です。

作ればわかる!Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門
Amazon.co.jp: 作ればわかる!Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門 eBook : 金宏 和實: 本

 この本ではサンプルアプリが10個あり、それをマネして作りながら、少しずつ使える機能を増やしていこうという内容です。僕は全部は作らず、4~5個くらい書いてみました。

 1冊目と重複することが多いものの、僕の場合は繰り返すことで、より細かい部分が理解できるようになったので、よかったです。

 この本で学んだことは以下のとおりです。

  • ローカル環境へのデータ保存(共有プレファレンス)

 つまり、この2冊を読んで「スマホのローカル環境だけで動く(ネットに接続しない)のであれば、だいたいなんでも書けそうだな」という見通しが立ちました。

 これは「できるようになったこと」ではありません。「まだできないけど、勉強すればできるだろう」という見通しも含みます。

 本だけで自分の作りたいアプリが作れるとは思っていないので、検索して調べたときに理解できるレベルになればOK、という認識です。

 ここまでである程度実力がついたのを実感したので、自分が作りたいアプリに手を出し始めました。2冊の本に書いてある内容をコピーしたり修正したりしながら、足りないところはネット検索で補うことで、形だけでも作れる部分から作り始めました。

ステップ3 API と OAuth の導入へ・・・そして挫折

 さて、ここまで書いていなかったのですが、僕が作りたかったアプリを簡単に説明します。

 作りたいのは 英単語の暗記アプリ で、詳しくは次の通り。

・Google Spreadsheet(Excelみたいなアレ) に、英単語、意味、例文などを登録しておく

・アプリでは、登録したものからランダムに1つクイズ形式で表示。正解・不正解の記録も登録できる。

・想定している使用方法は、PC で英単語登録 → スマホでクイズ という方式。

 実はこのアプリ、すでにブラウザ上で動く Web アプリ としては制作済みです。

 僕自身では以前から使っており、誰でも使えるようにホームページ上で公開もしています。

完成形の画面(Webアプリ版)

 しかし、Web アプリでは販売ができないどころか、配布することも難しい。そこで、Android アプリとして制作しようと思いました。

 そして、ここまでの知識では足りないこととして「Google Spreadsheet とアプリをどうやって連携するのか」が問題として挙がります。

 Google Spreadsheet とアプリの連携を実現するには、大きく分けて2つの技術が必要です。1つ目が API 、2つ目が OAuth です。そして、両方ともマスターは難しそうだと思いました。

① API の導入

 API とは、サービス間のデータのやりとりをつなぐものです。今回の場合はこのようなデータの送受信があります。

Spreadsheet → アプリ : 登録した単語、答え、例文など

アプリ → Spreadsheet : 正解・不正解の記録

 Google の用意している「Sheet API」というものを使えば、 Spreadsheet 内のデータを取り出したり、また書き換えたりすることができます。

 しかし、その指示の出し方がめちゃくちゃ難しい!

 Sheet API については、ここにマニュアルがあります。

Sheets API  |  Google Developers

 が、正直言って、全然分からない! 英語はまあまあ読める方だけど、これはさっぱり分からない。ていうか、プログラミングの教科書って日本語で読んでもワケが分からない。手を動かして書いてみて、やっと「あーなるほどね」ってなることが多い。日本語でも分からないのに、ましてや英語はなおさら難しい。

 一応、API の教科書も読みましたが、ちょっと難しかったです。Android Studio みたいに気軽に動かせなかった。詳しくは次の記事で書きますが、API は素人が気軽に手を出せるものではないな、と思いました。

② OAuth の導入

 API は難しいと感じたものの、イチから順を追って勉強すれば、もうちょっと惜しいところまで行けそうだという感触はありました。

 しかし、OAuth に関しては全然ダメ。こっちは歯が立たないと思いました。ここが、アプリ開発を挫折した一番の原因です。

 OAuth とは、めっちゃ簡単に言うとログインに関するセキュリティのことで、要するにこの画面を作りたいのです。

OAuth を導入できたら、アプリ起動時にこの画面が出るようになる。

 Spreadsheet は必ず Google アカウントに紐づいています。利用者が作った英単語のリストは、ログインしたアカウントの Google Drive の中に保存してもらう必要があります。

 ですが、OAuthは難しいことに加えて、セキュリティーの問題が関わってきます。なんとなく動くものを作って、それに欠陥があった結果、Google のログイン情報が流出しました、ということになりかねない。さらにバージョンアップがあった場合にも対応しないといけない。

 ここまで行くと、もう僕個人で制作するレベルじゃなくて、普通に会社の商品だよな、と思いました。

 このあたりで初心者が独学で Android アプリを作ることの限界を感じ、モチベーションが下がり続け、勉強しようという気持ちもだんだん失われていきました。

 1ヶ月後にはパソコンの不具合があり、Windows を初期化することに。

 初期化した Windows に、Android Studio を再インストールすることはありませんでした。

おわりに

 ネット上の情報には、アプリ開発の難しさを説明しているものが少なかったので、今回このように挫折した失敗談を書くことにしました。

 しかし、アプリ開発に興味のある人には、これを読んで諦めるのではなく、ぜひ挑戦してもらいたいと思います。冒頭にも書いたように、悔しいものの、何ができて何ができないかが分かるようになったという意味では、いい経験だったと思います。また、実際に取り組まないと、何が難しいのかすら分かりません。取り組んだ結果、自分の感覚でできそうかどうかを判断してみてください。

 次回は、アプリ開発挑戦の中で思ったことなど、細かい点について箇条書きで書きたいと思います。

コメント

タイトルとURLをコピーしました