プログラミング学習のはじめ方
プログラミング分野を知る
「プログラミングを勉強しよう」と決めても、次に開く教材は決まりません。Web、スマホアプリ、AI、ゲーム。並んでいる名前はどれも大きく、どれを選んでも遠回りに見えます。
分野の名前を眺めても決まらない
分野の名前は、作るものの名前でしかありません。「Web 開発」は Web で動くものを作る仕事、「モバイル開発」はスマートフォンで動くものを作る仕事、という以上の意味はありません。名前をいくら見比べても、自分に向いているかは出てきません。
手がかりになるのは、そのコードがどこで動いているかです。動く場所が違うと、書く言語も、動かして確かめる方法も変わります。
コードが動く場所で分かれている
| 分野 | コードが動く場所 | 最初に触るもの |
|---|---|---|
| フロントエンド | 目の前のブラウザ | HTML、CSS、JavaScript |
| バックエンド | 手元にないサーバー | Python、Java、PHP、Node.js など |
| モバイル | 自分のスマートフォン | Swift、Kotlin |
| データ・AI | 手元やクラウドの計算機 | Python |
| ゲーム | ゲーム機やスマートフォン | Unity (C#)、Unreal Engine (C++) |
フロントエンドは、書き換えて画面を読み込み直せば結果がその場で見えます。バックエンドは目に見えない場所で動くので、動いたかどうかを確かめる道具の使い方から覚えることになります。データ・AI の分野では、結果は画面ではなく数字やグラフとして出ます。ゲームは、言語より先にエンジンの操作を覚える時間が長めです。
同じ「プログラミング」でも、一日の手の動かし方はこれくらい違います。逆に言えば、変数や条件分岐といった考え方はどの列にも共通していて、そこはあとから持ち越せます。
そして、この行は互いに独立しているわけではありません。買い物サイトで「購入」を押したとき、押されたことを受け取るのはブラウザ側のコードで、金額を計算して注文を保存するのはサーバー側のコードです。一つのサービスが、二つの場所で動く二つのコードの受け渡しでできています。
だから「フロントエンドを選ぶ」というのは、サービスの全部を作らないという意味ではありません。自分がどの側に立って受け渡しをするかを選んでいる、と考えるほうが実際に近いです。
将来性ではなく、いま確かめられることで比べる
「これからは◯◯が来る」という言い方は、当たったかどうかを後からしか確認できません。選ぶときに使えるのは、いま自分で確かめられる軸のほうです。次の三つは、今日この場で調べられます。
- 求人サイトでその分野の言葉を検索したとき、どれくらいの数が出てくるか
- 自分が書いてから結果が見えるまでの距離が近いか
- その分野の周りに、どんな仕事が並んで出てくるか
三つ目は見落とされがちです。たとえばブラウザ側を触る仕事の求人には、デザインの調整やアクセス解析の話が一緒に出てくることが多く、隣に何があるかで日々の仕事の幅が見えてきます。
それでも決められないときは、いま自分が毎日触っているものから入るのが無難です。多くの人にとってはブラウザで、書いた結果がすぐ画面に出るぶん、手を動かしている実感を得やすい場所でもあります。
そして分野選びは、一度きりの決断ではありません。しばらく触ってから別の場所へ移る人はふつうにいますし、そのとき最初の分野で覚えたことは無駄になりません。
復習ミニクイズ
Webサービスの開発において、ユーザーが入力した情報をデータベースに保存したり、注文に応じた決済の処理を行ったりする「裏側の仕組み」を担当する分野はどれでしょうか?