📘

未経験者がプログラミングを学びたいと思った時に最初に読む記事

2022/09/04に公開
5

ここ数年プログラミングを学びたい人が増えている。そうした需要に応じて有象無象のプログラミングスクールや不適当な内容の学習サイトも増えている。中には粗悪なスクールやオンラインサロンも沢山ある。しかし未経験者にはどれがいいスクールなのか悪いスクールなのか等の審美眼はない。

この記事では未経験者がそういった情報弱者を食い物にする偽物に騙されないように滑らかに学習を進めていくための道筋について書く。

この記事の対象読者は下記。

  • 教養としてプログラミングを学びたい未経験者
  • とにかくWebサービスやアプリを作りたくてプログラミングを学びたい未経験者
  • プログラマとして職を得たい未経験者

以下、まずは全ての対象読者向けの下準備について書き、その後それぞれの対象読者向けに道筋を書く。

目次

準備

周囲を見渡す

あなたの周囲には困った時に助けてくれそうなプログラマの友人等はいるか?

もしこの質問の答えがYesの場合、この記事は不要かもしれない。まずはそのプログラマに「OOOOをしたいのだけど何から始めたら良いか?」と聞くべきだ。どんな優秀な本や学習サイトがあっても未経験~初心者の間は必ずつまずく。ほとんどの未経験者にとってつまずき=死(挫折)、である。

友人の提案する学習方法が少々ナンセンスだとしても孤独に独学して躓いたまま起き上がれないよりはマシだ。困った時に聞くことのできる経験者が1人でも近くにいるならその人についていった方が良い。

ちなみに手取り足取り教えてもらう姿勢はやめた方が良い。そんなことをタダでやってくれる人間は(特にプログラマのような怠惰な人間には)いない。

もしこの質問への答えがNoの場合、どうしようもないのでこの記事を参考に気合を入れてやっていく。

心構え

誰かに教えてもらうという気持ちを捨てる

これは根性論ではない。教えてもらおうという気持ちで望むとプログラミング学習の道は大学やスクールなど数少なく見えるが、前のめりに学習しに行こうとする姿勢があればこの世界ほど学習がしやすい世界はない。プログラミング関連の学習情報はインターネットに大量に散らばっているおり、それらを自由に活用できる。しかもほぼタダで誰でも入手できる。

困ったらググる(Googleで検索する)

困ったらググる。とにかくググる。わからない単語は全部ググる。初心者レベルのことはググればほぼ全て解決する。諦めずにググり続ける胆力を身につけるべき。

英語を怖がらない

プログラミングの世界は英語が標準語なので避けられない。しかし怖がることはない。わからない英語はDeepL翻訳にでも突っ込んで翻訳すれば良い。それで大体解決する。勉強する必要はもちろんあるがまずは英語を読もうとする努力はする。

パソコンの準備

手持ちのPCがないと始まらないのでまずはPCを購入する必要がある。

予算に応じてどれを買うか選択肢はいくつかある。基本的にどのPCでもプログラミング学習はできる。しかしインターネット上にある初心者向けの情報は今はMacを使った解説が多い。よって初期費用は結構かさむが可能ならMacから始めるのが良い。[1]

ただし金銭的な理由や宗教上の理由でMacじゃなくWindowsやLinux環境で始めたいという場合は下記の記事を読み、理解できそうならMac以外でも大丈夫なはず。

ただ基本的にどのPCを購入しても大失敗はないはず。まずはやってみるのが大事。

ちなみにノートPCを選んでいる理由は未経験者だとスクールに行ったり勉強会に参加したり経験者に聞きに行ったりと何かと持ち運びが必要になるケースが多いと思ったので。別にそういうケースが無さそうならmac miniだったり適当なデスクトップPCでも大丈夫。(※2022/09/05追記)

Macの場合

iOSアプリを開発するなら凡そMac一択。

予算15万円以上

予算10万円前後

  • 最新のmacOSが動くメモリ8GB以上の中古のMacBook Pro/Air(中古)を購入する。

Windows or Linuxの場合

AI関連の学習がメインならWindowsから始めた方が良い。

あとThinkPadを選んでいるのは、丈夫・中古市場に多く出回っている・少し使ったことがあるくらいの個人的な理由。あくまで未経験者は迷ってしまうだろうからということでThinkPadしか記載して無いですがあくまで目安なのでこだわらなくても大丈夫。

予算10万円前後

