2019/10/0555+1!2+1!スマホアプリ、特にAndroidアプリを作るスキルを求めている方へ向けている記事です。言うと、「ゲームなどを作りたい」というよりは、「生活に役立つ便利アプリのようなものを作り、ついでにプログラミング全般のスキルも得たい」という欲張りさん向けです。読んで欲しい方のレベルとしては「これから学習を始めてみたいと思っている人」=「未経験~初学者さん」が対象のつもり。この記事で分かることは技術者の僕の視点で見るプログラミング言語、業界のざっくり解説やりたいことと学びたいことの整理の仕方おすすめのプログラミングスクール(おまけ)です。メインで紹介するプログラミングスクールは2つですが、最後には「ITエンジニアとして転職」まで視野に入れている方へのおすすめのプログラミングスクールも紹介します(単にスキルを身に付けたいか職業まで変えたいかは全く性質が違うので)。ここは「おまけ」で話します。細かい話にならないように「気楽に読める記事」を心がけていますので、どうぞゆったりと~。内容的には要らん部分ではありますが、記事の説得力のためにも軽く僕についての話を。この記事執筆時点で本業は現役エンジニアで、大手電機メーカーで実際の開発・設計をバリバリやっています。専門は「制御設計」というもの。ものづくりの技術者ってだいたい「電気・ソフト・機構」の3つに大別されるんですが、その電気とソフトの中間というか橋渡し的な役目が僕です。この絶妙な立ち位置が最高に気に入っていて、ソフト開発の一番めんどい詳細設計はやらなくていいけど、軽いソフトはさっと作って業務に活かせる、そして電気の専門知識も磨いていけるっていうポジションなんです。いうわけで職場でも実際にプログラミングはしょっちゅうやっていて、最近はPCでのツールを作ることが多い関係でC#、VBあたりが多いです。その他Androidアプリ(業務用だけど)の開発経験もあるので、Java、あとは組み込みソフトをかじったときのC(もしくはC++)などが守備範囲です。情報技術全般に関しても一通り体系的な学習を積み上げていて、そういえば学生のときに基本情報技術者も取ってました(一応国家資格w)。?」と訊かれたらここかも。HTML、CSS、JavaScript、PHP、データベース系(MySQLやAccess)などが得意。CMSの1つであるWordPressへの理解も大分深まってきたので、簡単なテーマならもう作れると思います。このブログもデザインその他カスタマイズ、付加機能はほぼ自分でやってます。HTMLやCSS、もしくはWordPress自体のことを「プログラミング」と呼ぶ人が最近は多くなっていて、めちゃめちゃ違和感を覚えます。PHPやJSならまだ分かるんだけどなあ。その話も含めて次に行きましょう。プログラミング言語と業界の雰囲気について超主観的に説明します真面目な説明じゃないです。なんとなーくの雰囲気で読んでみてください。詳しい概要的な内容が知りたければ、別でググってもらえれば死ぬほどありますのでそちらをどうぞ。つまんないと思うけど。今回ここを読みに来てくださっている方は「アプリ開発をしたい」だと思いますので、そこを基準にしてみます。今回はこの3つにしてみました。何度も言いますがたぶんこんな雑な分け方で話している人は他にいないと思うのであくまでもフィーリングでお願いします。スマホのアプリWeb系それ以外です。イメージ的にはとても分かりやすいと思います。今みなさんが使っている「インターネットブラウザ」のようなPCで動くソフト「エアコンのシステム」のような組み込みソフト「預金管理システム」みたいなふわふわしているもっと大規模なものなどなど、要はめんどくさいもの全部と思っておくといいでしょう。これら3つはそれぞれ次のような感じ。使われる言語:Java、Kotlin、Swift、C#予想が付くと思いますが、目に見える流行具合はピカイチです。今や「なんでもスマホのアプリでやってしまおう」の時代なので、どんな業種のどんな企業へ行ってもその知識とスキルは引っ張りだこになります。「実際の開発なんか外注丸投げだし、『どこの企業でも』は言いすぎでしょ」と思われるかもしれませんが、ちょっと考えてみてくださいよ。開発技術に関して知識がある人が発注するのと、なんにも情報を渡さずに「はいよろしく~」って発注するの、どっちがいいと思います?そしてあなたが上司なら、どっちの部下に仕事振ります?そういうことです。「Androidアプリと言えばJava」っていうくらいの鉄板さがJavaにはありましたが、最近は「Kotlin」というものがトレンド上昇中。知らない人も多いはず。実は、GoogleのAndroid公式デベロッパーフォーラムでもコード例にKotlinのサンプルが出現し始めたんです。これは完全に僕の予想ですが、Kotlinはたぶんこれから波に乗ると思いますよ。早いうちに習得しておくと一人勝ちできるかも。言いつつ、やっぱりJavaを習うのがおすすめ。どこのプログラミングスクールでも扱いがあるし、スマホアプリ以外でも本当になんでも転用できるのが最大の強みです。いうわけで今回みなさんに覚えて帰っていただきたいのは「Java」です。iPhoneアプリでは、長らく君臨していた「Objective-C」というビミョーなオリジナル言語が廃れ始め、これからはほぼ「Swift」一択と言っていいと思います。これもAppleオリジナル言語なので、せっかく学ぶとするとコスパが悪いというか機会損失があると思ってます。スマホアプリで僕がiOSではなくAndroidの開発を推すのはここが大きな理由です。2.Web系、フロントエンドなど主によく使われる言語:PHP、JavaScript、(HTML、CSS)「フロントエンド」ってよく言ったりしますが、ユーザーの目に見えるもの、ユーザーが直接体験する機能と覚えておくといいと思います。PHPは一般的にはフロントエンドには入らないですが、まあそんな細かいことはどうでもいいです。ユーザーがネットサーフィンをしたり買い物をしたりできるようにこれらが組み合わさって頑張ってくれていて、どれか1つでは実現できないということを分かっておくといい感じ。世間一般の「プログラミング」という概念からは多少遠くにいると思っていて、僕がさっき言った違和感の話もここに起因しています。いう意味では言語的なスキル習得はたぶん一番簡単で、目に見える結果も一番速く出来上がるのでモチベーションも保ちやすいです。ここも最近は市場が大きく、個人で稼ぎに行くにはスマホアプリと並んで期待値が高いところです。クラウドソーシングなどですぐに仕事が取れるのもここなので、Webに興味がある人はこっちもありです。使われる言語:C、C#、C++、Java、Python、JavaScript、他なんでも古~くからある「プログラミング」というイメージはたぶん全部これです。「ひたすら何万行もあるコードを見つめてバグとの戦い...」みたいな。言ってもですね、さすがにまとめすぎちゃってもう一概には説明できないです。今回は話の都合上ここは「その他」にしてますが、堅実な企業に長年雇用してもらえるようなキャリアを望むならここが一番おすすめです。いうのも、いくらスマホアプリやWeb系が流行してきたとはいえ、世界中にある数え切れないシステムや機械製品に乗っているのは全てこういった実直な開発によって生まれてきたソフトたちです。ここが消えることは僕らが生きているうちは絶対に有り得ないでしょう。プログラミングの基礎となる言語、考え方が集約されているのも大きなポイントです。情報系の大学だとC言語から学んだりすることが多いんですが、これはとても理に適っています。コンピュータリテラシーとともに基本的な考え方が身に付くので、その後どんな言語にも対応できるようになります。プログラミングで一番大事なのは「考え方」です。