プログラミングを勉強する前に知っておいた方が良さそうなこと
何歳であろうが何かを学ぶということは、人生を豊かにしてくれます。最近はプログラミングを勉強される方が増えているようですが、いざプログラミングを勉強しようとしても、何から初めていいのか、、、となってしまう方もいらっしゃるかと思います。そういった方の手助けになる、道標にでもなればと記載いたします。
主要なプログラマーになるための勉強俯瞰図
まずは全体像を俯瞰してみましょう。2019年の市場として、大きく4つの方向があり、プログラマー職と、周辺の主要勉強領域を記載してみました。
では図の詳細を見てみましょう。真ん中の円は準備中のエリアです。その外の円のエリアが主要プログラマーがいる領域です。円の外にいる職は、関連職種です。職種ごとの紹介や、最初に何を学べばいいかのおすすめを、後ほど記載していきます。
2019年時での主要なプログラマー職をしろう
プログラミングを仕事にする職種を知っておきましょう。ざっくり6つほどにわかれます。
1. アプリエンジニア
iPhone/Androidアプリを開発する人です。両方できる方もいらっしゃいますが、片方に特化したエンジニアが多い傾向に感じます。
2. ゲームエンジニア(フロントエンド)
ゲームを開発する人です。昔は各社オリジナルのシステムがあったそうですが、現在では、UnityかUnreal Engineがよく使われています。
iPhone/Androidのゲーム開発はほとんど、Unityで作らています。Unreal Engineは、コンシューマーよりのゲームの開発で選ばれる傾向にあります。
iPhone/Androidのゲームを作りたい方が、Xcodeを使ったiPhoneの開発、Android Studio等を使ったAndroidの開発をするのは、入り口として遠回りなので気をつけましょう。
3. サーバサイドエンジニア
ウェブサイトや、ネット接続があるゲームの裏側等のサーバサイドのシステムを開発するエンジニアです。
4. フロントエンドエンジニア
JavaScript(TypeScript)を扱い、動きのあるWebサイトの開発を行うエンジニアです。最近では、react,angular,vue.js を利用した開発が流行っています。
5. AIエンジニア
決断を人間ではなく、AIがおこなうことを実装、もしくはサポートするのを行うエンジニアです。AIが決断するためのプログラミングをしたり、AIが決断するために必要なデータを取り扱ったりするエンジニアです。
6. IoTエンジニア
機械を作ったり、機械にプログラムを組み込むエンジニアです。
自分が何を作りたいか、どのようになりたいかを見つめ直してみよう。
やってみたいことや、作りたいものをイメージしてみましょう。ゲームを作りたい、ウェブサイトを作りたい、アプリを作りたい、市場価値がある能力を手に入れたい、面白そうなのでやってみたい等、様々な理由があると思います。
プログラミングには色々なジャンルがあるのと、それなりに使えるようになるには時間がかかります。ですので、できるだけ、自分が何を作りたいか、どうなりたいかを考えて、最初の一歩めをできるだけ、自分の求める方向性に近づけることが重要です。
プログラミングという言葉だけで聞くと一つの事を学ぶように聞こえますが、その中には、例えば、理科だったり、国語だったり、算数だったり、全く違う勉強をする必要があったりするのです。
プログラミングではないのを勉強してしまう落とし穴
プログラミングがなにかを全く知らない人が、まずは始めやすいプログラミングの周辺から学ぶことは間違いではありません。ただし、その延長線上では、プログラミングができるようにはならないです。それを知らないで、学んでいたとしたら、、、無駄にはならないとは思いますが、がっかりした気持ちになってしまうかもしれないですよね。
間違えやすいジャンルを3点ほど記載しますね。
1. HTML&CSS
Webサイトを作るには、HTMLやCSSの知識が必要にはなります。ウェブのプログラマーになるには、開発の分業がされているチームでも、HTMLの知識は必須ですが、これらは、プログラミングではありません。
HTMLはマークアップ言語とよび、文章をシステムが扱いやすくするための約束に沿って書くフォーマットです。文章構造をブラウザーが読みやすいように、書いてあげるためのフォーマットですね。例えば、人間が読みやすくするためのツールとしては、マイクロソフトのワード等があります。ワードが人間用に対して書くのを学ぶのに対し、HTMLはコンピュータ用に書いてあげることを学ぶということになります。
CSSはHTMLの見栄えを整える仕組みです。HTMLは文章構造をコンピュータにできるだけわかりやすくするのに対し、CSSはそのHTMLを人間に対して、見やすいものにするためのものなのですね。
HTMLやCSSを専門として扱う方々は、Webコーダー等とよばれる職種になり、プログラミングを主業務として働くプログラマーとは違います。
2. 技術ブログを書いて生計をたてたい
技術的興味のある方々をターゲットに、ブログを書いて収益をあげるのはアフィリエイトです。初心者向けのアフィリエイトで成功してる方々の誘導で学ぶ方々がいらっしゃると思いますが、普通に考えて、その方々はアフィリエイトで生計を立てており、プログラマーとして生計を立てていないので、プログラマーとは違い、話半分以下で聞いておく必要があります。
もし、同じように技術ブログで生計を立てたいという話でしたら、アフィリエイターで、プログラミングを主業務として働くプログラマーとは違いますし、プログラミングを学んだ延長線上に、アフィリエイトで生計を立てるは基本的にはこないです。
3. OS・ミドルウエアのセットアップ
設定ファイルを色々変更したりして、ワードプレスを設置できるようになった。これは、プログラミングではありません。アプリケーションのインストール&セットアップといいます。
動いたときに達成感等はあるかもしれませんが、これは誰かが作った、プログラムを動かすことができた、という学びになります。
誰かが作ったアプリケーションをサーバ上で動くようにセットアップしたり、問題点を見つけたり、障害等の対応をしたり、低コストでスケールするように考えたり、そういった仕事をメインにする方をインフラエンジニアと呼び(他にもいくつか呼び方があるようです)、プログラミングを主業務として働くプログラマーとは違います。
おすすめの入り口
おすすめのスタートを記載しておきます。
ゲームを作りたい人
Unityから始めるのをおすすめします。2Dのゲームと、3Dのゲームは作り方が違うので、まず、どちらか決めてから取り組むのがいいと思います。
ウェブサイトを作りたい人
ウェブサイトを作るには、プログラミングの前に、 HTML/CSS最低限の使い方と、Webのしくみを理解しておく必要があります。
ログインしたりデータを保存したり、ショッピングカートを作ったりするには、サーバ側のプログラミングを学ぶ必要があります。
サーバ側のプログラミングは、いろいろな言語で作ることができますが、一般的にLinux OSを利用したサーバを使うことが多いので、Ruby,PHP,Javaが最近よく見かける言語で、それ以外にも、Python、Golang等、様々な言語がありますので、その中から一つ選んで学びましょう。
また、ほとんどのサーバ側のシステムは情報を保存するのに、データベースを利用します。MySQLやPostgresSQLがよく使われてるので、どちらかを選び、使い方を学ぶ必要があります。
動きのあるフロントエンドを作りたい場合は、JavaScriptも学ぶ必要がありますね。
アプリを作りたい人
iOSかAndroidかは、まず決めたほうがいいと思います。
iOSを選んだ方は、XcodeとSwiftを使って開発することになります。
Androidを選んだ方は、Android Studio と JavaもしくはKotlinを使って開発することになります。
フロントエンジニアになりたい人
フロント専門のエンジニアになりたい方は、HTML/CSSをまず学ぶ必要があります。その上でJavaScriptを学ぶ必要があります。
フロントエンジニアの方は、デザイナーとサーバサイドエンジニアとの間をとりもつような仕事となり、両方の仕事の理解が必要にもなってきます。
AIエンジニアになりたい人
プログラミングもそうなのですが、統計や数学を学ぶ必要があります。
いきなりAIエンジニアを目指す、、、というのは敷居が高いイメージがありますし、そもそも、AIエンジニアとは、、、人によって定義がことなりすぎるので、気をつける必要もあると思います。
IoTエンジニアになりたい人
raspberry piを触って始めるのをよくみかけます。Linuxで動くのでどの言語でも利用できますが、Pythonが好まれてるようです。
linux すら動かないハードウェアを、C言語を使って頑張る等、大変な修羅の道もありますが、最初はそこには触れないほうがよさそうです。
電子回路を自分で組んでハードを作成してとなると、プログラミングの前にそちらを学ぶ必要がありそうですね。
まとめ
インターネットにはいい情報も沢山ありますが、逆にまちがった方向にいってしまうような情報も多く、自分で考えて、学んでいく必要があると思います。しっかり自分でイメージした上で、何から始めるかを考えましょう。
インターネットに落ちてる都合のいい話は基本的に他人事と思って眺める程度がおすすめで、そんな情報に左右されるよりも、1行でも多くプログラムにソースコードを読んだり、書いたりするのがプログラミングを学ぶ近道です。
良いプログラミングライフの一歩目を!
この記事が気に入ったらサポートをしてみませんか?