予算1~10万円未満

その他PC選びについて有識者の意見

開発ツールの導入

まず本格的にプログラミングを始める前にPCに関する知識の整理や開発ツール(ブラウザやエディタ)の導入をしておいた方が良い。手持ちのPCのOS(MacかWindowsか)によって下記のどちらかをやっておく。

教養としてプログラミングを学びたい人の場合

目標

プログラミングとはどういうものか身をもって体験すること

野球漫画を読んだだけでは野球ができるとは言えないようにプログラミング関連書籍を読んだだけでプログラミングができるとは言えない。まずは身をもって体験してみることで見えてくるものがある。教養としてプログラミングを学びたい人ならば下記のCS50をある程度手を動かしながらやるだけで十分すぎるほどの体験になる。

やるべきこと

CS50: 無料

このサイトはハーバード大のコンピュータサイエンスの講義を日本語訳して公開してくれているもの。基本的には手順としてはweek0から始めて、それぞれの講義を閲覧し、出ている課題を自分の手で解いていく。

しかし完全に未経験の人の場合はこの課題を自分で解く部分がかなり難しいと思う。なのでどうしても難しい場合は講義動画を観るだけでもそれなりに意味はある。

100時間~200時間は最低でもかかるので気長に取り組む。

その先

この記事最下部のその他の便利サイト一覧から興味のあるものから手を出してみる。

とにかくWebサービスやアプリを作りたくてプログラミングを学びたい人の場合

目標

自分の考えたWebサービスやアプリを作るために必要な最低限の技術を得ること

Webサービスやアプリを作りたくてプログラミングを学びたい人はそれに必要な技術だけ学べればOK。

プログラミングを学ぶこと自体が目標にならないように注意する。あくまで自分の考えたWebサービスやアプリを作り上げることが目標なので何を作りたいか明確にする。その上でそれに必要な技術を学んでいくのがやるべきことになる。

やるべきこと

「自分の作りたいものを明確にすること」と「N予備校」と「実際に作ること」に集中するだけ。順番としては並行で全て進めるイメージ。

1. 自分の作りたいものを明確にすること

例えばキャンプ好きの人が使えるTwitterみたいなSNSサービス、とか。さらに具体的にどういう画面や機能があって利用者はどう使うのかまで具体的に文字にしてみる。巷の色々なwebサービスやアプリを片っ端から登録して使ってみるのも良い。ただのユーザーとして使う時とは違った発見があるはず。

2. N予備校のプログラミング講座(有料)をやる

未経験の人が何かそれなりの形のものをゼロから作りたい場合、ググりながら地道に作り上げていくのはなかなか大変である(昔はこれしかやり方がなかったし今もそのやりかたは無理ではない)。

しかし今はWebサービスやアプリの作り方を教えてくれるスクール的なものがあるのでそこで学習するのが手っ取り早い。

有象無象のスクールが沢山存在する中で有料ではプログラミング講座 - N予備校が質やコスト(月額 1,100円)的に最も良い。やり方としてはN予備校のカリキュラムに沿ってやっていくだけなので迷うことも少ないはず。

3. 実際に作る

N予備校で学んでいる技術を応用して自分の作りたいものを実際に作ってみる。

始めは不恰好でも良いので学んだコードの一部を変えてみたり少しずつコードを自分のものにしていく。

わからないことはとにかくググって試して考えてまたググって試して考えての繰り返し。孤独で地味な作業だが避けられない。

その先

体系的にコンピュータサイエンスを学んでみる

Webサービスやアプリを作りたいというだけの目標に対して初手で体系化されたCSの勉強を始めるのは多くの人にとっては遠回りになる。しかしより高度なものを作りたくなってくると必要になる知識である。

下記のその他の便利サイト一覧から興味のあるものに手を出してみる。

プログラマとして職を得たい人の場合

前置き

未経験からプログラマとして職を得たい人は巷で吹聴されている「日本はエンジニア不足」・「エンジニアは高収入」という言葉に惹かれているのかもしれない。

しかしエンジニアの人手不足というのは出来るエンジニアが不足してるだけであり出来ないエンジニアは沢山いる。

ここ数年で未経験からプログラマとして職を得たい人の大量参入が相次ぎ、彼らが出来るレベルの仕事に関してはレッドオーシャンになっている。

未経験から採用されたとしてもせいぜい200万円台から良くて300万円台の年収がしばらく続くと考えて良い。

また、とりあえず1年実務経験をつけてフリーランスとして独立するという業界ハックも最近では1年程度の実務経験だと評価しない会社も出てきていて使えなくなりつつある。

逆にこの業界ハックの吹聴が1年ですぐ辞めるような未経験者を増やした功罪として彼らのような未経験者は採用コストになるだけなのでそもそも採用しないという選択を取るところもあるようだ。

これらを読んでモチベーションが下がった人はプログラマとして職を得ることは諦めよう(ちなみに勉強すること自体は無駄にはならないはずなので上述の教養としてプログラミングを学びたい人の場合とにかくWebサービスやアプリを作りたくてプログラミングを学びたい人の場合を読んで好きにやってみると良い。)

また、今置かれている状況や手段によって取るべき学習コースが長期コースから短期コースまで色々ある。自分の状況に合ったやり方を選んでやってみてほしい。

やってはいけないこと

"プログラミングスクール"というキーワードでGoogle検索して上位に出てくるようなサービスに登録する

SEOの強いプログラミングスクールはまともじゃないという法則がある。

オンラインサロンに登録する

そもそも自分の人生の重要な決定を他人のしかも個人に任せるのは危険。利害関係がない相手ならば問題ないが、金づるとしての利害がある相手を信用してはいけない。

現状が辛い人にとっては甘い言葉にすがりたくなる気持ちもわかるがその解決方法はオンラインサロンに登録することではない。

フリーランスのプログラマとして働こうとする

フリーランスのプログラマとして独立するという言葉に憧れを持っている人がいるがこれはプロフェッショナルなプログラマがやるべきこと。出来ない人がフリーランスになってもまともな仕事は回ってこない。

初手でこの道を勧めてくる人は無責任なので関係を断ち切るべき。

厳しい道にはなるがプログラマとして企業へ就職することを目指した方が長期的なキャリア形成を考えると良い。

謎のエージェントからのメッセージを鵜呑みにする

E-mailやSNSのDMに飛んでくる謎のエージェントからのメッセージは基本無視か後回しで良い。エージェントに登録する前にやるべきことをやった方が良い。

目標

知らない概念について独学で学習できる力を得ること

プログラマとして食っていくなら何かしらの新しい技術や未開拓の技術領域を自ら習得しないといけないことが必ず起きる。その際に本やインターネット上の情報を頼りに独学できる力がないと詰む。プログラマである限りこれは一生続くので最重要スキル。

コンピュータサイエンスの最低限の知識を得ること

web上に転がっている記事や動画などを見てとりあえず動くものを作れるレベルでは仕事で関わるような複雑で大規模な開発を行うことはできない。自分の作ったコードが何故どのようにして動いているのか内部を理解し、システム全体の解像度を上げておく必要がある。

自分のスキルを示す何かを作ること

未経験からプログラマとして職を得る場合、学生であれば新卒採用というラッキーカードがあるので自分で開発した公開されたプログラムやサービスを示すことは免除される可能性はある(むしろ学生なら何を研究してきたのかの方が重要そう)。

しかしすでに社会人である場合は自分の力を示すものがないと職を得られない。それはGitHub上での過去の開発実績かもしれないし、自分で作ったWebサービスやアプリであるかもしれないし、頭が良いこと(元医者だったり元弁護士だったり)がそれにあたることもある。

企業がどういう人材を求めているかによるので一概に言えないが自分のスキルを示すものが何もないなら職を得るのは厳しい。

やるべきこと(長期コース: 2年~)

1. CSを学べる大学に入学する

コンピュータサイエンスを学べる大学に入学し基礎を学ぶ。そこで得た知識と研究成果を持って就職活動に生かす。

最低2年(院)~4年(学部)以上はかかる。プログラマとして職を得たいという目標しかない場合は大抵途中で挫折するだろうが、これがプログラマとして食っていくための自力をつけるには急がば回れな道。まだあなたが高校生の場合はこの道を選ぶのが大抵は良い。

2. テック系の企業のインターンをする

2022夏ITエンジニアインターンという神SpreadSheetがあるのでここにまとまっている情報をありがたく使わせてもらうよい。

やるべきこと(中期コース: 1年~)

1. CS50をやる: 無料

理解できるまで動画を見て手を動かしてググって調べて...を繰り返す

1.5. 基本情報技術者試験の勉強

基本情報技術者試験の出題範囲はプログラマとして働く上で基本となる内容を広く網羅している。基本情報技術者試験の本を購入して読み、基本情報処理試験ドットコムのようなサイトで過去問を解いたりすると身につきやすい。

必ずしも試験を受ける必要はないが勉強すること自体は役に立つはず。座学は途中で飽きてきたりするのでその場合は2のN予備校へ進み手を動かしてみると良い。

2. N予備校をやる: 月額1,100円

ここでは自分で考えたアイデアを形にできるようになることが目的。1の時点で十分だと思ったら思い切って3に進んでみても大丈夫。難しければ戻って来ればよい。

3. 何か作って公開する

webサービスでも良いし何かしらのツールでも良い。自分で考えたアイデアや課題を解決するプログラムをこれまでに学んできた知識を元に作る。わからないことはとにかくググって試して考えてまたググって試して考えての繰り返し。孤独で地味な作業だが独学力をつけるにはこれは避けられない。

ある程度形になったらGitHubにコードを公開する。自分が作ったものをZennQiitaで文章にしてまとめるのも良い。

一つ作って終わりではなくさらにそれを改善したり別の何かを作ったりというのを繰り返す。

4. 学生の場合

テック系の企業のインターンをする

2022夏ITエンジニアインターンという神SpreadSheetがあるのでここにまとまっている情報をありがたく使わせてもらう。1から3でやってきたことを元にインターンの合格を祈る。

4. 社会人の場合

a. 現職の業務改善のシステムやツールを開発する

社会人は1から3の経験だけでプログラマとして転職できることは稀。何かしら実務の経験が必要。そこで今やっている仕事の業務改善(そんなに大規模でなくても普段の作業の中で発生する入力作業の自動化や効率アップ)などに必要なシステムを作れないか考える。

これがうまくいくならその仕事自体での評価にもなるし経歴にもなる。

b. 社内の情シスへ異動する

今いる会社に情報システム部(いわゆる情シス)がある場合ここに異動をお願いする。プログラマとして働くとは違うが社内システムを管理したり会社横断で生産性向上業務を行うというプログラマに近い問題解決能力が必要という意味では現職でのドメイン知識を利用しつつここまで勉強してきた知識が活かしやすい。

社内異動なら異業種転職よりも通る可能性は高い。情シスで業務とシステムを使った生産性向上について経験を積みながら日々の勉強を並行してプログラマとしてさらに異動を狙う。

c. 転職活動をする

社内向けのシステムやツールを作る余裕がなく異動もできない場合は仕方ないので今持っている力のみで転職活動してみる。採用側として最低限自分が使ったことのあるサイトやエージェントを書いておく。

転職ドラフトは職務経歴書を書く練習にもなるし運が良ければ入札がかかることもあるのでとりあえず登録しておくのは良さそう。「現職でやってきたこと」と「勉強してきたこと」と「実際に業務でどうそれらを活かしたか」あたりまでうまく書ければ面談くらいはしてくれる会社はありそう。

やるべきこと(短期コース: ~1年)

1. まともなプログラミングスクールに行く

あまりおすすめしないがとにかく短期間でプログラマとして働けるようになりたいんだという場合はプログラミングスクールに行く。重要なのは上記目標を達成できるようなカリキュラムとサポート体制のあるまともなスクールを選ぶこと。

プログラムを写経させるだけのようなスクール、法外に高額なスクール、情報商材を売りつけるオンラインサロンやYoutuber、とりあえず1年実務経験をつけてフリーランスとして独立しろみたいな業界ハックみたいなことを吹き込む人々に騙されないことが大事

今まで採用側として見聞きしてきた中で比較的まともそうなプログラミングスクールを挙げておく。下記以外はおすすめできるものはない。あれば教えてほしい。

FJORD BOOT CAMP(フィヨルドブートキャンプ)

Railsエンジニアになるためのスクール。講師もカリキュラムもまとも。採用企業側の視点で作られたスクールなので、現場で働ける力(チーム開発の知見など)が付けられるように工夫されているところが良い。ここ出身の人のGitHubでのやりとりを某所でみたことがあるが普通に職業プログラマとして働いているメンバーと遜色なかった。

Railsが良いかどうかは議論があると思うが、まずは現場でプログラマとして働く力を身につけられることに価値がある。

N予備校

プログラミング全般とサービス・アプリ開発の技術的なカリキュラムについてはまとも。講師についてもまとも。チーム開発に関する知見や経験はあまり積めなそう。

2. 就職/転職活動をする

スクールを卒業しても転職できるとは限らない。転職活動は別途頑張る。

採用側として最低限自分が使ったことのあるサイトやエージェントを書いておく。

転職ドラフトは職務経歴書を書く練習にもなるし運が良ければ入札がかかることもあるのでとりあえず登録しておくのは良さそう。「現職でやってきたこと」と「スクールで勉強してきたこと」あたりをしっかり書く。

まとめ

下記のプログラミング未経験者向けに学習の簡単な道筋を示す記事を書いた。

  • 教養としてプログラミングを学びたい未経験者
  • とにかくWebサービスやアプリを作りたくてプログラミングを学びたい未経験者
  • プログラマとして職を得たい未経験者

一概にこのやり方が全てとは言えないが一例としては誰かの役に立つはず。1日で一気に書いたのでまだ荒削りな部分も多く随時加筆修正はしていく予定。

ちなみにここに書いたこと以外に学ぶ必要のあることは大量にあるし深掘りできる領域も大量にある。ある程度の力がついたらそこから先は個人の興味や業務に関連する技術を極めたり等々研磨していくと良いだろう。

この下にまとめてある便利サイト一覧のリンクも参考にしてほしい。

最後に、この記事に関する疑問や便利リンクの情報などは@razokuloverにお願いします。返信は気まぐれでしかしませんが...。

その他(随時更新中)

更なる学習の際に役に立つ便利リンクをまとめておく。順不同で興味のあるものから手を出して良い。

ちなみに本をおすすめするのは難しいので載せない。ただし汎用的に使える知識の土台を形成するのに役立ちそうな本を挙げるなら基本情報技術者試験の本を一冊読むのを薦める。それ以外は自分の実力に合った興味のある分野のものを好きなように買ってみてほしい。実力に見合わない難しい(けれど名著と言われる)本はある程度後でも良いと思う。

便利サイト一覧

脚注
  1. Macを勧めてることに対してケチつけてるバカがいるがご丁寧に「初心者向けの情報は今はMacを使った解説が多い」と書いてるだろ。未経験者を想定してるんだから初心者向けのプログラミング開発関連でググって出てくる情報が多い方を勧めるに決まってんだろ、文字を読めボケが。 ↩︎

Discussion

ぶんぶんぶんぶん

学位としては学士(教養)しか取れませんが、放送大学の情報コースにもたくさん講義があります。1講義11000円ですし、学位必要なくても選科履修生や科目履修生でサクッとお試しできるのでおすすめです
https://w-info.ouj.ac.jp/

SGTYSGTY

初心者にお勧めするパソコンってピンから切りまでありすぎて悩ましいですが、個人的にWindows or Linuxの場合では

  • メモリ8GB以上,SSDがあれば嬉しい
     ↓
  • Linuxならメモリ8GB以上、Windowsならメモリ16GB以上(いずれもあればあるだけ良い),SSD必須(できればNVMeで1TB以上。コスパ重視ならブートドライブは256GBにして外付けで増設)

かなと思いました。
あとLinux動かすならRyzenはSEGV問題があったのでIntel CPUが安心かもしれません。(5年ぐらい前の話なので今は大丈夫?)
また、この記事の前提はサーバーサイドやフロントエンドだと思うので、「PythonでAI開発だ」みたいな感じならWindowsデスクトップPCでNVIDIAのミドルクラス以上のグラボ搭載PCが良いかなと思いました。

その他個人的お勧め

  • 家の中の定位置(自室の机等)以外でプログラミングすることは無く、コスパまたは性能重視ならMac miniやWindows or LinuxデスクトップPCがお勧め。
  • パソコンをバラして修理スキルが無いのであれば新品買って手厚めのメーカー保守つけたほうがいい。
  • サブモニタ(コスパ重視なら23インチ)は欲しい。
  • アラサー以上でプログラミング始めるならメイン画面を23インチ以上にしないと目が辛い。
YuheiNakasakaYuheiNakasaka

コメントありがとうございます!その他PC選びについて有識者の意見として記載しておきます。

tom_browntom_brown

未経験からのエンジニア転職を考えており費用・学習に割ける期間・時間の面からプログラミングスクールの利用を検討しています。
プログライングスクールについてですがHappiness Chainというところはどうでしょうか?フィヨルドブートキャンプとカリキュラムや値段設定、学習の進め方がかなり似通っているみたいです。